@angar2/taskery 0.2.1 → 0.3.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.md +14 -12
- package/bin/init.js +1 -1
- package/bin/lib.js +31 -7
- package/package.json +1 -1
- package/template/.claude/hooks/closed-immutable.sh +9 -9
- package/template/.codex/hooks/closed-immutable.sh +3 -3
- package/template/.project/rules/GIT_RULE.md +2 -2
- package/template/.project/rules/MOCKUP_RULE.md +1 -1
- package/template/.project/rules/TASK_DOC_RULE.md +18 -16
- package/template/AGENTS.md +7 -6
- package/template/CLAUDE.md +7 -7
- package/template/shared/skills/add-backlog/SKILL.md +8 -8
- package/template/shared/skills/plan-init/SKILL.md +133 -116
- package/template/shared/skills/project-init/SKILL.md +82 -17
- package/template/shared/skills/task-close/SKILL.md +8 -8
- package/template/shared/skills/task-dev/SKILL.md +7 -7
- package/template/shared/skills/task-init/SKILL.md +17 -17
- package/template/shared/skills/task-plan/SKILL.md +17 -16
- package/template/shared/skills/task-test/SKILL.md +3 -3
|
@@ -1,106 +1,141 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-init
|
|
3
|
-
description: plan
|
|
3
|
+
description: plan(기능 그룹) 생성 — NNN 채번 폴더 + PLAN.md/ROADMAP.md + 제품 관통 문서(FEATURES/UX-UI) 의도 레벨 delta
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# /plan-init
|
|
7
7
|
|
|
8
8
|
## 개요
|
|
9
9
|
|
|
10
|
-
plan
|
|
10
|
+
plan(기능 그룹)마다 호출. **plan = 작업을 묶는 기능 그룹 단위** — 제품 전체 스냅샷(버전)이 아니다. 규모는 가변: 기능 그룹 하나가 보편이나, 첫 plan(MVP처럼 여러 기능 그룹을 묶은 큰 plan)도 같은 흐름으로 처리한다(특례 없음).
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
- PLAN.md
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- TECH-STACK
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
- ROADMAP.md
|
|
12
|
+
본 스킬이 만드는 것:
|
|
13
|
+
- **plan 로컬(그룹 C)** — `.project/plans/<NNN_slug>/`에 `PLAN.md` + `ROADMAP.md` 생성.
|
|
14
|
+
- **제품 관통 문서(그룹 B) delta — 의도 레벨만** — `.project/FEATURES.md` / `.project/UX-UI.md`에 이 기능 그룹의 *섹션 헤더 + 의도 스텁* append.
|
|
15
|
+
|
|
16
|
+
본 스킬이 만들지 *않는* 것:
|
|
17
|
+
- **제품 관통 문서 전체 생성** — SERVICE-POLICY/TECH-STACK/ARCHITECTURE/DATA-MODEL/API-SPEC/FEATURES/UX-UI 7종은 `/project-init`이 루트에 작성/골격화 완료. plan-init은 부수적 add/mod만.
|
|
18
|
+
- **DATA-MODEL/API-SPEC 상세 본문** — 스키마·엔드포인트는 *선기획 금지*. 구현 동반으로 task 진행(`/task-plan` Phase 0 / `/task-dev`)이 채운다. plan-init은 빈 섹션 헤더만 둘 수 있다.
|
|
19
|
+
|
|
20
|
+
> plan 폴더명은 `NNN_<slug>` 형식(3자리 채번 + 기능 그룹 slug). 예: `001_mvp`, `002_compare-products`. tasks 폴더도 동일명.
|
|
22
21
|
|
|
23
22
|
## 호출 시점
|
|
24
23
|
|
|
25
|
-
- `/project-init` 직후 첫 plan 생성 시.
|
|
26
|
-
- 새
|
|
27
|
-
- 기존 plan 분기/리비전 시.
|
|
24
|
+
- `/project-init` 직후 첫 plan(보통 MVP) 생성 시.
|
|
25
|
+
- 새 기능 그룹(예: `compare-products` 다음 `auth-system`) 착수 시.
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
> **자투리는 plan 없이** — 급한 버그·오타·의존성 업데이트 같은 단발 작업은 어느 기능 그룹에도 안 묶인다. plan-init 호출 없이 `/task-init`로 바로 진행(무소속). 전역 TASK-NNN이 순서를 보장하므로 소속과 무관하다.
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
## 입력 처리
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
- **분기 1 (신규)**: `.project/plans/v*/` 없음 → 새 vX.X/ 생성 + 9 문서별 질문 라운드.
|
|
35
|
-
- **분기 2 (이어가기)**: 기존 plans/vY.Y/ 있음 → 가장 최신 카피 → 새 vX.X/ 생성 → 변경 인터뷰 → 변경된 문서만 갱신 → AGENT-GUIDE.md 활성 버전 갱신.
|
|
31
|
+
인자 = plan slug (예: `/plan-init compare-products`). 인자 없으면 사용자에게 *"어느 plan(기능 그룹)? slug 알려줘 (예: mvp, compare-products)"* 질문. 형식: 한국어면 영어 *의미 변환* → kebab-case(공백 불가, 3 단어 이내 권장).
|
|
36
32
|
|
|
37
33
|
## 단계
|
|
38
34
|
|
|
39
|
-
### Step 1 —
|
|
40
|
-
|
|
41
|
-
1.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
4.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### Step
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
35
|
+
### Step 1 — 사전 검증 + 메인 워크트리 검출
|
|
36
|
+
|
|
37
|
+
1. **메인 워크트리 검출**:
|
|
38
|
+
```sh
|
|
39
|
+
MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
40
|
+
```
|
|
41
|
+
2. 메인 워크트리 dev 체크아웃 검증 — 위배 시 사용자 호출 + 중단.
|
|
42
|
+
3. `$MAIN_WT/.project/PROJECT.md` 존재 확인 — 없으면 *"`/project-init` 먼저 호출 필요"* + 중단.
|
|
43
|
+
|
|
44
|
+
### Step 2 — plan slug 확정 + NNN 채번 + legacy 게이트
|
|
45
|
+
|
|
46
|
+
1. slug 확정 (인자 또는 사용자 질문 — 위 입력 처리).
|
|
47
|
+
2. **다음 plan 번호 + legacy 검출** — `bin/lib.js`의 `computeNextPlanNumber(MAIN_WT)` 호출:
|
|
48
|
+
```js
|
|
49
|
+
const lib = require('@angar2/taskery/bin/lib');
|
|
50
|
+
const { next, legacyDirs } = lib.computeNextPlanNumber(MAIN_WT);
|
|
51
|
+
// next = '001'/'002'/... (3자리 zero-pad), legacyDirs = NNN_ 패턴 아닌 기존 폴더 목록
|
|
52
|
+
```
|
|
53
|
+
bash 등가(참고):
|
|
54
|
+
```sh
|
|
55
|
+
ls -1 "$MAIN_WT/.project/plans" 2>/dev/null | grep -E '^[0-9]{3}_' \
|
|
56
|
+
| sed -E 's/^([0-9]{3})_.*/\1/' | sort -n | tail -1
|
|
57
|
+
```
|
|
58
|
+
3. **legacy 게이트** — `legacyDirs`가 비어 있지 않으면(예: 구버전 `v1.0`, `alpha` 폴더 잔존):
|
|
59
|
+
- 즉시 사용자 호출 + 경고: *"`plans/`에 NNN 채번이 아닌 폴더(<legacyDirs>)가 있어. 새 plan을 NNN로 채번하면 활성 plan이 갈려 원래 문제가 재발해. 먼저 수동 이전(문서 루트 이동 + 폴더 `NNN_slug` 리네임 + AGENT-GUIDE 활성 plan 갱신)을 끝낸 뒤 진행할지, 그래도 진행할지 결정해줘."*
|
|
60
|
+
- 사용자 명시 confirm 전 폴더 생성 금지.
|
|
61
|
+
4. plan 폴더명 = `${next}_${slug}` (예: `001_mvp`).
|
|
62
|
+
|
|
63
|
+
### Step 3 — plan 폴더 생성 + ROADMAP.md 작성
|
|
64
|
+
|
|
65
|
+
1. `$MAIN_WT/.project/plans/<NNN_slug>/` 디렉토리 생성.
|
|
66
|
+
2. **ROADMAP.md** 작성 — *현재 plan(기능 그룹) 한정* task 단계 로드맵. *ROADMAP 작성 4룰*:
|
|
67
|
+
1. ROADMAP은 *현재 plan 한정* — 다른 기능 그룹 후보는 글로벌 `.project/BACKLOG.md`. 프로젝트 전체 거시 빌드 순서는 `PROJECT.md ## 초기 빌드 로드맵`(별개).
|
|
68
|
+
2. 진행 순서에 task 번호(TASK-NNN) 강제 금지 — *Stage(영역) 단위*로만 명시 (예측 불가 task 합류 시 번호 어긋남 방지).
|
|
69
|
+
3. Stage 안 *작업 단위 명시* 필요 (한 task 분량 권장 — 다음 task 진행 시 메인 세션이 ROADMAP 보고 작업 범위 판단 가능).
|
|
70
|
+
4. 작업 단위에 task 번호 컬럼 추가 X / *상태 컬럼만* (⏳ 대기 / 🔧 진행 중 / ✅ 완료 / ❌ 폐기) — Living document.
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
# ROADMAP — <NNN_slug>
|
|
74
|
+
|
|
75
|
+
> 본 plan(기능 그룹) 한정 task 단계. Stage 단위(task 번호 강제 X), 상태 컬럼만 Living.
|
|
76
|
+
> 프로젝트 거시 빌드 순서는 PROJECT.md, 다음 기능 그룹 후보는 글로벌 BACKLOG.md.
|
|
77
|
+
|
|
78
|
+
## Stage 1 — <영역명>
|
|
79
|
+
| 작업 단위 | 상태 |
|
|
80
|
+
|-----------|------|
|
|
81
|
+
| <한 task 분량 작업> | ⏳ 대기 |
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 4 — PLAN.md 작성 (얇은 인덱스 — 하드룰)
|
|
85
|
+
|
|
86
|
+
PLAN.md는 *얇은 인덱스*다. 이 기능 그룹이 건드린 루트 문서 요약 + task 체크리스트만 둔다.
|
|
87
|
+
|
|
88
|
+
**하드룰 (중복 차단):**
|
|
89
|
+
- **각 항목 = 루트 문서 섹션 *링크 1줄*. 본문 복제 금지.** 기능 상세는 `.project/` 루트 문서에만 존재(단일 홈).
|
|
90
|
+
- `## 활성 task 버전` 류 *자기선언 라인 작성 금지* — 활성 plan의 단일 진실은 `AGENT-GUIDE.md`뿐. plan 로컬이 중복 선언하지 않는다.
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
# PLAN — <NNN_slug>
|
|
94
|
+
|
|
95
|
+
> 이 plan(기능 그룹)의 얇은 인덱스. 각 항목은 루트 문서 섹션 링크 1줄 — 본문은 복제하지 않는다.
|
|
96
|
+
|
|
97
|
+
## 이 기능 그룹이 건드리는 루트 문서
|
|
98
|
+
- [FEATURES.md › <이 그룹 섹션>](../../FEATURES.md) — <한 줄 요약>
|
|
99
|
+
- [UX-UI.md › <이 그룹 섹션>](../../UX-UI.md) — <한 줄 요약>
|
|
100
|
+
- (DATA-MODEL / API-SPEC — task 진행이 구현 동반으로 채움)
|
|
101
|
+
|
|
102
|
+
## task 체크리스트
|
|
103
|
+
- [ ] <작업 단위> (ROADMAP Stage N)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Step 5 — 제품 관통 문서(그룹 B) 의도 레벨 delta
|
|
107
|
+
|
|
108
|
+
`.project/` 루트 제품 관통 문서에 이 기능 그룹의 *의도*를 명시한다. **의도 레벨만 — 상세 선작성 금지.**
|
|
109
|
+
|
|
110
|
+
- **FEATURES.md / UX-UI.md (필수)**: 이 기능 그룹의 *섹션 헤더 + 의도 스텁* append. "이 기능이 무엇 / 어떤 화면" — 구현 전에도 선언 가능(그게 기능 그룹 기획의 본질). 섹션은 *기능/도메인 자기기술* — 어느 plan이 추가했는지 태그하지 않는다(기능 분류 = 제품 관통 문서 섹션 구조가 단일 진실).
|
|
111
|
+
```markdown
|
|
112
|
+
## <기능 그룹 이름>
|
|
113
|
+
<의도 1~3줄: 무엇을 / 누구를 위해 / 핵심 화면·동작. 상세 스펙은 task 진행에서.>
|
|
114
|
+
```
|
|
115
|
+
- **DATA-MODEL.md / API-SPEC.md (선택 — 빈 헤더까지만)**: 이 그룹이 데이터/엔드포인트를 도입할 거면 *빈 섹션 헤더*만 둘 수 있다. **스키마·엔드포인트 본문 선작성 금지** — 구현 동반으로 `/task-plan` Phase 0 / `/task-dev`가 채운다(taskery anti-waterfall: TASK_DOC_RULE §1.4 / DEV_RULE §2 정합).
|
|
116
|
+
|
|
117
|
+
타입 조건부: project-init이 만들지 않은 문서(예: frontend의 DATA-MODEL)는 delta도 없음.
|
|
118
|
+
|
|
119
|
+
### Step 6 — 그룹 A 점검 (부수적 add/mod)
|
|
120
|
+
|
|
121
|
+
이 기능 그룹이 *새 정책 / 새 스택 / 새 구조*를 도입하면 해당 루트 문서(SERVICE-POLICY / TECH-STACK / ARCHITECTURE)를 수정한다. 도입 없으면 건너뜀. (그룹 A는 project-init이 작성한 정적 제품 관통 문서 — plan-init은 부수적 변경만.)
|
|
122
|
+
|
|
123
|
+
### Step 7 — `tasks/<NNN_slug>/` 디렉토리 준비
|
|
124
|
+
|
|
125
|
+
1. `$MAIN_WT/.project/tasks/<NNN_slug>/` 디렉토리 생성 (빈 폴더).
|
|
126
|
+
2. `tasks/<NNN_slug>/spec-diffs/`, `screenshots/`, `mockup/` 빈 폴더 미리 생성.
|
|
127
|
+
3. `tasks/<NNN_slug>/BACKLOG.md` 빈 골격 Write — *plan(기능 그룹)별 task 후보 누적용*, 글로벌 `.project/BACKLOG.md`와 별개:
|
|
93
128
|
|
|
94
129
|
```markdown
|
|
95
|
-
# BACKLOG — <
|
|
130
|
+
# BACKLOG — <NNN_slug>
|
|
96
131
|
|
|
97
|
-
> 본 파일은 *<
|
|
98
|
-
> 글로벌 `.project/BACKLOG.md` (
|
|
132
|
+
> 본 파일은 *<NNN_slug> plan 진행 중 누적되는 후속 task 후보* 추적용.
|
|
133
|
+
> 글로벌 `.project/BACKLOG.md` (다음 기능 그룹 후보 카탈로그) 와 별개.
|
|
99
134
|
|
|
100
135
|
| 위치 | 영역 | 역할 |
|
|
101
136
|
|------|------|------|
|
|
102
|
-
| `.project/BACKLOG.md` (글로벌) |
|
|
103
|
-
| `.project/tasks/<
|
|
137
|
+
| `.project/BACKLOG.md` (글로벌) | 다음 기능 그룹 후보 카탈로그 (다음 plan에서 검토) | Living document |
|
|
138
|
+
| `.project/tasks/<NNN_slug>/BACKLOG.md` (본 파일) | 현재 plan 진행 중 누적된 후속 task 후보 | 한 plan 내 task close 직후 후보 누적 |
|
|
104
139
|
|
|
105
140
|
## 후속 task 후보
|
|
106
141
|
|
|
@@ -109,55 +144,37 @@ plan 버전(vX.X)마다 호출. `.project/plans/<vX.X>/` 안에 9 기획 문서
|
|
|
109
144
|
|
|
110
145
|
빈 골격만 작성. 본문은 task 진행하면서 사용자 발화 또는 메인 감지로 누적.
|
|
111
146
|
|
|
112
|
-
### Step
|
|
147
|
+
### Step 8 — `AGENT-GUIDE.md` 활성 plan 갱신
|
|
113
148
|
|
|
114
|
-
|
|
115
|
-
# PLAN <vX.X>
|
|
116
|
-
|
|
117
|
-
## 9 기획 문서 인덱스
|
|
118
|
-
|
|
119
|
-
- [x] SERVICE-POLICY.md (해당 / 미해당)
|
|
120
|
-
- [x] FEATURES.md
|
|
121
|
-
- [x] UX-UI.md (해당 / 미해당)
|
|
122
|
-
- [x] TECH-STACK.md
|
|
123
|
-
- [x] ARCHITECTURE.md
|
|
124
|
-
- [x] DATA-MODEL.md (해당 / 미해당)
|
|
125
|
-
- [x] API-SPEC.md
|
|
126
|
-
- [x] ROADMAP.md
|
|
127
|
-
|
|
128
|
-
## 변경 이력
|
|
129
|
-
| 버전 | 날짜 | 변경 문서 | 요약 |
|
|
130
|
-
|------|------|----------|------|
|
|
131
|
-
| <vX.X> | <YYYY-MM-DD> | <목록 또는 "전체 (신규)"> | <요약> |
|
|
132
|
-
|
|
133
|
-
## 활성 task 버전
|
|
134
|
-
- `.project/tasks/<vX.X>/` 사용
|
|
135
|
-
```
|
|
149
|
+
`$MAIN_WT/.project/AGENT-GUIDE.md`의 `## 활성 plan 버전` 섹션 다음 줄을 `<NNN_slug>`로 갱신 (헤딩 텍스트 자체는 변경 X — lib.js/스킬이 의존). **반드시** — 누락 시 메인 세션이 옛 plan 보고 헤맴.
|
|
136
150
|
|
|
137
|
-
### Step
|
|
151
|
+
### Step 9 — 결과 보고
|
|
138
152
|
|
|
139
|
-
|
|
140
|
-
- *"
|
|
153
|
+
작성된 산출물 목록 + 다음 단계 안내:
|
|
154
|
+
- *"`<NNN_slug>/` plan 생성 완료 — PLAN.md / ROADMAP.md + 제품 관통 문서 FEATURES/UX-UI 의도 stub 추가. AGENT-GUIDE.md 활성 plan `<NNN_slug>`로 갱신. 다음은 `/task-init`으로 첫 task 생성 (스키마/엔드포인트 상세는 task 진행에서 구현 동반)."*
|
|
141
155
|
|
|
142
156
|
**결과 commit 흐름** (GIT_RULE 정합):
|
|
143
157
|
- dev 직접 commit *금지* (git-guard.sh 차단). 두 가지 default 흐름:
|
|
144
|
-
1. **첫 task에 묶기 (권장)**:
|
|
145
|
-
2. **임시 docs 브랜치**: `git checkout -b docs/{개발자}_plan-{
|
|
158
|
+
1. **첫 task에 묶기 (권장)**: `/project-init` 직후 본 스킬 호출이면 init 산출물과 같은 작업 브랜치(보통 TASK-001 부트스트랩 chore)에 함께 commit. 새 기능 그룹 착수면 새 task 브랜치 또는 임시 docs 브랜치에서.
|
|
159
|
+
2. **임시 docs 브랜치**: `git checkout -b docs/{개발자}_plan-{NNN_slug}` 후 commit → dev에 `--no-ff` 머지. 다음 task 생성 *전*에 plan 산출물을 깔끔히 기록하고 싶을 때.
|
|
146
160
|
|
|
147
161
|
## 도구 가이드
|
|
148
162
|
|
|
149
|
-
- **Read**: PROJECT.md /
|
|
150
|
-
- **Bash**: `
|
|
151
|
-
- **
|
|
152
|
-
- **
|
|
163
|
+
- **Read**: PROJECT.md / `.project/` 루트 제품 관통 문서(FEATURES/UX-UI 등 delta 대상)
|
|
164
|
+
- **Bash**: `MAIN_WT` 검출, `mkdir -p plans/<NNN_slug> tasks/<NNN_slug>/{spec-diffs,screenshots,mockup}`
|
|
165
|
+
- **bin/lib.js**: `computeNextPlanNumber`(채번 + legacy 검출)
|
|
166
|
+
- **Write/Edit**: PLAN.md / ROADMAP.md 작성, 제품 관통 문서 FEATURES/UX-UI delta append, AGENT-GUIDE 활성 plan 갱신
|
|
167
|
+
- **AskUserQuestion**: slug 확정 / legacy 게이트 confirm
|
|
153
168
|
|
|
154
169
|
## 주의사항
|
|
155
170
|
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
171
|
+
- **plan-init은 *제품 관통 문서 전체를 만드는 스킬이 아니다*** — 7종은 project-init 영역. 본 스킬은 plan 로컬(PLAN/ROADMAP) + 제품 관통 문서 delta(의도)만.
|
|
172
|
+
- **delta는 의도 레벨까지만** — FEATURES/UX-UI 의도 스텁은 두되, DATA-MODEL/API-SPEC 스키마·엔드포인트 *본문 선작성 금지*. 상세는 구현 동반(task).
|
|
173
|
+
- **제품 관통 문서에 plan 태그 금지** — 기능 섹션은 자기기술. 어느 plan이 만들었는지 표기하지 않는다(plan은 작업 묶음이지 영구 기능 분류 단위가 아님).
|
|
174
|
+
- **PLAN.md 본문 복제 금지** — 각 항목 = 루트 문서 섹션 링크 1줄. `## 활성 task 버전` 자기선언 라인 작성 X.
|
|
175
|
+
- **legacy 폴더 감지 시 진행 보류** — NNN 아닌 폴더 잔존 시 사용자 confirm 전 새 plan 생성 금지.
|
|
176
|
+
- **AGENT-GUIDE 활성 plan 갱신 *반드시*** — 값 = `NNN_slug`. 헤딩 텍스트 변경 X.
|
|
177
|
+
- 답 받기 전 자동 추정 진행 X. 단 PROJECT.md / 기존 루트 문서 정보로 *제안*은 OK (사용자 confirm 후).
|
|
161
178
|
|
|
162
179
|
## 상태 전이
|
|
163
180
|
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project-init
|
|
3
|
-
description: taskery 도입 직후 1회성 — PROJECT
|
|
3
|
+
description: taskery 도입 직후 1회성 — 진입 문서(PROJECT/AGENT-GUIDE/…) + 제품 관통 기획 문서(그룹 A 작성 / 그룹 B 골격) 생성
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# /project-init
|
|
7
7
|
|
|
8
8
|
## 개요
|
|
9
9
|
|
|
10
|
-
taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새 리포에 npx로 taskery 세팅 직후 처음 부르는 스킬. `.project/` 영역의 사람용/메인용 진입
|
|
10
|
+
taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새 리포에 npx로 taskery 세팅 직후 처음 부르는 스킬. `.project/` 영역의 사람용/메인용 진입 문서와 **제품 관통 기획 문서**(루트 평평 배치)를 만든다.
|
|
11
|
+
|
|
12
|
+
제품 관통 문서 2그룹 (`.project/` 루트):
|
|
13
|
+
- **그룹 A — 정적(내용까지 작성)**: SERVICE-POLICY.md / TECH-STACK.md / ARCHITECTURE.md. project-init이 인터뷰로 *작성*. (이후 plan-init은 부수적 add/mod만.)
|
|
14
|
+
- **그룹 B — 성장(골격→채움)**: DATA-MODEL.md / API-SPEC.md / FEATURES.md / UX-UI.md. project-init이 *빈 골격*만. 기능 그룹별 본문은 이후 plan-init(FEATURES/UX-UI 의도) + task 진행(DATA-MODEL/API-SPEC 상세)이 채움.
|
|
15
|
+
|
|
16
|
+
> **plan 로컬 문서**(PLAN.md / ROADMAP.md)는 본 스킬이 만들지 않는다 — 그건 `/plan-init`이 plan(기능 그룹) 폴더마다 생성한다.
|
|
11
17
|
|
|
12
18
|
## 호출 시점
|
|
13
19
|
|
|
@@ -76,6 +82,60 @@ taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새
|
|
|
76
82
|
- `src/` — 소스 코드
|
|
77
83
|
- `.project/` — taskery 메타 영역
|
|
78
84
|
- ...
|
|
85
|
+
|
|
86
|
+
## 초기 빌드 로드맵
|
|
87
|
+
<프로젝트 전체를 관통하는 *거시 빌드 순서* — 구현 → 배포 → 보안 등 큰 덩어리 단계.
|
|
88
|
+
1회성 기록(완료돼도 living 갱신 X). 기능 그룹 단위 task 순서는 plans/<NNN_slug>/ROADMAP.md, 앞으로의 후보는 글로벌 BACKLOG.md가 담당 — 셋은 역할이 안 겹친다.>
|
|
89
|
+
|
|
90
|
+
1. <예: 코어 도메인 + 데이터 모델 구현>
|
|
91
|
+
2. <예: 인증 / 권한>
|
|
92
|
+
3. <예: 배포 파이프라인 + 스테이징>
|
|
93
|
+
4. <예: 보안 점검 + 프로덕션>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
> `## 초기 빌드 로드맵`은 Step 2 인터뷰에서 *거시 단계*를 1~2개 질문으로 수집해 채운다. 비어 있으면 자리표시자만 두고 사용자에게 *"전체 빌드 순서 큰 덩어리로 알려줘"* 1회 질문.
|
|
97
|
+
|
|
98
|
+
### Step 3.5 — 제품 관통 문서 그룹 A 작성 (`.project/` 루트)
|
|
99
|
+
|
|
100
|
+
정적 제품 관통 문서 3종(그룹 A)을 *인터뷰로 작성*. 프로젝트 t=0의 상위 정책/스택/구조 — "척추"만 단단히. 한 문서씩 핵심 질문 1~3개, 사용자 답 받고 작성.
|
|
101
|
+
|
|
102
|
+
**타입 조건부**: `frontend` → SERVICE-POLICY 생략 가능 / `backend` → (해당 없음, 3종 모두) / `library`·`cli` → SERVICE-POLICY 생략 가능. 무관 문서는 *생성 안 함*(빈 골격도 X).
|
|
103
|
+
|
|
104
|
+
1. **SERVICE-POLICY.md** (백엔드/풀스택 등 해당 시): 사용자 권한 / 데이터 보존 / 결제·과금 정책 등 핵심 1~3개.
|
|
105
|
+
2. **TECH-STACK.md**: 언어 / 프레임워크 / 주요 라이브러리 + *선택 이유*.
|
|
106
|
+
3. **ARCHITECTURE.md**: 시스템 구조 (단일 / 레이어드 / 마이크로서비스 / 멀티 리포 등) + 핵심 경계.
|
|
107
|
+
|
|
108
|
+
각 문서 공통 골격:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
# <SERVICE-POLICY | TECH-STACK | ARCHITECTURE> — <프로젝트명>
|
|
112
|
+
|
|
113
|
+
> 제품 관통 문서 (정적, 그룹 A). project-init이 작성, 이후 변경은 해당 정책/스택/구조를
|
|
114
|
+
> 새로 도입·변경하는 task에서 spec-diff와 함께 갱신.
|
|
115
|
+
|
|
116
|
+
<인터뷰 답 기반 본문>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Step 3.6 — 제품 관통 문서 그룹 B 골격 (`.project/` 루트)
|
|
120
|
+
|
|
121
|
+
성장 제품 관통 문서 4종(그룹 B)을 *빈 골격*만 Write. 본문은 plan/task가 채운다 — 여기서 *선기획 금지*.
|
|
122
|
+
|
|
123
|
+
**타입 조건부**: `frontend` → DATA-MODEL / API-SPEC 생략 가능 / `backend` → UX-UI 생략 가능 / `library` → UX-UI 생략 가능. 무관 문서는 생성 안 함.
|
|
124
|
+
|
|
125
|
+
- **FEATURES.md** / **UX-UI.md** — *plan-init이 기능 그룹마다 의도 섹션 append*.
|
|
126
|
+
- **DATA-MODEL.md** / **API-SPEC.md** — *task 진행(task-plan Phase 0 / task-dev)이 구현 동반으로 상세 채움*. 선스펙 금지.
|
|
127
|
+
|
|
128
|
+
공통 골격 (각 문서):
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
# <FEATURES | UX-UI | DATA-MODEL | API-SPEC> — <프로젝트명>
|
|
132
|
+
|
|
133
|
+
> 제품 관통 문서 (성장, 그룹 B). 기능/도메인 섹션으로 자기기술(self-describing) —
|
|
134
|
+
> 어느 plan이 추가했는지 태그하지 않는다(기능 분류 = 본 문서 섹션 구조가 단일 진실).
|
|
135
|
+
> FEATURES/UX-UI: plan-init이 기능 그룹마다 의도 섹션 추가.
|
|
136
|
+
> DATA-MODEL/API-SPEC: task 진행이 스키마·엔드포인트를 구현 동반으로 채움(선스펙 금지).
|
|
137
|
+
|
|
138
|
+
<!-- 기능 그룹 / 도메인 섹션이 여기 누적된다. 초기엔 비어 있음. -->
|
|
79
139
|
```
|
|
80
140
|
|
|
81
141
|
### Step 4 — `.project/AGENT-GUIDE.md` 작성
|
|
@@ -85,16 +145,17 @@ taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새
|
|
|
85
145
|
```markdown
|
|
86
146
|
# AGENT-GUIDE.md
|
|
87
147
|
|
|
88
|
-
## 활성 plan 버전
|
|
89
|
-
<예:
|
|
148
|
+
## 활성 plan 버전 <!-- 값 = NNN_slug 폴더명(버전 아님). 헤딩 텍스트는 lib.js/스킬이 의존하므로 변경 X -->
|
|
149
|
+
<예: 001_mvp — `.project/plans/001_mvp/` 참조>
|
|
90
150
|
|
|
91
151
|
## 메인이 매 세션 시작 시 읽을 것
|
|
92
152
|
1. `CLAUDE.md` — 프로젝트 메타 + 검증 명령 + 룰 참조
|
|
93
|
-
2. `.project/PROJECT.md` — 프로젝트 개요
|
|
94
|
-
3. `.project
|
|
95
|
-
4. `.project/
|
|
96
|
-
5. `.project/
|
|
97
|
-
6. `.project/
|
|
153
|
+
2. `.project/PROJECT.md` — 프로젝트 개요 + 초기 빌드 로드맵
|
|
154
|
+
3. `.project/` 루트 제품 관통 문서 — SERVICE-POLICY / TECH-STACK / ARCHITECTURE / DATA-MODEL / API-SPEC / FEATURES / UX-UI (해당 시. 기능 분류 단일 진실)
|
|
155
|
+
4. `.project/plans/<활성 plan>/PLAN.md` — 활성 plan(기능 그룹) 인덱스 (이 그룹이 건드린 루트 문서 요약 + task 체크리스트)
|
|
156
|
+
5. `.project/GLOSSARY.md` — 도메인 용어집 (영문/한글 표기 일관성 단일 진실 소스)
|
|
157
|
+
6. `.project/tasks/<활성 plan>/BACKLOG.md` — 현재 plan 진행 중 누적된 후속 task 후보 (사용자 발화 *"이건 다음 task로"* / task-close 직후 메인 감지로 추가)
|
|
158
|
+
7. `.project/AGENT-GUIDE.md` — 본 파일 (그대로)
|
|
98
159
|
|
|
99
160
|
## 작업 흐름
|
|
100
161
|
- task 시작: `/task-init` 또는 `/task-plan`
|
|
@@ -103,8 +164,9 @@ taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새
|
|
|
103
164
|
|
|
104
165
|
## 폴더 구조
|
|
105
166
|
- `.project/rules/` — 코어 룰 (TASK_DOC_RULE / GIT_RULE / CHANGELOG_RULE / MOCKUP_RULE)
|
|
106
|
-
- `.project
|
|
107
|
-
- `.project/
|
|
167
|
+
- `.project/*.md` (루트) — 제품 관통 문서 (SERVICE-POLICY / TECH-STACK / ARCHITECTURE / DATA-MODEL / API-SPEC / FEATURES / UX-UI)
|
|
168
|
+
- `.project/plans/<NNN_slug>/` — plan(기능 그룹) 로컬: PLAN.md / ROADMAP.md
|
|
169
|
+
- `.project/tasks/<NNN_slug>/` — task 문서
|
|
108
170
|
- `.project/flows/` — 도메인 흐름
|
|
109
171
|
- `.project/shared/` — 멀티리포 메시지
|
|
110
172
|
- `.project/changelog/` — 월별 변경 이력
|
|
@@ -132,7 +194,7 @@ stash FRICTION_LOG #3 반영 — 프로젝트 도메인 용어를 *영문/한글
|
|
|
132
194
|
## 운용 룰
|
|
133
195
|
|
|
134
196
|
- 영문 알파벳 순 정렬
|
|
135
|
-
- 출처: 본 용어가 도입된 task
|
|
197
|
+
- 출처: 본 용어가 도입된 제품 문서/task 경로 (예: `.project/FEATURES.md`)
|
|
136
198
|
- 동의어 / 변형 표기 발견 시 본 표 기준으로 정합
|
|
137
199
|
```
|
|
138
200
|
|
|
@@ -176,8 +238,8 @@ stash FRICTION_LOG #3 반영 — 프로젝트 도메인 용어를 *영문/한글
|
|
|
176
238
|
`npx @angar2/taskery init`이 이미 다음 빈 골격 폴더 생성:
|
|
177
239
|
- `.project/changelog/` (`.gitkeep`)
|
|
178
240
|
- `.project/flows/` (`.gitkeep`)
|
|
179
|
-
- `.project/plans/` (`.gitkeep` — `/plan-init`이 `
|
|
180
|
-
- `.project/tasks/` (`.gitkeep` — `/task-init`이 `
|
|
241
|
+
- `.project/plans/` (`.gitkeep` — `/plan-init`이 `NNN_slug/` 하위 작성)
|
|
242
|
+
- `.project/tasks/` (`.gitkeep` — `/task-init`이 `NNN_slug/TASK-<NNN>_<slug>.md` 작성)
|
|
181
243
|
- `.project/shared/{sent,received}/completed/` (`.gitkeep`)
|
|
182
244
|
- `.project/FRICTION_LOG.md` (빈 템플릿)
|
|
183
245
|
- `.project/rules/{TASK_DOC_RULE,GIT_RULE,CHANGELOG_RULE,MOCKUP_RULE}.md` (코어 룰)
|
|
@@ -220,7 +282,7 @@ git branch -a # main(또는 master) + dev
|
|
|
220
282
|
### Step 8 — 결과 보고
|
|
221
283
|
|
|
222
284
|
작성된 파일 목록 + 다음 단계 안내:
|
|
223
|
-
- *"PROJECT.md / AGENT-GUIDE.md / LINKED-REPOS.md / GLOSSARY.md / .env 생성. (FRICTION_LOG.md / 빈 골격 폴더는 npx init이 이미 카피한 것 그대로). **빈 폴더 케이스라 git init + dev 분기까지 완료** (이미 git 리포면 건너뜀). 다음은 `/plan-init
|
|
285
|
+
- *"PROJECT.md(초기 빌드 로드맵 포함) / AGENT-GUIDE.md / LINKED-REPOS.md / GLOSSARY.md / .env + 제품 관통 문서(그룹 A 작성: SERVICE-POLICY·TECH-STACK·ARCHITECTURE / 그룹 B 골격: DATA-MODEL·API-SPEC·FEATURES·UX-UI, 타입 해당분) 생성. (FRICTION_LOG.md / 빈 골격 폴더는 npx init이 이미 카피한 것 그대로). **빈 폴더 케이스라 git init + dev 분기까지 완료** (이미 git 리포면 건너뜀). 다음은 `/plan-init <기능그룹>`으로 첫 plan(MVP면 여러 기능 그룹을 묶은 큰 plan) 작성."*
|
|
224
286
|
|
|
225
287
|
**결과 commit 흐름** (GIT_RULE 정합):
|
|
226
288
|
- dev 직접 commit *금지* (git-guard.sh 차단). 두 가지 default 흐름:
|
|
@@ -230,15 +292,18 @@ git branch -a # main(또는 master) + dev
|
|
|
230
292
|
## 도구 가이드
|
|
231
293
|
|
|
232
294
|
- **Read**: 기존 README / package.json 정독
|
|
233
|
-
- **Write**: 신규 .md 파일 생성
|
|
295
|
+
- **Write**: 신규 .md 파일 생성 (진입 문서 + 제품 관통 문서 그룹 A/B)
|
|
234
296
|
- **Bash**: `mkdir -p .project/changelog .project/flows`, `ls`, `cat package.json | head -20`
|
|
235
|
-
- **AskUserQuestion**: 인터뷰 분기 시 질문 라운드 (한 번에 한 질문씩)
|
|
297
|
+
- **AskUserQuestion**: 인터뷰 분기 시 질문 라운드 — 메타 + 초기 빌드 로드맵 + 그룹 A(정책/스택/구조) 핵심 질문 (한 번에 한 질문씩)
|
|
236
298
|
|
|
237
299
|
## 주의사항
|
|
238
300
|
|
|
239
301
|
- *덮어쓰기 default 금지* — 이미 PROJECT.md 있으면 confirm.
|
|
240
302
|
- 인터뷰 분기에서 *자동 추정 진행 금지*. 빈 프로젝트면 사용자 답 받고 작성.
|
|
241
303
|
- 한 번에 너무 많은 질문 X. 사용자 답 받고 다음 질문.
|
|
304
|
+
- **그룹 A는 "척추"만** — 상위 정책/스택/구조에 한정. 세부까지 파고들어 t=0 과부담 만들지 말 것.
|
|
305
|
+
- **그룹 B는 골격만** — DATA-MODEL/API-SPEC 스키마·엔드포인트 *선작성 금지*(선기획 함정). 본문은 task 진행이 구현 동반으로 채운다.
|
|
306
|
+
- **타입 조건부 생략** — frontend → SERVICE-POLICY/DATA-MODEL/API-SPEC 생략 가능, backend → UX-UI 생략 가능. 무관 문서는 골격조차 만들지 않는다.
|
|
242
307
|
- 이 스킬은 **1회성**. 두 번째 호출은 의미 X (덮어쓰기 confirm 거치게 됨).
|
|
243
308
|
|
|
244
309
|
## 상태 전이
|
|
@@ -73,8 +73,8 @@ LOCK_FILE="$HOME/.taskery/${PROJECT_ID}.merge.lock"
|
|
|
73
73
|
```sh
|
|
74
74
|
git -C "$MAIN_WT" check-ignore -q "$MAIN_WT/.project/dummy"
|
|
75
75
|
```
|
|
76
|
-
- exit 0 (등록됨): `$MAIN_WT/.project/tasks/<
|
|
77
|
-
- exit 1 (미등록): `$WT_PATH/.project/tasks/<
|
|
76
|
+
- exit 0 (등록됨): `$MAIN_WT/.project/tasks/<NNN_slug>/...` (단일 소스)
|
|
77
|
+
- exit 1 (미등록): `$WT_PATH/.project/tasks/<NNN_slug>/...` (워크트리 안)
|
|
78
78
|
- 상태 = `tested` 검증. 그 외면 종료 (단 알려진 결함 *"OK 마무리"*는 status=tested로 명시되어 있어야 함).
|
|
79
79
|
- GIT_RULE Read 우선순위:
|
|
80
80
|
- `$MAIN_WT/.project/rules/GIT_RULE.md` (프로젝트별 — 우선)
|
|
@@ -123,12 +123,12 @@ git -C "$WT_PATH" rebase dev
|
|
|
123
123
|
|
|
124
124
|
| 순위 | 자료 | 위치 |
|
|
125
125
|
|------|------|------|
|
|
126
|
-
| 1 | 태스크 문서 + plan 문서 (양쪽 정독 후 의도 종합) | 태스크: `$MAIN_WT/.project/tasks/<
|
|
126
|
+
| 1 | 태스크 문서 + 제품/plan 문서 (양쪽 정독 후 의도 종합) | 태스크: `$MAIN_WT/.project/tasks/<NNN_slug>/...` (등록 케이스) / `~/.taskery/worktrees/<projectId>/TASK-...` 다른 워크트리 (미등록 케이스, SSoT 조회로 경로 산출). 제품 관통 문서(FEATURES / ARCHITECTURE / TECH-STACK / DATA-MODEL / API-SPEC 등) = `$MAIN_WT/.project/<doc>.md` (루트 평평). plan 로컬(ROADMAP / PLAN) = `$MAIN_WT/.project/plans/<NNN_slug>/` |
|
|
127
127
|
| 2 | 커밋 메시지 | `git log dev --grep` (GIT_RULE 풍부 메시지) |
|
|
128
128
|
| 3 | diff | 변경 코드 자체 |
|
|
129
129
|
|
|
130
130
|
- 1순위 부재 시 2/3순위 자동 fallback + 사용자에게 *자료 한계* 보고
|
|
131
|
-
- 태스크 문서 = 본 task의 *세부 의도* / plan 문서 = *전체 의도* (Stage 순 / 의존 그래프 / 의도된 위치 분리). 충돌 영역의 *그림 전체*는
|
|
131
|
+
- 태스크 문서 = 본 task의 *세부 의도* / 제품·plan 문서 = *전체 의도* (Stage 순 / 의존 그래프 / 의도된 위치 분리). 충돌 영역의 *그림 전체*는 제품 문서(FEATURES/ARCHITECTURE)·ROADMAP이 더 명확한 경우 많음 (Stage 순서로 *먼저 머지된 쪽 다음 줄에 추가* 등)
|
|
132
132
|
- 정독 후 *의미 의도 추출* → 충돌 해결 → `git rebase --continue`
|
|
133
133
|
|
|
134
134
|
#### 4-c. 판단 불가 → 사용자 호출
|
|
@@ -144,8 +144,8 @@ git -C "$WT_PATH" rebase dev
|
|
|
144
144
|
|
|
145
145
|
| 케이스 | 위치 | 흐름 |
|
|
146
146
|
|--------|------|------|
|
|
147
|
-
| 미등록 | `$WT_PATH/.project/tasks/<
|
|
148
|
-
| 등록 | `$MAIN_WT/.project/tasks/<
|
|
147
|
+
| 미등록 | `$WT_PATH/.project/tasks/<NNN_slug>/...` | 워크트리 안 task 문서 수정 → Step 6 Phase 커밋에 *코드 + 문서 = 한 커밋*에 포함 |
|
|
148
|
+
| 등록 | `$MAIN_WT/.project/tasks/<NNN_slug>/...` | 워크트리 안 코드만 한 커밋 + 메인 워크트리 절대 경로 task 문서를 **proper-lockfile**로 별도 수정 (`bin/lib.js` `withMetaLock` — 머지 커밋 미포함, 메인 로컬 보존) |
|
|
149
149
|
|
|
150
150
|
기록 형식 (task.md Result 섹션 안):
|
|
151
151
|
```markdown
|
|
@@ -233,7 +233,7 @@ closed-immutable.sh hook *허용* 영역 (status=closed 적용된 *후* 재수
|
|
|
233
233
|
docs: [TASK-<NNN>] 태스크 문서 완료
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
- 대상: `$WT_PATH/.project/tasks/<
|
|
236
|
+
- 대상: `$WT_PATH/.project/tasks/<NNN_slug>/<NNN>_<slug>.md` (단일) 또는 `.../TASK-<NNN>_<slug>/task.md` (폴더 승격) + spec-diffs / screenshots / mockup (`<NNN_slug>` 공통, TASK_DOC_RULE §1.5).
|
|
237
237
|
- **등록 케이스**: Step 6-5에서 메인 워크트리 직접 수정으로 처리 — 별도 커밋 X (워크트리 머지에 포함 X).
|
|
238
238
|
|
|
239
239
|
#### 6-7. CHANGELOG 커밋 (해당 시)
|
|
@@ -376,4 +376,4 @@ git -C "$MAIN_WT" worktree remove "$WT_PATH"
|
|
|
376
376
|
- **task 문서 단일 진실 소스** — `.gitignore` 케이스에 따라 메인 워크트리 또는 워크트리. 다른 세션의 충돌 해결 자료 정독 시 *SSoT 조회 → 워크트리 경로 산출* (미등록 케이스) 또는 *메인 워크트리 절대 경로* (등록 케이스).
|
|
377
377
|
- **워크트리 + 브랜치 자동 제거** — GIT_RULE.md "작업 브랜치 삭제 정책" 면제 조항 (taskery 한정). 보존 키워드 시 양쪽 보존.
|
|
378
378
|
- **safety net** — Step 14 복구 명령 출력. 사용자가 잘못 삭제 인지 시 즉시 복구 가능.
|
|
379
|
-
- **BACKLOG.md 무관** — `.project/tasks/<
|
|
379
|
+
- **BACKLOG.md 무관** — `.project/tasks/<NNN_slug>/BACKLOG.md` 체크 마킹은 `/task-init` Step 7.5가 처리(`[ ]` → `[x]` + `- TASK: TASK-NNN`). `[x]` = *task로 옮김* 의미라 close 시점에 추가 마킹 X. 완료 추적은 `npx @angar2/taskery status`(진행 중이면 dev 미머지가 정상) → 목록에 없을 때만 `git log dev --grep 'BL-NNN'` 순.
|
|
@@ -23,8 +23,8 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
23
23
|
|
|
24
24
|
| 케이스 | task 문서 / Result 갱신 위치 | CLAUDE.md (검증 명령) |
|
|
25
25
|
|--------|---------------------------|----------------------|
|
|
26
|
-
| 등록 (퍼블릭 리포 default) | `$MAIN_WT/.project/tasks/<
|
|
27
|
-
| 미등록 | `$WT_PATH/.project/tasks/<
|
|
26
|
+
| 등록 (퍼블릭 리포 default) | `$MAIN_WT/.project/tasks/<NNN_slug>/...` (`bin/lib.js` `withMetaLock`) | `$MAIN_WT/CLAUDE.md` |
|
|
27
|
+
| 미등록 | `$WT_PATH/.project/tasks/<NNN_slug>/...` (워크트리 안, 머지 시 dev 반영) | `$MAIN_WT/CLAUDE.md` (CLAUDE.md는 단일 소스) |
|
|
28
28
|
|
|
29
29
|
self-check 명령은 워크트리(`$WT_PATH`)에서 실행 — 코드 변경이 워크트리 안에 있으므로 검증 대상도 거기.
|
|
30
30
|
|
|
@@ -49,7 +49,7 @@ self-check 명령은 워크트리(`$WT_PATH`)에서 실행 — 코드 변경이
|
|
|
49
49
|
1. `.project/AGENT-GUIDE.md` Read → 활성 plan 버전 확인.
|
|
50
50
|
2. task 파일 Read:
|
|
51
51
|
- 인자 있음 → 해당 파일.
|
|
52
|
-
- 인자 없음 → `ls .project/tasks/<
|
|
52
|
+
- 인자 없음 → `ls .project/tasks/<NNN_slug>/` 결과 중 status=`planned` 또는 `developing`인 가장 최근 파일. 발견 시 *"TASK-<NNN> 진행할까요?"* confirm. 없으면 *"진행할 task 없음. `/task-plan` 먼저 호출."* + 종료.
|
|
53
53
|
3. 상태 검증:
|
|
54
54
|
- `planned` → 신규 진행 (Step 2 status 전환).
|
|
55
55
|
- `developing` → 이어가기 (Step 2 skip — 이미 developing).
|
|
@@ -76,9 +76,9 @@ self-check 명령은 워크트리(`$WT_PATH`)에서 실행 — 코드 변경이
|
|
|
76
76
|
|
|
77
77
|
### Step 4 — Phase 0 처리 (있을 시)
|
|
78
78
|
|
|
79
|
-
Dev Plan에 Phase 0(
|
|
80
|
-
1. `.project
|
|
81
|
-
2. `.project/tasks/<
|
|
79
|
+
Dev Plan에 Phase 0(제품 관통 문서 변경)이 있으면:
|
|
80
|
+
1. `.project/<문서>.md` (루트 제품 관통 문서) Edit. **DATA-MODEL/API-SPEC 상세는 구현 동반으로 여기서 확정** — plan-init이 미룬 스키마·엔드포인트 본문을 실제 구현 기준으로 채운다.
|
|
81
|
+
2. `.project/tasks/<NNN_slug>/spec-diffs/<NNN>_<slug>_spec-diff.md` 이미 `/task-plan`에서 만들어졌으면 그대로. 없으면 작성 (TASK_DOC_RULE §spec-diff 형식 참조).
|
|
82
82
|
3. Phase 0 `진행: [x]` Edit.
|
|
83
83
|
|
|
84
84
|
### Step 5 — flows/ 업데이트 (해당 시)
|
|
@@ -188,7 +188,7 @@ stash FRICTION_LOG #14+19 / #25 반영 — 유닛 테스트는 본 단계에서
|
|
|
188
188
|
- **Phase 순서 건너뛰기 X** — Phase 1 끝나기 전 Phase 2 진행 X. 의존 관계 깨짐 + 디버깅 어려워짐.
|
|
189
189
|
- **계획 외 스코프 확장 X** — Dev Plan에 없는 파일 다루기 전 사용자 confirm. *"이 부분 같이 작업해야 할 것 같은데 OK?"* 합의 후 진행.
|
|
190
190
|
- **모호 발화 confirm 룰 (stash FRICTION_LOG #21+22 반영)** — 사용자 발화가 코드/문서/기능 영역에서 *복수 매칭* 가능할 때 자율 추정 영구 금지. 메인 *자체 안 1개* + *"X 의미 맞아?"* 한 줄 confirm 후 진행. 옵션 4개 늘어놓기 금지 (메인 판단 위임 회피 패턴). 예: 사용자 *"환경설정 아이콘"* 발화 → popover 톱니 / Settings 탭바 아이콘 둘 다 가능 → 어느 영역인지 한 줄 confirm 필수.
|
|
191
|
-
- **디자인 산출 정독 의무 (stash FRICTION_LOG #14+19 / #12 일반화)** — task에 디자인 산출 (HTML 목업 / Figma / 디자인 파일 등) 있으면 메인이 *직접 Read* 후 구현. sub-agent 위임 금지 (요약만 받아 디자인 정합 깨짐). 구현 = 디자인 산출 기준 (역방향 X — 코드 편의로 디자인 어김 절대 X). 목업 위치 = `.project/tasks/<
|
|
191
|
+
- **디자인 산출 정독 의무 (stash FRICTION_LOG #14+19 / #12 일반화)** — task에 디자인 산출 (HTML 목업 / Figma / 디자인 파일 등) 있으면 메인이 *직접 Read* 후 구현. sub-agent 위임 금지 (요약만 받아 디자인 정합 깨짐). 구현 = 디자인 산출 기준 (역방향 X — 코드 편의로 디자인 어김 절대 X). 목업 위치 = `.project/tasks/<NNN_slug>/mockup/<task-doc-name>-mockup.html`.
|
|
192
192
|
- **self-check FAIL 시 `developed` 전환 X** — 무리하게 상태 갱신 금지. 메인 자체 수정 시도 → 안 되면 사용자에게 보고. *"잘 될 거야"* 가정 금지.
|
|
193
193
|
- **로그 심기 잊지 X** — Dev Plan 작성 시 `[로그]` 항목 명시되어 있으면 *반드시* 실제 로그 코드 삽입. 격리 세션 / 운영 디버깅 모두 의존.
|
|
194
194
|
- **Result 섹션 진행만** — 테스트 결과는 `/task-test`가 기록. 메인이 *"잘 됐을 거야"* 가정 작성 금지.
|