@angar2/taskery 0.1.0 → 0.1.1
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 +170 -65
- package/bin/lib.js +1 -1
- package/package.json +1 -1
- package/template/.claude/skills/log-friction/SKILL.md +76 -0
- package/template/.claude/skills/{plan-init.md → plan-init/SKILL.md} +1 -0
- package/template/.claude/skills/{project-init.md → project-init/SKILL.md} +29 -3
- package/template/.claude/skills/{task-close.md → task-close/SKILL.md} +18 -2
- package/template/.claude/skills/{task-dev.md → task-dev/SKILL.md} +1 -0
- package/template/.claude/skills/{task-init.md → task-init/SKILL.md} +1 -0
- package/template/.claude/skills/{task-plan.md → task-plan/SKILL.md} +1 -0
- package/template/.claude/skills/{task-test.md → task-test/SKILL.md} +1 -0
- package/template/.project/FRICTION_LOG.md +6 -13
- package/template/CLAUDE.md +5 -5
- package/template/.claude/skills/refine.md +0 -177
package/README.md
CHANGED
|
@@ -1,117 +1,222 @@
|
|
|
1
1
|
# taskery
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
> **1 메인 세션 + 스킬 8종 + catastrophic hook 3종 + npx 배포**.
|
|
3
|
+
AI 코딩 에이전트의 자율 개발을 위한 Task 기반의 가드레일 시스템.
|
|
5
4
|
|
|
6
5
|
---
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## 해결하는 문제
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
- Task 단위 라이프사이클의 가이드를 제시한다.
|
|
10
|
+
- 메인 세션을 단독으로 운영할 때 자주 발생하는 사고를 사전 차단한다.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
| 문제 | taskery 대응 |
|
|
13
|
+
|------|------------|
|
|
14
|
+
| AI 협업 작업이 매번 즉흥적이라 일관된 체계가 없음 | task 단위 라이프사이클로 작업 흐름 구조화 — 단계별 자동화 가능 |
|
|
15
|
+
| 작업 컨텍스트가 휘발되어 이전 결정·사유를 추적하기 어려움 | task 문서로 컨텍스트와 히스토리 기록 — 작업 중 참조 가능 |
|
|
16
|
+
| 에이전트가 catastrophic 사고를 일으킬 수 있음 | 필수 hook으로 차단 — 정상 흐름에는 무간섭 |
|
|
17
|
+
| 에이전트가 작성한 코드의 자가검증으로 인해 문제를 놓침 (confirmation bias) | 테스트 시 별도 격리 세션 호출(`/task-test`) — 메인 세션의 가정 없이 독립 검증 |
|
|
18
|
+
|
|
19
|
+
> catastrophic 사고 예시 — git 운영 정책 위반, 검증 우회, 완료된 task 문서 재수정 등
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 워크플로우
|
|
24
|
+
|
|
25
|
+
task 단위 라이프사이클은 7 상태로 구성된다.
|
|
26
|
+
|
|
27
|
+
**task 상태**
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
draft → planned → developing → developed → testing → tested → closed
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
| 상태 | 의미 |
|
|
34
|
+
|------|------|
|
|
35
|
+
| `draft` | 새 task 생성 직후 |
|
|
36
|
+
| `planned` | 작업 기획 완료 |
|
|
37
|
+
| `developing` | 구현 진행 중 |
|
|
38
|
+
| `developed` | 구현 완료 (자가 검증 통과) |
|
|
39
|
+
| `testing` | 독립 검증 진행 중 |
|
|
40
|
+
| `tested` | 독립 검증 완료 |
|
|
41
|
+
| `closed` | git 커밋 + dev 병합 완료 |
|
|
42
|
+
|
|
43
|
+
> 상태별 전이 조건과 task 문서 양식은 [TASK-DOC.md](https://github.com/angar2/taskery/blob/main/plan/TASK-DOC.md)에서 확인 가능
|
|
15
44
|
|
|
16
45
|
---
|
|
17
46
|
|
|
18
47
|
## 빠른 시작
|
|
19
48
|
|
|
49
|
+
> **요구 사항**: Node.js ≥ 18.
|
|
50
|
+
|
|
51
|
+
### npx
|
|
52
|
+
|
|
53
|
+
특정 프로젝트에 일회성 다운로드 방식.
|
|
54
|
+
|
|
20
55
|
```bash
|
|
21
56
|
# 새 프로젝트
|
|
22
57
|
npx -p @angar2/taskery create-taskery <project-name>
|
|
23
58
|
|
|
24
|
-
# 기존 프로젝트에
|
|
25
|
-
cd <
|
|
59
|
+
# 기존 프로젝트에 도입
|
|
60
|
+
cd <project-name>
|
|
26
61
|
npx @angar2/taskery init
|
|
27
62
|
|
|
28
|
-
# 최신 버전
|
|
63
|
+
# 최신 버전 머지 갱신
|
|
29
64
|
npx @angar2/taskery update
|
|
30
65
|
```
|
|
31
66
|
|
|
32
|
-
|
|
67
|
+
### 글로벌 npm install
|
|
33
68
|
|
|
34
|
-
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# 글로벌 설치
|
|
72
|
+
npm install -g @angar2/taskery
|
|
73
|
+
|
|
74
|
+
# 새 프로젝트
|
|
75
|
+
create-taskery <project-name>
|
|
76
|
+
|
|
77
|
+
# 기존 프로젝트에 도입
|
|
78
|
+
cd <project-name>
|
|
79
|
+
taskery init
|
|
80
|
+
|
|
81
|
+
# 최신 버전 머지 갱신
|
|
82
|
+
taskery update
|
|
83
|
+
```
|
|
35
84
|
|
|
36
85
|
---
|
|
37
86
|
|
|
38
|
-
##
|
|
87
|
+
## 패키지 디렉토리 구조
|
|
88
|
+
|
|
89
|
+
`taskery init` 직후 골격:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
my-app/
|
|
93
|
+
├─ CLAUDE.md # AI 에이전트 진입 문서
|
|
94
|
+
├─ .taskery-manifest.json # 패키지 업데이트 추적
|
|
95
|
+
├─ .gitignore
|
|
96
|
+
├─ .claude/
|
|
97
|
+
│ ├─ settings.json # hook 등록 (PreToolUse 매칭)
|
|
98
|
+
│ ├─ skills/<skil-name>/SKILL.md # 8 skill
|
|
99
|
+
│ └─ hooks/<hook-name>.sh # 3 hook
|
|
100
|
+
└─ .project/
|
|
101
|
+
├─ PROJECT.md # 프로젝트 개요
|
|
102
|
+
├─ AGENT-GUIDE.md # AI 에이전트 가이드
|
|
103
|
+
├─ LINKED-REPOS.md # 관계 리포지토리 정보
|
|
104
|
+
├─ .env # 사용자 설정 환경변수 (관계 리포지토리 환경변수 등)
|
|
105
|
+
├─ rules/
|
|
106
|
+
│ ├─ TASK_DOC_RULE.md # task 문서 작성 규칙
|
|
107
|
+
│ ├─ GIT_RULE.md # 로컬 깃 운영 규칙
|
|
108
|
+
│ └─ *.local.md # 사용자 오버라이드 규칙 (패키지 업데이트 대상 제외)
|
|
109
|
+
├─ plans/ # plan 문서
|
|
110
|
+
├─ tasks/ # task 문서
|
|
111
|
+
├─ flows/ # 서비스 로직 플로우 정보
|
|
112
|
+
├─ changelog/ # 수정사항 정보
|
|
113
|
+
├─ shared/ # 관계 리포지토리 소통 메세지함
|
|
114
|
+
│ ├─ sent/completed/
|
|
115
|
+
│ └─ received/completed/
|
|
116
|
+
└─ FRICTION_LOG.md # taskery 불편사항 누적 로그
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Skills
|
|
122
|
+
|
|
123
|
+
스킬은 호출 시점에 따라 4 카테고리(`project` / `plan` / `task` / `meta`)로 분류된다.
|
|
124
|
+
|
|
125
|
+
- `project` — 프로젝트 첫 도입 시 1회만 호출
|
|
126
|
+
- `plan` — 새 기획 버전 시작 시 호출
|
|
127
|
+
- `task` — 새 task 작업 진행 단계에서 호출
|
|
128
|
+
- `meta` — 그 외 taskery 관리
|
|
39
129
|
|
|
40
130
|
| 스킬 | 레벨 | 역할 |
|
|
41
131
|
|------|------|------|
|
|
42
|
-
| `/project-init` | project |
|
|
43
|
-
| `/plan-init` | plan |
|
|
44
|
-
| `/task-init` | task | task
|
|
45
|
-
| `/task-plan` | task |
|
|
46
|
-
| `/task-dev` | task |
|
|
47
|
-
| `/task-test` | task | 격리
|
|
48
|
-
| `/task-close` | task | 검증
|
|
49
|
-
| `/
|
|
132
|
+
| `/project-init` | project | 프로젝트 첫 도입 시 메타 문서와 디렉토리 골격 생성 (1회성) |
|
|
133
|
+
| `/plan-init` | plan | 새 기획 버전의 기획 문서 작성 |
|
|
134
|
+
| `/task-init` | task | 새 task의 빈 문서 생성 |
|
|
135
|
+
| `/task-plan` | task | task의 요구사항·범위·개발 계획·테스트 계획 작성 |
|
|
136
|
+
| `/task-dev` | task | 계획에 따른 단계별 구현 + 자가 검증 |
|
|
137
|
+
| `/task-test` | task | 별도 격리 세션에서 독립 검증 (메인 가정 차단) |
|
|
138
|
+
| `/task-close` | task | 최종 검증 후 git 커밋 + dev 브랜치 `--no-ff` 병합 |
|
|
139
|
+
| `/log-friction` | meta | 사용자 불편을 `.project/FRICTION_LOG.md`에 한 행 기록 |
|
|
50
140
|
|
|
51
|
-
|
|
141
|
+
각 스킬은 슬래시로 직접 호출하거나, 사용자 발화의 의미가 스킬의 frontmatter description과 매칭되면 메인 세션이 자동으로 발동시킨다.
|
|
142
|
+
|
|
143
|
+
`/project-init`, `/plan-init`, `/task-init` 세 스킬은 호출 시 다음 문서를 생성한다.
|
|
144
|
+
|
|
145
|
+
| 스킬 | 생성 위치 | 생성 문서 |
|
|
146
|
+
|------|---------|---------|
|
|
147
|
+
| `/project-init` | `.project/` | PROJECT.md / AGENT-GUIDE.md / LINKED-REPOS.md / .env |
|
|
148
|
+
| `/plan-init` | `.project/plans/<plan-name>/` | 9 기획 문서 — PLAN.md / SERVICE-POLICY.md / FEATURES.md / UX-UI.md / TECH-STACK.md / ARCHITECTURE.md / DATA-MODEL.md / API-SPEC.md / ROADMAP.md (프로젝트 타입에 따라 일부 제외) |
|
|
149
|
+
| `/task-init` | `.project/tasks/<plan-name>/` | `<NNN>_<slug>.md` (단일 파일) 또는 `TASK-<NNN>_<slug>/task.md` (규모 `large` 시 폴더 승격) |
|
|
150
|
+
|
|
151
|
+
> 각 스킬의 호출 시점, 입력 처리 방식, 단계별 절차, 주의사항은 [SKILLS.md](https://github.com/angar2/taskery/blob/main/plan/SKILLS.md)에서 확인 가능
|
|
52
152
|
|
|
53
153
|
---
|
|
54
154
|
|
|
55
|
-
##
|
|
155
|
+
## Hooks
|
|
56
156
|
|
|
57
|
-
| Hook |
|
|
58
|
-
|
|
59
|
-
| `git-guard.sh` |
|
|
60
|
-
| `pre-commit-verify.sh` |
|
|
61
|
-
| `closed-immutable.sh` |
|
|
157
|
+
| Hook | 작동 시점 | 차단 대상 |
|
|
158
|
+
|------|---------|---------|
|
|
159
|
+
| `git-guard.sh` | git 명령 실행 직전 | 주력 브랜치 직접 커밋 / `--force` / `--no-verify` / 강제 브랜치 삭제 / `reset --hard` / `clean -fd` |
|
|
160
|
+
| `pre-commit-verify.sh` | `git commit` 실행 직전 | 검증 명령(린트·타입체크·빌드·테스트) 통과 실패 commit |
|
|
161
|
+
| `closed-immutable.sh` | 파일 수정 직전 | 완료(`closed`)된 task.md 본 파일 재수정 (관련 spec-diff·스크린샷은 자유) |
|
|
62
162
|
|
|
63
|
-
|
|
163
|
+
hook은 catastrophic 사고만 차단한다. 정상 흐름에는 간섭하지 않는다.
|
|
164
|
+
|
|
165
|
+
> 각 hook의 영역 분리 정신, 등록 매칭, 차단 정책, 예외 처리 절차는 [HOOKS.md](https://github.com/angar2/taskery/blob/main/plan/HOOKS.md)에서 확인 가능
|
|
64
166
|
|
|
65
167
|
---
|
|
66
168
|
|
|
67
|
-
##
|
|
169
|
+
## 워크플로우 예시
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 사용자 프로젝트 첫 셋업
|
|
173
|
+
cd <project-name>
|
|
174
|
+
npx @angar2/taskery init
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
이후 메인 세션에 진입(`CLAUDE.md` 자동 정독)하여 다음 시퀀스로 호출한다. task 5 스킬은 호출과 동시에 상태를 전이시킨다.
|
|
68
178
|
|
|
69
179
|
```
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
├─ rules/
|
|
81
|
-
│ ├─ TASK_DOC_RULE.md # task 양식
|
|
82
|
-
│ └─ GIT_RULE.md # git 정책
|
|
83
|
-
├─ plans/ # /plan-init 생성
|
|
84
|
-
├─ tasks/ # /task-init 생성
|
|
85
|
-
├─ flows/ # /task-dev 갱신
|
|
86
|
-
├─ changelog/ # /task-close 갱신
|
|
87
|
-
├─ shared/ # 멀티리포 메시지
|
|
88
|
-
└─ FRICTION_LOG.md # 짜증 누적
|
|
180
|
+
/project-init # 진입 메타 문서와 디렉토리 골격 생성
|
|
181
|
+
/plan-init v1.0 # v1.0 기획 문서 작성
|
|
182
|
+
/task-init # draft : 첫 task의 빈 문서 생성
|
|
183
|
+
/task-plan TASK-001 # draft → planned : 요구사항·범위·개발 계획·테스트 계획 작성
|
|
184
|
+
/task-dev TASK-001 # planned → developed : 단계별 구현과 자체 검증
|
|
185
|
+
/task-test TASK-001 # developed → tested : 별도 격리 세션으로 독립 검증
|
|
186
|
+
/task-close TASK-001 # tested → closed : 최종 검증 후 git 커밋과 dev 병합
|
|
187
|
+
|
|
188
|
+
# 불편 발생 시 등록
|
|
189
|
+
/log-friction # 사용자 불편 한 행 기록
|
|
89
190
|
```
|
|
90
191
|
|
|
91
|
-
|
|
192
|
+
**자동 발동 예시** — 사용자 발화 의미가 스킬 description과 매칭되면 메인이 슬래시 직접 호출 없이 다음 스킬을 자동 발동한다.
|
|
92
193
|
|
|
93
|
-
|
|
194
|
+
- *"로그인 기능 추가해줘"* / *"이 버그 고쳐줘"* → `/task-init` 자동 발동 (새 task 시작 의도)
|
|
195
|
+
- *"기획 다 됐으니 이제 구현 시작해"* → `/task-dev` 자동 발동 (planned task의 다음 단계)
|
|
196
|
+
- *"이거 진짜 불편하다"* / *"이 부분 답답하네"* → `/log-friction` 자동 발동 (불만 발화 캐치)
|
|
94
197
|
|
|
95
|
-
|
|
198
|
+
**실패·불확정 분기** — `/task-test`가 FAIL 또는 UNCERTAIN을 반환하면 메인 세션이 사용자에게 판단을 묻고, 사용자의 자연어 답변에서 의도를 해석해 다음 흐름을 *자동 발동*한다(별도 슬래시 호출 없이 진행됨).
|
|
96
199
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
- [plan/HOOKS.md](https://github.com/angar2/taskery/blob/main/plan/HOOKS.md) — 3 catastrophic hook 정책
|
|
101
|
-
- [plan/DISTRIBUTION.md](https://github.com/angar2/taskery/blob/main/plan/DISTRIBUTION.md) — npx 배포 + manifest
|
|
102
|
-
- [plan/DECISIONS.md](https://github.com/angar2/taskery/blob/main/plan/DECISIONS.md) — 핵심 의사결정
|
|
103
|
-
- [plan/PLAYBOOK.md](https://github.com/angar2/taskery/blob/main/plan/PLAYBOOK.md) — 미래 옵션 카탈로그
|
|
200
|
+
- 사용자가 재구현을 요청하면 → `testing` → `developing`으로 회귀해 `/task-dev`가 자동 발동된다.
|
|
201
|
+
- 사용자가 결함을 인지한 채 종결을 지시하면 → `testing` → `tested`로 진행하고 결함을 명시한 후 `/task-close`로 이행된다.
|
|
202
|
+
- UNCERTAIN(자동 검증이 불가능한 시나리오)은 사용자가 직접 검수한 결과를 답하면 메인 세션이 PASS/FAIL로 해석해 위 두 흐름 중 하나로 합류시킨다.
|
|
104
203
|
|
|
105
204
|
---
|
|
106
205
|
|
|
107
|
-
##
|
|
206
|
+
## 상세 문서
|
|
207
|
+
|
|
208
|
+
spec 문서는 GitHub에서 참고할 수 있다.
|
|
108
209
|
|
|
109
|
-
[
|
|
210
|
+
- [OVERVIEW.md](https://github.com/angar2/taskery/blob/main/plan/OVERVIEW.md) — 시스템 진입 가이드와 전체 구조 개요.
|
|
211
|
+
- [SKILLS.md](https://github.com/angar2/taskery/blob/main/plan/SKILLS.md) — 스킬 8종의 상세 명세와 호출 흐름.
|
|
212
|
+
- [TASK-DOC.md](https://github.com/angar2/taskery/blob/main/plan/TASK-DOC.md) — task 문서의 작성 양식과 7 상태 머신의 동작 정의.
|
|
213
|
+
- [HOOKS.md](https://github.com/angar2/taskery/blob/main/plan/HOOKS.md) — catastrophic hook 3종의 정책과 예외 처리 절차.
|
|
214
|
+
- [DISTRIBUTION.md](https://github.com/angar2/taskery/blob/main/plan/DISTRIBUTION.md) — npx 배포 메커니즘과 자산 갱신 로직.
|
|
215
|
+
- [DECISIONS.md](https://github.com/angar2/taskery/blob/main/plan/DECISIONS.md) — 시스템 설계의 핵심 의사결정과 변경 이력.
|
|
216
|
+
- [PLAYBOOK.md](https://github.com/angar2/taskery/blob/main/plan/PLAYBOOK.md) — 향후 도입 가능한 기능 후보 목록.
|
|
110
217
|
|
|
111
218
|
---
|
|
112
219
|
|
|
113
|
-
##
|
|
220
|
+
## 라이센스
|
|
114
221
|
|
|
115
|
-
|
|
116
|
-
|------|----------|
|
|
117
|
-
| 2026-05-09 | 신규 작성 — npm 페이지 진입 문서 |
|
|
222
|
+
[MIT](LICENSE)
|
package/bin/lib.js
CHANGED
|
@@ -37,7 +37,7 @@ function sha256(filePath) {
|
|
|
37
37
|
|
|
38
38
|
function walkTemplate(templateDir) {
|
|
39
39
|
// template/ 안 모든 파일 상대경로 + 해시 맵 리턴
|
|
40
|
-
// 결과: { 'CLAUDE.md': 'sha256:...', '.claude/skills/task-init.md': 'sha256:...', ... }
|
|
40
|
+
// 결과: { 'CLAUDE.md': 'sha256:...', '.claude/skills/task-init/SKILL.md': 'sha256:...', ... }
|
|
41
41
|
const result = {};
|
|
42
42
|
function walk(dir, relBase) {
|
|
43
43
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
package/package.json
CHANGED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: log-friction
|
|
3
|
+
description: 사용자가 작업 흐름 중 겪은 불편(friction)을 .project/FRICTION_LOG.md에 한 행 기록한다. 사용자가 짜증·불만·답답함을 표현하면 자동 발동(등록 제안). 명시 호출(`/log-friction`) 또는 `/task-close` 직후 마찰 신호 자체 감지 시에도 발동한다.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /log-friction
|
|
7
|
+
|
|
8
|
+
## 개요
|
|
9
|
+
|
|
10
|
+
사용자가 작업 흐름 중 겪은 불편을 `.project/FRICTION_LOG.md`에 한 행 기록한다.
|
|
11
|
+
후속 조치 X — 분석 / 패턴 감지 / 룰 제안 자체를 본 스킬이 수행하지 않는다. 사용자가 직접 검토 후 판단한다.
|
|
12
|
+
|
|
13
|
+
## 호출 시점 (3가지 트리거)
|
|
14
|
+
|
|
15
|
+
1. **사용자 명시 호출** — `/log-friction "<불편 내용>"` 또는 인자 없이 호출
|
|
16
|
+
2. **사용자 불만 발화 캐치** — 메인 세션이 사용자 발화에서 불편·짜증·답답함 신호를 감지하면 *"이거 FRICTION_LOG에 등록할까?"* 제안한 후 사용자 OK 시 자동 발동
|
|
17
|
+
3. **task-close 직후 메인 자체 감지** — 작업 중 마찰 신호(동일 단계 재호출 / 실패 반복 / 사용자 부정 반응 누적 등)가 감지된 경우에만 *"이번 task에서 X 부분이 마찰이었어 보여 — 등록할까?"* 제안한 후 사용자 OK 시 발동. 감지 신호 없으면 호출 X
|
|
18
|
+
|
|
19
|
+
## 입력 처리
|
|
20
|
+
|
|
21
|
+
- 인자 형태 (사용자 명시 호출):
|
|
22
|
+
- `/log-friction "<불편 내용>"` — 큰따옴표 인자에 본문 직접 전달
|
|
23
|
+
- `/log-friction` — 인자 없이 호출 시 메인이 사용자에게 *"어떤 점이 불편했는지?"* 묻고 답변을 받음
|
|
24
|
+
- 자동 발동 시: 메인이 캐치한 발화 또는 감지한 마찰 신호를 사용자에게 *확인 차원*으로 보여주고 등록 본문에 대해 합의를 받음
|
|
25
|
+
|
|
26
|
+
## 단계
|
|
27
|
+
|
|
28
|
+
### Step 1 — 호출 경로 확인
|
|
29
|
+
|
|
30
|
+
호출 형태에 따라 분기한다.
|
|
31
|
+
|
|
32
|
+
- 직접 호출 (인자 있음) → 인자 본문을 등록 후보로 사용
|
|
33
|
+
- 직접 호출 (인자 없음) → 사용자에게 불편 내용을 질문
|
|
34
|
+
- 자동 발동 (불만 발화 캐치) → 캐치한 발화를 등록 후보로 보여주고 사용자 합의
|
|
35
|
+
- 자동 발동 (task-close 자체 감지) → 감지한 마찰 신호를 보여주고 사용자 합의
|
|
36
|
+
|
|
37
|
+
### Step 2 — 등록 본문 확정
|
|
38
|
+
|
|
39
|
+
사용자가 합의한 내용을 한 행(1~3 문장 이내)으로 정리한다.
|
|
40
|
+
|
|
41
|
+
포맷:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
- YYYY-MM-DD | <맥락 — TASK 번호 또는 호출 시점> | <불편 내용 요약>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Step 3 — FRICTION_LOG.md 한 행 추가
|
|
48
|
+
|
|
49
|
+
`.project/FRICTION_LOG.md`를 Read한 후 마지막 행 다음에 신규 행을 Append(Edit)한다.
|
|
50
|
+
파일이 없거나 비어 있으면 안내 후 첫 행을 작성한다.
|
|
51
|
+
|
|
52
|
+
### Step 4 — 결과 보고
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
✅ /log-friction 완료
|
|
56
|
+
- 추가된 행: <등록 본문>
|
|
57
|
+
- 누적 행 수: <N>건
|
|
58
|
+
- 다음 호출: 사용자 명시 / 불만 발화 캐치 / task-close 자체 감지 중 하나
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 도구 가이드
|
|
62
|
+
|
|
63
|
+
- **Read**: `.project/FRICTION_LOG.md` 정독
|
|
64
|
+
- **Edit**: 마지막 행 다음에 신규 행 Append
|
|
65
|
+
- **AskUserQuestion**: Step 1·2 사용자 합의
|
|
66
|
+
|
|
67
|
+
## 주의사항
|
|
68
|
+
|
|
69
|
+
- 본 스킬은 *기록 행위*만 수행한다. 패턴 분석 / PLAYBOOK 매핑 / 룰 제안 X.
|
|
70
|
+
- task-close 자체 감지 트리거는 *마찰 신호 감지* 시에만 발동한다. 감지 없는 task-close에서 prompt 강제 X.
|
|
71
|
+
- 사용자 합의 없이 자동 등록 X. 자동 발동 경로도 반드시 사용자 OK 후 기록한다.
|
|
72
|
+
- 메인 자체 판단으로 등록 본문을 임의 가공·확장 X. 사용자 발화 또는 감지한 신호를 *그대로 인용* 원칙.
|
|
73
|
+
|
|
74
|
+
## 상태 전이
|
|
75
|
+
|
|
76
|
+
해당 없음 (meta 레벨 — task 상태 전이 X).
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: project-init
|
|
2
3
|
description: taskery 도입 직후 1회성 — PROJECT.md / AGENT-GUIDE.md / LINKED-REPOS.md / .env 빈 골격 생성
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -96,7 +97,7 @@ taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새
|
|
|
96
97
|
## 작업 흐름
|
|
97
98
|
- task 시작: `/task-init` 또는 `/task-plan`
|
|
98
99
|
- task 진행: `/task-dev` → `/task-test` → `/task-close`
|
|
99
|
-
-
|
|
100
|
+
- 불편 등록: `/log-friction` (사용자 호출 / 발화 캐치 / task-close 자체 감지)
|
|
100
101
|
|
|
101
102
|
## 폴더 구조
|
|
102
103
|
- `.project/rules/` — 코어 룰 (TASK_DOC_RULE / GIT_RULE)
|
|
@@ -105,7 +106,7 @@ taskery 도입 직후 **1회성**으로 호출. 사용자 또는 동료가 새
|
|
|
105
106
|
- `.project/flows/` — 도메인 흐름
|
|
106
107
|
- `.project/shared/` — 멀티리포 메시지
|
|
107
108
|
- `.project/changelog/` — 월별 변경 이력
|
|
108
|
-
- `.project/FRICTION_LOG.md` —
|
|
109
|
+
- `.project/FRICTION_LOG.md` — 불편 데이터
|
|
109
110
|
|
|
110
111
|
## 멀티리포
|
|
111
112
|
<단일 리포면 "단일 리포. LINKED-REPOS.md 빈 템플릿."
|
|
@@ -164,10 +165,35 @@ mkdir -p .project/shared/sent/completed .project/shared/received/completed
|
|
|
164
165
|
|
|
165
166
|
`.project/FRICTION_LOG.md`도 `init`이 카피한 빈 템플릿 그대로 사용. **이미 있으면 덮어쓰기 X** — 사용자 데이터 보호.
|
|
166
167
|
|
|
168
|
+
### Step 7.5 — git 초기화 + 첫 ref 분기 (빈 폴더 케이스)
|
|
169
|
+
|
|
170
|
+
`git status`가 *fatal: not a git repository* 에러면 빈 폴더 진입 케이스. 다음 4단계 실행:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
git status 2>&1 | head -1
|
|
174
|
+
# "fatal: not a git repository" 면 미초기화
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
미초기화 시:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
git init
|
|
181
|
+
git commit --allow-empty -m "chore: root commit" # ref 생성용 (commit 0 상태에선 branch 만들어도 ref 안 박힘)
|
|
182
|
+
git symbolic-ref --short HEAD # 현재 default branch 확인 (예: main 또는 master)
|
|
183
|
+
git branch dev # 같은 sha에 dev 분기
|
|
184
|
+
git branch -a # main(또는 master) + dev 둘 다 떠야 함
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
이렇게 하지 않으면 첫 task `git checkout -b feature/...`까지는 동작하지만 **dev 브랜치 ref 자체가 없어서** `--no-ff` 머지 시점에 막힘. 사용자가 수동 `git branch dev <root-sha>` 매핑 필요.
|
|
188
|
+
|
|
189
|
+
이미 git 초기화된 리포면 (status 정상) 이 step 건너뜀.
|
|
190
|
+
|
|
191
|
+
> root commit이 빈 commit으로 박히는 게 싫으면 생략 가능. 단 그러면 첫 task chore commit이 박히기 *전엔* dev/main ref 못 만듦 → 첫 머지 직전에 사용자/메인이 명시 매핑 필요.
|
|
192
|
+
|
|
167
193
|
### Step 8 — 결과 보고
|
|
168
194
|
|
|
169
195
|
작성된 파일 목록 + 다음 단계 안내:
|
|
170
|
-
- *"PROJECT.md / AGENT-GUIDE.md / LINKED-REPOS.md / .env 생성. (FRICTION_LOG.md / 빈 골격 폴더는 npx init이 이미 카피한 것 그대로). 다음은 `/plan-init <버전명>`으로 9 기획 문서 작성."*
|
|
196
|
+
- *"PROJECT.md / AGENT-GUIDE.md / LINKED-REPOS.md / .env 생성. (FRICTION_LOG.md / 빈 골격 폴더는 npx init이 이미 카피한 것 그대로). **빈 폴더 케이스라 git init + dev 분기까지 완료** (이미 git 리포면 건너뜀). 다음은 `/plan-init <버전명>`으로 9 기획 문서 작성."*
|
|
171
197
|
|
|
172
198
|
**결과 commit 흐름** (GIT_RULE 정합):
|
|
173
199
|
- dev 직접 commit *금지* (git-guard.sh 차단). 두 가지 default 흐름:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: task-close
|
|
2
3
|
description: task git 마무리 — 검증 명령 재실행 게이트 + 커밋 순서 준수 + dev --no-ff 병합, tested → closed
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -137,8 +138,23 @@ PASS 시 Step 3으로.
|
|
|
137
138
|
4. Step 4-3: 태스크 문서 커밋 (status=closed 적용된 채로)
|
|
138
139
|
5. Step 4-4: CHANGELOG 커밋
|
|
139
140
|
6. Step 5: dev 병합
|
|
141
|
+
7. Step 7: 마찰 신호 자체 감지 (`/log-friction` 발동 후보)
|
|
142
|
+
8. Step 8: 결과 보고
|
|
140
143
|
|
|
141
|
-
### Step 7 —
|
|
144
|
+
### Step 7 — 마찰 신호 자체 감지 (`/log-friction` 발동 후보)
|
|
145
|
+
|
|
146
|
+
본 task 진행 중 *마찰 신호* 누적 여부를 검사한다. 감지 시 `/log-friction` 등록을 사용자에게 제안.
|
|
147
|
+
|
|
148
|
+
검사 항목:
|
|
149
|
+
- 동일 단계 재호출 ≥ 2회 (예: `/task-dev` Phase 동일 단계 반복 진입)
|
|
150
|
+
- 실패 반복 (검증 명령 FAIL 2회 이상 / 격리 세션 FAIL 후 재구현 반복)
|
|
151
|
+
- 사용자 부정 반응 발화 누적 (불편·짜증·답답함 신호)
|
|
152
|
+
|
|
153
|
+
분기:
|
|
154
|
+
- **감지 신호 있음** → *"이번 task에서 X 부분이 마찰이었어 보여 — `/log-friction`으로 등록할까?"* 사용자 합의 받음. OK 시 `/log-friction` 자동 발동.
|
|
155
|
+
- **감지 신호 없음** → prompt X (정상 close 진행).
|
|
156
|
+
|
|
157
|
+
### Step 8 — 결과 보고
|
|
142
158
|
|
|
143
159
|
```
|
|
144
160
|
✅ TASK-<NNN> closed
|
|
@@ -147,7 +163,7 @@ PASS 시 Step 3으로.
|
|
|
147
163
|
- dev 병합: --no-ff 완료
|
|
148
164
|
- 상태: tested → closed
|
|
149
165
|
- 작업 브랜치 보존 (삭제하려면 "브랜치 삭제해" 명시)
|
|
150
|
-
- 다음: 새 task 시작은 /task-init
|
|
166
|
+
- 다음: 새 task 시작은 /task-init. 본 task에서 마찰 신호 감지된 경우 /log-friction 등록 제안
|
|
151
167
|
```
|
|
152
168
|
|
|
153
169
|
## 도구 가이드
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
# FRICTION_LOG
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
5
|
-
> `/refine` 스킬이 정독 + 반복 패턴 감지 + bottoms-up 보강 제안.
|
|
3
|
+
> 사용자가 작업 흐름 중 겪은 불편 / 한계 / 짚이는 부분의 누적.
|
|
4
|
+
> `/log-friction` 스킬이 사용자 합의 후 한 행씩 추가한다.
|
|
6
5
|
|
|
7
6
|
**사용 규칙**:
|
|
8
|
-
- 한 행에 한
|
|
7
|
+
- 한 행에 한 불편
|
|
9
8
|
- 손수 편집 X — 메인이 대화로 적음
|
|
10
|
-
-
|
|
9
|
+
- 사용자 명시 호출 / 사용자 불만 발화 캐치 / task-close 직후 마찰 신호 자체 감지 시 추가
|
|
11
10
|
|
|
12
11
|
---
|
|
13
12
|
|
|
14
|
-
##
|
|
13
|
+
## 불편 누적
|
|
15
14
|
|
|
16
|
-
| 날짜 |
|
|
15
|
+
| 날짜 | 불편 | 맥락 (어느 task / 스킬 / 카테고리) |
|
|
17
16
|
|------|------|-----------------------------------|
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## /refine 회고 메타 행
|
|
22
|
-
|
|
23
|
-
(매 `/refine` 호출 결과를 메타 행으로 추가 — 다음 회고가 *이전 결과 참조*용)
|
package/template/CLAUDE.md
CHANGED
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
| `/task-dev` | task | Phase 순서 구현 + self-check (planned → developed) |
|
|
53
53
|
| `/task-test` | task | Task tool 격리 검증 (developed → tested) |
|
|
54
54
|
| `/task-close` | task | 검증 명령 게이트 + 커밋 + dev 병합 (tested → closed) |
|
|
55
|
-
| `/
|
|
55
|
+
| `/log-friction` | meta | FRICTION_LOG.md에 사용자 불편 한 행 기록 |
|
|
56
56
|
|
|
57
|
-
본문은 `.claude/skills
|
|
57
|
+
본문은 `.claude/skills/<스킬>/SKILL.md` 참조.
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -70,10 +70,10 @@
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
##
|
|
73
|
+
## 불편 데이터
|
|
74
74
|
|
|
75
|
-
- **누적**: `.project/FRICTION_LOG.md` — 메인이 한 줄씩 추가 (사용자 발화
|
|
76
|
-
-
|
|
75
|
+
- **누적**: `.project/FRICTION_LOG.md` — 메인이 한 줄씩 추가 (사용자 불만 발화 캐치 또는 사용자 명시)
|
|
76
|
+
- **등록**: `/log-friction` 스킬 — 사용자 명시 호출 / 불만 발화 캐치 / task-close 직후 마찰 신호 자체 감지 시 한 행 기록
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 회고 메타 — FRICTION_LOG 정독 + 반복 패턴 감지 + bottoms-up 보강 제안 (PLAYBOOK 부활 / 새 룰)
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /refine
|
|
6
|
-
|
|
7
|
-
## 개요
|
|
8
|
-
|
|
9
|
-
5 task마다 또는 사용자 호출 시 메인이 `.project/FRICTION_LOG.md`를 정독해 *반복 패턴 감지* + *bottoms-up 보강 제안*. PLAYBOOK 미래 옵션 항목 부활 검토 또는 새 룰 추가 제안. 사용자 OK 시 적용.
|
|
10
|
-
|
|
11
|
-
**핵심 정신**: *"선제적 작성 금지, 진짜 데이터 모이면 그때 추가"* — top-down 선제적 작성 함정 회피.
|
|
12
|
-
|
|
13
|
-
## 호출 시점
|
|
14
|
-
|
|
15
|
-
- 5 task 닫고 나서 (`/task-close` 5회 후 메인이 사용자에게 *"`/refine` 돌릴까요?"* 제안 OK).
|
|
16
|
-
- 사용자가 *"짜증 정리 좀"* / *"`/refine`"* 명시 호출.
|
|
17
|
-
- 짜증 패턴이 단기 폭증할 때 (메인 자체 판단으로 사용자에게 제안).
|
|
18
|
-
|
|
19
|
-
## 입력 처리
|
|
20
|
-
|
|
21
|
-
인자 없음. 기본 흐름.
|
|
22
|
-
|
|
23
|
-
옵션 인자 = `--scope last-N` (예: `--scope last-10` — 최근 10개 짜증만). 미명시 시 *전체* 정독.
|
|
24
|
-
|
|
25
|
-
## 단계
|
|
26
|
-
|
|
27
|
-
### Step 1 — FRICTION_LOG.md 정독
|
|
28
|
-
|
|
29
|
-
1. `.project/FRICTION_LOG.md` Read.
|
|
30
|
-
2. 파일 없거나 비어 있으면 종료 + 안내:
|
|
31
|
-
*"FRICTION_LOG가 비어 있어. 짜증 데이터 누적되면 다시 호출. 평소 *'이거 짜증나'* 발화해주면 메인이 한 줄씩 추가."*
|
|
32
|
-
3. 인자 `--scope last-N` 있으면 마지막 N개 행만 추출.
|
|
33
|
-
|
|
34
|
-
### Step 2 — 패턴 분류 + 빈도 카운트
|
|
35
|
-
|
|
36
|
-
짜증 항목을 카테고리로 분류:
|
|
37
|
-
|
|
38
|
-
| 카테고리 | 예시 |
|
|
39
|
-
|---------|------|
|
|
40
|
-
| 형식 위반 | task 헤더 누락 / 섹션 빠짐 / status 잘못 작성 |
|
|
41
|
-
| 컨텍스트 부담 | 메인 세션이 무거워짐 / 답변 느림 / 압축 발생 |
|
|
42
|
-
| 스킬 미스매치 | `/task-init` 인터뷰 짜증 / `/task-plan` 질문 너무 많음 / 등 |
|
|
43
|
-
| Test Plan 가정 | 격리 세션이 메인 가정 못 풀어 헤맴 |
|
|
44
|
-
| git/커밋 흐름 | 브랜치 이름 충돌 / 커밋 순서 헛갈림 |
|
|
45
|
-
| 멀티리포 통신 | shared/ 메시지 못 잡음 / .env 빠짐 |
|
|
46
|
-
| 자동화 부족 | 같은 작업 반복 / 자동화 가능한데 수동 |
|
|
47
|
-
| 기타 | 위 카테고리 외 |
|
|
48
|
-
|
|
49
|
-
각 카테고리 *빈도 카운트* + 짜증 행 인용.
|
|
50
|
-
|
|
51
|
-
### Step 3 — 반복 패턴 감지
|
|
52
|
-
|
|
53
|
-
빈도 ≥ 3회 카테고리는 *반복 패턴*으로 간주. 빈도 < 3회는 *단발성*으로 분류.
|
|
54
|
-
|
|
55
|
-
```markdown
|
|
56
|
-
## 반복 패턴 (≥ 3회)
|
|
57
|
-
|
|
58
|
-
1. <카테고리>: <N회>
|
|
59
|
-
- 짜증 1: "<원문 인용>" (<날짜 / TASK 맥락>)
|
|
60
|
-
- 짜증 2: ...
|
|
61
|
-
- ...
|
|
62
|
-
|
|
63
|
-
2. <카테고리>: <N회>
|
|
64
|
-
...
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Step 4 — PLAYBOOK 항목 매핑
|
|
68
|
-
|
|
69
|
-
`plan/PLAYBOOK.md` Read. 반복 패턴마다 *부활 후보 항목* 매핑:
|
|
70
|
-
|
|
71
|
-
| 반복 패턴 카테고리 | PLAYBOOK 후보 항목 |
|
|
72
|
-
|------------------|--------------------|
|
|
73
|
-
| 형식 위반 | §4 minimal form hook |
|
|
74
|
-
| 컨텍스트 부담 | §1 컨텍스트 격리 강화 / §2 압축 평가 subagent |
|
|
75
|
-
| 스킬 미스매치 | (PLAYBOOK 외 — 스킬 instruction 보강 검토) |
|
|
76
|
-
| Test Plan 가정 | (PLAYBOOK 외 — TASK_DOC_RULE.md §3.3 보강 검토) |
|
|
77
|
-
| git/커밋 흐름 | (PLAYBOOK 외 — GIT_RULE.md 보강 검토) |
|
|
78
|
-
| 멀티리포 통신 | (PLAYBOOK 외 — LINKED-REPOS.md 보강 검토) |
|
|
79
|
-
| 자동화 부족 | §3 Python orchestrator (큰 그림) / §7 자동 PR 리뷰 |
|
|
80
|
-
| 큰 묶음 작업 부담 | §5 `/plan-roadmap` 스킬 |
|
|
81
|
-
| task 누적 우선순위 | §8 우선순위 컬럼 부활 |
|
|
82
|
-
| npx update 충돌 | §9 머지 로직 엣지 케이스 보강 |
|
|
83
|
-
|
|
84
|
-
### Step 5 — bottoms-up 제안서 작성
|
|
85
|
-
|
|
86
|
-
```markdown
|
|
87
|
-
## /refine 제안서 — <YYYY-MM-DD>
|
|
88
|
-
|
|
89
|
-
### 반복 패턴 (≥ 3회)
|
|
90
|
-
- <카테고리 1>: <N회>
|
|
91
|
-
- <카테고리 2>: <N회>
|
|
92
|
-
|
|
93
|
-
### PLAYBOOK 부활 검토
|
|
94
|
-
1. **§<N> <항목명>** 부활 검토
|
|
95
|
-
- 사유: <패턴 N회 누적 — PLAYBOOK §<N> 매핑>
|
|
96
|
-
- 도입 방법: <PLAYBOOK §<N> 본문 §방법 그대로 인용 + 적용 영역>
|
|
97
|
-
- 얻는 것: <효용>
|
|
98
|
-
- 주의: <함정 — PLAYBOOK §<N> §주의 인용>
|
|
99
|
-
|
|
100
|
-
2. ...
|
|
101
|
-
|
|
102
|
-
### PLAYBOOK 외 보강 제안
|
|
103
|
-
1. **<문서 / 스킬>** 보강
|
|
104
|
-
- 사유: <패턴 N회>
|
|
105
|
-
- 보강 방향: <구체 수정 제안>
|
|
106
|
-
- 영향 범위: <수정 대상 파일>
|
|
107
|
-
|
|
108
|
-
### 단발성 짜증 (< 3회 — 데이터 더 모이기 대기)
|
|
109
|
-
- <짜증 인용 N>회
|
|
110
|
-
|
|
111
|
-
### 추천 다음 행동
|
|
112
|
-
- <사용자 OK 시 적용 순서>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Step 6 — 사용자 합의
|
|
116
|
-
|
|
117
|
-
제안서 보여주기 + *"어느 항목 적용할까?"* 묻기.
|
|
118
|
-
|
|
119
|
-
분기:
|
|
120
|
-
- **사용자 OK한 항목 → 즉시 적용 (또는 별도 task로 분리)**:
|
|
121
|
-
- PLAYBOOK 부활: 해당 PLAYBOOK 항목 *방법* 그대로 따라 새 task 생성 — `/task-init` 호출 권장 (큰 변경이면).
|
|
122
|
-
- 스킬 instruction 보강: 해당 `template/.claude/skills/<스킬>.md` 직접 Edit + 사유 기록.
|
|
123
|
-
- TASK_DOC_RULE / GIT_RULE 보강: 해당 룰 파일 Edit + 수정 이력 행 추가.
|
|
124
|
-
- **거부한 항목 → 보류** (FRICTION_LOG에 *"보류 — `/refine` <YYYY-MM-DD>"* 메모).
|
|
125
|
-
- **단발성 → 그대로 누적** (반복되면 다음 `/refine`에서 다시 검토).
|
|
126
|
-
|
|
127
|
-
### Step 7 — FRICTION_LOG 갱신
|
|
128
|
-
|
|
129
|
-
본 `/refine` 호출 결과를 FRICTION_LOG에 메타 행 추가:
|
|
130
|
-
|
|
131
|
-
```markdown
|
|
132
|
-
## /refine — <YYYY-MM-DD>
|
|
133
|
-
|
|
134
|
-
- 반복 패턴: <카테고리> N회 / <카테고리> N회
|
|
135
|
-
- 부활 적용: §<N> <항목명> (TASK-<NNN>으로 분리)
|
|
136
|
-
- 보강 적용: <문서명> §<N> Edit
|
|
137
|
-
- 보류: <항목>
|
|
138
|
-
- 단발성 누적: N건
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
이 메타 행은 다음 `/refine`이 *이전 회고 결과 참조*용.
|
|
142
|
-
|
|
143
|
-
### Step 8 — 결과 보고
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
✅ /refine 완료
|
|
147
|
-
- 정독한 짜증 행: <N>건
|
|
148
|
-
- 반복 패턴: <카테고리> N개
|
|
149
|
-
- 적용한 보강: <목록>
|
|
150
|
-
- 보류: <목록>
|
|
151
|
-
- 단발성 누적: <N>건 (다음 회고 대기)
|
|
152
|
-
|
|
153
|
-
다음 일정: <5 task 후 / 사용자 호출 시>
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## 도구 가이드
|
|
157
|
-
|
|
158
|
-
- **Read**: `.project/FRICTION_LOG.md` / `plan/PLAYBOOK.md` / 보강 대상 룰/스킬 파일 정독
|
|
159
|
-
- **Edit**: 보강 적용 (TASK_DOC_RULE / GIT_RULE / 스킬 instruction Edit) + FRICTION_LOG 메타 행 추가
|
|
160
|
-
- **AskUserQuestion**: Step 6 합의 — 어느 항목 적용할지 사용자 답
|
|
161
|
-
- **Write**: 신규 룰/문서 추가 (드뭄 — 보통 PLAYBOOK 부활 항목이 새 hook 등 신규 파일 생성 요청 시)
|
|
162
|
-
|
|
163
|
-
## 주의사항
|
|
164
|
-
|
|
165
|
-
- **선제적 작성 금지** — *진짜 데이터(반복 패턴) 없이* PLAYBOOK 부활 절대 X. 합리적 변형 차단 함정 회피의 핵심.
|
|
166
|
-
- **단발성 짜증 = 데이터 부족** — < 3회 패턴은 *부활 검토 X*. 누적 대기.
|
|
167
|
-
- **자체 판단으로 룰 작성 금지** — 보강 제안은 *사용자 합의 후* 적용. *"이거 좋아 보여"* 자체 판단으로 즉시 Edit X.
|
|
168
|
-
- **합리적 변형 차단 함정** — minimal form hook 부활 시 *섹션 존재* 검사만. *내용 검증 X* — 25행 화이트리스트 함정 회피 (PLAYBOOK §4 §주의 참조).
|
|
169
|
-
- **PLAYBOOK 본문 인용 그대로** — *방법* 인용 시 자체 추측 작성 금지. PLAYBOOK 본문 한 줄씩 따라가며 적용.
|
|
170
|
-
- **`/refine` 호출 빈도** — 매 task마다 호출 X. 5 task 또는 짜증 누적 폭증 시. 너무 잦으면 *회고 자체가 짜증*.
|
|
171
|
-
- **회고 → 보강 → 다음 task** 흐름 — 보강 적용은 *별도 task로 분리* 권장 (큰 변경이면). `/task-init` 호출하고 plan에 부활 사유 기록.
|
|
172
|
-
|
|
173
|
-
## 상태 전이
|
|
174
|
-
|
|
175
|
-
해당 없음 (meta 레벨 — task 상태 전이 X).
|
|
176
|
-
|
|
177
|
-
단 보강 적용이 *별도 task*로 분리되면 그 task는 일반 흐름 (draft → planned → ... → closed) 따라감.
|