From ideas-come-true
Takes specifications or ideas and determines the optimal product form (Claude Code skill, script, Chrome extension, local HTML, CLI, service) then designs a phase-by-phase roadmap following lightweight-first principles.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ideas-come-true:productify {명세서 경로 또는 Notion URL 또는 아이디어 텍스트}{명세서 경로 또는 Notion URL 또는 아이디어 텍스트}This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
명세서(sharpen 결과물) 또는 아이디어를 받아, 어떤 형태의 제품으로 만들지
명세서(sharpen 결과물) 또는 아이디어를 받아, 어떤 형태의 제품으로 만들지 결정하고 페이즈별 로드맵을 설계한다.
모든 판단에 다음 원칙을 적용한다:
제품 형태 선호 순서 (경량 → 무거움):
claude-skill > script > local-html > bookmarklet > userscript
> notion-custom-agent > claude-cowork > platform-extension
> apps-script-webapp > chrome-extension > cli-tool > web-service
무거운 형태를 추천할 때는 반드시 "왜 더 가벼운 형태로는 안 되는지" 설명한다.
notion.so/... 포함):
mcp__notion__notion-fetch로 내용 로드Read로 파일 읽기입력에서 핵심 문제와 목표를 추출한다. Notion URL 여부를 기억해둔다 -- 저장 방식 결정에 사용.
제품 형태 후보를 필터링하기 위해 팀의 서비스 환경을 먼저 확인한다.
⚠️ 이 단계는 절대 건너뛰지 않는다. 사용자 입력에 Notion·Slack·Google 등이 이미 언급되어 있어도 마찬가지다. 플랜·티어·설치 여부를 모르면 올바른 형태 판정이 불가능하다. Step 0.5 완료 전에 Step 1로 넘어가지 않는다.
시작 전에 팀에서 사용 중인 서비스를 알려주세요.
모르는 항목은 "모름"이라고 하셔도 됩니다.
협업/문서
- Notion: 사용 여부 + 플랜 (Free / Plus / Business / Enterprise)
(Notion AI · Custom Agent는 Business 이상에서 사용 가능)
AI 도구
- Claude: 사용 여부 + 티어 (Free / Pro / Team / Enterprise)
(Claude Cowork는 Pro 이상에서 사용 가능)
커뮤니케이션
- Slack: 사용 여부, Workflow Builder 사용 가능 여부
Google
- Google Workspace: 사용 여부
(Apps Script, Sheets, Drive 접근 가능한지)
자동화 도구 (선택)
- Zapier / Make / n8n 사용 여부
(n8n은 셀프호스팅 가능 — 사용 중이면 버전/호스팅 방식도 알려주세요)
이미 시도한 도구 (선택)
- 구현을 시도해봤다면 어떤 도구로, 어디서 막혔나요?
(막힌 지점을 알면 같은 도구 재추천 없이 정확한 대안을 찾을 수 있습니다)
기타 (선택)
- GitHub, Jira, Raycast/Alfred 등
응답 처리 규칙:
| 상황 | 조치 |
|---|---|
| Notion Business 미만 | notion-custom-agent 후보 제외 |
| Claude Free | claude-cowork 후보 제외 |
| Google Workspace 없음 | apps-script-webapp 후보 제외 |
| Slack 없음 | platform-extension(Slack) 제외 |
| "모름" / 무응답 | 후보에 포함하되 "(확인 필요)" 표시 |
| 이미 시도한 도구 언급 | 해당 도구 재추천 금지. tried_tools와 막힌 이유를 Form Judge에 전달 |
available_services로 기억해두고
Form Judge 호출 시 컨텍스트에 포함한다.제품화를 시작합니다
"{제목 또는 첫 줄 요약}"
해결하려는 문제: {핵심 1-2줄}
목표: {핵심 1-2줄}
어떤 제품으로 만들지 결정해봅시다.
* 경량화 원칙: 가장 가벼운 형태부터 검토합니다.
---
Round 1
{질문 1-2개}
라운드당 최대 2개 질문. 아래 축 중 가장 모호한 것부터 공략.
| 판단 축 | 배점 | 이럴 때 묻는다 | 질문 예시 |
|---|---|---|---|
| Audience / Scope (15) | 15 | 사용 대상 불분명 또는 문제 범위 모호 | "누가 쓰나요?" + "즉각 요구만인가요, 더 넓은 범위(오늘 전체 일정 등)도?" |
| Env (15) | 15 | 실행 환경 미정 | "브라우저? 터미널? 아니면 이미 쓰는 플랫폼(구글시트, 슬랙 등) 위에서?" |
| Lifespan (15) | 15 | 지속성 불명확 | "한 번 쓰고 끝인가요, 계속 유지보수할 건가요?" |
| Constraint (15) | 15 | 기술 제약 미확인 | "특정 언어나 환경 제약이 있나요?" |
| Distribution (10) | 10 | 배포 방식 미정 | "다른 사람이 설치하거나 URL로 접근해야 하나요? 슬랙에서 접근한다면 — 봇/앱 통합이 필요한가요, URL 링크 공유로 충분한가요?" |
| Integration (10) | 10 | 연동 필요 여부 | Notion+Slack이면 Notion Custom Agent, 반복 자동화면 Claude Cowork 먼저 확인 |
| Security (20) | 20 | 외부 의존성 불명 | 아래 Security 질문 참조 |
Security 축 질문 예시 (가장 중요 -- 배점 최고):
원칙:
답변 충실도 확인:
Form Judge를 실행하기 전에 사용자 답변의 충실도를 점검한다. 아래에 해당하면 해당 답변에 대해서만 1회 재질문한다.
| 판단 기준 | 예시 | 재질문 방식 |
|---|---|---|
| 단순 예/아니요 (맥락 없음) | "네" / "아니요" | "어떤 상황에서 쓰시는 건지 조금 더 알려주실 수 있어요?" |
| 5단어 미만 단답 | "그냥 내가 쓸 거" | "어떤 방식으로 쓰실 예정인지 예를 들어주시면 더 맞게 추천해드릴 수 있어요." |
| 회피/무관심 답변 | "아무거나요" / "상관없어요" | "어떤 방향이든 잘 맞춰드릴 수 있어요. 혹시 {해당 축 핵심 기준}을 좀 더 말씀해주실 수 있어요?" |
| 전제 모순 | "서비스로 만들게요, 빠르게 해야 해서" | "빠른 게 목표라면 {더 가벼운 대안}이 오히려 더 빠를 수 있어요. 서비스로 만드셔야 하는 이유가 따로 있으신가요?" |
라운드마다 Agent로 형태 판정:
You are deciding the best product form for a given problem.
Evaluate clarity and fit. Score 0-100.
## Mandatory Pattern Pre-Check (점수 계산 전에 먼저 확인)
입력에서 다음 패턴이 감지되면 해당 형태를 반드시 먼저 검토한다.
이 체크를 건너뛰고 script/cli-tool/web-service를 추천하면 오류다.
| 패턴 | 먼저 검토할 형태 | 확인 포인트 |
|------|----------------|-----------|
| Notion + Slack 알림/자동화 | notion-custom-agent | Notion Business+? |
| DB 상태 변경 → 알림 (트리거 1-2개 + 고정 메시지) | platform-extension(Notion Automation / Zapier) | 노코드로 충분한가? |
| 반복 스케줄 + 다중 앱 연결 | claude-cowork | Claude Pro+? |
available_services에서 플랜·티어가 확인되지 않으면 "(확인 필요)" 표시로 포함.
확인이 안 됐다는 이유로 더 무거운 형태를 추천하지 않는다.
## Core Principle: Lightweight-first
ALWAYS prefer the lightest form that solves the problem.
If recommending a heavy form (web-service, cli-tool), you MUST
explain why lighter alternatives fail.
Preference order: claude-skill > script > local-html >
bookmarklet > userscript > notion-custom-agent > claude-cowork >
platform-extension > apps-script-webapp >
chrome-extension > cli-tool > web-service
## Implementation Cost (단순함 강제)
Rate the recommended form's implementation cost:
- 1 = 노코드 즉시 (Notion Automation, Zapier/Make 단순 트리거)
- 2 = 노코드 조합 (notion-custom-agent, n8n 노드, claude-cowork)
- 3 = 최소 코드 (Apps Script, bookmarklet, claude-skill)
- 4 = 코드 작성 필요 (chrome-extension, cli-tool, apps-script-webapp)
- 5 = 풀스택 개발 (web-service)
승격 규칙: competing_forms 중 score_diff ≤ 10이고
implementation_cost가 2 이상 낮은 대안이 있으면,
그 대안을 추천 form으로 승격하고 rationale에 이유를 명시한다.
## Scoring Rubric
| Item | Max | Criteria |
|--------------|-----|---------------------------------------------|
| Audience | 15 | 사용 대상이 명확함 |
| Env | 15 | 실행 환경이 특정됨 |
| Lifespan | 15 | 1회성/지속 여부 결정됨 |
| Constraint | 15 | 기술 제약 파악됨 |
| Distribution | 10 | 배포 방식 결정됨 |
| Integration | 10 | 연동 요구사항 파악됨 |
| Security | 20 | 외부 의존성/API 키 필요성 평가 완료, |
| | | 키 없는 대안 검토됨, 최소 권한 설계됨 |
## Product Forms (lightest first)
- claude-skill: Claude Code 대화 중 실행, 설치/키 불필요
- script: Shell/Python 로컬, 키 대부분 불필요
- local-html: 브라우저 단일 파일, 오프라인 가능, 키 불필요
- bookmarklet: 브라우저 즐겨찾기 JS 한 줄, 설치 불필요
- userscript: Tampermonkey 등, 브라우저 컨텍스트 접근, 키 불필요
- notion-custom-agent: Notion 팀 자동화 에이전트. 한 명 세팅 → 팀 공유.
Slack 멘션 트리거, 리포트 생성, 태스크 태깅. 키·서버 불필요.
Notion+Slack 케이스 기본 첫 검토. 불확실하면 WebFetch로 확인:
Ref: https://www.notion.com/ko/help/guides/build-your-first-custom-agent
- claude-cowork: Claude Desktop 반복 자동화 (Pro 이상). Slack·Notion·GitHub
스케줄링. 서버 불필요. 불확실하면 WebFetch: https://claude.com/product/cowork
- platform-extension: 기존 플랫폼 위 확장 (Apps Script, Slack Workflow,
Notion Automation, Zapier/Make, n8n). 인증 플랫폼 위임.
n8n: 복잡 로직·셀프호스팅 필요 시.
- apps-script-webapp: Apps Script 웹앱. G Suite 인증, Sheets·Drive·Gmail 연결.
내부 폼·대시보드 최적. 키·서버 불필요.
- chrome-extension: 브라우저 컨텍스트, 설치형, 키 선택적
- cli-tool: 터미널 기반, 팀 배포, 환경변수 관리 가능
- web-service: 서버 필요, 인증/보안 관리 필수
## Security Evaluation Checklist
1. Need API keys? → Is there a keyless alternative?
2. Notion + Slack automation? → Check notion-custom-agent FIRST
(1 setup → team shared, Slack trigger, KB answers, zero keys/servers).
3. Recurring multi-app automation? → Check claude-cowork FIRST (Pro+, no server).
4. Existing platform (Sheets, Slack, Notion)? → Prefer platform-extension.
Simple/no-code: Zapier/Make. Complex/self-hosting: n8n.
G Suite URL+Sheets: apps-script-webapp.
5. Need a server? → Is serverless possible?
6. Sensitive data? → Can it stay local?
7. User auth? → Reuse existing auth (Google Workspace, Slack SSO)?
## Uncertainty Detection
Read the user's MOST RECENT answer carefully.
If it contains hedging language such as:
- "고민되네", "잘 모르겠어", "어떤 게 나을지"
- "~인 것 같긴 한데", "~도 좋을 것 같고", "일단은 ~"
- "아마", "아마도", "~인 것 같아"
Set "user_uncertain": true.
When user_uncertain is true, do NOT commit to a form even if score ≥ 80.
Instead, identify the single most ambiguous axis and surface one
clarifying question.
Special case — if the user expresses uncertainty about Slack access:
Ask explicitly: "슬랙 봇/앱(관리자 승인 필요) 수준이 필요한가요,
아니면 웹 URL을 automated-messages로 공유하는 것(설치·승인 불필요)으로
충분한가요?"
## Input
{원본 입력 + 모든 Q&A}
## Available Services Context
{available_services — 0.5단계에서 파악한 환경. 없으면 "unknown"}
형태 판정 시 사용 불가 서비스는 후보에서 제외한다.
## Already Tried
{tried_tools — 이미 시도한 도구 + 막힌 이유. 없으면 "none"}
이 도구들은 추천에서 제외하거나, 막힌 이유를 해결하는 대안임을 명시한다.
## Output (JSON only)
{
"score": 72,
"form": "chrome-extension",
"implementation_cost": 4,
"user_uncertain": false,
"lighter_alternative": {
"form": "local-html",
"viable": false,
"reason": "브라우저 탭의 DOM에 접근해야 하므로 extension 필요"
},
"competing_forms": [
{
"form": "apps-script-webapp",
"score": 68,
"implementation_cost": 3,
"pros": ["서버 불필요", "Google 인증 그대로 사용", "Sheets 직접 연결"],
"cons": ["Google Workspace 계정 필요", "UI 커스터마이징 제한적"],
"choose_when": "팀이 Google Workspace를 쓰고 Sheets 데이터를 다뤄야 할 때"
}
],
"breakdown": {
"audience_scope": {"score": 12, "max": 15, "note": "..."},
"env": {"score": 13, "max": 15, "note": "..."},
"lifespan": {"score": 10, "max": 15, "note": "..."},
"constraint": {"score": 12, "max": 15, "note": "..."},
"distribution": {"score": 7, "max": 10, "note": "..."},
"integration": {"score": 5, "max": 10, "note": "..."},
"security": {"score": 13, "max": 20, "note": "..."}
},
"dependencies": [
{
"type": "api_key",
"service": "서비스명",
"required": true,
"keyless_alternative": "대안 설명 또는 null",
"min_scope": "read-only, 특정 엔드포인트만"
}
],
"weakest": "security",
"suggestion": "...",
"rationale": "이 형태를 추천하는 이유 한 줄"
}
competing_forms 작성 규칙:
- 추천 form과 점수 차가 10 이하이고 실제로 viable한 형태만 포함
- 점수 차가 없거나 대안이 없으면 빈 배열 []
- pros/cons는 각 3개 이내, 구체적으로
Round {N} 결과 -- 형태 명확성 {score}/100
추천 형태: {form}
이유: {rationale}
{lighter_alternative가 있으면}
경량 대안: {lighter_form} -- {viable ? "가능하지만 " + 트레이드오프 : reason}
Audience {bar} {score}/15
Env {bar} {score}/15
Lifespan {bar} {score}/15
Constraint {bar} {score}/15
Distribution {bar} {score}/10
Integration {bar} {score}/10
Security {bar} {score}/20
보강 필요: {weakest축}
-> {suggestion}
competing_forms가 있으면 (점수 차 10 이하) 추가로 출력:
---
비슷하게 적합한 형태가 있습니다. 비교해보세요:
| | {추천 form} | {대안 form} |
|--|--|--|
| 적합도 | {score}/100 | {alt_score}/100 |
| 장점 | {pros 각 줄로} | {alt_pros 각 줄로} |
| 단점 | {cons 각 줄로} | {alt_cons 각 줄로} |
| 이럴 때 선택 | {choose_when} | {alt_choose_when} |
어느 쪽으로 가실건가요? (선택하지 않으면 추천 형태로 진행합니다.)
이후 계속:
---
Round {N+1}
{질문}
자동화·연동·서비스 형태가 확정되면 묻는다. (claude-skill, script, local-html, bookmarklet, userscript는 생략)
이 자동화를 실행하기 전에 기존 데이터를 먼저 정리·변환해야 하는
1회성 선행 작업이 있나요?
예: 담당자 이름이 텍스트 값으로 저장되어 있어 Person 필드로 변환 필요,
레거시 포맷 데이터를 신규 스키마로 마이그레이션 필요 등
없으면 "없어요"라고 하시면 바로 다음 단계로 넘어갑니다.
형태가 확정되면 로드맵 전에 외부 의존성을 전수 평가한다.
DB 접속, MCP 연결, 운영 데이터 접근이 포함되면 Step 6 인라인 보안 점검에서 🔴STOP으로 분류된다. 이 단계의 평가 결과는 Step 6에서 그대로 사용한다 — 재평가하지 않는다.
제품 형태: {form} (확정)
외부 의존성을 점검합니다.
---
의존성 평가
평가 순서:
의존성: {서비스명}
1단계 -- 필요한가?
-> {이 기능 없이 핵심 문제를 해결할 수 있는가?}
2단계 -- 키 없이 가능한가?
-> {공개 API, RSS, DOM 스크래핑, 로컬 처리 등 대안}
3단계 -- 최소 권한은?
-> {read-only, 특정 엔드포인트, rate limit 등}
결과 분류:
| 분류 | 설명 | 액션 |
|---|---|---|
| 제거 가능 | 키 없이 대안으로 해결 | 대안 방법 로드맵에 반영 |
| 키 필요 (최소) | 키 필수, 최소 권한으로 축소 | API 키 요청서 생성 |
| 키 필요 (넓음) | 넓은 권한 필요 | 요청서 + 보안 리뷰 권고 |
키 필요 시 확인: (1) 담당자? (2) 기존/신규? (3) 로컬/프로덕션?
의존성 평가가 끝나면 페이즈 설계 질문으로 전환한다.
제품 형태: {form} (확정)
외부 의존성: {N}개 ({제거 가능 M개}, {키 필요 K개})
이제 단계를 나눠보겠습니다.
Phase 설계 — {질문 1-2개}
페이즈 설계 질문 방향 (MVP 최소 조건 / 사용성 추가 / 배포·확장 시점 / 팀 배포 키 관리). 페이즈는 3개 기본, 필요에 따라 2~5개로 조정.
로드맵 문서 내용:
# {제목} -- 제품화 로드맵
**제품 형태**: {form}
**명확성**: {score}/100 ({rounds}라운드)
**보안 등급**: {최경량 | 경량 | 중간 | 무거움}
**작성일**: {오늘}
---
## 제품 선택 근거
{왜 이 형태가 이 문제에 맞는지 -- 2-3줄}
{더 가벼운 형태가 안 되는 이유 -- 1-2줄. 최경량 형태면 생략}
## 외부 의존성 & 보안
**의존성 요약**: {총 N개 -- 제거 M개, 키 필요 K개}
{키가 필요한 의존성이 없으면}
이 제품은 외부 API 키 없이 동작합니다.
{키가 필요한 의존성이 있으면, 각각에 대해}
### API 키 요청서 -- {서비스명}
| 항목 | 내용 |
|------|------|
| 서비스 | {서비스명 + URL} |
| 필요 권한(scope) | {read-only, 특정 엔드포인트 등 최소 범위} |
| 사용 목적 | {이 키로 무엇을 하는지 한 줄} |
| 대안 검토 결과 | {키 없이 시도한 방법과 왜 안 되는지} |
| 사용 환경 | {로컬 개발 / 프로덕션 / CI 등} |
| 요청 담당자 | {사용자가 답한 담당자} |
| 키 사용자 | {이 제품을 실행할 사람/시스템} |
> 이 요청서를 키 담당자에게 전달하세요.
## Phase 1 -- MVP
**목표**: {한 줄}
**포함 기능**:
- {기능 1}
- {기능 2}
**보안 체크**:
- [ ] API 키 없이 동작 확인 {또는: 키 환경변수로 분리}
- [ ] 민감 데이터 로컬 처리 확인
**완료 기준**: {검증 가능한 기준}
**예상 소요**: {러프하게}
## Phase 2 -- 사용성
**목표**: {한 줄}
**추가 내용**: {추가 기능/개선}
**완료 기준**: {기준}
## Phase 3 -- 배포/확장
**목표**: {한 줄}
**추가 내용**: {배포 자동화, 문서화, 확장 등}
**보안 체크**: [ ] 키 로테이션 문서화 / [ ] 접근 권한 최소화
**완료 기준**: {기준}
---
## 지금 당장 시작할 것
{Phase 1의 첫 번째 구체적 액션 -- 동사로 시작}
---
## 원본 명세 요약
{입력 원문 핵심 2-3줄}
저장:
mcp__notion__notion-create-pages로 해당 페이지 하위 페이지 생성Write로 현재 작업 디렉토리에 ./{제목}-product-brief.md 저장보안 점검 -- 인라인:
Step 4에서 평가한 의존성 결과를 아래 등급으로 판정하고 출력한다. 질문하지 않는다. 재평가하지 않는다. 생략하지 않는다.
등급 판정 기준:
🔴 STOP — 설계 중단, 사내 보안 담당에게 리뷰 요청:
🟡 REVIEW — 자가 체크 후 진행:
🟢 SAFE — 안전 진행:
민감 데이터 기준:
| 등급 | 해당 데이터 |
|---|---|
| 🔴 STOP | 이름·전화·이메일·ID번호, 의료·진료 기록, 결제·카드 정보, 인증 토큰·비밀번호 |
| 🟡 REVIEW | 내부 운영 지표·계약 조건, 직원 정보, 시스템 구조·인프라 정보 |
| 🟢 SAFE | 익명화·집계 통계, 코드(자격증명 제외), 공개 API 응답, 공개 문서 |
출력 형식 (의존성 있을 때):
의존성이 없는 경우:
보안 점검 🟢 SAFE: 외부 의존성 없음.
🔴 STOP인 경우:
================================================================
보안 점검 🔴 STOP -- {의존성명}
================================================================
위험: {무엇이 문제인지 1줄}
이유: {왜 위험한지 — PII 유출 경로, 법적 리스크 등}
진행 전 사내 보안 담당 채널에 아래 리뷰 요청서를 제출하세요:
[보안 리뷰 요청]
- 연결 대상: {시스템명}
- 데이터 유형: {접근하려는 데이터 종류}
- 사용 목적: {이유}
- AI 도구: {MCP 서버명, API 클라이언트 등}
- 환경: {prod / staging / local}
- 권한: {read-only / read-write}
대안:
- AI Gateway(PII 가드레일)를 통한 연결
- 민감 컬럼 제외한 읽기 전용 뷰(view) 접근
- 로컬 익명화 데이터로 개발 후 리뷰를 거쳐 연결
================================================================
🟡 REVIEW인 경우:
================================================================
보안 점검 🟡 REVIEW -- {의존성명}
================================================================
감지: {무엇을 하려는지}
아래 중 하나라도 해당하면 🔴 STOP:
- [ ] 프로덕션 환경 데이터에 접근하는가?
- [ ] PII·민감 데이터가 포함될 수 있는가?
- [ ] 쿼리 결과가 외부 LLM 서버로 전송되는가?
- [ ] 자격증명이 공개 채널·저장소에 포함되는가?
설계 가이드:
- API 키는 환경변수로 분리, 버전관리에서 제외
- 팀 공유 키는 시크릿 매니저 사용 (직접 공유 금지)
- 최소 권한(read-only) 원칙
- DB 직접 접근 시: 민감 컬럼 제외 뷰 + AI Gateway 경유 권장
================================================================
🟢 SAFE인 경우:
보안 점검 🟢 SAFE -- {의존성명}: {안전한 이유 1줄}
보안 점검 출력 후에 완료 안내를 출력한다.
완료 안내:
로드맵이 완성되었습니다.
저장 위치: {Notion 링크 또는 로컬 파일 경로}
제품 형태: {form}
보안 등급: {등급}
Phase 수: {N}개
API 키: {불필요 | N개 필요 -- 위 보안 점검 참조}
지금 시작: {첫 액션}
---
{API 키가 필요하면}
위 보안 점검의 담당자에게 확인 후 Phase 1을 시작하세요.
{API 키가 없으면}
Phase 1을 바로 시작할 수 있습니다.
user_uncertain: true로 처리.
점수가 80 이상이어도 형태 확정 금지. 가장 모호한 축 1개를 집중 질문.
슬랙 접근 불확실이면 반드시 물을 것:
"봇/앱(관리자 승인 필요)이 필요한가요, URL을 automated-messages로
공유하는 것(설치·승인 불필요)으로 충분한가요?"Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub kimyoon21/brown-claude-marketplace --plugin ideas-come-true