@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
|
@@ -66,30 +66,30 @@ description: task 시작 — 워크트리 분기 + 6 섹션 빈 골격 + 헤더
|
|
|
66
66
|
|
|
67
67
|
### Step 2 — active plan 버전 확인
|
|
68
68
|
|
|
69
|
-
1. `$MAIN_WT/.project/AGENT-GUIDE.md` Read → *활성 plan
|
|
70
|
-
2. AGENT-GUIDE.md 없거나 활성
|
|
71
|
-
3. `$MAIN_WT/.project/plans/<
|
|
69
|
+
1. `$MAIN_WT/.project/AGENT-GUIDE.md` Read → *활성 plan* 추출 (예: `001_mvp` — `NNN_slug` 폴더명).
|
|
70
|
+
2. AGENT-GUIDE.md 없거나 활성 plan 누락 시 → 사용자에게 *"활성 plan 버전이 없는데 `/plan-init` 먼저 실행할까요?"* 묻고 중단.
|
|
71
|
+
3. `$MAIN_WT/.project/plans/<NNN_slug>/` 디렉토리 존재 확인. 없으면 동일하게 `/plan-init` 안내 + 중단.
|
|
72
72
|
|
|
73
73
|
### Step 3 — 분기 판단 + 메타 수집
|
|
74
74
|
|
|
75
75
|
직전 대화 정독:
|
|
76
76
|
- 작업 주제 / 유형 / 출처 / 규모 추정 가능?
|
|
77
77
|
- **추정 가능** → 분기 1 (제안):
|
|
78
|
-
*"직전 맥락 보니 다음 task 만들까요? 주제: <X> / 유형: <Y> / 출처: <Z> / 규모: <W> /
|
|
78
|
+
*"직전 맥락 보니 다음 task 만들까요? 주제: <X> / 유형: <Y> / 출처: <Z> / 규모: <W> / plan: <NNN_slug>. 어떠세요?"*
|
|
79
79
|
사용자 답 — *"OK"* / *"규모는 large야"* / *"유형은 bug야"* 등 부분 수정 받음.
|
|
80
80
|
- **추정 불가** → 분기 2 (인터뷰): 한 번에 한 질문씩.
|
|
81
81
|
- Q1: *"무슨 작업인가요? (한 줄로)"*
|
|
82
82
|
- Q2: *"유형? (feature / bug / improvement / refactor / docs / chore)"*
|
|
83
83
|
- Q3: *"출처? (백로그 BL-NNN / 로드맵 RM-NNN / 직접 요구사항 DR)"*
|
|
84
84
|
- Q4: *"규모? (micro / small / medium / large) — 잘 모르겠으면 추정 알려드림."*
|
|
85
|
-
- (필요 시) Q5: *"
|
|
85
|
+
- (필요 시) Q5: *"plan `<NNN_slug>` 맞나요?"*
|
|
86
86
|
|
|
87
87
|
수집 항목 (모두 확정되어야 진행):
|
|
88
88
|
- 주제 (한국어 — kebab-slug 변환은 Step 4)
|
|
89
89
|
- 유형: `feature` / `bug` / `improvement` / `refactor` / `docs` / `chore`
|
|
90
90
|
- 출처: `BL-NNN` / `RM-NNN` / `DR`
|
|
91
91
|
- 규모: `micro` / `small` / `medium` / `large`
|
|
92
|
-
-
|
|
92
|
+
- plan: 활성 plan 그대로 (Step 2에서 가져온 `NNN_slug` 값)
|
|
93
93
|
|
|
94
94
|
### Step 4 — TASK 번호 결정 + 결정적 슬러그 + SSoT 안전망
|
|
95
95
|
|
|
@@ -116,8 +116,8 @@ NEXT=$((MAX + 1))
|
|
|
116
116
|
|
|
117
117
|
#### 4.2 메타 가져오기 (BL/RM)
|
|
118
118
|
|
|
119
|
-
- BL: `$MAIN_WT/.project/tasks
|
|
120
|
-
- RM: `$MAIN_WT/.project/plans
|
|
119
|
+
- BL: `$MAIN_WT/.project/tasks/<활성 plan>/BACKLOG.md` Read → `BL-NNN` 블록 파싱 → `{ status, type, title, slug, summary, target, taskNums }` (활성 plan은 `AGENT-GUIDE.md`에서 검출. `bin/lib.js`의 `parseBacklogItem(mainWtPath, blId)` 호출 권장). 개요 / 대상 영역 → task.md §1 Requirements 초안에 자동 복사 (얕은 분석이 task 문서 시작점)
|
|
120
|
+
- RM: `$MAIN_WT/.project/plans/<활성 plan>/ROADMAP.md` Read → `RM-NNN` grep → 항목 메타 파싱
|
|
121
121
|
- DR: 사용자 발화에서 주제 그대로
|
|
122
122
|
|
|
123
123
|
#### 4.2.5 이미 `[x]` BL 재진행 케이스
|
|
@@ -149,8 +149,8 @@ git -C "$MAIN_WT" branch --no-merged dev --list \
|
|
|
149
149
|
|
|
150
150
|
1. 파일 vs 폴더 분기 (기존 룰 유지):
|
|
151
151
|
- **파일 default**: 단일 `NNN_<slug>.md`.
|
|
152
|
-
- **폴더 승격 조건**: (
|
|
153
|
-
- **spec-diffs / screenshots / mockup은
|
|
152
|
+
- **폴더 승격 조건**: *사용자 명시* 시에만 (*"폴더로 만들어줘"* 류). 규모 large·추가 자료 다수여도 자동 승격하지 않는다 — 기본은 항상 단일 파일. 기능 자체는 유지(사용자가 원하면 그대로 사용).
|
|
153
|
+
- **spec-diffs / screenshots / mockup은 `<NNN_slug>` 공통** — 단일/폴더 모두 `.project/tasks/<NNN_slug>/{spec-diffs,screenshots,mockup}/`에 위치. (TASK_DOC_RULE §1.5)
|
|
154
154
|
2. 브랜치명 산출 (멀티세션 형식):
|
|
155
155
|
```
|
|
156
156
|
{타입}/{개발자}_TASK-NNN_{출처}_{슬러그}
|
|
@@ -184,8 +184,8 @@ git -C "$MAIN_WT" check-ignore -q "$MAIN_WT/.project/dummy"
|
|
|
184
184
|
|
|
185
185
|
| 결과 | 케이스 | 작성 위치 |
|
|
186
186
|
|------|--------|----------|
|
|
187
|
-
| exit 0 | **등록됨** (퍼블릭 리포 default) | **메인 워크트리** (`$MAIN_WT/.project/tasks/<
|
|
188
|
-
| exit 1 | **미등록** | **워크트리 안** (`$WT_PATH/.project/tasks/<
|
|
187
|
+
| exit 0 | **등록됨** (퍼블릭 리포 default) | **메인 워크트리** (`$MAIN_WT/.project/tasks/<NNN_slug>/`) — proper-lockfile로 안전 쓰기. 멀티세션 공유 단일 소스. dev untracked (git 자동 무시) |
|
|
188
|
+
| exit 1 | **미등록** | **워크트리 안** (`$WT_PATH/.project/tasks/<NNN_slug>/`) — 워크트리 커밋 + 머지 시 dev에 반영 |
|
|
189
189
|
|
|
190
190
|
빈 골격 형식 (TASK_DOC_RULE §1.3 참조):
|
|
191
191
|
|
|
@@ -194,7 +194,7 @@ git -C "$MAIN_WT" check-ignore -q "$MAIN_WT/.project/dummy"
|
|
|
194
194
|
|
|
195
195
|
| 생성일 | 플랜 | 유형 | 규모 | 상태 |
|
|
196
196
|
|--------|------|------|------|------|
|
|
197
|
-
| <YYYY-MM-DD> | <
|
|
197
|
+
| <YYYY-MM-DD> | <NNN_slug> | <유형> | <규모> | draft |
|
|
198
198
|
|
|
199
199
|
## Requirements
|
|
200
200
|
|
|
@@ -242,7 +242,7 @@ git -C "$MAIN_WT" check-ignore -q "$MAIN_WT/.project/dummy"
|
|
|
242
242
|
- 워크트리: <WT_PATH>
|
|
243
243
|
- 브랜치: <BRANCH>
|
|
244
244
|
- task 문서: <TASK_DOC_PATH> (메인 워크트리 / 워크트리 안 — 위 케이스에 따라)
|
|
245
|
-
- 헤더: <생성일> / <
|
|
245
|
+
- 헤더: <생성일> / <NNN_slug> / <유형> / <규모> / draft
|
|
246
246
|
- BL 마킹: BL-<NNN> [x] (BL 출처 시. RM/DR이면 생략)
|
|
247
247
|
- 다음: /task-plan TASK-<NNN> 으로 기획 채우기 (워크트리 폴더에서 새 세션 열어 진행 / 메인 세션 그대로 진행 / 메인이 서브 세션 spawn 등 운영 모델 자유)
|
|
248
248
|
```
|
|
@@ -250,7 +250,7 @@ git -C "$MAIN_WT" check-ignore -q "$MAIN_WT/.project/dummy"
|
|
|
250
250
|
## 도구 가이드
|
|
251
251
|
|
|
252
252
|
- **Bash**: 메인 워크트리 검출 / 사전 검증 / `git worktree add` / SSoT 조회 / TASK-NNN 계산
|
|
253
|
-
- **Read**: `$MAIN_WT/.project/AGENT-GUIDE.md` / `$MAIN_WT/.project/tasks
|
|
253
|
+
- **Read**: `$MAIN_WT/.project/AGENT-GUIDE.md` / `$MAIN_WT/.project/tasks/<활성 plan>/BACKLOG.md` / `$MAIN_WT/.project/plans/<활성 plan>/ROADMAP.md`
|
|
254
254
|
- **Write**: task.md 빈 골격 작성 (위치는 .gitignore 케이스에 따라)
|
|
255
255
|
- **AskUserQuestion**: 분기 2 인터뷰 (한 번에 한 질문)
|
|
256
256
|
|
|
@@ -258,8 +258,8 @@ git -C "$MAIN_WT" check-ignore -q "$MAIN_WT/.project/dummy"
|
|
|
258
258
|
|
|
259
259
|
- **워크트리 생성 + task 문서 작성만 담당** — 본문 채우기 금지. Requirements / Scope / Dev Plan / Test Plan 본문은 *반드시* `/task-plan`에서.
|
|
260
260
|
- **단계 경계 — 허용/금지 명시 (stash FRICTION_LOG #11 반영)**:
|
|
261
|
-
- **허용 (화이트리스트)**: `$MAIN_WT/.project/plans
|
|
262
|
-
- **금지 (블랙리스트)**: ARCHITECTURE.md / API-SPEC.md / FEATURES.md 등
|
|
261
|
+
- **허용 (화이트리스트)**: `$MAIN_WT/.project/plans/<활성 plan>/ROADMAP.md` §4(다음 작업 영역) 확인 / SSoT 조회 / TASK-NNN 계산 / 빈 골격 Write
|
|
262
|
+
- **금지 (블랙리스트)**: ARCHITECTURE.md / API-SPEC.md / FEATURES.md 등 `.project/` 루트 제품 관통 문서 본문 Read / 도메인 코드 Read · Grep / 기존 task 본문 Read
|
|
263
263
|
- 본문 정보 수집은 *다음 단계 `/task-plan`*에서 수행.
|
|
264
264
|
- **자동 추정 진행 X** — 직전 맥락 명확해도 *제안 + 사용자 OK* 거친 후 워크트리/파일 생성.
|
|
265
265
|
- **상태는 `draft` 고정** — `/task-init` 끝의 상태는 `draft` 외 작성 금지.
|
|
@@ -21,10 +21,10 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
21
21
|
|
|
22
22
|
`.gitignore` 케이스 분기:
|
|
23
23
|
|
|
24
|
-
| 케이스 | task 문서 위치 |
|
|
24
|
+
| 케이스 | task 문서 위치 | 제품 관통 문서 위치 | 동시 쓰기 |
|
|
25
25
|
|--------|--------------|----------------|----------|
|
|
26
|
-
| 등록 (퍼블릭 리포 default) | `$MAIN_WT/.project/tasks/<
|
|
27
|
-
| 미등록 | `$WT_PATH/.project/tasks/<
|
|
26
|
+
| 등록 (퍼블릭 리포 default) | `$MAIN_WT/.project/tasks/<NNN_slug>/...` | `$MAIN_WT/.project/<doc>.md` (루트 평평) | `withMetaLock` (`bin/lib.js`) |
|
|
27
|
+
| 미등록 | `$WT_PATH/.project/tasks/<NNN_slug>/...` (워크트리 안, 머지 시 dev 반영) | `$MAIN_WT/.project/<doc>.md` (제품 문서는 여전히 단일 소스) | 단일 세션 가정 (워크트리 내부) |
|
|
28
28
|
|
|
29
29
|
본문 모든 `.project/...` 경로는 *위 분기에 따라* 적용. spec-diff / mockup / screenshots는 task 문서와 같은 위치.
|
|
30
30
|
|
|
@@ -38,8 +38,8 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
38
38
|
인자 = (선택) `TASK-NNN` 또는 자동 선택.
|
|
39
39
|
|
|
40
40
|
분기:
|
|
41
|
-
- **인자 명시**: `.project/tasks/<
|
|
42
|
-
- **인자 없음**: 활성 plan
|
|
41
|
+
- **인자 명시**: `.project/tasks/<NNN_slug>/<NNN>_*.md` 또는 `TASK-<NNN>_*/task.md` 찾아서 진행.
|
|
42
|
+
- **인자 없음**: 활성 plan의 `.project/tasks/<NNN_slug>/` 안 *상태=draft인 가장 최근 task* 자동 선택 + confirm.
|
|
43
43
|
|
|
44
44
|
## 단계
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
48
48
|
1. `.project/AGENT-GUIDE.md` Read → 활성 plan 버전 확인.
|
|
49
49
|
2. task 파일 Read:
|
|
50
50
|
- 인자 있음 → 해당 파일.
|
|
51
|
-
- 인자 없음 → `ls .project/tasks/<
|
|
51
|
+
- 인자 없음 → `ls .project/tasks/<NNN_slug>/` 결과 중 status=draft인 가장 최근 파일. 발견 시 *"TASK-<NNN> 진행할까요?"* confirm. 없으면 *"draft 상태 task가 없네요. `/task-init` 먼저 호출하세요."* + 종료.
|
|
52
52
|
3. 상태 = `draft` 검증. 다른 상태면 종료 + 안내.
|
|
53
53
|
|
|
54
54
|
### Step 2 — Requirements 인터뷰 + 증폭
|
|
@@ -112,8 +112,9 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
112
112
|
- **어떻게**: 구현 방법 1~3줄
|
|
113
113
|
- **완료 기준**: 끝났다고 판단할 기준 (예: *"API endpoint 200 반환"*)
|
|
114
114
|
- **진행**: `[ ]`
|
|
115
|
-
4. **Phase 0 (선택) —
|
|
116
|
-
- 본 task가 `.project
|
|
115
|
+
4. **Phase 0 (선택) — 제품 관통 문서 변경 검토**:
|
|
116
|
+
- 본 task가 `.project/` 루트 제품 관통 문서(FEATURES / UX-UI / DATA-MODEL / API-SPEC / SERVICE-POLICY / TECH-STACK / ARCHITECTURE) 중 어느 것을 *수정/추가/삭제*해야 하는지 검토.
|
|
117
|
+
- **DATA-MODEL / API-SPEC 상세는 여기가 채우는 주체** — plan-init은 의도/빈 헤더까지만 두고 미뤘다. 본 task가 스키마·엔드포인트를 *구현 동반*으로 확정해 본문을 채운다(선기획 금지의 귀결).
|
|
117
118
|
- 변경 있음 → Phase 0에 명시 + `spec-diffs/<NNN>_<slug>_spec-diff.md` 파일 생성 (Step 6).
|
|
118
119
|
- 변경 없음 → Phase 0 생략.
|
|
119
120
|
5. **Phase 점진 작성 OK** — 처음부터 모든 Phase 일괄 작성 금지. 지금 명확한 Phase만 작성하고 진행 중 추가 가능.
|
|
@@ -121,8 +122,8 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
121
122
|
```markdown
|
|
122
123
|
## Dev Plan
|
|
123
124
|
|
|
124
|
-
### Phase 0 —
|
|
125
|
-
- 변경 문서: <FEATURES.md / API-SPEC.md / ...>
|
|
125
|
+
### Phase 0 — 제품 관통 문서(.project/ 루트) 변경 (선택)
|
|
126
|
+
- 변경 문서: <FEATURES.md / API-SPEC.md / DATA-MODEL.md / ...>
|
|
126
127
|
- 변경 내용: <요약>
|
|
127
128
|
- spec-diff: `spec-diffs/<NNN>_<slug>_spec-diff.md`
|
|
128
129
|
- 진행: [ ]
|
|
@@ -167,12 +168,12 @@ Step 2 Requirements 인터뷰 결과로 본 task가 *UX/UI 구현 (페이지/컴
|
|
|
167
168
|
1. 메인이 HTML 목업 생성 — 정적 HTML/CSS (외부 라이브러리 X, 단일 파일 안 inline style + 필요 시 vanilla JS):
|
|
168
169
|
- 시각 영역 (레이아웃 / 색상 / 간격 / 타이포 / 호버 효과)
|
|
169
170
|
- 인터랙션 (가능한 범위 — 클릭 / 호버 시뮬)
|
|
170
|
-
2. 사용자에게 *"브라우저로 `.project/tasks/<
|
|
171
|
+
2. 사용자에게 *"브라우저로 `.project/tasks/<NNN_slug>/mockup/<task-doc-name>-mockup.html` 열어 확인 후 ✓/✗ 응답"*.
|
|
171
172
|
3. 사용자 ✓ → 승인 완료, 4 진행. ✗ → 메인이 수정 후 재승인 요청.
|
|
172
173
|
|
|
173
174
|
#### 4. 파일 위치 / 네이밍
|
|
174
175
|
|
|
175
|
-
- 위치: `.project/tasks/<
|
|
176
|
+
- 위치: `.project/tasks/<NNN_slug>/mockup/<task-doc-name>-mockup.html`
|
|
176
177
|
- 예: `001_login-form.md` → `001_login-form-mockup.html`
|
|
177
178
|
- **task 1개 = 목업 1개**. multi-file 예외 영구 X. 복잡해도 한 파일 안 섹션 분리 (`<section id="popover">` `<section id="settings">` 등).
|
|
178
179
|
|
|
@@ -225,7 +226,7 @@ Test Plan = *본 task에서 구현한 요구사항이 정상 동작하는지*
|
|
|
225
226
|
| 1 | <한 줄 설명> | [AUTO] / [USER] | <카탈로그 방식> | <명확한 기대값> |
|
|
226
227
|
| 2 | ... | ... | ... | ... |
|
|
227
228
|
|
|
228
|
-
(UX/UI task — 목업 있으면) 시각 USER 시나리오 기준: `.project/tasks/<
|
|
229
|
+
(UX/UI task — 목업 있으면) 시각 USER 시나리오 기준: `.project/tasks/<NNN_slug>/mockup/<task-doc-name>-mockup.html`
|
|
229
230
|
```
|
|
230
231
|
|
|
231
232
|
#### 시각 영역 fix 사이클 사전 예고 (stash FRICTION_LOG #14 반영)
|
|
@@ -271,13 +272,13 @@ Test Plan 작성 완료 후 *반드시* 점검 단계 수행. *"누적/리셋
|
|
|
271
272
|
|
|
272
273
|
### Step 6 — spec-diff 처리 (Phase 0 변경 있을 시)
|
|
273
274
|
|
|
274
|
-
1. `.project/tasks/<
|
|
275
|
+
1. `.project/tasks/<NNN_slug>/spec-diffs/` 디렉토리 존재 확인 (없으면 `mkdir -p`).
|
|
275
276
|
2. `spec-diffs/<NNN>_<slug>_spec-diff.md` Write — 형식:
|
|
276
277
|
|
|
277
278
|
```markdown
|
|
278
279
|
# Spec Diff — TASK-<NNN> <제목>
|
|
279
280
|
|
|
280
|
-
##
|
|
281
|
+
## <.project/<문서명>.md> [NEW|MOD|DEL]
|
|
281
282
|
|
|
282
283
|
+++
|
|
283
284
|
+ <추가/변경 내용>
|
|
@@ -308,7 +309,7 @@ Test Plan 작성 완료 후 *반드시* 점검 단계 수행. *"누적/리셋
|
|
|
308
309
|
|
|
309
310
|
## 도구 가이드
|
|
310
311
|
|
|
311
|
-
- **Read**: task 파일 /
|
|
312
|
+
- **Read**: task 파일 / `.project/` 루트 제품 관통 문서 / 관련 코드 정독
|
|
312
313
|
- **Grep / Glob**: Scope 코드 서치 (관련 함수/파일 탐색)
|
|
313
314
|
- **Edit**: task 파일 4 섹션 채우기 + status 전환
|
|
314
315
|
- **Write**: spec-diff 파일 (Phase 0 변경 시)
|
|
@@ -23,8 +23,8 @@ MAIN_WT=$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")
|
|
|
23
23
|
|
|
24
24
|
| 케이스 | task 문서 위치 | 격리 세션 작업 디렉토리 |
|
|
25
25
|
|--------|--------------|---------------------|
|
|
26
|
-
| 등록 (퍼블릭 리포 default) | `$MAIN_WT/.project/tasks/<
|
|
27
|
-
| 미등록 | `$WT_PATH/.project/tasks/<
|
|
26
|
+
| 등록 (퍼블릭 리포 default) | `$MAIN_WT/.project/tasks/<NNN_slug>/...` | `$WT_PATH` (워크트리 — 코드 변경 위치) |
|
|
27
|
+
| 미등록 | `$WT_PATH/.project/tasks/<NNN_slug>/...` (워크트리 안) | `$WT_PATH` (워크트리) |
|
|
28
28
|
|
|
29
29
|
격리 세션은 *워크트리 안*에서 검증/테스트 명령 실행 (`$MAIN_WT/CLAUDE.md`의 `## 검증 명령` / `## 테스트 명령` 단일 진실 소스).
|
|
30
30
|
|
|
@@ -122,7 +122,7 @@ Task tool로 sub-agent spawn. prompt는 *자기완결적* — task.md 경로 +
|
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
**구현 디테일**:
|
|
125
|
-
- `<ABSOLUTE_PATH_TO_TASK_MD>` 자리에 `.project/tasks/<
|
|
125
|
+
- `<ABSOLUTE_PATH_TO_TASK_MD>` 자리에 `.project/tasks/<NNN_slug>/<NNN>_<slug>.md` (또는 폴더 승격 시 `<...>/task.md`)의 절대 경로 삽입.
|
|
126
126
|
- Task tool의 `subagent_type`: `general-purpose` (도구 풀 다 필요).
|
|
127
127
|
- Task tool의 `description`: `Isolated test for TASK-<NNN>`.
|
|
128
128
|
|