lee-spec-kit 0.4.0 β 0.4.2
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 +50 -39
- package/package.json +1 -1
- package/templates/en/common/agents/skills/execute-task.md +1 -1
- package/templates/en/fullstack/agents/agents.md +1 -1
- package/templates/en/single/agents/agents.md +1 -1
- package/templates/ko/common/agents/skills/execute-task.md +1 -1
- package/templates/ko/fullstack/agents/agents.md +1 -1
- package/templates/ko/single/agents/agents.md +1 -1
package/dist/index.js
CHANGED
|
@@ -1049,7 +1049,7 @@ var I18N = {
|
|
|
1049
1049
|
planWrite: "plan.md \uC791\uC131",
|
|
1050
1050
|
planApprove: "plan.md \uC2B9\uC778",
|
|
1051
1051
|
tasksWrite: "tasks.md \uC791\uC131",
|
|
1052
|
-
docsCommitPlanning: "\uBB38\uC11C \uCEE4\uBC0B(\uAE30\
|
|
1052
|
+
docsCommitPlanning: "\uBB38\uC11C \uCEE4\uBC0B(\uB3D9\uAE30\uD654)",
|
|
1053
1053
|
issueCreate: "GitHub Issue \uC0DD\uC131",
|
|
1054
1054
|
branchCreate: "\uBE0C\uB79C\uCE58 \uC0DD\uC131",
|
|
1055
1055
|
tasksExecute: "\uD0DC\uC2A4\uD06C \uC2E4\uD589",
|
|
@@ -1066,9 +1066,9 @@ var I18N = {
|
|
|
1066
1066
|
planApproval: "plan.md \uB0B4\uC6A9\uC744 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uACF5\uC720\uD558\uACE0 \uC2B9\uC778(OK)\uC744 \uBC1B\uC73C\uC138\uC694.",
|
|
1067
1067
|
tasksCreate: "tasks.md \uD15C\uD50C\uB9BF\uC744 \uBCF5\uC0AC\uD574 \uD0DC\uC2A4\uD06C\uB97C \uC791\uC131\uD558\uC138\uC694. (features/feature-base/tasks.md \uCC38\uACE0)",
|
|
1068
1068
|
tasksNeedAtLeastOne: "tasks.md\uC5D0 \uCD5C\uC18C 1\uAC1C \uC774\uC0C1\uC758 \uD0DC\uC2A4\uD06C\uB97C \uC791\uC131\uD558\uC138\uC694.",
|
|
1069
|
-
docsCommitPlanning: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs({folderName}
|
|
1069
|
+
docsCommitPlanning: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs(planning): {folderName} \uAE30\uD68D \uBB38\uC11C"',
|
|
1070
1070
|
issueCreateAndWrite: "GitHub Issue\uB97C \uC0DD\uC131\uD55C \uB4A4, spec.md/tasks.md\uC758 \uC774\uC288 \uBC88\uD638\uB97C \uCC44\uC6B0\uACE0 \uBB38\uC11C \uCEE4\uBC0B\uC744 \uC900\uBE44\uD558\uC138\uC694. (skills/create-issue.md \uCC38\uACE0)",
|
|
1071
|
-
docsCommitIssueUpdate: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs({
|
|
1071
|
+
docsCommitIssueUpdate: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs(#{issueNumber}): {folderName} \uBB38\uC11C \uC5C5\uB370\uC774\uD2B8"',
|
|
1072
1072
|
standaloneNeedsProjectRoot: "standalone \uBAA8\uB4DC\uC5D0\uC11C\uB294 projectRoot \uC124\uC815\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. (npx lee-spec-kit config --project-root ...)",
|
|
1073
1073
|
createBranch: 'cd "{projectGitCwd}" && git checkout -b feat/{issueNumber}-{slug}',
|
|
1074
1074
|
tasksAllDoneButNoChecklist: '\uBAA8\uB4E0 \uD0DC\uC2A4\uD06C\uAC00 DONE\uC774\uC9C0\uB9CC \uC644\uB8CC \uC870\uAC74 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8 \uC139\uC158\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4. tasks.md\uC758 "\uC644\uB8CC \uC870\uAC74" \uC139\uC158\uC744 \uCD94\uAC00/\uD655\uC778\uD558\uC138\uC694.',
|
|
@@ -1097,7 +1097,7 @@ var I18N = {
|
|
|
1097
1097
|
planWrite: "Write plan.md",
|
|
1098
1098
|
planApprove: "Approve plan.md",
|
|
1099
1099
|
tasksWrite: "Write tasks.md",
|
|
1100
|
-
docsCommitPlanning: "Commit
|
|
1100
|
+
docsCommitPlanning: "Commit docs (sync)",
|
|
1101
1101
|
issueCreate: "Create GitHub Issue",
|
|
1102
1102
|
branchCreate: "Create branch",
|
|
1103
1103
|
tasksExecute: "Execute tasks",
|
|
@@ -1114,9 +1114,9 @@ var I18N = {
|
|
|
1114
1114
|
planApproval: "Share plan.md with the user and get approval (OK).",
|
|
1115
1115
|
tasksCreate: "Copy the tasks.md template and write tasks. (See features/feature-base/tasks.md)",
|
|
1116
1116
|
tasksNeedAtLeastOne: "Add at least one task to tasks.md.",
|
|
1117
|
-
docsCommitPlanning: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs({folderName}
|
|
1117
|
+
docsCommitPlanning: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs(planning): {folderName} planning docs"',
|
|
1118
1118
|
issueCreateAndWrite: "Create a GitHub Issue, then fill in the issue number in spec.md/tasks.md and prepare to commit docs. (See skills/create-issue.md)",
|
|
1119
|
-
docsCommitIssueUpdate: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs({
|
|
1119
|
+
docsCommitIssueUpdate: 'cd "{docsGitCwd}" && git add "{featurePath}" && git commit -m "docs(#{issueNumber}): {folderName} docs update"',
|
|
1120
1120
|
standaloneNeedsProjectRoot: "In standalone mode, projectRoot is required. (npx lee-spec-kit config --project-root ...)",
|
|
1121
1121
|
createBranch: 'cd "{projectGitCwd}" && git checkout -b feat/{issueNumber}-{slug}',
|
|
1122
1122
|
tasksAllDoneButNoChecklist: 'All tasks are DONE but no completion checklist section was found. Add/verify the "Completion Criteria" section in tasks.md.',
|
|
@@ -1226,12 +1226,21 @@ function getStepDefinitions(lang) {
|
|
|
1226
1226
|
step: 6,
|
|
1227
1227
|
name: tr(lang, "steps", "tasksWrite"),
|
|
1228
1228
|
checklist: {
|
|
1229
|
-
done: (f) => f.docs.tasksExists && f.tasks.total > 0,
|
|
1229
|
+
done: (f) => f.docs.tasksExists && f.tasks.total > 0 && f.docs.prFieldExists && f.docs.prStatusFieldExists,
|
|
1230
1230
|
detail: (f) => f.tasks.total > 0 ? `(${f.tasks.total})` : ""
|
|
1231
1231
|
},
|
|
1232
1232
|
current: {
|
|
1233
|
-
when: (f) => f.planStatus === "Approved" && (!f.docs.tasksExists || f.tasks.total === 0),
|
|
1233
|
+
when: (f) => f.planStatus === "Approved" && (!f.docs.tasksExists || f.tasks.total === 0 || f.docs.tasksExists && f.tasks.total > 0 && (!f.docs.prFieldExists || !f.docs.prStatusFieldExists)),
|
|
1234
1234
|
actions: (f) => {
|
|
1235
|
+
if (f.docs.tasksExists && f.tasks.total > 0 && (!f.docs.prFieldExists || !f.docs.prStatusFieldExists)) {
|
|
1236
|
+
return [
|
|
1237
|
+
{
|
|
1238
|
+
type: "instruction",
|
|
1239
|
+
requiresUserOk: true,
|
|
1240
|
+
message: tr(lang, "messages", "prLegacyAsk")
|
|
1241
|
+
}
|
|
1242
|
+
];
|
|
1243
|
+
}
|
|
1235
1244
|
if (!f.docs.tasksExists) {
|
|
1236
1245
|
return [
|
|
1237
1246
|
{
|
|
@@ -1253,40 +1262,24 @@ function getStepDefinitions(lang) {
|
|
|
1253
1262
|
step: 7,
|
|
1254
1263
|
name: tr(lang, "steps", "docsCommitPlanning"),
|
|
1255
1264
|
checklist: {
|
|
1256
|
-
done: (f) => f.
|
|
1265
|
+
done: (f) => f.docs.tasksExists && f.tasks.total > 0 && f.specStatus === "Approved" && f.planStatus === "Approved" && !f.git.docsHasUncommittedChanges
|
|
1257
1266
|
},
|
|
1258
1267
|
current: {
|
|
1259
|
-
when: (f) => f.docs.tasksExists && f.tasks.total > 0 && f.specStatus === "Approved" && f.planStatus === "Approved" && !f.
|
|
1260
|
-
actions: (f) => [
|
|
1261
|
-
{
|
|
1262
|
-
type: "command",
|
|
1263
|
-
requiresUserOk: true,
|
|
1264
|
-
scope: "docs",
|
|
1265
|
-
cwd: f.git.docsGitCwd,
|
|
1266
|
-
cmd: tr(lang, "messages", "docsCommitPlanning", {
|
|
1267
|
-
docsGitCwd: f.git.docsGitCwd,
|
|
1268
|
-
featurePath: f.docs.featurePathFromDocs,
|
|
1269
|
-
folderName: f.folderName
|
|
1270
|
-
})
|
|
1271
|
-
}
|
|
1272
|
-
]
|
|
1273
|
-
}
|
|
1274
|
-
},
|
|
1275
|
-
{
|
|
1276
|
-
step: 8,
|
|
1277
|
-
name: tr(lang, "steps", "issueCreate"),
|
|
1278
|
-
checklist: {
|
|
1279
|
-
done: (f) => !!f.issueNumber && !f.git.docsHasUncommittedChanges
|
|
1280
|
-
},
|
|
1281
|
-
current: {
|
|
1282
|
-
when: (f) => f.docs.tasksExists && f.tasks.total > 0 && f.specStatus === "Approved" && f.planStatus === "Approved" && (!f.issueNumber || f.git.docsHasUncommittedChanges),
|
|
1268
|
+
when: (f) => f.docs.tasksExists && f.tasks.total > 0 && f.specStatus === "Approved" && f.planStatus === "Approved" && !f.activeTask && f.git.docsHasUncommittedChanges,
|
|
1283
1269
|
actions: (f) => {
|
|
1284
|
-
if (
|
|
1270
|
+
if (f.issueNumber) {
|
|
1285
1271
|
return [
|
|
1286
1272
|
{
|
|
1287
|
-
type: "
|
|
1273
|
+
type: "command",
|
|
1288
1274
|
requiresUserOk: true,
|
|
1289
|
-
|
|
1275
|
+
scope: "docs",
|
|
1276
|
+
cwd: f.git.docsGitCwd,
|
|
1277
|
+
cmd: tr(lang, "messages", "docsCommitIssueUpdate", {
|
|
1278
|
+
docsGitCwd: f.git.docsGitCwd,
|
|
1279
|
+
featurePath: f.docs.featurePathFromDocs,
|
|
1280
|
+
issueNumber: f.issueNumber,
|
|
1281
|
+
folderName: f.folderName
|
|
1282
|
+
})
|
|
1290
1283
|
}
|
|
1291
1284
|
];
|
|
1292
1285
|
}
|
|
@@ -1296,10 +1289,9 @@ function getStepDefinitions(lang) {
|
|
|
1296
1289
|
requiresUserOk: true,
|
|
1297
1290
|
scope: "docs",
|
|
1298
1291
|
cwd: f.git.docsGitCwd,
|
|
1299
|
-
cmd: tr(lang, "messages", "
|
|
1292
|
+
cmd: tr(lang, "messages", "docsCommitPlanning", {
|
|
1300
1293
|
docsGitCwd: f.git.docsGitCwd,
|
|
1301
1294
|
featurePath: f.docs.featurePathFromDocs,
|
|
1302
|
-
issueNumber: f.issueNumber,
|
|
1303
1295
|
folderName: f.folderName
|
|
1304
1296
|
})
|
|
1305
1297
|
}
|
|
@@ -1307,6 +1299,25 @@ function getStepDefinitions(lang) {
|
|
|
1307
1299
|
}
|
|
1308
1300
|
}
|
|
1309
1301
|
},
|
|
1302
|
+
{
|
|
1303
|
+
step: 8,
|
|
1304
|
+
name: tr(lang, "steps", "issueCreate"),
|
|
1305
|
+
checklist: {
|
|
1306
|
+
done: (f) => !!f.issueNumber
|
|
1307
|
+
},
|
|
1308
|
+
current: {
|
|
1309
|
+
when: (f) => f.docs.tasksExists && f.tasks.total > 0 && f.specStatus === "Approved" && f.planStatus === "Approved" && !f.issueNumber,
|
|
1310
|
+
actions: (f) => {
|
|
1311
|
+
return [
|
|
1312
|
+
{
|
|
1313
|
+
type: "instruction",
|
|
1314
|
+
requiresUserOk: true,
|
|
1315
|
+
message: tr(lang, "messages", "issueCreateAndWrite")
|
|
1316
|
+
}
|
|
1317
|
+
];
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
},
|
|
1310
1321
|
{
|
|
1311
1322
|
step: 9,
|
|
1312
1323
|
name: tr(lang, "steps", "branchCreate"),
|
|
@@ -1661,7 +1672,7 @@ function parseCompletionChecklist(content) {
|
|
|
1661
1672
|
async function parseFeature(featurePath, type, context, options) {
|
|
1662
1673
|
const lang = options.lang;
|
|
1663
1674
|
const folderName = path4.basename(featurePath);
|
|
1664
|
-
const match = folderName.match(/^(F
|
|
1675
|
+
const match = folderName.match(/^(F\d+)-(.+)$/);
|
|
1665
1676
|
const id = match?.[1];
|
|
1666
1677
|
const slug = match?.[2] || folderName;
|
|
1667
1678
|
const specPath = path4.join(featurePath, "spec.md");
|
package/package.json
CHANGED
|
@@ -20,7 +20,7 @@ npx lee-spec-kit context
|
|
|
20
20
|
Execute the `π Next Action` exactly as printed by the CLI.
|
|
21
21
|
|
|
22
22
|
- If the CLI points to an active task, focus on that task only.
|
|
23
|
-
- If there is no active task,
|
|
23
|
+
- If there is no active task, **share the task title and get user approval (OK)**, then switch the next `[TODO]` task to `[DOING]` and start.
|
|
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
|
|
|
26
26
|
### Step 3: Update tasks.md (only what you did)
|
|
@@ -12,7 +12,7 @@ Operating rules for AI code assistants to perform consistent code generation and
|
|
|
12
12
|
| Action | When to Confirm | What to Share |
|
|
13
13
|
| --------------------- | ------------------------ | ------------------------- |
|
|
14
14
|
| Spec Writing | After writing `spec.md` | Full spec content |
|
|
15
|
-
| Task Execution | Before each task |
|
|
15
|
+
| Task Execution | Before each task | Task title |
|
|
16
16
|
| Commit Creation | Before `git commit` | Commit message, file list |
|
|
17
17
|
| Issue Creation | Before `gh issue create` | Title, body, labels |
|
|
18
18
|
| PR Creation | Before `gh pr create` | Title, body, labels |
|
|
@@ -12,7 +12,7 @@ Operating rules for AI code assistants to perform consistent code generation and
|
|
|
12
12
|
| Action | When to Confirm | What to Share |
|
|
13
13
|
| --------------------- | ------------------------ | ------------------------- |
|
|
14
14
|
| Spec Writing | After writing `spec.md` | Full spec content |
|
|
15
|
-
| Task Execution | Before each task |
|
|
15
|
+
| Task Execution | Before each task | Task title |
|
|
16
16
|
| Commit Creation | Before `git commit` | Commit message, file list |
|
|
17
17
|
| Issue Creation | Before `gh issue create` | Title, body, labels |
|
|
18
18
|
| PR Creation | Before `gh pr create` | Title, body, labels |
|
|
@@ -22,7 +22,7 @@ npx lee-spec-kit context
|
|
|
22
22
|
CLIκ° κ°λ¦¬ν€λ **Active Task** λλ **Next Action**μ μνν©λλ€.
|
|
23
23
|
|
|
24
24
|
- **[DOING] μνμΈ νμ€ν¬κ° μλ€λ©΄**: ν΄λΉ νμ€ν¬λ₯Ό μ΅μ°μ μΌλ‘ μλ£νμΈμ.
|
|
25
|
-
- **[DOING]μ΄ μλ€λ©΄**: CLIκ° μΆμ²νλ λ€μ νμ€ν¬(`[TODO]`)λ₯Ό
|
|
25
|
+
- **[DOING]μ΄ μλ€λ©΄**: CLIκ° μΆμ²νλ λ€μ νμ€ν¬(`[TODO]`)λ₯Ό μμνκΈ° μ μ, **νμ€ν¬ μ λͺ©μ 곡μ νκ³ μ¬μ©μ μΉμΈ(OK)μ λ°μ λ€** `[DOING]`μΌλ‘ λ³κ²½νμΈμ.
|
|
26
26
|
- **μλ£ μ‘°κ±΄(Acceptance)μ κ²μ¦**νκ³ , ν
μ€νΈλ₯Ό ν΅κ³Όν΄μΌλ§ μλ£(`[DONE]`) μ²λ¦¬ν©λλ€.
|
|
27
27
|
- CLIκ° λͺ
λ Ήμ΄λ₯Ό μΆλ ₯νλ©΄ **κ·Έλλ‘ λ³΅μ¬ν΄ μ€ν**ν©λλ€. (standalone νκ²½μμλ λ ν¬ κ²½λ‘κ° ν¬ν¨λ μ μμ΅λλ€)
|
|
28
28
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| μμ
| νμΈ μμ | 곡μ λ΄μ© |
|
|
13
13
|
| ------------- | -------------------- | --------------------------- |
|
|
14
14
|
| μ€ν μμ± | `spec.md` μμ± ν | μ€ν λ΄μ© μ λ¬Έ |
|
|
15
|
-
| νμ€ν¬ μ€ν | κ° νμ€ν¬ μμ μ |
|
|
15
|
+
| νμ€ν¬ μ€ν | κ° νμ€ν¬ μμ μ | νμ€ν¬ μ λͺ© |
|
|
16
16
|
| μ»€λ° μμ± | `git commit` μ | μ»€λ° λ©μμ§, ν¬ν¨ νμΌ λͺ©λ‘ |
|
|
17
17
|
| μ΄μ μμ± | `gh issue create` μ | μ λͺ©, λ³Έλ¬Έ, λΌλ²¨ |
|
|
18
18
|
| PR μμ± | `gh pr create` μ | μ λͺ©, λ³Έλ¬Έ, λΌλ²¨ |
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| μμ
| νμΈ μμ | 곡μ λ΄μ© |
|
|
13
13
|
| ------------- | -------------------- | --------------------------- |
|
|
14
14
|
| μ€ν μμ± | `spec.md` μμ± ν | μ€ν λ΄μ© μ λ¬Έ |
|
|
15
|
-
| νμ€ν¬ μ€ν | κ° νμ€ν¬ μμ μ |
|
|
15
|
+
| νμ€ν¬ μ€ν | κ° νμ€ν¬ μμ μ | νμ€ν¬ μ λͺ© |
|
|
16
16
|
| μ»€λ° μμ± | `git commit` μ | μ»€λ° λ©μμ§, ν¬ν¨ νμΌ λͺ©λ‘ |
|
|
17
17
|
| μ΄μ μμ± | `gh issue create` μ | μ λͺ©, λ³Έλ¬Έ, λΌλ²¨ |
|
|
18
18
|
| PR μμ± | `gh pr create` μ | μ λͺ©, λ³Έλ¬Έ, λΌλ²¨ |
|