@angar2/taskery 0.8.0 → 1.0.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 +423 -188
- package/bin/add.js +27 -99
- package/bin/backlog.js +240 -113
- package/bin/check.js +166 -0
- package/bin/commands.js +151 -0
- package/bin/finish.js +353 -0
- package/bin/init.js +99 -190
- package/bin/install.js +143 -0
- package/bin/lib.js +515 -1320
- package/bin/mcp.js +31 -263
- package/bin/orche.js +240 -0
- package/bin/plan.js +58 -120
- package/bin/prepare.js +326 -0
- package/bin/prune.js +46 -176
- package/bin/status.js +57 -151
- package/bin/taskery.js +76 -120
- package/bin/update.js +66 -266
- package/package.json +5 -5
- package/template/.taskery/BACKLOG.md +38 -0
- package/template/.taskery/rules/CHANGELOG_RULE.md +31 -0
- package/template/.taskery/rules/DEV_RULE.local.md +8 -0
- package/template/.taskery/rules/GIT_RULE.md +82 -0
- package/template/.taskery/rules/MOCKUP_RULE.md +19 -0
- package/template/.taskery/rules/TASKERY_RULE.md +112 -0
- package/template/.taskery/rules/TASK_DOC_RULE.md +84 -0
- package/template/.taskery/rules/TEST_RULE.local.md +16 -0
- package/template/AGENTS.md +15 -53
- package/template/shared/skills/add-backlog/SKILL.md +8 -38
- package/template/shared/skills/log-friction/SKILL.md +10 -88
- package/template/shared/skills/plan-init/SKILL.md +10 -98
- package/template/shared/skills/project-init/SKILL.md +13 -342
- package/template/shared/skills/task-close/SKILL.md +16 -319
- package/template/shared/skills/task-dev/SKILL.md +19 -233
- package/template/shared/skills/task-init/SKILL.md +11 -68
- package/template/shared/skills/task-orche/SKILL.md +35 -0
- package/template/shared/skills/task-plan/SKILL.md +19 -498
- package/template/shared/skills/task-test/SKILL.md +23 -342
- package/bin/close.js +0 -86
- package/bin/fork.js +0 -112
- package/bin/migrate.js +0 -344
- package/bin/set-status.js +0 -98
- package/template/.claude/hooks/closed-immutable.sh +0 -77
- package/template/.claude/settings.json +0 -18
- package/template/.claude/skills/run-team/SKILL.md +0 -145
- package/template/.codex/agents/task-tester.toml +0 -41
- package/template/.codex/agents/test-plan-author.toml +0 -34
- package/template/.codex/config.toml +0 -17
- package/template/.codex/hooks/closed-immutable.sh +0 -66
- package/template/.project/changelog/.gitkeep +0 -0
- package/template/.project/flows/.gitkeep +0 -0
- package/template/.project/plans/.gitkeep +0 -0
- package/template/.project/rules/CHANGELOG_RULE.md +0 -97
- package/template/.project/rules/GIT_RULE.md +0 -325
- package/template/.project/rules/MOCKUP_RULE.md +0 -86
- package/template/.project/rules/TASKERY_RULE.md +0 -237
- package/template/.project/rules/TASK_DOC_RULE.md +0 -668
- package/template/.project/shared/received/completed/.gitkeep +0 -0
- package/template/.project/shared/sent/completed/.gitkeep +0 -0
- package/template/.project/tasks/.gitkeep +0 -0
- package/template/shared/hooks/git-guard.sh +0 -108
|
@@ -1,76 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-init
|
|
3
|
-
description:
|
|
3
|
+
description: 태스크 시작 — 요청이나 백로그 항목을 태스크 하나로 정리해 prepare-task로 번호·브랜치·워크트리·태스크 문서를 만들고, 직접 수행이면 워크트리로 들어간다
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# task-init
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
새 태스크를 여는 단계다. 판단은 아래를 따르고, 번호·분기·문서·기록은 명령이 한다.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
- 태스크를 여는 쪽이 부른다. 오케스트레이션이 맡긴 태스크의 수행 세션은 task-plan부터 한다.
|
|
11
|
+
- 요청이나 백로그 항목(`backlog-get`)을 읽고, 태스크 하나로 묶을 범위·유형·크기(small·medium·large)·이름을 정한다. 백로그 항목을 옮기면 `--from BL-3,BL-7`로, `PLAN.md` 목록의 항목을 열면 `--item <항목 번호>`로 넘긴다.
|
|
12
|
+
- 스위치(기획·개발·테스트)는 기본이 모두 켜짐이다. 사용자가 말했거나 요청에서 강하게 유추될 때만(예: 시나리오대로 시험만 하는 태스크 → 개발 꺼짐) 한 줄로 묻고 정한다. 개발과 테스트를 둘 다 끌 수는 없다.
|
|
13
|
+
- 진행 범위는 사용자가 말한 대로 넘긴다. 말하지 않았으면 한 단계다.
|
|
14
|
+
- `prepare-task`를 부른다. 워크트리·브랜치 생략(`--no-worktree`·`--no-branch`)은 사용자가 명시했을 때만 넘기고, 먼저 제안하지 않는다.
|
|
15
|
+
- 직접 수행이면 만들어진 워크트리로 들어가 이어 간다(Claude Code는 EnterWorktree). Codex는 워크트리로 옮겨 갈 수 없으므로 워크트리 경로를 알리고 멈춘다(사용자가 그 워크트리에서 Codex를 연다). 사용자가 워크트리를 생략했으면 본진에서 그대로 이어 간다. 범위가 한 단계면 여기서 멈추고 보고한다.
|
|
11
16
|
|
|
12
|
-
|
|
17
|
+
## 부르는 명령
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- 새 task 시작 (*"~~ 추가해줘"* / *"~~ 버그 고쳐"* / *"~~ 리팩터링"*), 백로그 진행(*"BL-003 진행하자"*), 로드맵 진행(*"Stage 2 진행하자"* / *"로드맵 다음 거 시작"*).
|
|
17
|
-
- 인자 = (선택) 주제 / 유형 / 출처(BL-NNN, ST-N, DR) / 규모.
|
|
18
|
-
- **두 분기**: ① **제안** — 직전 맥락 명확 → *"이렇게 task 만들까요?"* + confirm. ② **인터뷰** — 맥락 부족 → 한 번에 한 질문씩.
|
|
19
|
-
- **자동 추정 진행 X** — confirm 또는 답 받기 전 워크트리/파일 생성 금지.
|
|
20
|
-
|
|
21
|
-
## Step 1 — 메타 수집
|
|
22
|
-
|
|
23
|
-
직전 대화 정독 → 추정 가능하면 분기 1(제안), 불가하면 분기 2(인터뷰):
|
|
24
|
-
- Q1 *"무슨 작업? (한 줄로)"* / Q2 *"유형? (feature / bug / improvement / refactor / docs / chore)"* / Q3 *"출처? (백로그 BL-NNN / 로드맵 Stage ST-N / 직접 요구사항 DR)"* / Q4 *"규모? (micro / small / medium / large)"* / (필요 시) Q5 *"plan `<NNN_slug>` 맞나요?"*
|
|
25
|
-
|
|
26
|
-
수집 항목(모두 확정 후 진행): 주제(한국어) · 유형 · 출처 · 규모 · plan(활성 plan — `status` 도구에서). 활성 plan 부재 시 *"`/plan-init` 먼저 실행할까요?"* 안내 + 중단.
|
|
27
|
-
|
|
28
|
-
## Step 2 — 출처별 메타 + 슬러그
|
|
29
|
-
|
|
30
|
-
- **BL**: `backlog_get` 도구(또는 `npx @angar2/taskery backlog-get BL-NNN`) → `{ blId, status, type, title, slug, summary, target, taskNums }`. 항목 없으면 에러 → 보고 + 중단. **개요/대상 영역은 task.md §1 Requirements 초안 시작점**으로 기억(본문은 task-plan에서). 슬러그 = 반환 `slug` 그대로(재현성 — 별도 변환 X).
|
|
31
|
-
- **ST**: `$MAIN_WT/.project/plans/<활성 plan>/ROADMAP.md`에서 해당 Stage N의 작업 단위 확인 → 이번 task가 맡을 작업 단위를 사용자와 confirm. 슬러그 = 그 작업 단위 제목 → 영어 kebab-case(3 단어 이내) → confirm. (ROADMAP은 Stage 단위·별도 항목 채번 없음 — `ST-N` = Stage 번호 그대로.)
|
|
32
|
-
- **DR**: 사용자 발화에서 주제 그대로. 슬러그 = 한국어 제목 → 영어 kebab-case(3 단어 이내) → confirm.
|
|
33
|
-
|
|
34
|
-
**이미 `[x]` BL 재진행 케이스** — `backlog_get` 결과 `status==='checked'` & `taskNums` 비어있지 않으면: 사용자 호출 *"BL-NNN은 ${taskNums}로 이미 처리된 적 있어. 새 task로 다시 진행할까?"* → OK면 새 TASK 진행(§4 마킹은 콤마 누적) / X면 중단.
|
|
35
|
-
|
|
36
|
-
## Step 3 — 파일 vs 폴더 + confirm
|
|
37
|
-
|
|
38
|
-
- **파일 default**: 단일 `NNN_<slug>.md`. **폴더 승격은 *사용자 명시* 시에만**(*"폴더로 만들어줘"*) — 규모 large·자료 다수여도 자동 승격 X.
|
|
39
|
-
- spec-diffs / screenshots / mockup은 단일/폴더 무관 `.project/tasks/<NNN_slug>/{spec-diffs,screenshots,mockup}/` 공통(TASK_DOC_RULE §1.5).
|
|
40
|
-
- 사용자에게 브랜치 구성요소(`{타입}/{개발자}_TASK-???_{출처}_{슬러그}`, NNN은 fork가 확정) + 파일/폴더 confirm.
|
|
41
|
-
|
|
42
|
-
## Step 4 — 분기 + 골격 생성 (`task_init`) + BL 마킹
|
|
43
|
-
|
|
44
|
-
`task_init` 도구(또는 `npx @angar2/taskery fork <타입> <개발자> <출처> <슬러그> --size <규모> --title "<한국어 제목>" [--promote]`) 한 번으로 **채번 → 워크트리·브랜치 생성**(init 락 원자 — 병렬 task-init 번호 충돌·동일 출처 중복(**BL·구형 RM 한정** — `ST-N`은 Stage 하나에서 복수 task가 정상, `DR`은 ID 없음이라 둘 다 중복 검사 제외)·동일 브랜치명을 코드가 차단)에 더해 **빈 골격 task.md 자동 생성**(생성일=오늘 · plan=활성 plan · 유형 자동매핑 `improve`→`improvement` · **부모 브랜치=fork 시점 현재 브랜치 자동 기록**(dev 고정 아님) · status=draft · `.gitignore` 케이스로 위치 자동 판정)까지 수행한다.
|
|
45
|
-
|
|
46
|
-
- 반환 `{ taskNum, nnn, branch, wtPath, projectId, parent, docPath, registered, promoted }` (`parent` = fork 시점 현재 브랜치 = 이 task의 부모 브랜치. `/task-close`가 이 브랜치로 되병합한다). 폴더 승격은 `--promote`/`promote:true`.
|
|
47
|
-
- 에러 시(*"… 이미 진행중"* / *"… detached HEAD"* — 부모 브랜치(현재 브랜치) 확인·SSoT를 fork가 강제) stderr 메시지 그대로 보고 + 중단.
|
|
48
|
-
- **BL 출처면** 직후 `backlog_mark` 도구(또는 `npx @angar2/taskery backlog-mark BL-NNN TASK-NNN`)로 `[ ]→[x]` + `- TASK:` 마크(콤마 누적, withMetaLock). ST/DR은 skip.
|
|
49
|
-
|
|
50
|
-
## Step 5 — 골격 확인 + 보고
|
|
51
|
-
|
|
52
|
-
반환 `docPath`(절대 경로)를 Read해 헤더 6컬럼 + 본문 5 섹션(Requirements / Scope / Dev Plan / Test Plan / Result) placeholder + status=draft 확인만 한다. (`TASK_DOC_RULE`이 말하는 "6 섹션"은 헤더 표를 1개로 세는 표기다.) **본문 작성 금지** — Requirements / Scope / Dev Plan / Test Plan은 *반드시* `/task-plan`에서.
|
|
53
|
-
|
|
54
|
-
> **폴백** (반환에 `docPath` 없이 `scaffoldError`만 있을 때만): TASK_DOC_RULE §1.3 형식으로 해당 위치에 직접 작성(생성일=오늘, status=draft, 단일=`<NNN>_<slug>.md` / 폴더=`TASK-<NNN>_<slug>/task.md`).
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
✅ TASK-<NNN> 생성 완료
|
|
58
|
-
- 워크트리: <wtPath> / 브랜치: <branch> / task 문서: <docPath>
|
|
59
|
-
- 헤더: <생성일> / <plan> / <유형> / <규모> / <부모 브랜치> / draft
|
|
60
|
-
- BL 마킹: BL-<NNN> [x] (BL 출처 시. ST/DR 생략)
|
|
61
|
-
- 다음: /task-plan TASK-<NNN> 으로 기획 채우기
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## 주의사항
|
|
65
|
-
|
|
66
|
-
- **워크트리 생성 + 골격 작성만** — 본문 채우기 금지. Requirements / Scope / Dev Plan / Test Plan은 *반드시* `/task-plan`.
|
|
67
|
-
- **단계 경계** — 허용: ROADMAP의 해당 Stage 확인(출처가 `ST-N`일 때) / SSoT 조회 / `task_init` 호출 / 빈 골격 확인. 금지: ARCHITECTURE/API-SPEC/FEATURES 등 루트 제품 관통 문서 본문 Read · 도메인 코드 Read·Grep · 기존 task 본문 Read (그건 `/task-plan` 영역).
|
|
68
|
-
- **자동 추정 진행 X** — 맥락 명확해도 *제안 + OK* 후 생성.
|
|
69
|
-
- **상태는 `draft` 고정** · **slug 영어 kebab-case** · **헤더 6컬럼 모두 채움**(*"미정"* placeholder X — 코드가 채움. 부모 브랜치도 코드 자동 기록).
|
|
70
|
-
- **fork 실패(같은 브랜치명 / 같은 출처 진행중 — BL·구형 RM 한정) → 사용자 호출** + 중단(*"다른 세션이 같은 항목 진행 중"*). `ST-N`·`DR`은 중복 게이트가 없으므로 같은 Stage로 두 번째 task를 만들 때 코드가 막아주지 않는다 — 중복 진행 여부는 메인이 `status`로 확인한다.
|
|
71
|
-
|
|
72
|
-
## 상태 전이
|
|
73
|
-
|
|
74
|
-
| 진입 시 | 종료 시 |
|
|
75
|
-
|--------|--------|
|
|
76
|
-
| (없음 — 신규 생성) | `draft` |
|
|
19
|
+
- `backlog-get` → `prepare-task`
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-orche
|
|
3
|
+
description: 오케스트레이션 — 백로그를 태스크로 기획하고, 태스크마다 열어 Orca 새 탭의 태스크 세션에 맡기고, 보고를 받아 끝난 태스크를 정리한다
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# task-orche
|
|
7
|
+
|
|
8
|
+
오케스트레이션 세션이 본진에서 여러 태스크를 기획·배분·정리하는 스킬이다.
|
|
9
|
+
|
|
10
|
+
- 태스크는 서브에이전트에 맡기지 않는다. 태스크 세션은 Orca 새 탭의 독립 세션이며, 사용자가 그 탭에서 확인하고 개입할 수 있어야 한다.
|
|
11
|
+
- 태스크마다 `task-init`(여는 일)을 이 세션이 하고, `orca-dispatch-task`로 태스크 세션을 띄운다. 에이전트와 모델은 사용자가 정하고, 정하지 않았으면 태스크 구성 확인 때 묻는다.
|
|
12
|
+
- 마무리 완료 보고(병합, 또는 병합이 없는 태스크의 마무리)가 오면 `close-task`로 정리하고, 연결된 백로그와 남은 태스크를 확인한다.
|
|
13
|
+
- 보고에 `.local` 규칙 제안이 담겨 오면 사용자에게 보여 주고, 사용자가 이 세션에서 승인하면 이 세션이 `.local`에 넣는다.
|
|
14
|
+
|
|
15
|
+
## 운영 방식
|
|
16
|
+
|
|
17
|
+
아래는 상황에 따라 고를 수 있는 길이다. 정해진 절차가 아니다.
|
|
18
|
+
사용자가 준 지침(동시 진행 수·순서·제외할 태스크)이 있으면 그것을 먼저 따른다.
|
|
19
|
+
|
|
20
|
+
- **태스크 구성 확인**: 무엇을 어떤 태스크로 묶어 어떤 순서·에이전트로 진행할지 사용자가 아직 보지 않았다면, 태스크를 열기 전에 표 하나(태스크별 백로그 항목·한 줄 목표·크기·스위치·선행 태스크·에이전트와 모델)로 보여 주고 확인받는다. 사용자의 지시가 이미 구성과 진행 방식을 정했으면(예: "로드맵 30건을 순서대로 진행해") 다시 묻지 않고 그대로 진행한다. 정한 구성은 `PLAN.md` 태스크 목록에 항목으로 적고(이미 있으면 그대로), 태스크를 열 때 `--item`으로 잇는다 — 아직 열지 않은 태스크도 대화가 아니라 파일에 남는다.
|
|
21
|
+
- **여러 태스크를 한꺼번에 열 때**: 백로그 읽기·태스크 나누기·이름·크기·스위치는 모든 태스크를 한 번에 본 뒤 정한다. `prepare-task`와 `orca-dispatch-task`는 태스크마다 동시에 불러도 된다.
|
|
22
|
+
- **동시에 돌려도 되는가**: `PLAN.md`에 적힌 선행 태스크가 모두 끝난 항목만 연다(`prepare-task --item <항목 번호>` — 선행이 끝나기 전에 열면 선행 코드가 없는 부모에서 갈라진다)(끝났는지는 `status`가 보여 준다). 선행 관계가 없어도 같은 파일을 크게 만지는 태스크끼리는 동시에 돌리면 병합 때 충돌하기 쉬우므로 순서를 두는 편이 낫다.
|
|
23
|
+
- **태스크가 많을 때**: 동시에 진행하는 태스크 세션 수에 상한을 둔다. 사용자가 정하지 않았으면 시작 전에 한 번 묻는다. 태스크 하나가 끝나 정리되면 시작할 수 있는 다음 태스크로 빈자리를 채운다.
|
|
24
|
+
- **순서가 정해진 로드맵일 때**: 시작할 수 있는 태스크가 한 번에 하나뿐이므로 하나씩 돌아간다. 태스크가 끝나 정리되면 곧바로 새 탭에 다음 태스크를 맡긴다.
|
|
25
|
+
- **사용자 확인이 필요할 때**: 태스크 세션이 사용자 확인(계획 확인·눈으로 볼 시나리오·병합 확인·FAIL·풀지 못한 충돌)으로 멈추면, 사용자는 그 태스크 탭에서 직접 확인하고 답한다. 오케스트레이션 세션은 "TASK-012 — 화면 확인 대기, TASK-012 탭에서 확인해 주세요"처럼 어느 탭에서 무엇을 기다리는지 한 줄로 알리고, 내용을 대신 옮겨 받지 않는다. 태스크 세션의 질문 중 오케스트레이션이 기획하며 이미 정한 것은 직접 답하고, 사용자 판단이 필요한 것은 같은 방식으로 사용자에게 넘긴다.
|
|
26
|
+
- **보고 받기**: 태스크 세션을 띄운 뒤 `npx @angar2/taskery wait-reports`를 백그라운드 셸로 걸어 둔다(MCP 도구로 부르지 않는다). 끝나면(보고가 왔거나 10분이 지남) 깨어나 처리하고 다시 걸어 둔다. 보고 줄은 태스크 세션의 보고일 뿐이며, 승인은 사용자 자신의 메시지로만 받는다.
|
|
27
|
+
- **태스크 탭에 보내는 말**: `orca terminal send`로 태스크 탭에 보내는 모든 말은 `[오케스트레이션]`으로 시작한다. 태스크 세션은 이 머리표가 붙은 말을 사용자 확인·승인으로 보지 않는다.
|
|
28
|
+
- **질문에 답하기**: 태스크 세션의 질문 중 기획하며 이미 정한 것은 `orca terminal send`로 그 태스크 탭에 답한다. 사용자 판단이 필요한 것은 위 '사용자 확인이 필요할 때'처럼 사용자에게 넘긴다.
|
|
29
|
+
- **멈춤 확인**: `wait-reports`가 오래 조용한 탭을 알려 주면 그 탭 화면을 읽어(`orca terminal read`) 확인한다. 멈췄으면 이어 가도록 한 줄 보내고, 풀리지 않으면 사용자에게 알린다.
|
|
30
|
+
- **오래 운영할 때**: 진행 상황을 대화 기억에 기대지 않는다. 대화가 요약된 뒤에도 `PLAN.md`·각 태스크 문서·`status`로 어디까지 왔는지 다시 확인하고 이어 간다.
|
|
31
|
+
- **더 시작할 수 없을 때**: 진행 중인 태스크가 없고 시작할 수 있는 태스크도 없으면, 남은 태스크와 막힌 이유를 사용자에게 보고한다.
|
|
32
|
+
|
|
33
|
+
## 부르는 명령
|
|
34
|
+
|
|
35
|
+
- `prepare-task`, `orca-dispatch-task`, `wait-reports`, `close-task`
|