lee-spec-kit 0.7.1 → 0.7.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lee-spec-kit",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Project documentation structure generator for AI-assisted development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -52,6 +52,8 @@ To avoid ambiguity, treat the following as the single source of truth (SSOT).
52
52
  - **Features (`docs/features/`)**: implementation scope/progress SSOT
53
53
  - `spec.md`: scope + `PRD Refs` (the PRD IDs this feature covers)
54
54
  - `tasks.md`: map each task line to PRD IDs via bracket tags like `[PRD-FR-001]`, or tag non-PRD tasks as `[NON-PRD]`
55
+ - Use `[NON-PRD]` only for internal work such as refactors, renames, tooling, tests, and cleanup.
56
+ - If a task changes user-facing behavior, acceptance criteria, or feature scope, backfill PRD first and tag the task as `[PRD-...]` instead of leaving it as `[NON-PRD]`.
55
57
  - For legacy docs without PRD IDs yet, backfill the source requirements doc first, then link the feature docs.
56
58
  - `decisions.md`: record changes/trade-offs/requirement changes (why it changed) with evidence links
57
59
 
@@ -64,6 +66,10 @@ When requirements/scope change, the “what to update” must be explicit in doc
64
66
  2. **If still in Idea stage**:
65
67
  - `docs/ideas/*.md`: update `PRD Refs` and in/out scope
66
68
  3. **If already a Feature**:
69
+ - If the change started as a `[NON-PRD]` task but becomes a user-facing requirement/scope change, convert it into PRD-backed work:
70
+ 1. backfill/update `docs/prd/*.md`
71
+ 2. update `spec.md` `PRD Refs`
72
+ 3. retag the task as `[PRD-...]` (or add a replacement task if needed)
67
73
  - `docs/features/.../spec.md`: update `PRD Refs` + reflect scope change summary
68
74
  - `docs/features/.../tasks.md`: add tasks for the change + tag each task as `[PRD-...]` or `[NON-PRD]`
69
75
  - `docs/features/.../plan.md`: update if architecture/testing strategy changed
@@ -64,6 +64,8 @@ npx lee-spec-kit status --write
64
64
 
65
65
  - Assign stable requirement IDs in PRD docs (`docs/prd/*.md`) like `PRD-FR-001`.
66
66
  - Link each task line in `tasks.md` with a tag like `[PRD-FR-001]`. For non-PRD tasks, use `[NON-PRD]`.
67
+ - Use `[NON-PRD]` only for internal implementation work such as refactors, test-only work, tooling, renames, and cleanup.
68
+ - If a change affects user-facing behavior, acceptance criteria, or scope, update PRD first and retag the task as `[PRD-...]`.
67
69
  - Do not invent PRD IDs inside feature docs. Define them in the PRD source first, and backfill legacy docs before linking tasks.
68
70
  - Coverage report: `npx lee-spec-kit requirements` (alias: `npx lee-spec-kit prd`)
69
71
 
@@ -75,6 +77,10 @@ When things change mid-work, it must be explicit what was updated.
75
77
 
76
78
  - Record changes as **new tasks** (do not edit `[DONE]` tasks; create a new task instead).
77
79
  - Every change task must be tagged as `[PRD-...]` or `[NON-PRD]`. (Recommended: also add `[CHANGE]`.)
80
+ - If a change starts as internal exploration but ends up changing user-visible behavior, do not leave it as `[NON-PRD]`.
81
+ - Backfill/update `docs/prd/*.md`
82
+ - Update `spec.md` `PRD Refs`
83
+ - Retag the task as `[PRD-...]` or add a replacement PRD-backed task
78
84
  - If the change impacts PRD/spec/plan, update these too:
79
85
  - `docs/prd/*.md` (add/update/deprecate requirement IDs)
80
86
  - `spec.md` (`PRD Refs`, scope/AC)
@@ -59,3 +59,4 @@
59
59
  - Only list IDs that already exist in the source requirements doc. Do not invent PRD IDs in `spec.md` or `tasks.md`.
60
60
  - If this is a legacy requirements doc without PRD IDs yet, backfill IDs in the source first, then update this field and the `tasks.md` task tags together.
61
61
  - When requirements/scope change, update PRD docs + this field + `tasks.md` task tags together.
62
+ - If implementation discovers a better user-facing behavior and the shipped requirement changes, treat that as a PRD update, not a permanent `[NON-PRD]` exception.
@@ -10,6 +10,7 @@
10
10
  - **PRD mapping (recommended)**: add a PRD requirement ID tag like `[PRD-FR-001]` to each task line, or tag non-PRD tasks as `[NON-PRD]`.
11
11
  - Do not invent PRD IDs in `tasks.md`. Only reference IDs that already exist in `docs/prd` or the upstream requirements doc.
12
12
  - If this is a legacy feature without PRD IDs yet, backfill IDs in the source requirements doc first, then align `spec.md` `PRD Refs` and task tags together.
13
+ - `[NON-PRD]` is for internal implementation work only. If the task changes user-facing behavior, acceptance criteria, or scope, backfill PRD first and tag it as `[PRD-...]`.
13
14
 
14
15
  ---
15
16
 
@@ -60,6 +61,7 @@
60
61
  ```
61
62
 
62
63
  > `PRD-FR-001` in the example means an ID that already exists in the PRD source. If it is not defined yet, do not add it to tasks first.
64
+ > If a task began as exploration/internal work but became a product requirement change, update PRD first, then retag the task from `[NON-PRD]` to `[PRD-...]`.
63
65
 
64
66
  (Recommended) Requirement/scope change task:
65
67
 
@@ -74,6 +76,8 @@ Record mid-work changes as **new tasks**, and explicitly list which docs need up
74
76
  - decisions.md (why it changed + evidence)
75
77
  ```
76
78
 
79
+ > Use `[NON-PRD][CHANGE]` only when the change stays internal and does not alter user-visible requirements.
80
+
77
81
  ---
78
82
 
79
83
  ## Completion Criteria
@@ -8,31 +8,32 @@ Core rule: once an idea becomes a Feature, the SSOT moves to `docs/features/`.
8
8
 
9
9
  ## Conventions
10
10
 
11
- - 1 idea = 1 file (kebab-case recommended)
12
- - Example: `login-rate-limit.md`
13
- - Example: `admin-dashboard-metrics.md`
11
+ - 1 idea = 1 file
12
+ - CLI-generated ideas use indexed names like `I001-login-rate-limit.md`
13
+ - Legacy free-form names like `login-rate-limit.md` can still exist
14
14
  - Put at least these at the top:
15
+ - `Idea ID` (`I###` for indexed ideas)
15
16
  - Goal / context
16
17
  - Rough scope (what’s in/out)
17
18
  - PRD Refs (recommended): `PRD-FR-001, PRD-US-002` (use `NON-PRD` when not tied to PRD)
18
19
  - Target component (optional): `api` / `app` / `worker` / `all`
19
- - Status (recommended): `Active | Converted | Dropped`
20
+ - Status: `Active | Featureized | Dropped`
21
+ - Feature: `F###-slug` when promoted
20
22
  - Only list IDs that already exist in the source PRD/requirements doc. If IDs do not exist yet, backfill the source first.
21
23
 
22
24
  ---
23
25
 
24
26
  ## Promotion / Cleanup (Idea → Feature)
25
27
 
26
- 1. Create a Feature folder with `npx lee-spec-kit feature <name>`
27
- 2. In the new Feature, record all of the following:
28
- - Idea doc path in `spec.md` or `tasks.md` (example: `docs/ideas/login-rate-limit.md`)
29
- - `PRD Refs` in `spec.md` (example: `PRD-FR-001, PRD-US-002`)
30
- - PRD mapping tags in `tasks.md` task lines like `[PRD-FR-001]` (use `[NON-PRD]` for non-PRD tasks)
31
- 3. Remove the idea from the active list (choose one):
32
- - **Recommended**: move to `docs/ideas/archive/` and add `Status: Converted`, `Feature: F00X-...` on top
33
- - Or: delete it (only if you don’t need history)
28
+ 1. Create an idea doc with `npx lee-spec-kit idea <name>` when you want traceable intake.
29
+ 2. Promote it with `npx lee-spec-kit feature <name> --idea I001`
30
+ 3. In the new Feature, record all of the following:
31
+ - The source idea path is stamped into `spec.md` automatically when `--idea` is used.
32
+ - `PRD Refs` still need to be completed in `spec.md`.
33
+ - `tasks.md` still needs PRD mapping tags like `[PRD-FR-001]`.
34
+ 4. Keep the idea doc for history and update it to `Status: Featureized`, `Feature: F00X-...`
34
35
 
35
- > Tip: archiving is usually better than deleting for traceability (“why this feature exists”).
36
+ > Tip: keeping the source idea doc is usually better than deleting it for traceability (“why this feature exists”).
36
37
 
37
38
  ---
38
39
 
@@ -0,0 +1,36 @@
1
+ # Idea: {idea-name}
2
+
3
+ ---
4
+
5
+ ## Overview
6
+
7
+ - **Idea ID**: {idea-id}
8
+ - **Idea Name**: {idea-name}
9
+ - **Created**: {YYYY-MM-DD}
10
+ - **Status**: Active
11
+ - Values: Active | Featureized | Dropped
12
+ - **Feature**: -
13
+ - **PRD Refs**: -
14
+ - **Component**: {component}
15
+
16
+ ---
17
+
18
+ ## Context
19
+
20
+ {{description}}
21
+
22
+ (Why is this idea worth exploring?)
23
+
24
+ ---
25
+
26
+ ## Rough Scope
27
+
28
+ - In:
29
+ - Out:
30
+
31
+ ---
32
+
33
+ ## Promotion Notes
34
+
35
+ - What should stay true if this becomes a feature?
36
+ - What risks or unanswered questions remain?
@@ -52,6 +52,8 @@ npx lee-spec-kit context --json-compact
52
52
  - **Features (`docs/features/`)**: 구현 범위/진행 SSOT
53
53
  - `spec.md`: 범위 정의 + `PRD Refs`(기능이 커버하는 PRD ID 목록)
54
54
  - `tasks.md`: 태스크 단위로 PRD ID를 태그(`[PRD-FR-001]`)로 매핑하거나, PRD 무관 태스크는 `[NON-PRD]`로 표시
55
+ - `[NON-PRD]`는 refactor, rename, tooling, 테스트, cleanup 같은 내부 작업에만 사용합니다.
56
+ - 태스크가 사용자 동작, acceptance criteria, 기능 범위를 바꾸게 되면 `[NON-PRD]`로 끝내지 말고 PRD를 backfill한 뒤 `[PRD-...]`로 연결합니다.
55
57
  - 레거시 문서에 PRD ID가 없다면, 먼저 원문 요구사항 문서에 ID를 backfill한 뒤 Feature 문서를 연결합니다.
56
58
  - `decisions.md`: 변경/트레이드오프/요구사항 변경(왜 바뀌었는지) 기록 + Evidence 링크
57
59
 
@@ -64,6 +66,10 @@ npx lee-spec-kit context --json-compact
64
66
  2. **Idea 단계라면**:
65
67
  - `docs/ideas/*.md`: `PRD Refs` 및 범위(포함/제외) 갱신
66
68
  3. **Feature 단계라면**:
69
+ - 시작은 `[NON-PRD]`였더라도, 진행 중 사용자 요구/동작/범위 변경으로 바뀌었다면 PRD 기반 작업으로 승격합니다:
70
+ 1. `docs/prd/*.md` backfill/수정
71
+ 2. `spec.md`의 `PRD Refs` 갱신
72
+ 3. 해당 태스크를 `[PRD-...]`로 재태깅 (필요하면 대체 태스크 추가)
67
73
  - `docs/features/.../spec.md`: `PRD Refs` 갱신 + 스코프 변경 요약 반영
68
74
  - `docs/features/.../tasks.md`: 변경을 반영하는 새 태스크 추가 + 각 태스크에 `[PRD-...]` 또는 `[NON-PRD]` 태그 부여
69
75
  - `docs/features/.../plan.md`: 아키텍처/테스트 전략이 바뀌면 함께 갱신
@@ -64,6 +64,8 @@ npx lee-spec-kit status --write
64
64
 
65
65
  - PRD 문서(`docs/prd/*.md`)에 `PRD-FR-001` 같은 요구사항 ID를 부여하세요.
66
66
  - `tasks.md`의 각 태스크 라인에 `[PRD-FR-001]` 태그로 연결하세요. PRD와 무관한 태스크는 `[NON-PRD]`를 사용하세요.
67
+ - `[NON-PRD]`는 refactor, 테스트 전용 작업, tooling, rename, cleanup 같은 내부 구현 작업에만 사용하세요.
68
+ - 변경이 사용자 동작, acceptance criteria, 범위를 바꾸면 PRD를 먼저 갱신하고 태스크도 `[PRD-...]`로 다시 연결하세요.
67
69
  - 단, 태스크 문서에서 PRD ID를 임의 생성하지 않습니다. 먼저 PRD 원문에 정의하고, 레거시 문서는 원문 ID backfill 후 연결하세요.
68
70
  - 커버리지 리포트: `npx lee-spec-kit requirements` (alias: `npx lee-spec-kit prd`)
69
71
 
@@ -75,6 +77,10 @@ npx lee-spec-kit status --write
75
77
 
76
78
  - 변경은 **새 태스크로 추가**합니다. (`[DONE]` 태스크를 고치지 말고 새 태스크를 만드세요)
77
79
  - 변경 태스크에는 `[PRD-...]` 또는 `[NON-PRD]` 태그를 반드시 붙입니다. (권장: `[CHANGE]` 태그 추가)
80
+ - 내부 검토로 시작했더라도, 최종적으로 사용자 요구/동작 변경이 되면 `[NON-PRD]`로 남기지 않습니다.
81
+ - `docs/prd/*.md`를 backfill/수정
82
+ - `spec.md`의 `PRD Refs` 갱신
83
+ - 태스크를 `[PRD-...]`로 재태깅하거나 대체 태스크 추가
78
84
  - 변경이 PRD/스펙/설계에 영향을 주면 아래도 함께 갱신합니다:
79
85
  - `docs/prd/*.md` (요구사항 ID 추가/수정/Deprecated)
80
86
  - `spec.md` (`PRD Refs`, 스코프/AC)
@@ -59,3 +59,4 @@
59
59
  - 이미 원문 요구사항 문서에 정의된 ID만 적으세요. `spec.md`나 `tasks.md`에서 임의로 PRD ID를 만들지 않습니다.
60
60
  - 레거시 요구사항 문서에 아직 PRD ID가 없다면, 먼저 원문에 ID를 backfill한 뒤 이 필드와 `tasks.md` 태스크 태그를 함께 갱신하세요.
61
61
  - 요구사항/스코프 변경 시 PRD 문서 + 이 필드 + `tasks.md` 태스크 태그를 함께 갱신하세요.
62
+ - 구현 중 더 나은 사용자 동작이 발견되어 최종 요구사항이 바뀌었다면, 이를 영구적인 `[NON-PRD]` 예외로 두지 말고 PRD 업데이트로 취급하세요.
@@ -10,6 +10,7 @@
10
10
  - **PRD 매핑(권장)**: 각 태스크 라인에 `[PRD-FR-001]` 같은 PRD 요구사항 ID 태그를 추가하거나, PRD와 무관한 태스크는 `[NON-PRD]`로 표시하세요.
11
11
  - 단, `tasks.md`에서 PRD ID를 임의로 만들지 마세요. `docs/prd` 또는 상위 요구사항 문서에 먼저 정의된 ID만 참조해야 합니다.
12
12
  - 레거시 문서에 아직 PRD ID가 없다면, 먼저 원문 요구사항 문서에 ID를 backfill한 뒤 `spec.md`의 `PRD Refs`와 태스크 태그를 함께 맞추세요.
13
+ - `[NON-PRD]`는 내부 구현 작업 전용입니다. 사용자 동작, acceptance criteria, 범위가 바뀌는 태스크라면 PRD를 먼저 backfill하고 `[PRD-...]`로 태깅하세요.
13
14
 
14
15
  ---
15
16
 
@@ -60,6 +61,7 @@
60
61
  ```
61
62
 
62
63
  > 위 예시의 `PRD-FR-001`은 이미 PRD 원문에 존재하는 ID를 뜻합니다. 아직 정의되지 않았다면 태스크에 먼저 넣지 마세요.
64
+ > 처음엔 탐색/내부 작업이었더라도 제품 요구사항 변경으로 이어졌다면, `NON-PRD`로 두지 말고 PRD를 먼저 갱신한 뒤 `[PRD-...]`로 재태깅하세요.
63
65
 
64
66
  (권장) 요구사항/범위 변경 태스크:
65
67
 
@@ -74,6 +76,8 @@
74
76
  - decisions.md (변경 사유 + Evidence)
75
77
  ```
76
78
 
79
+ > `[NON-PRD][CHANGE]`는 내부 변경으로 끝날 때만 사용하세요. 사용자에게 보이는 요구사항 변경이면 PRD backfill이 먼저입니다.
80
+
77
81
  ---
78
82
 
79
83
  ## 완료 조건
@@ -8,31 +8,32 @@ Feature로 발전하기 전의 아이디어 / To-do / 실험 기록을 모아두
8
8
 
9
9
  ## 작성 규칙
10
10
 
11
- - 1 아이디어 = 1 파일 (kebab-case 권장)
12
- - 예: `login-rate-limit.md`
13
- - 예: `admin-dashboard-metrics.md`
11
+ - 1 아이디어 = 1 파일
12
+ - CLI로 생성한 문서는 `I001-login-rate-limit.md` 같은 indexed 이름을 사용합니다
13
+ - 기존의 `login-rate-limit.md` 같은 자유 형식 파일도 유지할 수 있습니다
14
14
  - 상단에 최소한 아래 메타 정보를 둡니다:
15
+ - `Idea ID` (`I###` 형식의 indexed idea인 경우)
15
16
  - 목적/배경
16
17
  - 대략 범위(뭘 할지/안 할지)
17
18
  - PRD Refs(권장): `PRD-FR-001, PRD-US-002` (PRD와 무관하면 `NON-PRD` 명시)
18
19
  - 대상 컴포넌트(필요 시): `api` / `app` / `worker` / `all`
19
- - 상태(권장): `Active | Converted | Dropped`
20
+ - 상태: `Active | Featureized | Dropped`
21
+ - Feature: 승격되면 `F###-slug`
20
22
  - `PRD Refs`에는 이미 원문 PRD/요구사항 문서에 정의된 ID만 적습니다. 아직 ID가 없다면 원문부터 backfill하세요.
21
23
 
22
24
  ---
23
25
 
24
26
  ## 승격/정리 규칙 (Idea → Feature)
25
27
 
26
- 1. `npx lee-spec-kit feature <name>`로 Feature 폴더 생성
27
- 2. Feature 아래를 모두 남깁니다
28
- - `spec.md` 또는 `tasks.md`에 아이디어 문서 경로 (예: `docs/ideas/login-rate-limit.md`)
29
- - `spec.md`의 `PRD Refs`(예: `PRD-FR-001, PRD-US-002`)
30
- - `tasks.md` 태스크 라인에 `[PRD-FR-001]` 같은 PRD ID 태그 (PRD와 무관한 태스크는 `[NON-PRD]`)
31
- 3. 아이디어 문서는 **목록에서 제거**합니다 ( 중 하나 선택):
32
- - **권장**: `docs/ideas/archive/`로 이동 상단에 `Status: Converted`, `Feature: F00X-...` 기록
33
- - 또는: 완전히 삭제 (히스토리가 필요 없을 때만)
28
+ 1. 추적 가능한 intake가 필요하면 `npx lee-spec-kit idea <name>`로 아이디어 문서를 먼저 만듭니다
29
+ 2. Feature 승격 `npx lee-spec-kit feature <name> --idea I001`를 사용합니다
30
+ 3. `--idea`를 사용하면 새 Feature의 `spec.md`에 source idea 경로가 자동 기록됩니다
31
+ 4. 승격 후에도 다음은 직접 채워야 합니다
32
+ - `spec.md`의 `PRD Refs`
33
+ - `tasks.md` 태스크 라인의 PRD ID 태그(`[PRD-FR-001]` )
34
+ 5. 아이디어 문서는 삭제하지 말고 `Status: Featureized`, `Feature: F00X-...`로 남기는 것을 권장합니다
34
35
 
35
- > 💡 완전 삭제 대신 archive를 권장합니다: “왜 이 Feature가 생겼는지” 추적에 도움이 됩니다.
36
+ > 💡 source idea 문서를 남겨두면 “왜 이 Feature가 생겼는지” 추적하기 쉽습니다.
36
37
 
37
38
  ---
38
39
 
@@ -0,0 +1,36 @@
1
+ # Idea: {idea-name}
2
+
3
+ ---
4
+
5
+ ## 개요
6
+
7
+ - **Idea ID**: {idea-id}
8
+ - **Idea Name**: {idea-name}
9
+ - **Created**: {YYYY-MM-DD}
10
+ - **Status**: Active
11
+ - 값: Active | Featureized | Dropped
12
+ - **Feature**: -
13
+ - **PRD Refs**: -
14
+ - **Component**: {component}
15
+
16
+ ---
17
+
18
+ ## 배경
19
+
20
+ {{description}}
21
+
22
+ (왜 이 아이디어를 검토할 가치가 있는지)
23
+
24
+ ---
25
+
26
+ ## 대략 범위
27
+
28
+ - In:
29
+ - Out:
30
+
31
+ ---
32
+
33
+ ## 승격 메모
34
+
35
+ - Feature가 되어도 유지되어야 할 점은 무엇인가?
36
+ - 아직 남아 있는 리스크나 미해결 질문은 무엇인가?