@angar2/taskery 0.1.0 → 0.1.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.
Files changed (30) hide show
  1. package/README.md +207 -65
  2. package/bin/init.js +45 -2
  3. package/bin/lib.js +397 -3
  4. package/bin/prune.js +189 -0
  5. package/bin/status.js +148 -0
  6. package/bin/taskery.js +25 -0
  7. package/bin/update.js +26 -2
  8. package/package.json +7 -3
  9. package/template/.claude/hooks/closed-immutable.sh +5 -4
  10. package/template/.claude/hooks/git-guard.sh +1 -1
  11. package/template/.claude/settings.json +1 -2
  12. package/template/.claude/skills/add-backlog/SKILL.md +117 -0
  13. package/template/.claude/skills/log-friction/SKILL.md +76 -0
  14. package/template/.claude/skills/{plan-init.md → plan-init/SKILL.md} +28 -4
  15. package/template/.claude/skills/{project-init.md → project-init/SKILL.md} +60 -7
  16. package/template/.claude/skills/task-close/SKILL.md +351 -0
  17. package/template/.claude/skills/{task-dev.md → task-dev/SKILL.md} +54 -8
  18. package/template/.claude/skills/task-init/SKILL.md +283 -0
  19. package/template/.claude/skills/{task-plan.md → task-plan/SKILL.md} +115 -18
  20. package/template/.claude/skills/{task-test.md → task-test/SKILL.md} +60 -18
  21. package/template/.project/FRICTION_LOG.md +6 -13
  22. package/template/.project/rules/CHANGELOG_RULE.md +91 -0
  23. package/template/.project/rules/GIT_RULE.md +119 -8
  24. package/template/.project/rules/MOCKUP_RULE.md +85 -0
  25. package/template/.project/rules/TASK_DOC_RULE.md +78 -76
  26. package/template/CLAUDE.md +77 -12
  27. package/template/.claude/hooks/pre-commit-verify.sh +0 -97
  28. package/template/.claude/skills/refine.md +0 -177
  29. package/template/.claude/skills/task-close.md +0 -178
  30. package/template/.claude/skills/task-init.md +0 -142
@@ -1,142 +0,0 @@
1
- ---
2
- description: task 시작 — 6 섹션 빈 골격 + 헤더 5컬럼 (status=draft) task.md 생성
3
- ---
4
-
5
- # /task-init
6
-
7
- ## 개요
8
-
9
- 새 task 시작 시 호출. `.project/tasks/<vX.X>/` 안에 *빈 골격* task.md 생성. 헤더 5컬럼 채우고 6 섹션은 placeholder만. 상태는 `draft`로 작성.
10
-
11
- 본 스킬은 *생성만* 담당. Requirements / Scope / Dev Plan / Test Plan 본문은 다음 단계 `/task-plan`에서 채움.
12
-
13
- ## 호출 시점
14
-
15
- - 새 task 시작 시 (사용자 발화: *"~~ 추가해줘"*, *"~~ 버그 고쳐"*, *"~~ 리팩터링"*).
16
- - 직전 대화로 작업 맥락 명확해진 직후.
17
-
18
- ## 입력 처리
19
-
20
- 인자 = (선택) 주제 / 유형 / 규모 / 플랜. 예: `/task-init 로그인 기능` 또는 인자 없이 호출.
21
-
22
- 두 분기:
23
- - **분기 1 (제안)**: 직전 맥락 명확 → 메인이 *"이렇게 task 만들까요?"* 제안 + 사용자 confirm.
24
- - **분기 2 (인터뷰)**: 직전 맥락 부족 → 한 번에 한 질문씩 인터뷰.
25
-
26
- **자동 추정 진행 X** — 사용자 confirm 또는 답 받기 전 파일 생성 금지.
27
-
28
- ## 단계
29
-
30
- ### Step 1 — active plan 버전 확인
31
-
32
- 1. `.project/AGENT-GUIDE.md` Read → *활성 plan 버전* 추출 (예: `v1.0`).
33
- 2. AGENT-GUIDE.md 없거나 활성 버전 누락 시 → 사용자에게 *"활성 plan 버전이 없는데 `/plan-init` 먼저 실행할까요?"* 묻고 중단.
34
- 3. `.project/plans/<vX.X>/` 디렉토리 존재 확인. 없으면 동일하게 `/plan-init` 안내 + 중단.
35
-
36
- ### Step 2 — 분기 판단 + 메타 수집
37
-
38
- 직전 대화 정독:
39
- - 작업 주제 / 유형 / 규모 추정 가능?
40
- - **추정 가능** → 분기 1 (제안):
41
- *"직전 맥락 보니 다음 task 만들까요? 주제: <X> / 유형: <Y> / 규모: <Z> / 플랜: <vX.X>. 어떠세요?"*
42
- 사용자 답 — *"OK"* / *"규모는 large야"* / *"유형은 bug야"* 등 부분 수정 받음.
43
- - **추정 불가** → 분기 2 (인터뷰): 한 번에 한 질문씩.
44
- - Q1: *"무슨 작업인가요? (한 줄로)"*
45
- - Q2: *"유형? (feature / bug / improvement / refactor / docs / chore)"*
46
- - Q3: *"규모? (micro / small / medium / large) — 잘 모르겠으면 추정 알려드림."*
47
- - (필요 시) Q4: *"플랜 버전 `<vX.X>` 맞나요?"*
48
-
49
- 수집 항목 (모두 확정되어야 진행):
50
- - 주제 (한국어 — kebab-slug 변환은 Step 4에서)
51
- - 유형: `feature` / `bug` / `improvement` / `refactor` / `docs` / `chore`
52
- - 규모: `micro` / `small` / `medium` / `large`
53
- - 플랜 버전: 활성 버전 그대로 (Step 1에서 가져온 값)
54
-
55
- ### Step 3 — TASK 번호 결정
56
-
57
- 1. `ls .project/tasks/<vX.X>/` 실행 → 디렉토리 안 파일/폴더 목록 추출.
58
- 2. 파일명 / 폴더명 패턴 검출:
59
- - 파일: `NNN_<slug>.md` (예: `001_login-form.md`, `012_db-migration.md`)
60
- - 폴더: `TASK-NNN_<slug>/` (예: `TASK-003_payment-flow/`)
61
- 3. NNN 최대값 + 1 = 새 task 번호. 빈 디렉토리면 `001`.
62
- 4. 3자리 zero-padded (`001`, `015`, `120`).
63
-
64
- ### Step 4 — 파일 vs 폴더 결정 + slug 변환
65
-
66
- 1. 파일 vs 폴더 분기:
67
- - **파일 default**: 단일 `NNN_<slug>.md` (예: `008_login-feature.md`).
68
- - **폴더 승격 조건**: (a) 규모 `large`, 또는 (b) 사용자 명시 *"폴더로 만들어줘"*, 또는 (c) task에 *추가 자료*(서브 문서 / mockup / 디자인) 다수 예상.
69
- → `TASK-NNN_<slug>/task.md` 생성. 추가 자료는 *task 폴더 안에 자유롭게* 위치.
70
- - **`spec-diffs/` + `screenshots/`는 *vX.X 공통* 사용**: 단일 파일이든 폴더 승격이든 `.project/tasks/<vX.X>/{spec-diffs,screenshots}/`에 위치 (파일명에 NNN prefix로 task 식별 — `<NNN>_<slug>_spec-diff.md`). task 폴더 안에 spec-diffs/screenshots 생성하지 않음.
71
- - 위 디렉토리는 `/plan-init` Step 5가 vX.X 만들 때 함께 mkdir됨. `/task-init`은 디렉토리 가정만, 직접 생성 X.
72
- 2. slug 변환 — 한국어 → 영어 kebab-case:
73
- - 짧고 명확하게 (3 단어 이내 권장).
74
- - 소문자 + 하이픈만. 예: *"로그인 기능 추가"* → `login-feature`, *"모바일 사파리 폼 새로고침 버그"* → `mobile-safari-form-refresh`.
75
- 3. 사용자에게 슬러그 confirm (선택):
76
- *"파일명: `<NNN>_<slug>.md` 어떠세요? (수정 원하면 말씀)"*
77
-
78
- ### Step 5 — 빈 골격 작성
79
-
80
- `# TASK-<NNN> — <한국어 제목>` + 헤더 5컬럼 + 6 섹션 placeholder. 양식은 `template/.project/rules/TASK_DOC_RULE.md` §1.3 참조.
81
-
82
- ```markdown
83
- # TASK-<NNN> — <한국어 제목>
84
-
85
- | 생성일 | 플랜 | 유형 | 규모 | 상태 |
86
- |--------|------|------|------|------|
87
- | <YYYY-MM-DD> | <vX.X> | <유형> | <규모> | draft |
88
-
89
- ## Requirements
90
-
91
- (사용자 요구 + 메인 증폭 — `/task-plan`에서 채움)
92
-
93
- ## Scope
94
-
95
- (영향 범위 — `/task-plan`에서 채움)
96
-
97
- ## Dev Plan
98
-
99
- (Phase 1, 2, ... — `/task-plan`에서 채움)
100
-
101
- ## Test Plan
102
-
103
- (테스트 방법 + 검증 명령 — `/task-plan`에서 채움)
104
-
105
- ## Result
106
-
107
- (진행 + 테스트 결과 — `/task-dev`, `/task-test`에서 채움)
108
- ```
109
-
110
- - 6 섹션 placeholder는 *빈 헤딩 + 한 줄 안내*. 구체 내용 X.
111
- - 폴더 승격 시 `TASK-<NNN>_<slug>/task.md`로 동일 본문 작성. spec-diffs/screenshots는 vX.X 공통(`.project/tasks/<vX.X>/{spec-diffs,screenshots}/` — `/plan-init` Step 5가 mkdir)을 그대로 사용. task 폴더 안에 spec-diffs/screenshots 별도 생성 X.
112
-
113
- ### Step 6 — 결과 보고
114
-
115
- ```
116
- ✅ TASK-<NNN> 생성 완료
117
- - 파일: .project/tasks/<vX.X>/<NNN>_<slug>.md (또는 폴더 승격 시 경로)
118
- - 헤더: <생성일> / <vX.X> / <유형> / <규모> / draft
119
- - 다음: /task-plan TASK-<NNN> 으로 기획 채우기
120
- ```
121
-
122
- ## 도구 가이드
123
-
124
- - **Read**: `.project/AGENT-GUIDE.md` (활성 버전 확인)
125
- - **Bash**: `ls .project/tasks/<vX.X>/` (NNN 결정), `mkdir -p .project/tasks/<vX.X>/TASK-<NNN>_<slug>` (폴더 승격 시 — task 폴더 자체만, spec-diffs/screenshots는 vX.X 공통 사용)
126
- - **Write**: 새 task.md 생성
127
- - **AskUserQuestion**: 분기 2 인터뷰 (한 번에 한 질문)
128
-
129
- ## 주의사항
130
-
131
- - **본문 채우기 금지** — 본 스킬은 *빈 골격 생성만*. Requirements / Scope / Dev Plan / Test Plan 본문은 *반드시* `/task-plan`에서. 미리 채우면 task 의도가 흐트러져 다음 단계 인터뷰 흐름이 깨짐.
132
- - **자동 추정 진행 X** — 직전 맥락 명확해도 *제안 + 사용자 OK* 거친 후 파일 생성. 맥락 부족 시 인터뷰. 빠뜨린 메타(유형/규모) 채로 작성 금지.
133
- - **상태는 `draft` 고정** — `/task-init` 끝의 상태는 `draft` 외 작성 금지. 다음 상태(`planned`)는 `/task-plan` 끝에 갱신.
134
- - **NNN 충돌 회피** — `ls` 결과 정확히 파싱. 파일/폴더 둘 다 검사 (폴더 승격 task의 NNN도 같은 시퀀스).
135
- - **slug 한국어 잔존 X** — 영어 kebab-case로 변환. *"로그인-기능"* 같은 한글 슬러그 금지.
136
- - **헤더 5컬럼 모두 채움** — *"미정"* placeholder 작성 금지. 메타 부족하면 사용자에게 묻기.
137
-
138
- ## 상태 전이
139
-
140
- | 진입 시 | 종료 시 |
141
- |--------|--------|
142
- | (없음 — 신규 생성) | `draft` |