lee-spec-kit 0.6.43 โ 0.7.0
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/README.en.md +21 -27
- package/README.md +21 -27
- package/dist/index.js +491 -173
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/en/common/agents/agents.md +4 -4
- package/templates/en/common/agents/skills/execute-task.md +6 -3
- package/templates/en/common/features/feature-base/pr.md +2 -0
- package/templates/en/common/features/feature-base/tasks.md +5 -2
- package/templates/ko/common/agents/agents.md +4 -4
- package/templates/ko/common/agents/skills/execute-task.md +6 -3
- package/templates/ko/common/features/feature-base/pr.md +2 -0
- package/templates/ko/common/features/feature-base/tasks.md +5 -2
package/package.json
CHANGED
|
@@ -36,13 +36,13 @@ Prohibited:
|
|
|
36
36
|
- Use the latest `npx lee-spec-kit context --json-compact` as the default source (fallback: `context --json` or `flow --json` when full detail is required; prefer `flow --json-compact` for default flow output).
|
|
37
37
|
- When using auto results from `flow --json-compact` (or `flow --json`), treat `autoRun.resume.flowCommand` as SSOT for resume (including after context compression/reset).
|
|
38
38
|
- Treat `AUTO_MANUAL_REQUIRED` as an automation boundary, not an immediate failure. Re-check `context --json-compact`, then decide stop/report by `approvalRequest.required` (`context --json` only for full-detail debugging fields).
|
|
39
|
-
- In approval-waiting state,
|
|
40
|
-
- Prefer `matchedFeature.currentSubstateOwner` plus `agentOrchestration.subAgentHandoff` as the delegation SSOT.
|
|
39
|
+
- In approval-waiting state, prefer `approvalRequest.userFacingLines` from `context --json-compact`. If full `--json` is used, fall back to `actionOptions[*].approvalPrompt` plus `approvalRequest.finalPrompt`. Do not add your own rewritten label summary before or between those lines.
|
|
40
|
+
- Prefer `matchedFeature.currentSubstateOwner` plus `agentOrchestration.subAgentHandoff` as the delegation SSOT.
|
|
41
41
|
- In non-approval state, do not append labels or `approvalRequest.finalPrompt` unless the user explicitly asked for current options.
|
|
42
|
-
- If approval is still pending after answering an unrelated question, answer first, then re-open approval with
|
|
42
|
+
- If approval is still pending after answering an unrelated question, answer first, then re-open approval with the exact CLI-provided approval lines (`approvalRequest.userFacingLines`, or `actionOptions[*].approvalPrompt` + `approvalRequest.finalPrompt` in full `--json`).
|
|
43
43
|
- If user input does not contain a valid label, do not execute; request label selection again.
|
|
44
44
|
- For approved command options, prefer one-shot `flow --approve <LABEL> --execute`; do not split `context --approve` and `context --execute --ticket` across turns/sessions.
|
|
45
|
-
- If `
|
|
45
|
+
- If `matchedFeature.currentSubstateOwner="subagent"` and `agentOrchestration.subAgentHandoff.required=true` with `mode="command"`, delegation is mandatory: call `spawn_agent` first. Do not execute that command directly from the main agent.
|
|
46
46
|
- Do not delegate auto loops from `autoRun.available` alone. Delegate auto loops only when `agentOrchestration.subAgentHandoff.required=true` and `agentOrchestration.subAgentHandoff.mode="auto_run"`.
|
|
47
47
|
- Prefer `agentOrchestration.subAgentHandoff` as the handoff SSOT. Pass only its minimal fields (`featureRef`, `category`, `cwd`, `cmd`) to the sub-agent.
|
|
48
48
|
- For delegated runs, execute one-time verification from `subAgentHandoff.verify` (`pwd`, `git rev-parse --show-toplevel`) and cache by `verify.cacheKey`. If mismatched, stop and report; collect detailed logs only on mismatch.
|
|
@@ -28,19 +28,22 @@ Execute exactly one option from `๐ Next Options (Atomic)` as printed by the C
|
|
|
28
28
|
- Main agent owns approval boundaries, state transitions, record/commit steps, and remote operations. Sub-agent execution is the default for command substates owned by `subagent` (for example `task_run`, `pre_pr_review_run`, `code_review_run`, and auto-run handoff commands).
|
|
29
29
|
- `pre_pr_review` is split into `pre_pr_review_run` (sub-agent review execution) and `pre_pr_review_record` (main-agent recording of evidence/results).
|
|
30
30
|
- PR review follows the same pattern: `code_review_run` is the sub-agent review/fix execution state, and the merge/push/final decision stays in the main-agent finalize state.
|
|
31
|
-
- Prefer `matchedFeature.currentSubstateOwner` plus `agentOrchestration.subAgentHandoff` as the delegation SSOT.
|
|
32
|
-
- When `
|
|
31
|
+
- Prefer `matchedFeature.currentSubstateOwner` plus `agentOrchestration.subAgentHandoff` as the delegation SSOT.
|
|
32
|
+
- When `matchedFeature.currentSubstateOwner="subagent"` and `agentOrchestration.subAgentHandoff.required=true` with `mode="command"`, delegation is mandatory: call `spawn_agent` first and do not execute the command directly from the main agent.
|
|
33
33
|
- Do not delegate auto loops from `autoRun.available` alone. Delegate auto loops only when `agentOrchestration.subAgentHandoff.required=true` and `agentOrchestration.subAgentHandoff.mode="auto_run"`.
|
|
34
34
|
- Use `agentOrchestration.subAgentHandoff` as the minimal handoff contract (`featureRef`, `category`, `cwd`, `cmd`).
|
|
35
|
+
- If an action option exposes `handoffOnly=true` and `advancesWorkflow=false`, do not treat `--execute` success as workflow progress. Finish the delegated work and update the required evidence/state before running `context` again.
|
|
35
36
|
- Run `subAgentHandoff.verify.commands` only once per session using `verify.cacheKey` (`pwd`, `git rev-parse --show-toplevel`). Stop/report on mismatch, and gather detailed logs only when mismatch happens.
|
|
36
37
|
- Main-agent fallback is allowed only when sub-agent execution is unavailable (for example: tool not available, spawn failed, or sub-agent failed before command execution). Before fallback execution, report a one-line fallback reason to the user.
|
|
37
|
-
-
|
|
38
|
+
- Use `autoRun.command` only when `context --json-compact` exposes `autoRun.available=true`.
|
|
39
|
+
- If `autoRun.policyEligible=true` but `autoRun.executableNow=false`, handle `autoRun.manualBoundary` first instead of starting an auto loop.
|
|
38
40
|
- For long-running auto execution, start with `flow <feature> --auto-... --start-auto --json-compact` and prefer `autoRun.run.resumeCommand` (`flow --resume <RUN_ID>`) after interruption/compression (`--json` only when full-detail debugging fields are required).
|
|
39
41
|
- If auto execution stops, treat `autoRun.resume` from `flow --json-compact` (or `flow --json`) as SSOT. After interruption/compression, resume with `autoRun.resume.flowCommand`; if needed, check current state first with `autoRun.resume.contextCommand`.
|
|
40
42
|
- Treat `AUTO_MANUAL_REQUIRED` as an automation boundary (instruction-only segment), not an immediate crash. Re-check `context --json-compact` and report whether `approvalRequest.required` is now true.
|
|
41
43
|
- If the CLI prints commands, copy/paste them. (In standalone setups commands may include `git -C ...` and scopes like `project`/`docs`.)
|
|
42
44
|
- Follow `agents.md` **"Label Response Contract (SSOT)"**. Show label prompts only in approval-waiting state, and reuse the exact CLI-provided approval lines instead of paraphrasing them.
|
|
43
45
|
- 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.
|
|
46
|
+
- If `flow/context --execute --json` returns `approved_handoff_prepared`, stop re-approving the same label. Complete the delegated work first, then refresh context.
|
|
44
47
|
|
|
45
48
|
### Step 3: Update tasks.md (only what you did)
|
|
46
49
|
|
|
@@ -25,14 +25,17 @@
|
|
|
25
25
|
- **PR Status**: -
|
|
26
26
|
- Values: Review | Approved
|
|
27
27
|
- **Pre-PR Review**: -
|
|
28
|
-
- Values: Pending | Done
|
|
29
|
-
- Mark `
|
|
28
|
+
- Values: Pending | Running | Done
|
|
29
|
+
- Mark `Running` when the pre-PR review handoff starts, then `Done` after the review is recorded
|
|
30
30
|
- **Pre-PR Evidence**: -
|
|
31
31
|
- Example: `docs/features/F001-foo/decisions.md` (must exist)
|
|
32
32
|
- **Pre-PR Decision**: -
|
|
33
33
|
- Format: `decision: approve|changes_requested|blocked ...` (or `๊ฒฐ์ : ...`)
|
|
34
34
|
- PR creation requires final decision `approve`
|
|
35
35
|
- Follow `agents/skills/create-pr.md` (`Pre-PR Baseline Checklist`) as the default baseline
|
|
36
|
+
- **PR Review**: -
|
|
37
|
+
- Values: Pending | Running | Done
|
|
38
|
+
- Mark `Running` when PR review handoff starts; use `Done` only if your team explicitly tracks review completion here
|
|
36
39
|
- **PR Review Evidence**: -
|
|
37
40
|
- Example: `summary: ...` (or `์์ฝ: ...`), or `docs/features/F001-foo/decisions.md` with `PR Review Log`
|
|
38
41
|
- **PR Review Decision**: -
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
- ๊ธฐ์ค ๋ฐ์ดํฐ๋ ์ต์ `npx lee-spec-kit context --json-compact`๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ , ์์ธ ํ๋๊ฐ ํ์ํ ๋๋ง `context --json` ๋๋ `flow --json`์ ์ฌ์ฉํฉ๋๋ค. (`flow`๋ ๊ธฐ๋ณธ์ ์ผ๋ก `--json-compact` ์ฐ์ )
|
|
37
37
|
- `flow --json-compact`(๋๋ `flow --json`)์ auto ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ ๋๋ `autoRun.resume.flowCommand`๋ฅผ ์ฌ๊ฐ SSOT๋ก ์ฌ์ฉํฉ๋๋ค. (์ปจํ
์คํธ ์์ถ/๋ฆฌ์
ํ ๋์ผ ๊ท์น ์ ์ฉ)
|
|
38
38
|
- `AUTO_MANUAL_REQUIRED`๋ ์๋ํ ๊ฒฝ๊ณ ์ํ์ด๋ฉฐ ์คํจ ๋จ์ ์ ํธ๊ฐ ์๋๋๋ค. `context --json-compact` ์ฌํ์ธ ํ `approvalRequest.required` ๊ธฐ์ค์ผ๋ก ๋ฉ์ถค/๋ณด๊ณ ๋ฅผ ํ๋จํฉ๋๋ค. (์์ธ ๋๋ฒ๊น
ํ๋๊ฐ ํ์ํ ๋๋ง `context --json`)
|
|
39
|
-
- ์น์ธ ๋๊ธฐ ์ํ์์๋ `
|
|
40
|
-
- ์์ ํ๋จ SSOT๋ `matchedFeature.currentSubstateOwner`์ `agentOrchestration.subAgentHandoff`๋ฅผ ์ฐ์ ์ฌ์ฉํ์ธ์.
|
|
39
|
+
- ์น์ธ ๋๊ธฐ ์ํ์์๋ `context --json-compact`์ `approvalRequest.userFacingLines`๋ฅผ ์ฐ์ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ์ธ์. ์ ์ฒด `--json`์ ์ธ ๋๋ง `actionOptions[*].approvalPrompt`์ `approvalRequest.finalPrompt` ์กฐํฉ์ผ๋ก ํด๋ฐฑํฉ๋๋ค. ์ด ์ฌ์ด์ ์์ด์ ํธ๊ฐ ์์๋ก ๋ค์ ์ด ๋ผ๋ฒจ ์์ฝ์ ๋ผ์ ๋ฃ์ง ์์ต๋๋ค.
|
|
40
|
+
- ์์ ํ๋จ SSOT๋ `matchedFeature.currentSubstateOwner`์ `agentOrchestration.subAgentHandoff`๋ฅผ ์ฐ์ ์ฌ์ฉํ์ธ์.
|
|
41
41
|
- ๋น์น์ธ ์ํ์ ์งํ ๋ณด๊ณ /๋ถ์/์ผ๋ฐ ๋ต๋ณ์์๋ ๋ผ๋ฒจ ๋ธ๋ก์ด๋ `approvalRequest.finalPrompt`๋ฅผ ๋ง๋ถ์ด์ง ์์ต๋๋ค. ํ์ฌ ์ต์
์ ์ฌ์ฉ์๊ฐ ์ง์ ๋ฌผ์์ ๋๋ง ์์ธ์
๋๋ค.
|
|
42
|
-
- ๊ด๋ จ ์๋ ์ง๋ฌธ์ ๋จผ์ ๋ตํ ๋ค์๋ ์น์ธ์ด ์ฌ์ ํ ํ์ํ๋ฉด, ๋ต๋ณ ํ `actionOptions[*].approvalPrompt
|
|
42
|
+
- ๊ด๋ จ ์๋ ์ง๋ฌธ์ ๋จผ์ ๋ตํ ๋ค์๋ ์น์ธ์ด ์ฌ์ ํ ํ์ํ๋ฉด, ๋ต๋ณ ํ CLI๊ฐ ์ค ์น์ธ ๋ฌธ๊ตฌ(`approvalRequest.userFacingLines`, ๋๋ ์ ์ฒด `--json`์ `actionOptions[*].approvalPrompt` + `approvalRequest.finalPrompt`)๋ฅผ ๋ค์ ์ ์ํฉ๋๋ค.
|
|
43
43
|
- ์ฌ์ฉ์ ์
๋ ฅ์ ์ ํจ ๋ผ๋ฒจ์ด ์์ผ๋ฉด ์คํํ์ง ๋ง๊ณ ๋ผ๋ฒจ ์ ํ์ ๋ค์ ์์ฒญํฉ๋๋ค.
|
|
44
44
|
- ์น์ธ๋ command ์ต์
์คํ์ `flow --approve <LABEL> --execute` 1ํ ํธ์ถ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ฉฐ, `context --approve`์ `context --execute --ticket`๋ฅผ ํด/์ธ์
์ฌ์ด๋ก ๋ถ๋ฆฌํ์ง ์์ต๋๋ค.
|
|
45
|
-
- `agentOrchestration.
|
|
45
|
+
- `matchedFeature.currentSubstateOwner="subagent"`์ด๊ณ `agentOrchestration.subAgentHandoff.required=true`์ด๋ฉฐ `mode="command"`๋ฉด ์์์ด ํ์์
๋๋ค. ๋จผ์ `spawn_agent`๋ฅผ ํธ์ถํ๊ณ , ํด๋น ๋ช
๋ น์ ๋ฉ์ธ ์์ด์ ํธ์์ ์ง์ ์คํํ์ง ์์ต๋๋ค.
|
|
46
46
|
- `autoRun.available`๋ง์ผ๋ก auto ๋ฃจํ ์์์ ๊ฒฐ์ ํ์ง ์์ต๋๋ค. `agentOrchestration.subAgentHandoff.required=true`์ด๊ณ `agentOrchestration.subAgentHandoff.mode="auto_run"`์ผ ๋๋ง auto ๋ฃจํ๋ฅผ ์๋ธ ์์ด์ ํธ์ ์์ํฉ๋๋ค.
|
|
47
47
|
- ์์ ์์๋ `agentOrchestration.subAgentHandoff`๋ฅผ handoff SSOT๋ก ์ฌ์ฉํ๊ณ , ์ต์ ํ๋(`featureRef`, `category`, `cwd`, `cmd`)๋ง ์ ๋ฌํฉ๋๋ค.
|
|
48
48
|
- ์์ ์คํ ์ `subAgentHandoff.verify`์ ๊ฒ์ฆ ๋ช
๋ น(`pwd`, `git rev-parse --show-toplevel`)์ ์ธ์
๋น 1ํ๋ง ์คํํ๊ณ (`verify.cacheKey` ๊ธฐ์ค), ๋ถ์ผ์น ์ ์ฆ์ ์ค๋จ/๋ณด๊ณ ํฉ๋๋ค. ์์ธ ๋ก๊ทธ ์์ง์ ๋ถ์ผ์น ์์๋ง ์ํํฉ๋๋ค.
|
|
@@ -28,19 +28,22 @@ CLI๊ฐ ๊ฐ๋ฆฌํค๋ **Active Task** ๋๋ **`๐ Next Options (Atomic)`์ ๋จ
|
|
|
28
28
|
- ๋ฉ์ธ ์์ด์ ํธ๋ ์น์ธ ๊ฒฝ๊ณ, ์ํ ์ ์ด, record/commit ๋จ๊ณ, ์๊ฒฉ ์์
์ ๋ด๋นํฉ๋๋ค. `subagent` ์์ command substate(์: `task_run`, `pre_pr_review_run`, `code_review_run`, auto-run handoff command)๋ ์๋ธ ์์ด์ ํธ ์คํ์ด ๊ธฐ๋ณธ์
๋๋ค.
|
|
29
29
|
- `pre_pr_review`๋ `pre_pr_review_run`(์๋ธ ์์ด์ ํธ ๋ฆฌ๋ทฐ ์คํ)๊ณผ `pre_pr_review_record`(๋ฉ์ธ ์์ด์ ํธ์ ๊ฒฐ๊ณผ ๊ธฐ๋ก)๋ก ๋ถ๋ฆฌ๋ฉ๋๋ค.
|
|
30
30
|
- PR ๋ฆฌ๋ทฐ๋ ๊ฐ์ ํจํด์
๋๋ค. `code_review_run`์ ์๋ธ ์์ด์ ํธ ๋ฆฌ๋ทฐ/์์ ์คํ ์ํ์ด๊ณ , push/merge/์ต์ข
๊ฒฐ์ ์ ๋ฉ์ธ ์์ด์ ํธ finalize ์ํ์ ๋จ๊น๋๋ค.
|
|
31
|
-
- ์์ ํ๋จ์ `matchedFeature.currentSubstateOwner`์ `agentOrchestration.subAgentHandoff`๋ฅผ SSOT๋ก ์ฐ์ ์ฌ์ฉํ์ธ์.
|
|
32
|
-
- `agentOrchestration.
|
|
31
|
+
- ์์ ํ๋จ์ `matchedFeature.currentSubstateOwner`์ `agentOrchestration.subAgentHandoff`๋ฅผ SSOT๋ก ์ฐ์ ์ฌ์ฉํ์ธ์.
|
|
32
|
+
- `matchedFeature.currentSubstateOwner="subagent"`์ด๊ณ `agentOrchestration.subAgentHandoff.required=true`์ด๋ฉฐ `mode="command"`๋ฉด ์์์ด ํ์์
๋๋ค. ๋จผ์ `spawn_agent`๋ฅผ ํธ์ถํ๊ณ , ํด๋น ๋ช
๋ น์ ๋ฉ์ธ ์์ด์ ํธ์์ ์ง์ ์คํํ์ง ์์ต๋๋ค.
|
|
33
33
|
- `autoRun.available`๋ง์ผ๋ก auto ๋ฃจํ ์์์ ๊ฒฐ์ ํ์ง ์์ต๋๋ค. `agentOrchestration.subAgentHandoff.required=true`์ด๊ณ `agentOrchestration.subAgentHandoff.mode="auto_run"`์ผ ๋๋ง auto ๋ฃจํ๋ฅผ ์๋ธ ์์ด์ ํธ์ ์์ํฉ๋๋ค.
|
|
34
34
|
- `agentOrchestration.subAgentHandoff`๋ฅผ ์ต์ handoff ๊ณ์ฝ(`featureRef`, `category`, `cwd`, `cmd`)์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
|
|
35
|
+
- action option์ `handoffOnly=true`์ `advancesWorkflow=false`๊ฐ ์์ผ๋ฉด `--execute` ์ฑ๊ณต์ workflow ์ ์ง์ผ๋ก ๊ฐ์ฃผํ์ง ์์ต๋๋ค. delegated work์ ํ์ํ evidence/state ๊ฐฑ์ ์ ๋๋ธ ๋ค์ ๋ค์ `context`๋ฅผ ์คํํฉ๋๋ค.
|
|
35
36
|
- `subAgentHandoff.verify.commands`(`pwd`, `git rev-parse --show-toplevel`)์ `verify.cacheKey` ๊ธฐ์ค ์ธ์
๋น 1ํ๋ง ์คํํฉ๋๋ค. ๋ถ์ผ์น ์ ์ฆ์ ์ค๋จ/๋ณด๊ณ ํ๊ณ , ์์ธ ๋ก๊ทธ๋ ๋ถ์ผ์น ์์๋ง ์์งํฉ๋๋ค.
|
|
36
37
|
- ๋ฉ์ธ ์์ด์ ํธ fallback์ ์๋ธ ์์ด์ ํธ ์คํ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ(์: ๋๊ตฌ ๋ฏธ์ง์, spawn ์คํจ, ๋ช
๋ น ์คํ ์ ์๋ธ ์์ด์ ํธ ์คํจ)์๋ง ํ์ฉํฉ๋๋ค. fallback ์คํ ์ ์๋ ์ฌ์ ๋ฅผ ์ฌ์ฉ์์๊ฒ ํ ์ค๋ก ๋จผ์ ์๋ฆฝ๋๋ค.
|
|
37
|
-
- `context --json-compact
|
|
38
|
+
- `context --json-compact`์์ `autoRun.available=true`์ผ ๋๋ง `autoRun.command`๋ฅผ ์ฌ์ฉํด ์๋ ๋ฃจํ๋ฅผ ์์ํฉ๋๋ค.
|
|
39
|
+
- `autoRun.policyEligible=true`์ด์ง๋ง `autoRun.executableNow=false`์ด๋ฉด auto ๋ฃจํ๋ฅผ ์์ํ์ง ๋ง๊ณ `autoRun.manualBoundary`๋ฅผ ๋จผ์ ์ฒ๋ฆฌํฉ๋๋ค.
|
|
38
40
|
- ์ฅ์๊ฐ ์๋ ์คํ์ด ํ์ํ๋ฉด `flow <feature> --auto-... --start-auto --json-compact`์ผ๋ก run id๋ฅผ ์์ฑํ๊ณ , ์ค๋จ/์์ถ ํ์๋ `autoRun.run.resumeCommand`(`flow --resume <RUN_ID>`)๋ฅผ ์ฐ์ ์ฌ์ฉํด ์ฌ๊ฐํฉ๋๋ค. (์์ธ ๋๋ฒ๊น
ํ๋๊ฐ ํ์ํ ๋๋ง `--json`)
|
|
39
41
|
- auto ์คํ์ด ์ค๋จ๋๋ฉด `flow --json-compact`(๋๋ `flow --json`)์ `autoRun.resume`๋ฅผ SSOT๋ก ๋ฐ๋ฆ
๋๋ค. ์ปจํ
์คํธ ์์ถ/๋ฆฌ์
ํ์๋ `autoRun.resume.flowCommand`๋ก ์ฌ๊ฐํ๊ณ , ํ์ ์ `autoRun.resume.contextCommand`๋ก ์ํ๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค.
|
|
40
42
|
- `AUTO_MANUAL_REQUIRED`๋ ์คํจ๊ฐ ์๋๋ผ ์๋ํ ๊ฒฝ๊ณ(ํ์ฌ instruction-only ๊ตฌ๊ฐ)์
๋๋ค. ์ฆ์ ์ค๋ฅ๋ก ๋จ์ ํ์ง ๋ง๊ณ ํ์ฌ `context --json-compact`๋ฅผ ๋ค์ ํ์ธํ ๋ค ์น์ธ ํ์ ์ฌ๋ถ(`approvalRequest.required`)๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
|
|
41
43
|
- CLI๊ฐ ๋ช
๋ น์ด๋ฅผ ์ถ๋ ฅํ๋ฉด **๊ทธ๋๋ก ๋ณต์ฌํด ์คํ**ํฉ๋๋ค. (standalone ํ๊ฒฝ์์๋ ๋ ํฌ ๊ฒฝ๋ก๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค)
|
|
42
44
|
- ์ฌ์ฉ์ ์๋ต ํฌ๋งท์ `agents.md`์ **"๋ผ๋ฒจ ์๋ต ๊ณ์ฝ (SSOT)"** ์ ๋ฐ๋ฆ
๋๋ค. ๋ผ๋ฒจ ๋ฌธ๊ตฌ๋ ์น์ธ ๋๊ธฐ ์ํ์์๋ง ๋ณด์ฌ์ฃผ๊ณ , CLI๊ฐ ์ค ์น์ธ ๋ฌธ๊ตฌ๋ฅผ ์์๋ก ๋ฐ๊พธ์ง ์์ต๋๋ค.
|
|
43
45
|
- ์น์ธ๋ command ์ต์
์คํ์ `npx lee-spec-kit flow <slug|F001|F001-slug> --approve <LABEL> --execute`๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ , `context --approve`์ `context --execute --ticket` ๋ถ๋ฆฌ ์คํ์ ์ง์ํฉ๋๋ค.
|
|
46
|
+
- `flow/context --execute --json` ๊ฒฐ๊ณผ๊ฐ `approved_handoff_prepared`์ด๋ฉด ๊ฐ์ ๋ผ๋ฒจ์ ๋ค์ ์น์ธ ๋ฃจํ๋ก ์ด์ง ๋ง๊ณ , ๋จผ์ delegated work๋ฅผ ์๋ฃํ ๋ค context๋ฅผ ์๋ก ํ์ธํฉ๋๋ค.
|
|
44
47
|
|
|
45
48
|
### 3๋จ๊ณ: ๊ธฐ๋ก ๋ฐ ๋ฐ๋ณต (Record & Loop)
|
|
46
49
|
|
|
@@ -25,14 +25,17 @@
|
|
|
25
25
|
- **PR ์ํ**: -
|
|
26
26
|
- ๊ฐ: Review | Approved
|
|
27
27
|
- **PR ์ ๋ฆฌ๋ทฐ**: -
|
|
28
|
-
- ๊ฐ: Pending | Done
|
|
29
|
-
-
|
|
28
|
+
- ๊ฐ: Pending | Running | Done
|
|
29
|
+
- pre-PR ๋ฆฌ๋ทฐ handoff๋ฅผ ์์ํ๋ฉด `Running`, ๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ ๊ธฐ๋ก๊น์ง ๋๋๋ฉด `Done`์ผ๋ก ๋ณ๊ฒฝ
|
|
30
30
|
- **PR ์ ๋ฆฌ๋ทฐ Evidence**: -
|
|
31
31
|
- ์: `docs/features/F001-foo/decisions.md` (์ค์ ์กด์ฌ ๊ฒฝ๋ก)
|
|
32
32
|
- **PR ์ ๋ฆฌ๋ทฐ Decision**: -
|
|
33
33
|
- ํ์: `๊ฒฐ์ : approve|changes_requested|blocked ...` (๋๋ `decision: ...`)
|
|
34
34
|
- PR ์์ฑ ์ ์ต์ข
ํต๊ณผ ๊ธฐ์ค์ `approve`
|
|
35
35
|
- ๊ธฐ๋ณธ ๋ฒ ์ด์ค๋ผ์ธ์ผ๋ก `agents/skills/create-pr.md`(`Pre-PR ๊ธฐ๋ณธ ์ฒดํฌ๋ฆฌ์คํธ`) ๊ธฐ์ค์ ๋ฐ๋ฅด์ธ์
|
|
36
|
+
- **PR ๋ฆฌ๋ทฐ**: -
|
|
37
|
+
- ๊ฐ: Pending | Running | Done
|
|
38
|
+
- PR ๋ฆฌ๋ทฐ handoff๋ฅผ ์์ํ๋ฉด `Running`, ํ์์ ๋ณ๋ ์๋ฃ ์ํ๋ฅผ ์ถ์ ํ ๋๋ง `Done`์ผ๋ก ๋ณ๊ฒฝ
|
|
36
39
|
- **PR ๋ฆฌ๋ทฐ Evidence**: -
|
|
37
40
|
- ์: `์์ฝ: ...`(๋๋ `summary: ...`), ๋๋ `PR Review Log`๊ฐ ์๋ `docs/features/F001-foo/decisions.md`
|
|
38
41
|
- **PR ๋ฆฌ๋ทฐ Decision**: -
|