lee-spec-kit 0.6.12 โ†’ 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -134,7 +134,7 @@ var I18N = {
134
134
  "context.checkPolicyHint": "\u2139\uFE0F \uC0AC\uC6A9\uC790 \uD655\uC778 \uC815\uCC45\uC740 \uC138\uC158 \uC2DC\uC791(\uB610\uB294 context \uC555\uCD95/\uB9AC\uC14B \uC9C1\uD6C4)\uC5D0 1\uD68C \uD655\uC778\uD558\uACE0, \uC774\uD6C4\uC5D0\uB294 \uC815\uCC45/\uC124\uC815 \uBCC0\uACBD \uB610\uB294 \uC0AC\uC6A9\uC790 \uC0C8\uB85C\uACE0\uCE68 \uC694\uCCAD \uC2DC\uC5D0\uB9CC \uC7AC\uD655\uC778\uD558\uC138\uC694. (git push/merge/merge commit \uD3EC\uD568) [\uD655\uC778 \uD544\uC694]\uAC00 \uC788\uC73C\uBA74 \uC0AC\uC6A9\uC790\uC5D0\uAC8C `<\uB77C\uBCA8>` \uB610\uB294 `<\uB77C\uBCA8> OK` (\uC608: `A`, `A OK`) \uC751\uB2F5\uC744 \uBC1B\uC740 \uB4A4 \uC9C4\uD589 (config: approval\uB85C \uC870\uC815 \uAC00\uB2A5)",
135
135
  "context.actionOptionHint": "\uC2B9\uC778 \uC751\uB2F5 \uD615\uC2DD: \uB77C\uBCA8 \uD1A0\uD070 \uD3EC\uD568 (\uC608: `A`, `A OK`, `A \uC9C4\uD589\uD574`)",
136
136
  "context.actionExplainHint": "\uC2B9\uC778 \uC694\uCCAD \uC804, \uAC01 \uB77C\uBCA8\uC774 \uBB34\uC5C7\uC744 \uC2E4\uD589/\uBCC0\uACBD\uD558\uB294\uC9C0 \uD55C \uC904 \uC694\uC57D\uACFC \uD568\uAED8 \uC124\uBA85\uD558\uC138\uC694.",
137
- "context.finalLabelPrompt": "\uD604\uC7AC \uC120\uD0DD \uAC00\uB2A5\uD55C \uB77C\uBCA8: {labels}. \uB9C8\uC9C0\uB9C9 \uC751\uB2F5\uC740 `<\uB77C\uBCA8>` \uB610\uB294 `<\uB77C\uBCA8> OK` \uD615\uC2DD\uC73C\uB85C \uBC1B\uC73C\uC138\uC694. (\uC608: {example})",
137
+ "context.finalLabelPrompt": "\uD604\uC7AC \uC120\uD0DD \uAC00\uB2A5\uD55C \uB77C\uBCA8: {labels}. \uC751\uB2F5\uC740 `<\uB77C\uBCA8>` \uB610\uB294 `<\uB77C\uBCA8> OK` \uD615\uC2DD\uC73C\uB85C \uD574\uC8FC\uC138\uC694. (\uC608: {example})",
138
138
  "context.finalLabelCommandHint": "\uB77C\uBCA8\uC744 \uBC1B\uC73C\uBA74 \uC2B9\uC778 \uC120\uD0DD \uC2E4\uD589: {command}",
139
139
  "context.finalTicketCommandHint": "\uBA85\uB839 \uC2E4\uD589\uC740 \uC2B9\uC778 \uACB0\uACFC\uC758 \uD2F0\uCF13\uC73C\uB85C \uC2E4\uD589: {command}",
140
140
  "context.readBuiltinDocFirst": "\uC774\uBC88 \uC138\uC158\uC5D0 \uC544\uC9C1 \uC77D\uC9C0 \uC54A\uC558\uAC70\uB098 \uBCC0\uACBD \uAC00\uB2A5\uC131\uC774 \uC788\uC744 \uB54C\uB9CC \uD544\uC694\uD55C \uB0B4\uC7A5 \uBB38\uC11C\uB97C \uD655\uC778\uD558\uC138\uC694.",
@@ -530,7 +530,7 @@ var I18N = {
530
530
  "context.checkPolicyHint": "\u2139\uFE0F Check user-approval policy once at session start (or right after context compression/reset); re-check only when policy/config changes or the user explicitly requests refresh. (includes git push/merge and merge commits). If you see [CHECK required], wait for `<label>` or `<label> OK` (e.g. `A`, `A OK`) before proceeding (config: approval can override)",
531
531
  "context.actionOptionHint": "Approval reply format: include a label token (e.g. `A`, `A OK`, `A proceed`)",
532
532
  "context.actionExplainHint": "Before requesting approval, explain what each label will run/change with a one-line summary.",
533
- "context.finalLabelPrompt": "Available labels now: {labels}. End with a label request in `<label>` or `<label> OK` format. (e.g. {example})",
533
+ "context.finalLabelPrompt": "Available labels now: {labels}. Please reply in `<label>` or `<label> OK` format. (e.g. {example})",
534
534
  "context.finalLabelCommandHint": "When a label is provided, run approval selection: {command}",
535
535
  "context.finalTicketCommandHint": "Execute commands using the ticket from approval result: {command}",
536
536
  "context.readBuiltinDocFirst": "Read required built-in docs only if not read in this session yet or likely changed.",
@@ -5857,14 +5857,14 @@ async function runContext(featureName, options) {
5857
5857
  "actionOptions[].detail",
5858
5858
  "actionOptions[].approvalPrompt"
5859
5859
  ],
5860
- recommendation: "Before asking for approval, show only `actionOptions[].approvalPrompt` lines and `approvalRequest.finalPrompt` to the user. Keep `requiredDocs`, `checkPolicy`, and raw execution commands as internal guidance. For commit actions, include scope (`docs`/`project`) and commit message in the visible prompt. User replies should include the label token (e.g. `A`, `A OK`, `A proceed`, `A \uC9C4\uD589\uD574`). For command execution, require one-time `approvalTicket` only when the selected action has `requiresUserCheck=true`.",
5860
+ recommendation: "Before asking for approval, show only `actionOptions[].approvalPrompt` lines and `approvalRequest.finalPrompt` to the user. Keep `requiredDocs`, `checkPolicy`, and raw execution commands as internal guidance. For commit actions, include scope (`docs`/`project`) and commit message in the visible prompt. User replies should include the label token (e.g. `A`, `A OK`, `A proceed`, `A \uC9C4\uD589\uD574`). For command execution, prefer one-shot `npx lee-spec-kit flow <featureRef> --approve <LABEL> --execute` to avoid session mismatch after context compression/reset. Use ticket-based `context --execute --ticket` only when explicitly needed.",
5861
5861
  oneApprovalPerAction: true,
5862
5862
  requireFreshContext: true,
5863
5863
  contextVersion: state.contextVersion,
5864
5864
  config: config.approval ?? { mode: "builtin" }
5865
5865
  },
5866
5866
  approvalRequest: {
5867
- guidance: "User-facing output must include only approval prompts (`A: ...`) and `finalPrompt`. Do not expose `requiredDocs`, `checkPolicy`, or raw `cmd` unless explicitly requested.",
5867
+ guidance: "User-facing output must include only approval prompts (`A: ...`) and `finalPrompt`. Do not expose `requiredDocs`, `checkPolicy`, or raw `cmd` unless explicitly requested. For approved command actions, prefer one-shot `flow --approve <LABEL> --execute`.",
5868
5868
  finalPrompt: finalApprovalPrompt,
5869
5869
  userFacingLines: [
5870
5870
  ...state.actionOptions.map((o) => o.approvalPrompt),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lee-spec-kit",
3
- "version": "0.6.12",
3
+ "version": "0.6.13",
4
4
  "description": "Project documentation structure generator for AI-assisted development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,7 +23,7 @@ This document covers **policy only**.
23
23
  Approval flow:
24
24
  1. Share details first
25
25
  2. Wait for explicit approval (OK)
26
- 3. Execute after approval
26
+ 3. Execute after approval (for command execution, default to `npx lee-spec-kit flow <featureRef> --approve <LABEL> --execute`)
27
27
 
28
28
  Prohibited:
29
29
  - Proceeding without user response
@@ -38,6 +38,7 @@ Prohibited:
38
38
  - Even when the user asks something else, append the same label block at the end if executable labels exist.
39
39
  - If no executable labels exist, print `Available labels: none` and guide re-check with `npx lee-spec-kit context`.
40
40
  - If user input does not contain a valid label, do not execute; request label selection again.
41
+ - For approved command options, prefer one-shot `flow --approve <LABEL> --execute`; do not split `context --approve` and `context --execute --ticket` across turns/sessions.
41
42
 
42
43
  Output format:
43
44
 
@@ -26,6 +26,7 @@ For gated actions, proceed only after the user replies in **`<label>` or `<label
26
26
  - If the CLI asks for writing a file, write that file and follow the format.
27
27
  - If the CLI prints a command, **copy/paste and run it exactly**. (It may include repo-safe `git -C ...` commands and scopes like `project` vs `docs`.)
28
28
  - When requesting approval, present labels as `A: ...` using the exact CLI detail/cmd text. Do not paraphrase command options.
29
+ - For approved command options, default to one-shot execution via `npx lee-spec-kit flow <slug|F001|F001-slug> --approve <LABEL> --execute` to avoid session mismatch.
29
30
 
30
31
  ### Step 3: Repeat
31
32
 
@@ -23,6 +23,7 @@ Execute exactly one option from `๐Ÿ‘‰ Next Options (Atomic)` as printed by the C
23
23
  - Treat the task state/approval rules in `tasks.md` **"Task Rules"** as SSOT (e.g. when OK is required for `[TODO]โ†’[DOING]`, `[DOING]โ†’[DONE]`).
24
24
  - If the CLI prints commands, copy/paste them. (In standalone setups commands may include `git -C ...` and scopes like `project`/`docs`.)
25
25
  - Follow user-facing response format (including the final status/label block in every reply) from `agents.md` **"Label Response Contract (SSOT)"**.
26
+ - For approved command options, default to `npx lee-spec-kit flow <slug|F001|F001-slug> --approve <LABEL> --execute` and avoid split `context --approve` / `context --execute --ticket` runs across turns.
26
27
 
27
28
  ### Step 3: Update tasks.md (only what you did)
28
29
 
@@ -31,16 +32,7 @@ Keep `tasks.md` aligned with reality.
31
32
  - Do not mark `[DONE]` without actually completing the work and verifying criteria.
32
33
  - If you need to change a completed task, add a new task instead of rewriting history.
33
34
 
34
- ### Step 3.25: Commit per task (important)
35
-
36
- - Complete **only one task at a time** (do not batch-finish multiple tasks in one commit).
37
- - After you share the outcome/verification and get approval (OK), mark the task `[DONE]` (and update any checklist items), then create commits (code commit + docs commit) so each task has its own history.
38
- - In `tasks.md` test logs, keep one entry per test command and update its timestamp/result on reruns (do not keep appending duplicates). Use `YYYY-MM-DD HH-MM` in local time.
39
- - If `context` shows `[CHECK required]`, for commits/push/merge, **share the commit message + included files and wait for explicit OK** before running the commands.
40
- - Once all tasks are `[DONE]`, share the "Completion Criteria" checklist with the user and get **final approval (OK)**, then check it (especially the **Final user approval (OK) received** item).
41
- - Note: `Doc Status (Reviewโ†’Approved)` is **progress approval (OK)**, while the completion checklist approval is **final approval (OK)**.
42
-
43
- ### Step 3.5: Record decisions (strongly recommended, effectively required)
35
+ ### Step 3.25: Record decisions (strongly recommended, effectively required)
44
36
 
45
37
  To avoid โ€œwhy did we implement it like this?โ€ losing context, **record any non-obvious or tradeoff-heavy implementation choice** in `decisions.md`.
46
38
 
@@ -54,7 +46,27 @@ Record a decision if any of these apply:
54
46
  - You changed data shape, file structure, or CLI output rules
55
47
  - You expect future readers to ask โ€œwhy this way?โ€
56
48
 
57
- Use the featureโ€™s `decisions.md` template format. (Context/Options/Decision/Rationale/Consequences)
49
+ Timing rules:
50
+
51
+ - When moving a task to `[DOING]`, first add 1-3 lines for `Context/Constraints` and `Trace (initial hypothesis)`.
52
+ - Before moving a task to `[DONE]`, finalize `Options/Decision/Rationale` and strengthen `Trace (final reasoning)`.
53
+ - After PR merge, append 1-2 lines in `Trace (post-merge check)` with actual outcome/impact.
54
+
55
+ Evidence rules:
56
+
57
+ - Every ADR must include at least one Evidence link (commit, PR, or test/log evidence).
58
+ - Prefer filling all three (`Commit`, `PR`, `Test/Log`); if not applicable, mark as `N/A`.
59
+
60
+ Use the featureโ€™s `decisions.md` template format as final SSOT. (Context/Constraints/Options/Decision/Rationale/Trace/Evidence/Consequences)
61
+
62
+ ### Step 3.5: Commit per task (important)
63
+
64
+ - Complete **only one task at a time** (do not batch-finish multiple tasks in one commit).
65
+ - After you share the outcome/verification and get approval (OK), mark the task `[DONE]` (and update any checklist items), then create commits (code commit + docs commit) so each task has its own history.
66
+ - In `tasks.md` test logs, keep one entry per test command and update its timestamp/result on reruns (do not keep appending duplicates). Use `YYYY-MM-DD HH-MM` in local time.
67
+ - If `context` shows `[CHECK required]`, for commits/push/merge, **share the commit message + included files and wait for explicit OK** before running the commands.
68
+ - Once all tasks are `[DONE]`, share the "Completion Criteria" checklist with the user and get **final approval (OK)**, then check it (especially the **Final user approval (OK) received** item).
69
+ - Note: `Doc Status (Reviewโ†’Approved)` is **progress approval (OK)**, while the completion checklist approval is **final approval (OK)**.
58
70
 
59
71
  ### Step 4: Repeat
60
72
 
@@ -65,4 +65,4 @@ npx lee-spec-kit status --write
65
65
  | `spec.md` | **What and Why** | Feature definition |
66
66
  | `plan.md` | **How** (technical) | After spec approval |
67
67
  | `tasks.md` | Specific work items | After plan approval |
68
- | `decisions.md` | Technical decisions (ADR) | During development |
68
+ | `decisions.md` | Technical decisions + reasoning trace + evidence links (ADR) | During development (DOING start / before DONE / post-merge) |
@@ -7,12 +7,30 @@ Record technical decisions and their rationale.
7
7
 
8
8
  > Format: `D{number}: {Decision Title} ({YYYY-MM-DD})`
9
9
 
10
+ Recording principles:
11
+
12
+ - Every ADR must capture both **Decision (what was chosen)** and **Trace (how it was evaluated and validated)**.
13
+ - Use fixed timing checkpoints:
14
+ - Task start (`[TODO] -> [DOING]`): add 1-3 lines for `Context/Constraints` and `Trace (initial hypothesis)`
15
+ - Right before task done (`[DOING] -> [DONE]`): finalize `Options/Decision/Rationale` and enrich `Trace`
16
+ - After PR merge: append 1-2 lines in `Trace (post-merge check)` with actual outcome/impact
17
+ - Every ADR must include at least one **Evidence link** (commit, PR, or test/log evidence).
18
+
10
19
  ---
11
20
 
12
21
  ## D001: {Decision Title} ({YYYY-MM-DD})
13
22
 
14
23
  - **Context**: Problem situation or background
24
+ - **Constraints**: Constraints (time/technical/operations/compatibility)
15
25
  - **Options**: Alternatives considered
16
26
  - **Decision**: Final choice
17
27
  - **Rationale**: Reason for choice
28
+ - **Trace**:
29
+ - **At DOING start**: Initial reasoning/hypothesis
30
+ - **Before DONE**: Finalized reasoning behind the selected option
31
+ - **Post-merge check**: Actual outcome/impact observed
32
+ - **Evidence**:
33
+ - **Commit**: Commit hash or link
34
+ - **PR**: PR link
35
+ - **Test/Log**: Test output/log/screenshot path
18
36
  - **Consequences**: Results and impact (optional)
@@ -23,7 +23,7 @@
23
23
  ํ™•์ธ ์ ˆ์ฐจ:
24
24
  1. ์ž‘์—… ๋‚ด์šฉ์„ ๋จผ์ € ๊ณต์œ 
25
25
  2. ๋ช…์‹œ์  ์Šน์ธ(OK) ๋Œ€๊ธฐ
26
- 3. ์Šน์ธ ํ›„ ์‹คํ–‰
26
+ 3. ์Šน์ธ ํ›„ ์‹คํ–‰ (๋ช…๋ น ์‹คํ–‰์€ ๊ธฐ๋ณธ์ ์œผ๋กœ `npx lee-spec-kit flow <featureRef> --approve <LABEL> --execute`๋ฅผ ์‚ฌ์šฉ)
27
27
 
28
28
  ๊ธˆ์ง€:
29
29
  - ์‚ฌ์šฉ์ž ์‘๋‹ต ์—†์ด ์ž„์˜ ์ง„ํ–‰
@@ -38,6 +38,7 @@
38
38
  - ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์งˆ๋ฌธ์„ ํ•˜๋”๋ผ๋„, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ผ๋ฒจ์ด ์žˆ์œผ๋ฉด ์‘๋‹ต ๋งˆ์ง€๋ง‰์— ๋™์ผ ๋ธ”๋ก์„ ๋‹ค์‹œ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
39
39
  - ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ผ๋ฒจ์ด ์—†์œผ๋ฉด `์„ ํƒ ๊ฐ€๋Šฅ: ์—†์Œ` + `npx lee-spec-kit context` ์žฌํ™•์ธ์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
40
40
  - ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์œ ํšจ ๋ผ๋ฒจ์ด ์—†์œผ๋ฉด ์‹คํ–‰ํ•˜์ง€ ๋ง๊ณ  ๋ผ๋ฒจ ์„ ํƒ์„ ๋‹ค์‹œ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
41
+ - ์Šน์ธ๋œ command ์˜ต์…˜ ์‹คํ–‰์€ `flow --approve <LABEL> --execute` 1ํšŒ ํ˜ธ์ถœ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ, `context --approve`์™€ `context --execute --ticket`๋ฅผ ํ„ด/์„ธ์…˜ ์‚ฌ์ด๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
41
42
 
42
43
  ์ถœ๋ ฅ ํ˜•์‹:
43
44
 
@@ -27,6 +27,7 @@ CLI๊ฐ€ ์ถœ๋ ฅํ•˜๋Š” **`๐Ÿ‘‰ Next Options (Atomic)` ๋ชฉ๋ก์—์„œ ๋‹จ ํ•˜๋‚˜์˜
27
27
  - CLI๊ฐ€ ์ด์Šˆ ์ƒ์„ฑ์„ ์ง€์‹œํ•˜๋ฉด ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
28
28
  - CLI๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด **๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด ์‹คํ–‰**ํ•ฉ๋‹ˆ๋‹ค. (standalone ํ™˜๊ฒฝ์—์„œ๋„ ๋ ˆํฌ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)
29
29
  - ์Šน์ธ ์š”์ฒญ ์‹œ ๋ผ๋ฒจ ์˜ต์…˜์€ `A: ...` ํ˜•์‹์œผ๋กœ **CLI๊ฐ€ ์ถœ๋ ฅํ•œ ์›๋ฌธ(detail/cmd) ๊ทธ๋Œ€๋กœ** ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์š”์•ฝ/์˜์—ญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
30
+ - ์Šน์ธ๋œ command ์˜ต์…˜์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด `npx lee-spec-kit flow <slug|F001|F001-slug> --approve <LABEL> --execute`๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
30
31
 
31
32
  ### 3๋‹จ๊ณ„: ๋ฐ˜๋ณต
32
33
 
@@ -25,6 +25,7 @@ CLI๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” **Active Task** ๋˜๋Š” **`๐Ÿ‘‰ Next Options (Atomic)`์˜ ๋‹จ
25
25
  - ํƒœ์Šคํฌ ์ƒํƒœ ์ „ํ™˜/์Šน์ธ ๊ทœ์น™์€ `tasks.md`์˜ **"ํƒœ์Šคํฌ ๊ทœ์น™"** ์„น์…˜์„ SSOT๋กœ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. (์˜ˆ: `[TODO]โ†’[DOING]`, `[DOING]โ†’[DONE]` ์‹œ์ ์˜ OK)
26
26
  - CLI๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด **๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด ์‹คํ–‰**ํ•ฉ๋‹ˆ๋‹ค. (standalone ํ™˜๊ฒฝ์—์„œ๋„ ๋ ˆํฌ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)
27
27
  - ์‚ฌ์šฉ์ž ์‘๋‹ต ํฌ๋งท(๋งค ์‘๋‹ต ๋ง๋ฏธ์˜ ์ƒํƒœ/๋ผ๋ฒจ ํ‘œ์‹œ ํฌํ•จ)์€ `agents.md`์˜ **"๋ผ๋ฒจ ์‘๋‹ต ๊ณ„์•ฝ (SSOT)"** ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
28
+ - ์Šน์ธ๋œ command ์˜ต์…˜ ์‹คํ–‰์€ `npx lee-spec-kit flow <slug|F001|F001-slug> --approve <LABEL> --execute`๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , `context --approve`์™€ `context --execute --ticket` ๋ถ„๋ฆฌ ์‹คํ–‰์€ ์ง€์–‘ํ•ฉ๋‹ˆ๋‹ค.
28
29
 
29
30
  ### 3๋‹จ๊ณ„: ๊ธฐ๋ก ๋ฐ ๋ฐ˜๋ณต (Record & Loop)
30
31
 
@@ -42,7 +43,18 @@ CLI๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” **Active Task** ๋˜๋Š” **`๐Ÿ‘‰ Next Options (Atomic)`์˜ ๋‹จ
42
43
  - ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ/ํŒŒ์ผ ๊ตฌ์กฐ/CLI ์ถœ๋ ฅ ๊ทœ์น™์ด ๋ฐ”๋€Œ์—ˆ๋‹ค
43
44
  - โ€œ๋‚˜์ค‘์— ๋ณด๋ฉด ํ—ท๊ฐˆ๋ฆด ๊ฒƒ ๊ฐ™์€โ€ ๊ฒฐ์ •์ด ์žˆ์—ˆ๋‹ค
44
45
 
45
- ์ž‘์„ฑ ํ˜•์‹์€ Feature์˜ `decisions.md` ํ…œํ”Œ๋ฆฟ์„ ๋”ฐ๋ฅด์„ธ์š”. (Context/Options/Decision/Rationale/Consequences)
46
+ ์ž‘์„ฑ ์‹œ์  ๊ทœ์น™:
47
+
48
+ - ํƒœ์Šคํฌ๋ฅผ `[DOING]`์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ `Context/Constraints`์™€ `Trace(์ดˆ๊ธฐ ๊ฐ€์„ค)`๋ฅผ 1~3์ค„๋กœ ๋จผ์ € ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
49
+ - ํƒœ์Šคํฌ๋ฅผ `[DONE]`์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „์— `Options/Decision/Rationale`๋ฅผ ์ตœ์ข…ํ™”ํ•˜๊ณ  `Trace(ํ™•์ • ๊ทผ๊ฑฐ)`๋ฅผ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.
50
+ - PR ๋จธ์ง€ ํ›„ `Trace(๋จธ์ง€ ํ›„ ํ™•์ธ)`์— ์‹ค์ œ ๊ฒฐ๊ณผ/์˜ํ–ฅ์„ 1~2์ค„๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
51
+
52
+ ์ฆ๊ฑฐ ๋งํฌ ๊ทœ์น™:
53
+
54
+ - ๋ชจ๋“  ADR์—๋Š” ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ Evidence ๋งํฌ(์ปค๋ฐ‹/PR/ํ…Œ์ŠคํŠธ ๋กœ๊ทธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ)๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.
55
+ - ๊ฐ€๋Šฅํ•˜๋ฉด `Commit`, `PR`, `Test/Log` 3๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์ฑ„์šฐ๊ณ , ๋ฏธํ•ด๋‹น ํ•ญ๋ชฉ์€ `N/A`๋กœ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
56
+
57
+ ์ตœ์ข… ํ˜•์‹์€ Feature์˜ `decisions.md` ํ…œํ”Œ๋ฆฟ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. (Context/Constraints/Options/Decision/Rationale/Trace/Evidence/Consequences)
46
58
 
47
59
  #### 3-2) ํƒœ์Šคํฌ/์ฒดํฌ๋ฆฌ์ŠคํŠธ ์—…๋ฐ์ดํŠธ + ์ปค๋ฐ‹
48
60
 
@@ -65,4 +65,4 @@ npx lee-spec-kit status --write
65
65
  | `spec.md` | **๋ฌด์—‡์„, ์™œ** ๋งŒ๋“œ๋Š”์ง€ | ๊ธฐ๋Šฅ ์ •์˜ ์‹œ |
66
66
  | `plan.md` | **์–ด๋–ป๊ฒŒ** ๋งŒ๋“œ๋Š”์ง€ (๊ธฐ์ˆ ) | ์ŠคํŽ™ ์Šน์ธ ํ›„ |
67
67
  | `tasks.md` | ๊ตฌ์ฒด์ ์ธ ์ž‘์—… ๋ชฉ๋ก | ๊ณ„ํš ์Šน์ธ ํ›„ |
68
- | `decisions.md` | ๊ธฐ์ˆ  ๊ฒฐ์ • ๊ธฐ๋ก (ADR) | ๊ฐœ๋ฐœ ์ค‘ ์ˆ˜์‹œ๋กœ |
68
+ | `decisions.md` | ๊ธฐ์ˆ  ๊ฒฐ์ • + ํŒ๋‹จ ๊ทผ๊ฑฐ(Trace) + ์ฆ๊ฑฐ ๋งํฌ(ADR) | ๊ฐœ๋ฐœ ์ค‘ ์ˆ˜์‹œ๋กœ (DOING ์‹œ์ž‘ / DONE ์ง์ „ / ๋จธ์ง€ ํ›„) |
@@ -7,12 +7,30 @@
7
7
 
8
8
  > ํ˜•์‹: `D{๋ฒˆํ˜ธ}: {๊ฒฐ์ • ์ œ๋ชฉ} ({YYYY-MM-DD})`
9
9
 
10
+ ๊ธฐ๋ก ์›์น™:
11
+
12
+ - ๋ชจ๋“  ADR์€ **Decision(๋ฌด์—‡์„ ์„ ํƒํ–ˆ๋Š”๊ฐ€)** + **Trace(์–ด๋–ป๊ฒŒ ๊ณ ๋ฏผํ–ˆ๊ณ  ๋ฌด์—‡์„ ํ™•์ธํ–ˆ๋Š”๊ฐ€)** ๋ฅผ ํ•จ๊ป˜ ๋‚จ๊น๋‹ˆ๋‹ค.
13
+ - ์ž‘์„ฑ ํƒ€์ด๋ฐ์„ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค.
14
+ - ํƒœ์Šคํฌ ์‹œ์ž‘(`[TODO] -> [DOING]`): `Context/Constraints`์™€ `Trace(์ดˆ๊ธฐ ๊ฐ€์„ค)`๋ฅผ 1~3์ค„๋กœ ๋จผ์ € ๊ธฐ๋ก
15
+ - ํƒœ์Šคํฌ ์™„๋ฃŒ ์ง์ „(`[DOING] -> [DONE]`): `Options/Decision/Rationale`๋ฅผ ์ตœ์ข…ํ™”ํ•˜๊ณ  `Trace`๋ฅผ ๋ณด๊ฐ•
16
+ - PR ๋จธ์ง€ ํ›„: ์‹ค์ œ ๊ฒฐ๊ณผ/์˜ํ–ฅ์„ `Trace(๋จธ์ง€ ํ›„ ํ™•์ธ)`์— 1~2์ค„ ์ถ”๊ฐ€
17
+ - ๋ชจ๋“  ADR์—๋Š” ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ **Evidence ๋งํฌ**(์ปค๋ฐ‹/PR/ํ…Œ์ŠคํŠธ ๋กœ๊ทธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ)๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.
18
+
10
19
  ---
11
20
 
12
21
  ## D001: {๊ฒฐ์ • ์ œ๋ชฉ} ({YYYY-MM-DD})
13
22
 
14
23
  - **Context**: ๋ฌธ์ œ ์ƒํ™ฉ ๋˜๋Š” ๋ฐฐ๊ฒฝ
24
+ - **Constraints**: ์ œ์•ฝ ์กฐ๊ฑด (์‹œ๊ฐ„/๊ธฐ์ˆ /์šด์˜/ํ˜ธํ™˜์„ฑ)
15
25
  - **Options**: ๊ณ ๋ คํ•œ ๋Œ€์•ˆ๋“ค
16
26
  - **Decision**: ์ตœ์ข… ์„ ํƒ
17
27
  - **Rationale**: ์„ ํƒ ์ด์œ 
28
+ - **Trace**:
29
+ - **DOING ์‹œ์ž‘ ์‹œ์ **: ์ดˆ๊ธฐ ํŒ๋‹จ/๊ฐ€์„ค
30
+ - **DONE ์ „ ํ™•์ • ์‹œ์ **: ์„ ํƒ ๊ทผ๊ฑฐ ์ตœ์ข…ํ™”
31
+ - **๋จธ์ง€ ํ›„ ํ™•์ธ**: ์‹ค์ œ ๊ฒฐ๊ณผ/์˜ํ–ฅ
32
+ - **Evidence**:
33
+ - **Commit**: ์ปค๋ฐ‹ ํ•ด์‹œ ๋˜๋Š” ๋งํฌ
34
+ - **PR**: PR ๋งํฌ
35
+ - **Test/Log**: ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ/๋กœ๊ทธ/์Šคํฌ๋ฆฐ์ƒท ๊ฒฝ๋กœ
18
36
  - **Consequences**: ๊ฒฐ๊ณผ ๋ฐ ์˜ํ–ฅ (์„ ํƒ์‚ฌํ•ญ)