| name | pm-engine |
| description | Interface with the PM-ENGINE-MEMORY file โ the operator's accumulated PM tacit knowledge database. Enables agents to reference, search, and apply TK (Tacit Knowledge) entries, and supports TK extraction from experience (--mode extract), TK querying and referencing (--mode query), and TK-to-instruction conversion (--mode build). The core of the pm-engine competitive moat. --mode decide for pattern-matching against stored PM decision patterns. --mode save-decision for PRD-linked tech decision logging (harness/tech-decisions/TD-NNN.yaml). --mode index-codebase for scanning project files and surfacing unrecorded decision candidates. |
| argument-hint | [TK query or operation] [--mode extract|query|build|save|decide|save-decision|index-codebase] |
| allowed-tools | ["Read","Write"] |
| model | inherit |
Core Goal
- PM-ENGINE-MEMORY์ TK๋ฅผ ์์ด์ ํธ๊ฐ ์คํ ์ค์ ๋์ ์ผ๋ก ์ฐธ์กฐํ์ฌ ํ๋จ ํ์ง์ ์์ฌ๊ฒฐ์ ๋จ๊ณ๋ง๋ค ํฅ์์ํค๊ธฐ
- TK-NNN ๋จ์๋ก ์ถ์ ๋ ์๋ฌต์ง๋ฅผ ์กฐ์งํํ์ฌ ์ง์ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ๊ณ , ๊ด๋ จ TK๋ฅผ ์๋์ผ๋ก ๊ฒ์/์ฐ๊ฒฐ๋๊ฒ ๊ด๋ฆฌ
- ๋งค์ผ 1๊ฐ์ฉ ์ถ์ถ๋๋ ์๋ก์ด TK๋ฅผ Instruction์ ๋ฐ์ํ์ฌ ์์ด์ ํธ์ ํ์ต ์ฌ์ดํด์ ์๋ํ
Trigger Gate
Use This Skill When
- ์์ด์ ํธ๊ฐ ํ์ฌ ์ํฉ๊ณผ ๊ด๋ จ๋ PM ํ๋จ ๊ธฐ์ค(TK)์ด ํ์ํ ๋ ๋์ ์ผ๋ก ๊ฒ์ํ๊ณ ์ถ์ ๋
- TK๋ฅผ ์์ด์ ํธ Instruction์ผ๋ก ๋ณํํ์ฌ ์ค์ ๋์์ ๋ฐ์ํ๊ณ ์ถ์ ๋
- PM์ ๊ฒฝํ ๊ธฐ๋ก(TK-001~TK-010 ๊ฐ์ ์๋)์ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด TK๋ฅผ ์ถ์ถํ๊ณ ์ ์ฅํ ๋
- ๊ธฐ์กด TK๋ค์ด ์๋ก ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋๋์ง ํ์ธํ๊ฑฐ๋, ์ TK์ ์ฐ๊ด์ฑ์ ๋งคํํ ๋
- "์ด ๊ฒฝํ์ TK๋ก ๊ตฌ์กฐํํ๊ณ ์ถ์ด" โ
--mode extract
- "PM ํ๋จ ํจํด์ ์๋ฌต์ง๋ก ๊ธฐ๋กํ๊ณ ์ถ์ด" โ
--mode extract
- "์ธ์
์์ ๋ฐ๊ฒฌํ ์ธ์ฌ์ดํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฅํ๊ณ ์ถ์ด" โ
--mode save "์ธ์ฌ์ดํธ" ์ฌ์ฉ
- "๊ธฐ์ ๊ฒฐ์ ์ด์ ๋ฅผ PRD์ ํจ๊ป ๊ธฐ๋กํ๊ณ ์ถ์ด" โ
--mode save-decision
- "ํ๋ก์ ํธ์ ์ฃผ์ ๊ธฐ์ ๊ฒฐ์ ์ค ๋ฏธ๊ธฐ๋ก๋ ๊ฒ์ ์ฐพ๊ณ ์ถ์ด" โ
--mode index-codebase
Route to Other Skills When
- "TK๋ฅผ ๊ตฌ์กฐํํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฅํ๊ณ ์ถ์ด" โ pm-engine --mode extract ์ฌ์ฉ
- "์ด TK๊ฐ ์์ฌ๊ฒฐ์ ์ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์ค์ ์ฌ๋ก๋ฅผ ๋ณด๊ณ ์ถ์ด" โ pm-engine --mode decide์ ํจํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฐธ์กฐ
- "์์ด์ ํธ Instruction์ ์ TK๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์
๋ฐ์ดํธํ๊ณ ์ถ์ด" โ deliver์ agent-setup, prd ์คํฌ ์ฌ์ฉ
- "TK๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น์ฉ ์๋ฎฌ๋ ์ด์
์ด๋ ์๋๋ฆฌ์ค ๋ถ์์ ํ๊ณ ์ถ์ด" โ discover์ cost-sim, opp-tree ์ฌ์ฉ
- "์์ด์ ํธ ์คํ ์ค ์์ธก vs ์ค์ธก deviation ์ TK ํ๋ณด๋ก ์๋ ์ถ์ถ" โ sprint --step retro โ /pm-tacit-from-retro ๋ก ์๋ promote
Note: --mode save๋ ๋ค๋ฅธ ์คํฌ๋ก ๋ผ์ฐํ
ํ์ง ์๊ณ ์ง์ TK ํญ๋ชฉ์ ์ ์ฅํ๋ค.
Boundary Checks
- PM-ENGINE-MEMORY๋ "์ค์ ๊ฒฝํ ๊ธฐ๋ฐ"์ด๋ฏ๋ก, ์ผ๋ฐ LLM ์ง์๊ณผ ํญ์ ์ถฉ๋ํ ์ ์์ โ ์ถฉ๋ ์ TK ์ฐ์
- TK๊ฐ ์ถฉ๋ถํ์ง ์์ ์์ญ(์ ์ ํ, ์ ์์ฅ)์์๋ TK๋ง ๋ฏฟ์ง ๋ง๊ณ ๋ฐ์ดํฐ ๊ฒ์ฆ ํ์
- TK์ ํ์ฑํ/๋นํ์ฑํ ์กฐ๊ฑด์ ํญ์ ํ์ธ โ ์กฐ๊ฑด์ ๋ฌด์ํ TK ์ ์ฉ์ ์ค๋ฅ
--mode save โ ๋น ๋ฅธ ์ธ์ฌ์ดํธ ์ ์ฅ
์ธ์
์ค ๋ฐ๊ฒฌํ ์ธ์ฌ์ดํธ๋ฅผ TK ์ถ์ถ ํ๋ก์ฐ ์์ด ์ฆ์ ์ ์ฅํ๋ค.
์ฌ์ฉ๋ฒ
/pm-engine --mode save "์ธํฐ๋ทฐ์์ B2B ๊ณ ๊ฐ์ ROI ๊ณ์ฐ๋ณด๋ค ๋ฆฌ์คํฌ ์ ๊ฑฐ๋ฅผ ๋ ์ํจ"
์ ์ฅ ํ์
PM-ENGINE-MEMORY.md ๋งจ ๋์ ๋ค์ ํ์์ผ๋ก ์ถ๊ฐ:
## TK-QUICK-[YYMMDDHHmm]: [์ธ์ฌ์ดํธ ์ ๋ชฉ ์๋ ์ถ์ถ]
- **๋ ์ง**: YYYY-MM-DD
- **์ถ์ฒ**: [์ธ์
/์ปจํ
์คํธ โ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ์ง ์์ผ๋ฉด "์ง์ ๊ด์ฐฐ"๋ก ๊ธฐ๋ก]
- **๋ด์ฉ**: [์ธ์ฌ์ดํธ ์ ๋ฌธ]
- **์ ์ฉ ๊ฐ๋ฅ ์ํฉ**: [์ธ์ฌ์ดํธ์์ ์ถ๋ก ]
- **ํ๊ทธ**: #quick-save
> โ ๏ธ TK-QUICK์ ์ ์ TK-NNN ๊ฒํ ์ ์์ ํญ๋ชฉ์
๋๋ค. `/pm-engine --mode extract`๋ก ์ ์ ๋ฑ๋กํ๊ฑฐ๋ ์ญ์ ํ์ธ์.
๋์ ๊ท์น
PM-ENGINE-MEMORY.md ์์ผ๋ฉด ์๋ ์์ฑ ํ ์ ์ฅ
- ๊ฐ์ ๋ด์ฉ ์ค๋ณต ๊ฐ์ง (์ฒซ 20์ ๋งค์นญ) โ ์ค๋ณต ๊ฒฝ๊ณ ํ ์ ์ฅ ์ฌ๋ถ ํ์ธ
- ์ ์ฅ ํ "TK-QUICK-[ID] ์ ์ฅ๋จ โ
/pm-engine --mode extract๋ก ์ ์ ๋ฑ๋ก ๊ฐ๋ฅ" ์ถ๋ ฅ
--mode save-decision โ ๊ธฐ์ ๊ฒฐ์ + PRD ๋งํฌ ์ ์ฅ
์ธ์
์ค ๋ด๋ฆฐ ๊ธฐ์ ๊ฒฐ์ ์ PRD ์น์
๋งํฌ์ ํจ๊ป harness/tech-decisions/ ์ ์ ์ฅํ๋ค.
์ฌ์ฉ๋ฒ
/pm-engine --mode save-decision "Redis ์ ํ โ ยง13 H2 100ms ๊ฐ์ค"
/pm-engine --mode save-decision "Sequential orchestration ์ ํ โ ยง7 Anti-Goal: ๋ณ๋ ฌ ๋๋ฒ๊น
๋ณต์ก๋ ํํผ"
์ธ์ ํ์: "[๊ฒฐ์ ๋ด์ฉ] โ [PRD ๋งํฌ (์ ํ)]"
TD ํ์ผ ํ์
harness/tech-decisions/TD-NNN.yaml:
id: TD-NNN
date: YYYY-MM-DD
decision: "[๊ฒฐ์ ๋ด์ฉ]"
alternatives: []
prd_link: "[PRD ์น์
+ ๊ฐ์ค ํ
์คํธ]"
evidence: ""
outcome: null
TD-NNN ๋ฒํธ ๋ถ์ฌ (๊ฒฐ์ ๋ก )
ls harness/tech-decisions/TD-*.yaml 2>/dev/null \
| grep -oE 'TD-[0-9]+' \
| grep -oE '[0-9]+' \
| sort -n \
| tail -1 \
| python3 -c "
import sys
n = sys.stdin.read().strip()
print(int(n) + 1 if n else 1)
"
๊ฒฐ๊ณผ๋ฅผ zero-padding 3์๋ฆฌ๋ก ํฌ๋งท: TD-$(printf '%03d' $NEXT_NUM)
โ ๏ธ wc -l ๋ฐฉ์์ ํ์ผ ์ญ์ ์ ๋ฒํธ๊ฐ ์ถฉ๋ํฉ๋๋ค. ํญ์ ๊ธฐ์กด ์ต๋๊ฐ+1์ ์ฌ์ฉํ์ธ์.
๋์ ๊ท์น
harness/tech-decisions/ ์์ผ๋ฉด mkdir -p ํ ์งํ
"๊ฒฐ์ ๋ด์ฉ โ PRD ๋งํฌ" ํ์ฑ: โ ๊ธฐ์ค split. PRD ๋งํฌ ์์ผ๋ฉด prd_link: "" ๋ก ์ ์ฅ
- ์ ์ฅ ํ ์ถ๋ ฅ:
- ์ด๋ฏธ ๋์ผํ TD-NNN ํ์ผ์ด ์กด์ฌํ๋ฉด ์ฆ์ ์๋ฌ: "TD-NNN already exists. ์ฌ์คํํ์ธ์." โ ์ ๋ ๋ฎ์ด์ฐ๊ธฐ ๊ธ์ง
โ
TD-NNN ์ ์ฅ ์๋ฃ โ harness/tech-decisions/TD-NNN.yaml
๊ฒฐ์ : [๋ด์ฉ]
PRD ๋งํฌ: [๋งํฌ (์์ผ๋ฉด "๋ฏธ์ง์ โ ๋์ค์ ์ถ๊ฐ ๊ฐ๋ฅ")]
โ alternativesยทevidence๋ ํ์ผ ์ง์ ํธ์ง์ผ๋ก ์ถ๊ฐ ๊ฐ๋ฅ
--mode index-codebase โ ๊ธฐ์ ๊ฒฐ์ ํ๋ณด ํ์
ํ๋ก์ ํธ ์ฃผ์ ํ์ผ์ ์ค์บํ์ฌ ๊ธฐ์ ์คํ์ ํ์
ํ๊ณ , ๊ธฐ์กด TD ํ์ผ๊ณผ ๋์กฐํด ๋ฏธ๊ธฐ๋ก ๊ฒฐ์ ํ๋ณด๋ฅผ ์ ์ํ๋ค.
๋์
Step 1 โ ๊ธฐ์ ์คํ ํ์ผ ์ค์บ (๊ฒฐ์ ๋ก )
cat package.json 2>/dev/null | python3 -c "import json,sys; d=json.load(sys.stdin); print(json.dumps(list(d.get('dependencies',{}).keys())[:20]))" 2>/dev/null || true
cat pyproject.toml 2>/dev/null | grep -A30 "\[project\]" | grep "dependencies" || true
cat requirements.txt 2>/dev/null | head -30 || true
find . -name "ARCHITECTURE.md" -o -name "README.md" | head -3 | xargs cat 2>/dev/null | head -100 || true
Step 2 โ ๊ธฐ์กด TD ๋ชฉ๋ก ๋ก๋ (๊ฒฐ์ ๋ก )
ls harness/tech-decisions/TD-*.yaml 2>/dev/null || echo "TD_NONE"
Step 3 โ ๋ฏธ๊ธฐ๋ก ํ๋ณด ๋์ถ (LLM)
์ค์บ๋ ๊ธฐ์ ์คํ๊ณผ ๊ธฐ์กด TD ๋ชฉ๋ก์ ๋น๊ตํ์ฌ:
- ์ด๋ฏธ TD๋ก ๊ธฐ๋ก๋ ๊ฒฐ์ : โ
๊ธฐ๋ก๋จ
- ์ฃผ์ ๊ธฐ์ (DB, ์ธ์ด, ํ๋ ์์ํฌ, ์ค์ผ์คํธ๋ ์ด์
ํจํด)์ด TD๋ก ์์ผ๋ฉด: ํ๋ณด ์ ์
Step 4 โ ์ถ๋ ฅ
๐ ๊ธฐ์ ์คํ ํ์ง:
- [๊ฐ์ง๋ ์ฃผ์ ๊ธฐ์ ๋ชฉ๋ก]
๐ ๊ธฐ์กด TD: N๊ฐ
- TD-001: [๊ฒฐ์ ์์ฝ]
๐ก ๋ฏธ๊ธฐ๋ก ๊ฒฐ์ ํ๋ณด (M๊ฐ):
1. [๊ธฐ์ X] โ `/pm-engine --mode save-decision "X ์ ํ โ [PRD ๋งํฌ]"` ๋ก ๊ธฐ๋ก ๊ฐ๋ฅ
2. [๊ธฐ์ Y] โ ...
Boundary Checks
harness/tech-decisions/ ์์ผ๋ฉด TD 0๊ฐ๋ก ๊ฐ์ฃผ (์๋ฌ ์๋)
- ๊ธฐ์ ์คํ ํ์ผ์ด ํ๋๋ ์์ผ๋ฉด fail loud: "package.json / pyproject.toml / requirements.txt ์ค ํ๋๊ฐ ํ์ํฉ๋๋ค"
PM-ENGINE-MEMORY Interface
PM-ENGINE-MEMORY๋ pm-engine์ ์ฌ์ฅ์
๋๋ค.
TK-NNN์ด๋?
TK = Tacit Knowledge (์๋ฌต์ง)
NNN = Never-ending Nuance Network โ ๋์์ด ์์ด๋ ๋์์ค์ ๋คํธ์ํฌ
๋ฒํธ๋ TK-001๋ถํฐ TK-999๊น์ง. ๋งค์ผ 1๊ฐ์ฉ ์ถ์ ํ๋ฉด ์ฝ 3๋
โ ๊ทธ ์์ ์ ์์ด์ ํธ๋ PM์ ๋ถ์ ์ด ๋ฉ๋๋ค. ๊ฐ TK๋ ๊ณ ๋ฆฝ๋ ์ง์์ด ์๋๋ผ ๐ ์ฐ๊ด TK๋ก ์ฐ๊ฒฐ๋ ์ง์ ๊ทธ๋ํ๋ฅผ ํ์ฑํฉ๋๋ค. TK๊ฐ 10๊ฐ์ผ ๋๋ ๊ฐ๋ณ ํ๋จ ๊ธฐ์ค์ด์ง๋ง, 100๊ฐ๋ฅผ ๋์ผ๋ฉด TK ๊ฐ ์กฐํฉ์ด ๋ง๋๋ ๋ณตํฉ ํ๋จ์ด ์์๋ฉ๋๋ค.
๊ตฌ์กฐ:
PM-ENGINE-MEMORY.md
โโโ TK-001: ๊ธด๊ธ ์์ฒญ ์ฐ์ ์์ ํ๋จ
โโโ TK-002: AI ๋ค์ดํฐ๋ธ ์ฌ๊ณ ํํฐ
โโโ ...
โโโ TK-999: [999๋ฒ์งธ ์๋ฌต์ง โ PM ๋ถ์ ์์ฑ]
์ด ํ์ผ์ด ํน๋ณํ ์ด์ :
- ์ผ๋ฐ LLM ์ง์: ์ธํฐ๋ท์ ํ๊ท
- PM-ENGINE-MEMORY: PM์ ์ค์ ๊ฒฝํ์์ ๊ฒ์ฆ๋ ํ๋จ ๊ธฐ์ค
TK๊ฐ ์์ผ์๋ก ์์ด์ ํธ์ ํ๋จ ํ์ง์ด ์ฌ๋ผ๊ฐ๋๋ค.
์ด๊ฒ์ด ๋ณต์ ๋ถ๊ฐ๋ฅํ Domain TK ํด์์ ์ค์ฒด์
๋๋ค.
TK โ Instruction ๋ณํ ํ์ดํ๋ผ์ธ
1์ผ 1ํ๋กฌํํธ ํฌ๋ก
โ
PM ํ๋จ ๊ฒฝํ ๊ธฐ๋ก
โ
/pm-tacit-extract
โ
TK-NNN ๊ตฌ์กฐํ
โ
PM-ENGINE-MEMORY.md append
โ
/tk-to-instruction
โ
์์ด์ ํธ System Prompt ์
๋ฐ์ดํธ
โ
๋ ๋์ ํ๋จ์ ํ๋ ์์ด์ ํธ
TK ์ฐธ์กฐ ๋ฐฉ๋ฒ
์์ด์ ํธ๊ฐ PM-ENGINE-MEMORY๋ฅผ ํ์ฉํ๋ 2๊ฐ์ง ๋ฐฉ์:
๋ฐฉ์ 1 โ ์ง์ ๋ก๋ (์๊ท๋ชจ TK)
[System Prompt์ ํฌํจ]
๋ค์ PM ํ๋จ ๊ธฐ์ค์ ์ฐธ๊ณ ํ์ธ์:
<pm-engine-memory>
TK-001: [๋ด์ฉ]
TK-003: [๋ด์ฉ]
</pm-engine-memory>
๋ฐฉ์ 2 โ ๋์ ๊ฒ์ (๋๊ท๋ชจ TK)
[์คํ ์ค]
memory_search("ํ์ฌ ์ํฉ๊ณผ ๊ด๋ จ๋ PM ํ๋จ ๊ธฐ์ค")
โ ๊ด๋ จ TK 1~3๊ฐ ๋ฐํ
โ ์ปจํ
์คํธ์ ์ฝ์
โ ํ๋จ์ ํ์ฉ
Contextual Retrieval (CR) ํจํด:
- TK๋ง๋ค ๐ข ํ์ฑํ ์กฐ๊ฑด์ด ์์
- ํ์ฌ ์ํฉ โ ํ์ฑํ ์กฐ๊ฑด ๋งค์นญ โ ๊ด๋ จ TK๋ง ๋ก๋
- ์ ์ฒด ํ์ผ ๋ก๋ ์์ด ์ ํํ TK๋ง ์ฐธ์กฐ
PM-ENGINE-MEMORY Seed Library (TK-001 ~ TK-010)
์๋๋ AI ์์ด์ ํธ ์ ํ์ ๋ง๋๋ PM์ด ์ถ์ ํ ์ ์๋ ์๋ TK์
๋๋ค.
/extract ์ปค๋งจ๋๋ก ์์ ์ ๊ฒฝํ์์ TK-011๋ถํฐ ๊ณ์ ์ถ๊ฐํ์ธ์.
TK-001: ๊ธด๊ธ ์์ฒญ ์ฐ์ ์์ ํ๋จ
๐ ํจํด:
"๊ธด๊ธ"์ด๋ผ๋ ํํ์ 80%๋ ๊ฐ์ง ๊ธด๊ธ. ์ค์ ๋ง๊ฐ์ผ๊ณผ ๋น์ฆ๋์ค ์ํฉํธ๋ก๋ง ํ๋จํ๋ค.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์์ด์ ํธ๊ฐ ์์
์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ ๋
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ์ค์ SLA๊ฐ ๊ฑธ๋ฆฐ ์ฅ์ ๋์ ์ํฉ
๐ก Why: ์์ฒญ์์ ์๋ฐ๊ฐ๊ณผ ์ค์ ๊ธด๊ธ๋๋ ๋ค๋ฅด๋ค. ๊ฐ์ ์ด ์๋ ์ํฉํธ๋ก ํ๋จํด์ผ ์ง์ง ์ค์ํ ์ผ์ ์ง์ค ๊ฐ๋ฅ.
๐ ์ฐ๊ด TK: TK-004, TK-009
TK-002: AI ๋ค์ดํฐ๋ธ ์ฌ๊ณ ํํฐ
๐ ํจํด:
์ ๊ธฐ๋ฅ์ ๊ธฐํํ ๋ "์ฌ๋์ด ๊ผญ ํด์ผ ํ๋?"๋ฅผ ๋จผ์ ์ง๋ฌธํ๋ค. AI๊ฐ 80% ์ ํ๋๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ฉด AI์๊ฒ ๋งก๊ธฐ๊ณ , ์ฌ๋์ ์์ธ ์ฒ๋ฆฌ์ ์ต์ข
ํ๋จ์ ์ง์ค.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์ ๊ท ๊ธฐ๋ฅ ๊ธฐํ, ์ํฌํ๋ก์ฐ ์ค๊ณ, ์
๋ฌด ์๋ํ ๊ฒํ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ๋ฒ์ ์ฑ
์์ด ์๋ฐ๋๋ ์์ฌ๊ฒฐ์ (์๋ฃ, ๋ฒ๋ฅ , ๊ธ์ต ๊ท์ )
๐ก Why: ๋ํดํธ๋ฅผ "์ฌ๋์ด ํ๋ค"์์ "AI๊ฐ ํ๋ค"๋ก ๋ฐ๊พธ๋ฉด ์ ํ ์ค๊ณ์ ์ถ๋ฐ์ ์ด ๋ฌ๋ผ์ง๋ค. 80%๋ฉด ์ถฉ๋ถํ ์์ญ์ด ๋๋๊ฒ ๋ง๋ค.
๐ ์ฐ๊ด TK: TK-006, TK-007
TK-003: ์์ด์ ํธ ๋น์ฉ 10๋ฐฐ ๋ฒ์น
๐ ํจํด:
POC์์ ๋น์ฉ ๊ฒ์ฆ ์ ํ๋ฉด ์ค์ผ์ผ์์ ์ฃฝ๋๋ค. ์ ์ 10๋ฐฐ = ํ ํฐ ๋น์ฉ 10๋ฐฐ. ์ $500 POC๋ 100๋ช
์ด๋ฉด $50K.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์์ด์ ํธ ์ ๊ท ๊ฐ๋ฐ, cost-sim ์คํ, ์ค์ผ์ผ ํ๋ ์๋ฆฝ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ๋ด๋ถ ๋๊ตฌ(์ ์ 1~5๋ช
๊ณ ์ )๋ก ๋น์ฉ ์๊ณ๊ฐ์ด ๋ฎ์ ๋
๐ก Why: LLM API ๋น์ฉ์ ์ ํ ์ค์ผ์ผ๋ง. SaaS์ฒ๋ผ "์ ์ ๋๋ฉด ํ๊ณ๋น์ฉ ์ ๋ก"๊ฐ ์๋๋ค. ๋ง๋ค๊ธฐ ์ ์ ๋ชจ๋ธ๋งํ์ง ์์ผ๋ฉด ์ถ์ ํ ์ข์ด.
๐ ์ฐ๊ด TK: TK-007, TK-010
TK-004: ๋ฐ์ดํฐ ์์ผ๋ฉด ๊ฐ์ค์ด๋ค
๐ ํจํด:
๊ฐ์ผ๋ก ๋ด๋ฆฐ ๊ฒฐ์ ์ "๊ฐ์ค"๋ก ํ๊ธฐํ๋ค. 2์ฃผ ๋ด ๋ฐ์ดํฐ ๊ฒ์ฆ ์ ๋๋ฉด ์๋ ํ๊ธฐ. ๊ฐ โ ์์ฌ๊ฒฐ์ .
๐ข ํ์ฑํ ์กฐ๊ฑด: ์ ํ ๋ฐฉํฅ ๊ฒฐ์ , ๊ธฐ๋ฅ ์ฐ์ ์์ ํ ๋ก , OKR ์ค์ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ํ์ ๋จ๊ณ(Discovery Phase)์์ ๋ฐฉํฅ์ฑ์ ์ก๋ ์ด๊ธฐ ๊ฐ์ค ์๋ฆฝ
๐ก Why: ๊ฒฝํ ๋ง์ PM์ผ์๋ก ๊ฐ์ ํ์ ์ผ๋ก ์ฐฉ๊ฐํ๋ค. "๊ฐ์ค" ํ๊ทธ๋ฅผ ๋ถ์ด๋ฉด ๊ฒ์ฆ ์๋ฌด๊ฐ ์๋์ผ๋ก ๋ฐ๋ผ์จ๋ค.
๐ ์ฐ๊ด TK: TK-001, TK-005
TK-005: ์ฒซ ์ ์ 3๋ช
์ ํจ์
๐ ํจํด:
์ด๊ธฐ ์ ์ 3๋ช
์ ํผ๋๋ฐฑ์ ๊ทน๋จ๊ฐ์ด๋ค. 10๋ช
๊น์ง๋ ํจํด์ด ์๋. 10๋ช
๋์ด์ผ "๋ฐ๋ณต๋๋ ๋ฌธ์ "๋ก ์ธ์ ํ๋ค.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์ ์ ํผ๋๋ฐฑ ๋ถ์, ๊ธฐ๋ฅ ์์ฒญ ์ฐ์ ์์ ํ๋จ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ๋ณด์/๋ฐ์ดํฐ ์ ์ถ ๊ฐ์ ํฌ๋ฆฌํฐ์ปฌ ์ด์ (1๊ฑด์ด๋ผ๋ ์ฆ์ ๋์)
๐ก Why: ์ผ๋ฆฌ์ด๋ตํฐ๋ ์ ์ฒด ์ ์ ๋ฅผ ๋ํํ์ง ์๋๋ค. 3๋ช
์ด ์ํ๋ค๊ณ ๋ง๋ค๋ฉด, 100๋ช
์ ์ ์ด๋ค. n=10๊น์ง ๊ธฐ๋ค๋ ค๋ผ.
๐ ์ฐ๊ด TK: TK-004, TK-010
TK-006: ์์ด์ ํธ ํ๊ฐ์ UX๋ก ํด๊ฒฐ
๐ ํจํด:
ํ๊ฐ๋ฅ 0%๋ ๋ถ๊ฐ๋ฅํ๋ค. "ํ์ธํด์ฃผ์ธ์" UX๊ฐ ํด๋ฒ. ์์ด์ ํธ ์ถ๋ ฅ์ ์ ๋ขฐ๋ ํ์ + ์ฌ์ฉ์ ํ์ธ ์คํ
์ ์ฝ์
ํ๋ค.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์์ด์ ํธ PRD ์์ฑ, ์ธ์คํธ๋ญ์
์ค๊ณ, ์ ๋ขฐ์ฑ ์ฒด๊ณ ์ ๊ฒ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ์์ด์ ํธ๊ฐ ๋ฐฑ์๋์์๋ง ๋์ํ๊ณ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๊ฐ ์์ ๋
๐ก Why: ๋ชจ๋ธ์ ๊ณ ์น๋ ค ํ๋ฉด ๋์ด ์๋ค. ๋์ "์์ด์ ํธ๊ฐ ํ๋ฆด ์ ์๋ค"๋ฅผ ์ ์ ๋ก UX๋ฅผ ์ค๊ณํ๋ฉด, ํ๊ฐ์ด ์ฌ๊ณ ๊ฐ ์๋ ํ์ธ ์์ฒญ์ด ๋๋ค.
๐ ์ฐ๊ด TK: TK-002, TK-009
TK-007: Build vs Buy 2์ฃผ ๋ฒ์น
๐ ํจํด:
์ง์ ๋ง๋ค๋ฉด 2์ฃผ ๋๊ฒ ๊ฑธ๋ฆฌ๋๊ฐ? โ Buy ๋จผ์ ๊ฒํ . 2์ฃผ ์ด๋ด๋ฉด Build. ๋จ, ํต์ฌ ์ฐจ๋ณํ ๊ธฐ๋ฅ์ ์๊ฐ๊ณผ ๋ฌด๊ดํ๊ฒ ๋ฌด์กฐ๊ฑด Build.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์ ๊ท ๊ธฐ๋ฅ ๊ฐ๋ฐ ๊ฒฐ์ , ๋๊ตฌ/์ธํ๋ผ ์ ํ, ์ํคํ
์ฒ ๋ฆฌ๋ทฐ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ์ด๋ฏธ ๊น์ด ํฌ์ํ ๊ธฐ์ ์คํ์ ๊ต์ฒด ๊ฒํ ํ ๋ (์ ํ ๋น์ฉ ๋ณ๋ ๊ณ์ฐ ํ์)
๐ก Why: PM์ "์ฐ๋ฆฌ๊ฐ ๋ง๋ค๋ฉด ๋ ์ข๋ค"๋ ํธํฅ์ด ์๋ค. 2์ฃผ ๊ธฐ์ค์ ๋๋ฉด ๊ฐ์ ์ด ์๋ ๋ฆฌ์์ค๋ก ํ๋จํ๊ฒ ๋๋ค.
๐ ์ฐ๊ด TK: TK-003, TK-008
TK-008: ๊ฒฝ์์ฌ ์นดํผ๋ ํด์๊ฐ ์๋
๐ ํจํด:
๊ฒฝ์์ฌ ๊ธฐ๋ฅ์ ๋ฐ๋ผํ๋ฉด ์์ํ ์ถ๊ฒฉ์๋ค. ์์ฒด ์ด์ ๋ฐ์ดํฐ + PM ์๋ฌต์ง ์ถ์ ์ด ์ง์ง ํด์. "GPT-4๋ฅผ ์๋๋ค"๋ ์ฐจ๋ณํ๊ฐ ์๋๋ค.
๐ข ํ์ฑํ ์กฐ๊ฑด: ๊ฒฝ์ ๋ถ์, ์ ๋ต ๋ฆฌ๋ทฐ, ๋ก๋๋งต ์ฐ์ ์์ ๊ฒฐ์ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: Table stakes ๊ธฐ๋ฅ(์์ผ๋ฉด ์์ฅ ์ง์
์์ฒด๊ฐ ์ ๋๋ ๊ธฐ๋ฅ) ๋์ ์
๐ก Why: ๋ชจ๋ ํ์ด ๊ฐ์ LLM์ ์ด๋ค. ๋ชจ๋ธ์ด ์๋, ๊ทธ ์์ ์์ด๋ ๋๋ฉ์ธ ๋ฐ์ดํฐ์ ํ๋จ ๊ธฐ์ค(TK)์ด ์ง์ง ๊ฒฝ์๋ ฅ.
๐ ์ฐ๊ด TK: TK-002, TK-003
TK-009: ์ง๋ฌธ์ ํ์ง์ด ์์ด์ ํธ ํ์ง์ ๊ฒฐ์
๐ ํจํด:
์์ด์ ํธ์๊ฒ "๋ญ ํ๋ผ"๋ณด๋ค "์ ํ๋์ง + ํ๋จ ๊ธฐ์ค"์ ์ฃผ๋ฉด ๊ฒฐ๊ณผ๊ฐ 3๋ฐฐ ์ข์์ง๋ค. Instruction์ ๋งฅ๋ฝ๊ณผ ํ๋จ ๊ทผ๊ฑฐ๋ฅผ ๋ฃ์ด๋ผ.
๐ข ํ์ฑํ ์กฐ๊ฑด: ์์ด์ ํธ ์ธ์คํธ๋ญ์
์์ฑ, ํ๋กฌํํธ ์ค๊ณ, TKโInstruction ๋ณํ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ๋จ์ ํฌ๋งท ๋ณํ ๋ฑ ํ๋จ์ด ํ์ ์๋ ๊ธฐ๊ณ์ ์์
๐ก Why: LLM์ "์"๋ฅผ ์๋ฉด ์์ธ ์ํฉ์์๋ ์ ์ ํ ํ๋จ์ ๋ด๋ฆฐ๋ค. "๋ญ"๋ง ์๋ฉด ๊ท์น์ ์๋ ์ํฉ์์ ํ๊ฐํ๋ค.
๐ ์ฐ๊ด TK: TK-006, TK-001
TK-010: ๊ทธ๋ก์ค๋ ๋ฆฌํ
์
๋ค์
๐ ํจํด:
๋ฆฌํ
์
์์ด acquisition์ ํฌ์ํ๋ฉด ๋ฐ ๋น ์ง ๋
. ์์ด์ ํธ๋ ๋ง์ฐฌ๊ฐ์ง โ ์ฌ์ฌ์ฉ๋ฅ (WAU/MAU) 60% ๋๊ธฐ ์ ์๋ ์ ๊ท ๊ธฐ๋ฅ๋ณด๋ค ๊ธฐ์กด ๊ธฐ๋ฅ ๊ฐ์ .
๐ข ํ์ฑํ ์กฐ๊ฑด: ๊ทธ๋ก์ค ์ ๋ต ์๋ฆฝ, OKR ์ค์ , ๋ง์ผํ
์์ฐ ๋ฐฐ๋ถ ์
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: ์ ๊ท ์์ฅ ์ง์
(PMF ํ์ ๋จ๊ณ)์ผ๋ก ๋ฆฌํ
์
๋ฐ์ดํฐ ์์ฒด๊ฐ ์์ ๋
๐ก Why: ์์ด์ ํธ DAU 100๋ช
, ์ฌ์ฌ์ฉ 10%๋ฉด ์ค์ง ์ ์ 10๋ช
์ด๋ค. 1000๋ช
์ผ๋ก ํค์๋ด์ผ 100๋ช
. ๋ฆฌํ
์
์ ๋จผ์ ๊ณ ์น๋ฉด ๊ฐ์ ์ ์ ํ์์ 10๋ฐฐ ํจ๊ณผ.
๐ ์ฐ๊ด TK: TK-003, TK-005
PM-ENGINE-MEMORY ํ์ผ ๊ตฌ์กฐ
์ TK๋ค์ ์๋ ํ์์ผ๋ก PM-ENGINE-MEMORY.md์ ์ ์ฅ๋ฉ๋๋ค:
## TK-NNN: [์ ๋ชฉ]
๐ ํจํด: [ํต์ฌ ํ๋จ]
๐ข ํ์ฑํ ์กฐ๊ฑด: [์ธ์ ์ฐ๋๊ฐ]
๐ด ๋นํ์ฑํ ์กฐ๊ฑด: [์ธ์ ์ ์ฐ๋๊ฐ]
๐ก Why: [๊ทผ๊ฑฐ]
๐ ์ฐ๊ด TK: [TK-XXX, TK-YYY]
tk-to-instruction ๋ณํ
TK๋ฅผ ์์ด์ ํธ Instruction์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ:
์์ 1 โ TK-001: ๊ธด๊ธ ์์ฒญ ์ฐ์ ์์ ํ๋จ
[๋ณํ ์ โ TK]
ํจํด: ๊ธด๊ธํด ๋ณด์ด๋ ์์ฒญ์ด ์๋ ์ค์ ์ํฉํธ ๋จผ์ ํ์ธ.
์ค์ ๋ง๊ฐ ์๋ '์ธ์๋ ๊ธด๊ธ'์ ์ฐ์ ์์์์ ์ ์ธ.
[๋ณํ ํ โ Instruction ์กฐ๊ฐ]
์์
์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ ๋:
- ์์ฒญ์์ ์ง๊ธ์ด๋ ์๋ฐ๊ฐ์ด ์๋ ๋น์ฆ๋์ค ์ํฉํธ๋ก ํ๋จ
- "๊ธด๊ธ"์ด๋ผ๋ ํํ์ด ์์ด๋ ์ค์ ๋ง๊ฐ์ผ์ ๋จผ์ ํ์ธ
- ์ค์ ๋ง๊ฐ ์๋ ๊ธด๊ธ ์์ฒญ์ ์ค๊ฐ ์ฐ์ ์์๋ก ๋ถ๋ฅ
์์ 2 โ TK-009: ์ง๋ฌธ์ ํ์ง์ด ์์ด์ ํธ ํ์ง์ ๊ฒฐ์
[๋ณํ ์ โ TK]
ํจํด: "๋ญ ํ๋ผ"๋ณด๋ค "์ ํ๋์ง + ํ๋จ ๊ธฐ์ค"์ ์ฃผ๋ฉด ๊ฒฐ๊ณผ๊ฐ 3๋ฐฐ.
[๋ณํ ํ โ Instruction ์กฐ๊ฐ]
์ฌ์ฉ์์๊ฒ ์๋ต์ ์์ฑํ ๋:
- ๋จ์ ์คํ ์ ์ "์ด ์์
์ ๋ชฉ์ ์ด ๋ฌด์์ธ์ง" ๋งฅ๋ฝ์ ํ์
- ํ๋จ์ด ํ์ํ ์ง์ ์์๋ ํ๋จ ๊ทผ๊ฑฐ๋ฅผ ํจ๊ป ์ ์
- ๊ท์น์ ์๋ ์์ธ ์ํฉ์ด๋ฉด "์"๋ฅผ ๊ธฐ์ค์ผ๋ก ์ถ๋ก ํ๋, ํ์ ์ด ์์ผ๋ฉด ์ฌ์ฉ์์๊ฒ ํ์ธ ์์ฒญ
Instruction ํ์ง ๊ฐ์ ๋ฃจํ
์์ด์ ํธ ์คํ
โ
์ถ๋ ฅ ํ์ง ํ๊ฐ (Accuracy KPI)
โ
ํ์ง ์ ํ ์์ธ ๋ถ์
โ
๊ด๋ จ TK ๋ถ์ฌ ํ์ธ
โ
/pm-tacit-extract๋ก ์ TK ์ถ์ถ
โ
PM-ENGINE-MEMORY append
โ
Instruction ์
๋ฐ์ดํธ
โ
๋ค์ ์คํ ํ์ง ํฅ์
์ด์ ์์น
1. ๋งค์ผ 1๊ฐ TK ์์น
one-day-one-prompt ํฌ๋ก ์ด ๋งค์ผ PM ํ๋จ ๊ฒฝํ์์ TK๋ฅผ ์ถ์ถํฉ๋๋ค.
์์ ๊ฒ๋ ๊ธฐ๋กํฉ๋๋ค. ๋์ค์ ์ด๋ค ๊ฒ์ด ์ค์ํด์ง์ง ๋ชจ๋ฆ
๋๋ค.
2. ํ์ฑํ ์กฐ๊ฑด ํ์
TK๋ง๋ค ๋ฐ๋์ ๐ข ํ์ฑํ ์กฐ๊ฑด์ ์์ฑํฉ๋๋ค.
์กฐ๊ฑด ์๋ TK๋ ๊ฒ์์์ ์ ์ฐพํ์ง ์์ต๋๋ค. (CR ํจํด)
3. ์ฐ๊ด TK ๋งํฌ
TK๋ ๊ณ ๋ฆฝ๋ ๊ฒ์ด ์๋๋๋ค. ์๋ก ์ฐ๊ฒฐ๋ ์ง์ ๊ทธ๋ํ์
๋๋ค.
์ฐ๊ด TK๋ฅผ ๋งํฌํ๋ฉด ๊ด๋ จ ์ง์์ด ํจ๊ป ๊ฒ์๋ฉ๋๋ค.
4. ์ฃผ๊ธฐ์ ์ฆ๋ฅ
weekly-memory-distill ํฌ๋ก ์ด TK๋ฅผ ๊ฒํ ํ๊ณ ์ ๋ฆฌํฉ๋๋ค.
์ค๋๋๊ฑฐ๋ ๋ ๋์ ๋ฒ์ ์ด ์๊ธด TK๋ ์
๋ฐ์ดํธํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
# TK ์ถ์ถ ๋ฐ ์ ์ฅ
/pm-tacit-extract [PM ํ๋จ ๊ฒฝํ]
# TK โ Instruction ๋ณํ
/tk-to-instruction [TK ๋ฒํธ ๋๋ ์ฃผ์ ]
# TK ๊ธฐ๋ฐ ์์ฌ๊ฒฐ์
/pm-decision-log [ํ์ฌ ์ํฉ]
Instructions
[/pm-tacit-extract ์คํ ์]
์ฌ์ฉ์์ PM ๊ฒฝํ์์ ์๋ฌต์ง๋ฅผ ์ถ์ถํฉ๋๋ค: $ARGUMENTS
Step 1 โ ๊ฒฝํ ์ฒญ์ทจ ๋ฐ ํ๋จ ํจํด ํฌ์ฐฉ
Step 2 โ TK ์ ํ ๋ถ๋ฅ (Decision/Failure/Heuristic/Anti-Pattern/Insight)
Step 3 โ TK-NNN ๊ตฌ์กฐ๋ก ์์ฑ (ํ์ฑํ/๋นํ์ฑํ ์กฐ๊ฑด ํฌํจ)
Step 4 โ PM-ENGINE-MEMORY.md์ appendํ ํ์์ผ๋ก ์ถ๋ ฅ
Step 5 โ ๊ธฐ์กด TK์ ์ฐ๊ด ๊ด๊ณ ์ ์
[/tk-to-instruction ์คํ ์]
TK ๋ด์ฉ์ ์์ด์ ํธ Instruction ์กฐ๊ฐ์ผ๋ก ๋ณํ: $ARGUMENTS
Step 1 โ ํด๋น TK ๋ด์ฉ ํ์
Step 2 โ Instruction 7์์ ์ค ์ด๋ ์น์
์ ๋ค์ด๊ฐ๋์ง ๊ฒฐ์
Step 3 โ ์์ด์ ํธ๊ฐ ๋ฐ๋ฅผ ์ ์๋ ๊ตฌ์ฒด์ ์ง์ ๋ฌธ์ฅ์ผ๋ก ๋ณํ
Step 4 โ ๋ณํ๋ Instruction ์กฐ๊ฐ ์ถ๋ ฅ
Step 5 โ ๊ธฐ์กด Instruction๊ณผ์ ์ถฉ๋ ์ฌ๋ถ ๊ฒํ
[/pm-tacit-from-retro ์คํ ์]
sprint --step retro ์ถ๋ ฅ (์์ธก vs ์ค์ธก deviation log) ์์ TK ํ๋ณด ์๋ promote: $ARGUMENTS
Step 1 โ track ์ฐ์ถ๋ฌผ .track/retro-deviation.jsonl ๋ก๋ (deviation_pct, blocker_pattern, recurrence_count)
Step 2 โ Auto-promote ๊ฒฐ์ ๋ก ๊ธฐ์ค ๊ฒ์ฆ: deviation_pct โฅ 50% OR recurrence_count โฅ 3 (LLM ํธ์ถ 0)
Step 3 โ ๊ธฐ์ค ํต๊ณผ ํ๋ณด๋ฅผ TK-NNN ์๋ ๊ตฌ์กฐ๋ก ์๋ ๋ณํ (ํจํด ํ ์ค ์์ฝ๋ง LLM ๋ถ๋ฅ)
Step 4 โ ์ฌ์ฉ์์๊ฒ "promote ํ๋ณด N๊ฐ ๊ฒํ " ํ ๋ฒ์ ์์ฒญ (pending_inputs ๋ฌถ์, [[feedback_ralph_loop_autonomous]])
Step 5 โ ์น์ธ๋ TK๋ง PM-ENGINE-MEMORY.md append, ๊ฑฐ๋ถ๋ ๊ฒ์ deviation_log/rejected/ ๊ฒฉ๋ฆฌ
Rule 5 ์ค์: auto-promote ์๊ณ์น ๋น๊ตยทjsonl ํ์ฑยท๊ฒฉ๋ฆฌ ๋๋ ํฐ๋ฆฌ ์ด๋ ๋ชจ๋ ๊ฒฐ์ ๋ก . LLM ํธ์ถ์ Step 3 ํจํด ํ ์ค ์์ฝ (๋ถ๋ฅ) ๋ง.
Failure Handling
| ์คํจ ์ํฉ | ๊ฐ์ง | ๋์ |
|---|
| ๊ด๋ จ TK๊ฐ ์์ด์ ๋์ ๊ฒ์ ์คํจ | "No TK found for this context" ๋๋ ๋น ๊ฒฐ๊ณผ | TK๊ฐ ์ง์ง ์๋ ๊ฑด์ง, ๊ฒ์ ์ฟผ๋ฆฌ๊ฐ ์๋ชป๋ ๊ฑด์ง ํ์ธ. ์์ผ๋ฉด /pm-tacit-extract๋ก ์ TK ์ถ๊ฐ ํ ์ฌ๊ฒ์ |
| ๋ก๋ํ TK์ ํ์ฑํ ์กฐ๊ฑด์ด ํ์ฌ ์ํฉ๊ณผ ๋ถ์ผ์น | ์์ด์ ํธ๊ฐ TK๋ฅผ ์ ์ฉํ์ผ๋ ๋งฅ๋ฝ์ ๋ง์ง ์์ | TK ๊ตฌ์กฐ๋ฅผ ๋ฆฌ๋ทฐํ๊ณ ๋นํ์ฑํ ์กฐ๊ฑด์ ๋ ๋ช
ํํ. ํ์์ ์ TK๋ก ๋ถ๋ฆฌ |
| TK ๊ฐ ์ฐ๊ด ๊ด๊ณ๊ฐ ๋ถ์กฑํ์ฌ ๊ด๋ จ ์ง์์ ๋ชป ์ฐพ์ | "์ฐ๊ด TK"๋ฅผ ์ฐธ์กฐํ๋๋ฐ ์ง์ง ํ์ํ TK๋ฅผ ๋ชป ์ฐพ์ | ์ฃผ๊ฐ memory-distill ํฌ๋ก ์์ ๐ ์ฐ๊ด TK๋ฅผ ์ฌ์ ๊ฒํ๊ณ ๋งํฌ ์ถ๊ฐ |
| Instruction ๋ณํ ํ ์์ด์ ํธ์ ํ๋จ์ด ์ฌ์ ํ ๋ฎ์ | TK โ Instruction ๋ณํ์ ํ๋๋ฐ ์คํ ํ์ง์ด ๊ฐ์ ์ ๋จ | TK๋ ๋ง๋๋ฐ Instruction ๋ฌธ์ฅ์ด ์ ๋งคํ ๊ฒ. ๋ ๊ตฌ์ฒด์ ์ธ ์ง์ ๋ฌธ์ฅ์ผ๋ก ์ฌ์์ฑ |
harness/tech-decisions/ ๋ถ์ฌ (save-decision) | ls ์คํจ | mkdir -p harness/tech-decisions/ ํ ์งํ |
์ธ์ ํ์ฑ ์คํจ (save-decision) | โ ๊ตฌ๋ถ์ ์์ | ๊ฒฐ์ ๋ด์ฉ ์ ์ฒด๋ฅผ decision: ํ๋์, prd_link: "" ๋ก ์ ์ฅ ํ ๊ฒฝ๊ณ |
๊ธฐ์ ์คํ ํ์ผ ์์ (index-codebase) | ๋ชจ๋ not found | fail loud + "package.json / pyproject.toml / requirements.txt ํ์" |
Quality Gate
- TK-NNN ๊ตฌ์กฐ๊ฐ ์์ ํ๊ฐ? (ํจํด/ํ์ฑํ/๋นํ์ฑํ/Why/์ฐ๊ด TK ๋ชจ๋ ์๋๊ฐ?) (Yes/No)
- ์ด TK์ ํ์ฑํ ์กฐ๊ฑด์ด ๋ช
ํํด์, ์์ด์ ํธ๊ฐ "์ธ์ ์จ์ผ ํ๋์ง" ํ๋จํ ์ ์๋๊ฐ? (Yes/No)
- TK โ Instruction ๋ณํ ํ, ์์ด์ ํธ๊ฐ ๋ฐ๋ฅผ ์ ์๋ ๊ตฌ์ฒด์ ์ธ ํ๋ ์ง์๊ฐ ๋์๋๊ฐ? (Yes/No)
- TK๊ฐ ๋ค๋ฅธ ๊ด๋ จ TK๋ค๊ณผ ์ฐ๊ฒฐ๋์ด ์์ด์, ๊ฒ์ํ์ ๋ ๊ด๋ จ ์ง์ ๋คํธ์ํฌ๋ฅผ ๋์ธ ์ ์๋๊ฐ? (Yes/No/Partial)
- ์ด TK๋ฅผ ์ ์ฉํ์ ๋์ ๊ธฐ๋ ํจ๊ณผ(์์ฌ๊ฒฐ์ ์๋ ํฅ์, ํ์ง ๊ฐ์ , ๋น์ฉ ์ ๊ฐ ๋ฑ)๊ฐ ๋ช
์๋์ด ์๋๊ฐ? (Yes/No)
- TD-NNN ๋ฒํธ๊ฐ ๊ธฐ์กด ์ต๋๊ฐ+1๋ก ๊ฒฐ์ ๋ก ๋ถ์ฌ๋์๋๊ฐ? (Yes/No)
save-decision ์ ์ฅ ํ harness/tech-decisions/TD-NNN.yaml ํ์ผ์ด ์์ฑ๋์๋๊ฐ? (Yes/No)
index-codebase ์ถ๋ ฅ์ ๋ฏธ๊ธฐ๋ก ํ๋ณด๊ฐ ๋ช
์๋์๋๊ฐ (0๊ฐ๋ฉด "๋ฏธ๊ธฐ๋ก ์์" ์ถ๋ ฅ)? (Yes/No)
Examples
Good Example
์ํฉ: ์์ด์ ํธ๊ฐ "์๋ก์ด ์์ด์ ํธ๋ฅผ ๊ฐ๋ฐํด์ผ ํ๋๊ฐ, ๊ธฐ์กด ๋๊ตฌ๋ฅผ ์ธ ๊ฒ์ธ๊ฐ"๋ฅผ ํ๋จํด์ผ ํจ.
์ ์ฉ ๊ณผ์ :
- TK ๊ฒ์: "build vs buy" ๊ด๋ จ TK ๋์ ๋ก๋ โ TK-007 ๋ก๋
- ํ์ฑํ ์กฐ๊ฑด ํ์ธ:
- "์ ๊ท ๊ธฐ๋ฅ ๊ฐ๋ฐ ๊ฒฐ์ " โ
- "์ํคํ
์ฒ ๋ฆฌ๋ทฐ ์" โ
- ํ๋จ ๊ธฐ์ค ์ ์ฉ (TK-007):
- "์ง์ ๋ง๋ค๋ฉด 2์ฃผ ๋๊ฒ ๊ฑธ๋ฆฌ๋๊ฐ?" โ ๋น์ฉ ๊ฒฌ์ ๊ณ์ฐ โ 3์ฃผ ํ์ ํ์ธ
- โ "Build ๋จผ์ ๊ฒํ " ๊ท์น ๋ฐ๋ฆ
- ํ์ง๋ง "ํต์ฌ ์ฐจ๋ณํ ๊ธฐ๋ฅ์ธ๊ฐ?" โ ์๋๋ค ํ๋จ
- โ Buy ์ฐ์ ๊ฒํ ๋ก ๊ฒฐ์
- ์ถ๊ฐ TK ๊ฒ์: TK-007์ด ๊ฐ๋ฆฌํจ ์ฐ๊ด TK-003(์์ด์ ํธ ๋น์ฉ 10๋ฐฐ ๋ฒ์น) ์๋ ๋ก๋
- ์ $500 POC โ ์ ์ 100๋ช
โ $50K ํ์ธ
- ๊ตฌ๋งค ๋น์ฉ vs ๊ฐ๋ฐ ๋น์ฉ ๋น๊ต ํ ๊ตฌ๋งค ์ ํ
- Instruction ๋ฐ์: ์์ด์ ํธ์ Instruction์ "Build vs Buy 2์ฃผ ๋ฒ์น์ ๋ฐ๋ฅด๋, ๋น์ฉ ์๋ฎฌ๋ ์ด์
๊ณผ ํจ๊ป ํ๋จํ์ธ์" ์ถ๊ฐ
- ๊ฒฐ๊ณผ: ์์ด์ ํธ๊ฐ ๋ชจ๋ ์ ๊ท ๊ธฐ๋ฅ ๊ฒฐ์ ์ ์ด ํจํด์ ์๋์ผ๋ก ๋ฐ๋ฆ
Bad Example
์ํฉ: ์์ด์ ํธ๊ฐ "์๋ก์ด ์์ด์ ํธ๋ฅผ ๊ฐ๋ฐํด์ผ ํ๋๊ฐ" ํ๋จ.
์๋ชป๋ ์ ์ฉ:
- TK๋ฅผ ๊ฒ์ํ์ง ์๊ณ "์ฐ๋ฆฌ๊ฐ ๋ง๋ค๋ฉด ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅํ๋๊น ์ข๋ค"๋ ๋๋์ผ๋ก ํ๋จ
- TK-007์ด ์๋ ๊ฒ์ ๋ชจ๋ฅด๊ฑฐ๋, ์์ด๋ "์ฐ๋ฆฌ ์ํฉ์ ๋ค๋ฅด๋ค"๊ณ ๋ฌด์
- ๋น์ฉ ๊ฒ์ฆ ์์ด ๊ฐ๋ฐ ์์ โ 3์ฃผ, $15K ์๋ชจ
- ๋์ค์ "์ฌ์ค ์คํ์์ค ๋๊ตฌ(์ฐ $2K)๋ ์ถฉ๋ถํ๋ค"๋ผ๊ณ ๊นจ๋ฌ์
- Instruction์ ๋ฐ์ํ์ง ์์, ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ ๋๋ง๋ค ๋ฐ์
๊ตํ: TK-ENGINE-MEMORY๊ฐ ์์ด๋ ์ฐ์ง ์์ผ๋ฉด ๊ฐ์น๊ฐ 0. ์์ด์ ํธ๊ฐ ๋์ ์ผ๋ก TK๋ฅผ ์ฐธ์กฐํ๋๋ก Instruction์ ๋ช
์ํด์ผ ํจ.
์ฐธ๊ณ
- ์ค๊ณ์: AI PM Skills Contributors, 2026-03
- PM-ENGINE-MEMORY.md: production agent workspace ์ค์ ์ด์ ํ์ผ
- one-day-one-prompt ํฌ๋ก (20:00): TK ์๋ ์ถ์ถ ํ์ดํ๋ผ์ธ
- weekly-memory-distill ํฌ๋ก : CR ํ๋ ์๋ ์ฑ์ (2026-03-01 ๋์
)
- Contextual Retrieval: PM-ENGINE-MEMORY CR ํจํด (2026-03-01)
Further Reading
- Ikujiro Nonaka, "The Knowledge-Creating Company" โ Knowledge management
- AI PM Skills Contributors, "TK-NNN: Never-ending Nuance Network" โ Agent-native tacit knowledge system (TK-001โTK-999)
Contextual Knowledge (auto-loaded)
๋ณด์กฐ ํ์ผ์ด ์กด์ฌํ ๋๋ง ์๋ ๋ก๋๋ฉ๋๋ค. ํ์ผ์ด ์์ผ๋ฉด ๊ฑด๋๋๋๋ค.
Good Example
!cat examples/good-01.md 2>/dev/null || echo ""
Bad Example
!cat examples/bad-01.md 2>/dev/null || echo ""
Domain Context
!cat context/domain.md 2>/dev/null || echo ""
Test Cases
!cat references/test-cases.md 2>/dev/null || echo ""
Troubleshooting
!cat references/troubleshooting.md 2>/dev/null || echo ""
Mode: extract (๊ตฌ pm-framework)
pm-framework์ TK ์ถ์ถ/๊ตฌ์กฐํ ๋ก์ง ์ ์ฒด.
๊ฒฝํ์์ TK-NNN ๋จ์๋ฅผ ์ถ์ถํ๊ณ PM-ENGINE-MEMORY์ ์ ์ฅํฉ๋๋ค.
Core Goal (extract mode)
- PM์ ์๋ฌต์ ํ๋จ ๊ธฐ์ค์ ๋ช
์์ ์ธ TK-NNN ๊ตฌ์กฐ๋ก ๋ณํํ์ฌ ์์ด์ ํธ๊ฐ ํ์ตํ๊ณ ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ
- ๊ฒฝํ์์ ์ถ์ถ๋ TK๋ฅผ ํ์ฑํ/๋นํ์ฑํ ์กฐ๊ฑด๊ณผ ํจ๊ป ์ ์ฅํ์ฌ, Contextual Retrieval(CR) ํจํด์ ํตํด ํ์ํ ๋๋ง ๋ก๋๋๋๋ก ์ฒด๊ณํ
- ๋์ ๋ TK๋ค์ด ์๋ก ์ฐ๊ฒฐ๋ ์ง์ ๊ทธ๋ํ๋ฅผ ํ์ฑํ์ฌ, ์์ฌ๊ฒฐ์ ์ ๊ด๋ จ ํ๋จ ๊ธฐ์ค๋ค์ ์๋์ผ๋ก ์ฐธ์กฐํ๊ฒ ํ๊ธฐ
TK ๋จ์ ๊ตฌ์กฐ
๋ชจ๋ ์๋ฌต์ง๋ TK-NNN ํํ๋ก ๊ตฌ์กฐํํฉ๋๋ค:
TK-NNN: [์๋ฌต์ง ์ ๋ชฉ]
๐ ํจํด:
[์ด ์๋ฌต์ง์ ํต์ฌ ํ๋จ ํจํด โ 1~3๋ฌธ์ฅ]
๐ข ํ์ฑํ ์กฐ๊ฑด:
[์ด ์๋ฌต์ง๋ฅผ ์ ์ฉํด์ผ ํ๋ ์ํฉ 1~2์ค]
๐ด ๋นํ์ฑํ ์กฐ๊ฑด:
[์ ์ฉํ๋ฉด ์ ๋๋ ์ํฉ 1์ค]
๐ก Why:
[์ด ํ๋จ์ด ์ ์ค์ํ๊ฐ โ ๊ทผ๊ฑฐ์ ๊ฒฝํ]
๐ ์ฐ๊ด TK: [TK-XXX, TK-YYY]
TK ๋ถ๋ฅ ์ฒด๊ณ (5๊ฐ์ง ์ ํ)
- Type 1 โ Decision Pattern (์์ฌ๊ฒฐ์ ํจํด): ๋ฐ๋ณต์ ์ธ ์์ฌ๊ฒฐ์ ์์ ์ฌ์ฉํ๋ ํ๋จ ๊ธฐ์ค
- Type 2 โ Failure Pattern (์คํจ ํจํด): "์ด๋ ๊ฒ ํ๋ฉด ๋งํ๋ค" โ ์ง์ ๊ฒช๊ฑฐ๋ ๋ชฉ๊ฒฉํ ์คํจ ํจํด
- Type 3 โ Heuristic (๊ฒฝํ์น): "๋ณดํต์ ์ด๋ ๊ฒ ํ๋ฉด ๋๋ค" โ ๋น ๋ฅธ ํ๋จ์ ์ํ ๊ฒฝํ์น
- Type 4 โ Anti-Pattern (๋ฐ๋ ํจํด): "์ด๊ฒ๋งํผ์ ํ์ง ๋ง๋ผ" โ ๊ฐํ ๊ธ์ง ์์น
- Type 5 โ Insight (์ธ์ฌ์ดํธ): "์ด๊ฒ์ ์๊ณ ๋์ ์ธ์์ด ๋ฌ๋ผ ๋ณด์๋ค" โ ํจ๋ฌ๋ค์ ์ ํ ํ์ต
Type 2 vs Type 4 ๊ตฌ๋ถ์ด ๋ชจํธํ ๋ โ context/domain.md Section 8-2์ ๋ฆฌํธ๋จธ์ค ํ
์คํธ 3๊ฐ ์ง๋ฌธ ์ฌ์ฉ:
- "๋ค์๋ ํ๋ฆด ์ผ์ด ์๋๊ฐ?" โ Yes๋ฉด Type 4 (Anti-Pattern)
- "์ด๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์ ๋นํ๋ ์ ์๋๊ฐ?" โ No๋ฉด Type 4
- "๋ฏธ๋ ๋ณํ๋ก ์ญ์ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋๊ฐ?" โ Yes๋ฉด Type 2 (Failure Pattern)
Instructions (extract mode)
You are helping extract and structure PM tacit knowledge from: $ARGUMENTS
Step 1 โ ์ํฉ/๊ฒฝํ ์ฒญ์ทจ: ๋ฌด์จ ์ผ์ด ์์๋์ง, ์ด๋ค ํ๋จ์ ๋ด๋ ธ๋์ง ํ์
Step 2 โ ์๋ฌต์ง ํจํด ํฌ์ฐฉ: "๋น์ ์ ์ ๊ทธ๋ฐ ํ๋จ์ ๋ด๋ ธ๋์?" ๋ฐ๋ณต ์ง๋ฌธ, ๋ช
์๋์ง ์์ ์ ์ ์ ๊ธฐ์ค ๋ฐ๊ตด
Step 3 โ TK ์ ํ ๋ถ๋ฅ: Decision/Failure/Heuristic/Anti-Pattern/Insight ์ค ์ ํ
Step 4 โ TK ๊ตฌ์กฐํ: TK-NNN ํ์์ผ๋ก ์์ฑ, ํ์ฑํ/๋นํ์ฑํ ์กฐ๊ฑด ํฌํจ (Contextual Retrieval ํจํด)
TK ๋ฒํธ ์์ฑ ๊ท์น:
TK-[๋๋ฉ์ธ์ ๋์ฌ][์๊ณ์ด๋ฒํธ]
์: TK-AGT045 (Agent ๋๋ฉ์ธ, 45๋ฒ์งธ)
TK-PRI001 (Prioritization ๋๋ฉ์ธ, 1๋ฒ์งธ)
๋๋ฉ์ธ์ ๋์ฌ: AGT(Agent), PRI(Priority), SCO(Scope), QUA(Quality), COM(Communication)
์๊ณ์ด๋ฒํธ: 001๋ถํฐ ์์, ์์ฑ ์์๋๋ก ์ฆ๊ฐ
CR ๋ฉํ๋ฐ์ดํฐ ํ์ ํ๋ (๋ชจ๋ TK์ ์ถ๊ฐ):
๐ CR ๋ฉํ๋ฐ์ดํฐ:
- ํ์ฑํ ํค์๋: [์๋ฒ ๋ฉ ๊ฒ์์ฉ ํค์๋ 3-5๊ฐ]
- CR Score ์๊ณ๊ฐ: 0.7 ์ด์ ์ ์๋ ๋ก๋
- ์ ์ฅ ์์น: PM-ENGINE-MEMORY.md
์ค๋ณต ๊ฒ์ฌ: ์ ๊ท TK ์์ฑ ์ , ๊ธฐ์กด TK์ ํ์ฑํ ํค์๋์ ์ ์ฌ๋ ๋น๊ต. 0.85 ์ด์์ด๋ฉด ๊ธฐ์กด TK์ ๋ณํฉ ๊ฒํ .
Step 5 โ ์ฐ๊ด TK ์ฐ๊ฒฐ & ํ์ง ํ๊ฐ: ๊ธฐ์กด TK ์ค ์ฐ๊ด๋ ๊ฒ ํ์
ํ์ฌ ์๋ฐฉํฅ ๋งํฌ
Step 6 โ PM-ENGINE-MEMORY ์ ์ฅ: ์์ฑ๋ TK๋ฅผ PM-ENGINE-MEMORY.md์ append
Boundary Checks (extract mode)
- TK ์ถ์ถ ์ "๋ด๊ฐ ๋ง๋ค๊ณ ์๊ฐํ๋ ๊ฒ"๊ณผ "๊ฒ์ฆ๋ ์ฌ์ค"์ ๊ตฌ๋ถํด์ผ ํจ โ ๊ฐ์ค์ด๋ฉด ๋นํ์ฑํ ์กฐ๊ฑด์ "๋ฐ์ดํฐ ๊ฒ์ฆ ํ์" ๋ช
์
- ๊ทน๋๋ก ํน์ํ ์ํฉ์ ํ๋จ ๊ธฐ์ค์ TKํํ์ง ๋ง ๊ฒ โ ์ผ๋ฐํ ๊ฐ๋ฅํ ํจํด๋ง ์ ์ฅ
- ์ด๋ฏธ ์
๊ณ ํ์ค์ด๋ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ์๋ ์์ญ์ด๋ฉด, TK๊ฐ ์๋๋ผ Best Practice ๋ ํผ๋ฐ์ค๋ก ์ฒ๋ฆฌ
Failure Handling (extract mode)
| ์คํจ ์ํฉ | ๊ฐ์ง | ๋์ |
|---|
| ์ถ์ถํ TK๊ฐ ๋๋ฌด ์ผ๋ฐ์ ์ด์ด์ ์ค์ ๋ก๋ ์ธ๋ชจ๊ฐ ์์ | "์ด๊ฑด ๋๊ตฌ๋ ์๋ ๊ฒ ๊ฐ์๋ฐ?" ๋๋ | TK๋ฅผ ํน์ํํ๊ธฐ. "ํญ์ ๊ทธ๋ ๋ค"๊ฐ ์๋๋ผ "์ด๋ฐ ์ํฉ์๋ ์ด๋ ๊ฒ"๋ก ๋งฅ๋ฝํ |
| TK์ ํ์ฑํ ์กฐ๊ฑด์ ์๋ชป ์ ์ํ์ | ์์ด์ ํธ๊ฐ TK๋ฅผ ์๋ชป ์ํฉ์ ์ ์ฉํจ | Contextual Retrieval ํจํด ๋ฆฌ๋ทฐ: ํ์ฑํ ์กฐ๊ฑด์ ๋ ๋ช
ํํ๊ฒ ์ฌ์์ฑ |
| ๊ฐ์ ๋ด์ฉ์ TK๋ฅผ ์ค๋ณต์ผ๋ก ๋ง๋ค์ด๋ฒ๋ฆผ | "์ด? ์ด๊ฑด TK-015๋ ๋๊ฐ์๋ฐ?" | ๊ธฐ์กด TK์ ์ TK๋ฅผ ๋ณํฉํ๋, ๋ ์ ํํ ๋ฒ์ ์ผ๋ก ํตํฉ |
| ์ถ์ถํ TK๊ฐ ์๊ฐ์ด ์ง๋๋ฉด์ ํ๋ ธ๋ค๋ ๊ฑธ ๊นจ๋ฌ์ | 6๊ฐ์ ๋ค, ์์ฅ ๋ณํ๋ก ์ด ํ๋จ์ด ๋ ์ด์ ์ ํจํ์ง ์์ | TK ์์ฒด๋ฅผ ์ญ์ ํ์ง ๋ง๊ณ , "ํ์ฑํ ์กฐ๊ฑด"์ ์ถ์ ๋๋ ์๊ฐ ๋ฒ์๋ฅผ ๋ช
์ |
Quality Gate (extract mode)
- ์ถ์ถํ TK๊ฐ ๊ฐ์ธ์ ์ ํธ๋๊ฐ ์๋๋ผ, ์ค์ ์์ ๋ฐ๋ณต์ ์ผ๋ก ๊ฒ์ฆ๋ ํ๋จ์ธ๊ฐ? (Yes/No/Hypothesis)
- TK์ ํ์ฑํ ์กฐ๊ฑด์ด ๊ตฌ์ฒด์ ์ด๊ณ ์ธก์ ๊ฐ๋ฅํ๊ฐ? ("์ธ์ "๋ฅผ ์์ด์ ํธ๊ฐ ํ๋จํ ์ ์๋๊ฐ?) (Yes/No)
- ์ด TK๊ฐ ๊ธฐ์กด TK์ ๋ค๋ฅธ๊ฐ? ์ค๋ณต ๊ฒ์ฌ(์ ์ฌ๋ 0.85 ๋ฏธ๋ง) ํต๊ณผ? (Yes/No/Merged)
- TK์ ๋ถ๋ฅ(Decision/Failure/Heuristic/Anti-Pattern/Insight)๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋์๋๊ฐ? (Yes/No)
- CR ๋ฉํ๋ฐ์ดํฐ ํฌํจ? (ํ์ฑํ ํค์๋, CR Score ์๊ณ๊ฐ, ์ ์ฅ ์์น) (Yes/No)
Mode: decide (๊ตฌ pm-decision)
PM Decision Pattern Library โ ๋ฐ๋ณต๋๋ ์์ฌ๊ฒฐ์ ์ํฉ์์ ์
์ฆ๋ ํจํด์ ์ฐธ์กฐํ๋ค.
Core Goal (decide mode)
- ๋ฐ๋ณต๋๋ ์์ฌ๊ฒฐ์ ์ํฉ์์ ํจํด์ ์ฆ์ ์ฐธ์กฐํ์ฌ ํ๋จ ํ์ง ํฅ์
- "์ ์ด๋ ๊ฒ ๊ฒฐ์ ํ๋๊ฐ"์ ๊ทผ๊ฑฐ๋ฅผ ํจํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐพ์ ์ค๋ช
๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ
- ์๋ก์ด ํ๋จ ๊ฒฝํ์ TK๋ก ์ถ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์์ ์ผ๋ก ๊ฐํ
ํต์ฌ ํจํด ๋ชจ์
Pattern: Why-First Decision Making
์ํฉ: ์์ฒญ/์์ด๋์ด๊ฐ ๋ค์ด์์ ๋
ํ๋จ: "์ ์ด๊ฒ์ด ํ์ํ๊ฐ?" ๋จผ์ ๋ฌป๋๋ค โ ์์ฒญ์์ ์ง์ง ๋ชฉํ ํ์
โ ๊ทธ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ์ต์ ๋ฐฉ๋ฒ์ ์ญ์ฐ
ํจ์ : ์์ฒญ์ ๊ทธ๋๋ก ์ํํ๊ณ "์"๋ฅผ ๋ฌป์ง ์์ โ ์ฌ๋ฐ๋ฅธ ๋ฌธ์ ์ ์๋ชป๋ ํด๊ฒฐ์ฑ
Pattern: Prototype-First Validation
์ํฉ: ์๋ก์ด ๊ธฐ๋ฅ/์์ด์ ํธ๋ฅผ ๋ง๋ค๋ ค ํ ๋
ํ๋จ: 45๋ถ ํ๋กํ ํ์
โ ๊ฒ์ฆ โ ์คํ (์ญ์). ํ๋กํ ํ์
์ค๋ฅ ์ ์คํ ํ๊ธฐ ๋น์ฉ = 0
ํจ์ : "์ ๋๋ก ๋ ๊ฒ"์ ๋ง๋ค๋ ค๋ค ์์์ ๋ชปํจ
Pattern: Minimum Viable Agent
์ํฉ: ์์ด์ ํธ ์ค๊ณ ์ด์์ ์ก์ ๋
ํ๋จ: ๋จ ํ๋์ ํต์ฌ ๊ธฐ๋ฅ์ผ๋ก ์ต์ ๋ฒ์ ๋ฐฐํฌ โ ์ค์ฌ์ฉ ๋ฐ์ดํฐ๋ก ํ์ฅ ๋ฐฉํฅ ๊ฒฐ์
ํจ์ : ์ฒ์๋ถํฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ฃ์ผ๋ ค ํจ โ ๋ณต์ก๋ ๊ธ์ฆ, ์คํจ ์์ธ ํ์
์ด๋ ค์
Pattern: Stakeholder Energy Management
์ํฉ: ์ฌ๋ฌ ์ดํด๊ด๊ณ์์ ์์ฒญ์ด ๋์์ ๋ค์ด์ฌ ๋
ํ๋จ: ๊ฐ ์์ฒญ์ "๋น์ฆ๋์ค ์ํฉํธ"๋ก๋ง ํ๊ฐ. ๋ฐ์ ์์ ์ง๊ธ/์๋ฐ๊ฐ์ ์ฐ์ ์์ ๊ธฐ์ค์ด ์๋
ํจ์ : ๊ฐ์ฅ ๋ง์ด ์์ฒญํ๋ ์ฌ๋ ์์ฒญ์ด ์ฌ๋ผ๊ฐ โ ํต์ฌ ์์
์ด ๋ฐ๋ฆผ
Pattern: Data-Before-Opinion
์ํฉ: ์๊ฒฌ์ด ๊ฐ๋ฆด ๋
ํ๋จ: "์ด๊ฒ์ ๊ฒ์ฆํ ์ ์๋ ๊ฐ์ฅ ์์ ์คํ์?" โ ์คํ ์ค๊ณ โ ๋ฐ์ดํฐ ์์ง โ ๊ฒฐ์
ํจ์ : ํ์์์ ์๊ฒฌ์ผ๋ก ๊ฒฐ์ โ ๋์ค์ ํ๋ ธ์ ๋ ๊ทผ๊ฑฐ ์์ด ๋ฐฉํฅ ์ ํ ์ด๋ ค์
Pattern: Scope Creep Prevention
์ํฉ: ํ๋ก์ ํธ ์งํ ์ค "์ด๊ฒ๋ ์ถ๊ฐํ๋ฉด ์ด๋?"๊ฐ ๋์ฌ ๋
ํ๋จ: ์ถ๊ฐ ์์ฒญ์ ์ฆ์ ์์ฉํ์ง ์์. ํ์ฌ ๋ชฉํ์ ์ฐ๊ฒฐ๋๋ฉด ๋ค์ ์ดํฐ๋ ์ด์
, ์๋๋ฉด ๋ฐฑ๋ก๊ทธ
ํจ์ : ์ข์ ์์ด๋์ด๋ฅผ ๋ชจ๋ ๋ฃ์ผ๋ ค๋ค ์๋ฌด๊ฒ๋ ๋ชป ๋
Instructions (decide mode)
You are helping apply decision patterns to: $ARGUMENTS
Step 1 โ ์ํฉ ํ์
: ์ด๋ค ์์ฌ๊ฒฐ์ ์ํฉ์ธ์ง ๋ช
ํํ ์ ์
Step 2 โ ํจํด ๋งค์นญ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ฐ์ฅ ์ ์ฌํ ํจํด 1~2๊ฐ ์ฐพ๊ธฐ
Step 3 โ ํจํด ์ ์ฉ: ํด๋น ํจํด์ ํ๋จ ๊ธฐ์ค์ ํ์ฌ ์ํฉ์ ์ ์ฉ
Step 4 โ ํจ์ ์ฒดํฌ: ํด๋น ํจํด์ ํํ ์ค์๋ฅผ ํ์ฌ ์ํฉ์์ ํผํ๊ณ ์๋๊ฐ?
Step 5 โ ์ ๊ท ํจํด ๊ฐ๋ฅ์ฑ: ๊ธฐ์กด ํจํด์ ์์ผ๋ฉด --mode extract๋ก ์ TK ์ถ์ถ
ํจํด ์ถ๊ฐ ๋ฐฉ๋ฒ
์๋ก์ด ์์ฌ๊ฒฐ์ ๊ฒฝํ โ /pm-engine --mode extract๋ก ๊ตฌ์กฐํ โ TK-NNN ๋ฒํธ ๋ถ์ฌ โ PM-ENGINE-MEMORY.md์ ์ ์ฅ โ --mode decide ํจํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์
๋ฐ์ดํธ
Quality Gate (decide mode)
- ์์ฌ๊ฒฐ์ ์ํฉ์ด ํจํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ ํจํด๊ณผ ๊ฐ์ฅ ์ ์ฌํ์ง ๋ช
ํํ ์ค๋ช
ํ ์ ์๋๊ฐ?
- ์ ํํ ํจํด์ ํ์ฑํ/๋นํ์ฑํ ์กฐ๊ฑด์ด ํ์ฌ ์ํฉ๊ณผ ์ผ์นํ๋๊ฐ?
- ํจํด์ ๋ฐ๋์ ๋์ ์์ ๊ฒฐ๊ณผ์ ์ํ ์์๋ฅผ ๋ช
์ํ๋๊ฐ?
- ํ์์ด๋ ์ดํด๊ด๊ณ์์๊ฒ "์ ์ด ํจํด์ ์ ํํ๋๊ฐ"๋ฅผ ์ค๋ช
ํ ์ ์๋๊ฐ?
Scorecard ํ์ฉ
ํฌํธํด๋ฆฌ์ค ํฌ์ค ์ค์ฝ์ด ๋งฅ๋ฝ์์ pm-engine TK๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ:
- ์ค์ฝ์ด์นด๋ ๊ฒฐ๊ณผ โ TK ์ถ์ถ: ์ค์ฝ์ด์นด๋์์ ๋ฐ๋ณต๋๋ ํจํด(ํน์ ์ถ์ ์ง์์ ํ๋ฝ)์ TK๋ก ๊ตฌ์กฐํ
- TK โ ์ด์ ์์ฌ๊ฒฐ์ :
--mode decide๋ก ์ค์ฝ์ด์นด๋ ์ด์์น ๋์ ํจํด ๋งค์นญ
- T1 ์์ด์ ํธ ์ฐ์ : TK ์ ์ฉ ์ T1 ์์ด์ ํธ์ AccuracyยทReliability์ถ ๊ฐ์ค์น๋ฅผ ๋๊ฒ ์ค์
ํฌํธํด๋ฆฌ์ค ์ค์ฝ์ด์นด๋ ์์ธ ์ด์์ โ portfolio --mode report ์ฐธ์กฐ.