From 776b1f03478031c0979ba642105c7b4676dcb1ca Mon Sep 17 00:00:00 2001 From: devRonPark Date: Thu, 9 Jul 2026 12:32:43 +0900 Subject: [PATCH] apply superpowers benchmark gates --- .agents/skills/branch-checkout/SKILL.md | 12 +- .agents/skills/git-push/SKILL.md | 10 +- .agents/skills/grill-me/SKILL.md | 7 +- .agents/skills/harness-plan/SKILL.md | 3 + .agents/skills/harness-review/SKILL.md | 16 +- .agents/skills/harness-work/SKILL.md | 12 +- .agents/skills/pr-create/SKILL.md | 14 +- .claude/commands/branch-checkout.md | 9 +- .claude/commands/git-push.md | 9 +- .claude/commands/pr-create.md | 6 +- .harness/CONTEXT_INDEX.md | 6 + .harness/RUN_REPORT.md | 11 +- .harness/shared/planning/latest.json | 7 + .../plan-20260709-121720-5862c6/context.json | 289 ++++++++++++++++++ .../decomposition-report.md | 18 ++ .../proposed-tasks.json | 74 +++++ .../CHECKPOINTS.md | 8 + .../4.14-superpowers-workflow-docs/HANDOFF.md | 21 ++ .../4.14-superpowers-workflow-docs/LOG.md | 9 + .../RUN_REPORT.md | 25 ++ .../4.14-superpowers-workflow-docs/STATE.md | 29 ++ .../4.14-superpowers-workflow-docs/TASKS.md | 14 + .../CHECKPOINTS.md | 8 + .../HANDOFF.md | 21 ++ .../4.15-planning-decomposition-rules/LOG.md | 9 + .../RUN_REPORT.md | 25 ++ .../STATE.md | 29 ++ .../TASKS.md | 14 + .../CHECKPOINTS.md | 8 + .../4.16-tdd-verification-gates/HANDOFF.md | 21 ++ .../tasks/4.16-tdd-verification-gates/LOG.md | 9 + .../4.16-tdd-verification-gates/RUN_REPORT.md | 25 ++ .../4.16-tdd-verification-gates/STATE.md | 29 ++ .../4.16-tdd-verification-gates/TASKS.md | 14 + .../tasks/4.17-review-verdict/CHECKPOINTS.md | 8 + .harness/tasks/4.17-review-verdict/HANDOFF.md | 21 ++ .harness/tasks/4.17-review-verdict/LOG.md | 9 + .../tasks/4.17-review-verdict/RUN_REPORT.md | 25 ++ .harness/tasks/4.17-review-verdict/STATE.md | 29 ++ .harness/tasks/4.17-review-verdict/TASKS.md | 14 + .../4.18-git-helper-safety/CHECKPOINTS.md | 8 + .../tasks/4.18-git-helper-safety/HANDOFF.md | 21 ++ .harness/tasks/4.18-git-helper-safety/LOG.md | 9 + .../4.18-git-helper-safety/RUN_REPORT.md | 25 ++ .../tasks/4.18-git-helper-safety/STATE.md | 29 ++ .../tasks/4.18-git-helper-safety/TASKS.md | 14 + .../CHECKPOINTS.md | 8 + .../HANDOFF.md | 21 ++ .../4.19-skeleton-evidence-template/LOG.md | 9 + .../RUN_REPORT.md | 25 ++ .../4.19-skeleton-evidence-template/STATE.md | 29 ++ .../4.19-skeleton-evidence-template/TASKS.md | 14 + AGENTS.md | 4 +- BLUEPRINT.md | 24 +- CLAUDE.md | 14 +- Plans.md | 13 + README.md | 6 +- agents/quality-gates.md | 22 +- agents/task-decomposer.md | 10 + agents/test-agent.md | 21 +- tasks/index.json | 70 +++++ templates/skeleton/.harness/RUN_REPORT.md | 11 +- 62 files changed, 1265 insertions(+), 69 deletions(-) create mode 100644 .harness/shared/planning/latest.json create mode 100644 .harness/shared/planning/runs/plan-20260709-121720-5862c6/context.json create mode 100644 .harness/shared/planning/runs/plan-20260709-121720-5862c6/decomposition-report.md create mode 100644 .harness/shared/planning/runs/plan-20260709-121720-5862c6/proposed-tasks.json create mode 100644 .harness/tasks/4.14-superpowers-workflow-docs/CHECKPOINTS.md create mode 100644 .harness/tasks/4.14-superpowers-workflow-docs/HANDOFF.md create mode 100644 .harness/tasks/4.14-superpowers-workflow-docs/LOG.md create mode 100644 .harness/tasks/4.14-superpowers-workflow-docs/RUN_REPORT.md create mode 100644 .harness/tasks/4.14-superpowers-workflow-docs/STATE.md create mode 100644 .harness/tasks/4.14-superpowers-workflow-docs/TASKS.md create mode 100644 .harness/tasks/4.15-planning-decomposition-rules/CHECKPOINTS.md create mode 100644 .harness/tasks/4.15-planning-decomposition-rules/HANDOFF.md create mode 100644 .harness/tasks/4.15-planning-decomposition-rules/LOG.md create mode 100644 .harness/tasks/4.15-planning-decomposition-rules/RUN_REPORT.md create mode 100644 .harness/tasks/4.15-planning-decomposition-rules/STATE.md create mode 100644 .harness/tasks/4.15-planning-decomposition-rules/TASKS.md create mode 100644 .harness/tasks/4.16-tdd-verification-gates/CHECKPOINTS.md create mode 100644 .harness/tasks/4.16-tdd-verification-gates/HANDOFF.md create mode 100644 .harness/tasks/4.16-tdd-verification-gates/LOG.md create mode 100644 .harness/tasks/4.16-tdd-verification-gates/RUN_REPORT.md create mode 100644 .harness/tasks/4.16-tdd-verification-gates/STATE.md create mode 100644 .harness/tasks/4.16-tdd-verification-gates/TASKS.md create mode 100644 .harness/tasks/4.17-review-verdict/CHECKPOINTS.md create mode 100644 .harness/tasks/4.17-review-verdict/HANDOFF.md create mode 100644 .harness/tasks/4.17-review-verdict/LOG.md create mode 100644 .harness/tasks/4.17-review-verdict/RUN_REPORT.md create mode 100644 .harness/tasks/4.17-review-verdict/STATE.md create mode 100644 .harness/tasks/4.17-review-verdict/TASKS.md create mode 100644 .harness/tasks/4.18-git-helper-safety/CHECKPOINTS.md create mode 100644 .harness/tasks/4.18-git-helper-safety/HANDOFF.md create mode 100644 .harness/tasks/4.18-git-helper-safety/LOG.md create mode 100644 .harness/tasks/4.18-git-helper-safety/RUN_REPORT.md create mode 100644 .harness/tasks/4.18-git-helper-safety/STATE.md create mode 100644 .harness/tasks/4.18-git-helper-safety/TASKS.md create mode 100644 .harness/tasks/4.19-skeleton-evidence-template/CHECKPOINTS.md create mode 100644 .harness/tasks/4.19-skeleton-evidence-template/HANDOFF.md create mode 100644 .harness/tasks/4.19-skeleton-evidence-template/LOG.md create mode 100644 .harness/tasks/4.19-skeleton-evidence-template/RUN_REPORT.md create mode 100644 .harness/tasks/4.19-skeleton-evidence-template/STATE.md create mode 100644 .harness/tasks/4.19-skeleton-evidence-template/TASKS.md diff --git a/.agents/skills/branch-checkout/SKILL.md b/.agents/skills/branch-checkout/SKILL.md index 80b6415..d27012d 100644 --- a/.agents/skills/branch-checkout/SKILL.md +++ b/.agents/skills/branch-checkout/SKILL.md @@ -9,12 +9,14 @@ description: 작업 전용 Git 브랜치를 만들거나 전환한다. 별도 ## 절차 -1. `git status --short`와 `git branch --show-current`를 확인한다. +1. `git status --short`, `git branch --show-current`, `git worktree list`, `git submodule status`를 확인한다. 2. 변경분이 있으면 요약하고, 전환해도 되는지 판단한다. 사용자 변경은 되돌리지 않는다. -3. 필요하면 `git fetch origin`으로 원격 기준을 최신화한다. -4. 기존 브랜치면 `git switch {branch}`를 실행한다. -5. 새 브랜치면 `task/{task-id}-{short-slug}` 형식을 선호해 `git switch -c {branch}`를 실행한다. -6. 전환 후 현재 브랜치와 남은 변경분을 보고한다. +3. worktree나 submodule 상태가 전환에 영향을 주면 먼저 보고한다. +4. 필요하면 baseline test 실행 여부를 사용자에게 보고한다. 실행하지 않았다면 "baseline test not run"으로 남긴다. +5. 필요하면 `git fetch origin`으로 원격 기준을 최신화한다. +6. 기존 브랜치면 `git switch {branch}`를 실행한다. +7. 새 브랜치면 `task/{task-id}-{short-slug}` 형식을 선호해 `git switch -c {branch}`를 실행한다. +8. 전환 후 현재 브랜치, worktree 상태, 남은 변경분을 보고한다. ## 제한 diff --git a/.agents/skills/git-push/SKILL.md b/.agents/skills/git-push/SKILL.md index 1c8ebd4..a697eb5 100644 --- a/.agents/skills/git-push/SKILL.md +++ b/.agents/skills/git-push/SKILL.md @@ -9,14 +9,16 @@ description: 현재 Git 브랜치를 안전하게 원격에 push한다. git push ## 절차 -1. `git status --short`와 `git branch --show-current`를 확인한다. +1. `git status --short`, `git branch --show-current`, `git worktree list`를 확인한다. 2. 현재 브랜치가 `main`/`master`면 push하지 말고 사용자 확인을 받는다. 3. 커밋되지 않은 변경분이 있으면 push 대상이 아니므로 중단하고 보고한다. -4. upstream이 있으면 `git push`를 실행한다. -5. upstream이 없으면 `git push -u origin {current-branch}`를 실행한다. -6. push 결과와 PR 작성 가능 여부를 보고한다. +4. 최근 RUN_REPORT에 fresh verification evidence와 review approval이 있는지 확인한다. 없으면 PR 가능 상태가 아니라고 보고한다. +5. upstream이 있으면 `git push`를 실행한다. +6. upstream이 없으면 `git push -u origin {current-branch}`를 실행한다. +7. push 결과와 PR 작성 가능 여부를 보고한다. ## 제한 - `--force`, `--force-with-lease`는 사용하지 않는다. - 인증/권한/remote 오류는 원문을 요약하고 멈춘다. +- merge, PR, keep, discard 선택지는 사용자가 명시 요청할 때만 제시한다. diff --git a/.agents/skills/grill-me/SKILL.md b/.agents/skills/grill-me/SKILL.md index 0f5c988..24a2526 100644 --- a/.agents/skills/grill-me/SKILL.md +++ b/.agents/skills/grill-me/SKILL.md @@ -14,9 +14,10 @@ Codex용 PRD 인터뷰 스킬이다. `CLAUDE.md` 기획 규칙과 `.claude/skill 2. 코드베이스나 기존 문서로 답할 수 있는 내용은 직접 확인한다. 3. 사용자에게 질문은 한 번에 하나만 한다. 4. 모든 질문에는 권장 답과 이유를 함께 제시한다. -5. 목적, 대상 사용자, 핵심 기능 3±2개, Non-goals, 측정 가능한 성공 기준이 나오면 질문을 멈춘다. -6. `docs/templates/PRD.md`를 기준으로 `docs/PRD.md`를 작성하고, 미확정 항목은 Open Questions에 남긴다. -7. 승인 후 UserFlow·DESIGN·Architecture 보완과 `$harness-plan` 실행을 안내한다. +5. 목적, 제약, 대상 사용자, 핵심 기능 3±2개, Non-goals, 측정 가능한 성공 기준을 확인한다. +6. 구현 전 접근안 2-3개와 추천안을 짧게 비교한다. 사용자가 답하지 못하면 권장안을 임시 결정으로 둔다. +7. `docs/templates/PRD.md`를 기준으로 `docs/PRD.md`를 작성하고, 미확정 항목은 Open Questions에 남긴다. +8. 승인 후 UserFlow·DESIGN·Architecture 보완과 `$harness-plan` 실행을 안내한다. ## 기본값 diff --git a/.agents/skills/harness-plan/SKILL.md b/.agents/skills/harness-plan/SKILL.md index 893a232..91e3f77 100644 --- a/.agents/skills/harness-plan/SKILL.md +++ b/.agents/skills/harness-plan/SKILL.md @@ -24,3 +24,6 @@ Codex에서 Claude Code `/harness-plan`에 해당하는 절차를 직접 수행 - `.harness/events/planning.jsonl`의 사용자-facing 메시지는 쉬운 문장으로 남긴다. - 새 Task는 `agents/task-decomposer.md`의 INVEST·DoD·Acceptance 기준과 `agents/quality-gates.md`의 scope/YAGNI 기준을 만족해야 한다. +- 각 Task는 Files, Interfaces, Verification 관점이 DoD 또는 Acceptance에 드러나야 한다. +- 2-5분 단위 코드 step까지 쪼개지 않는다. 독립 검증 가능한 1 PR 이내 단위면 충분하다. +- placeholder, no-op, 실패를 숨기는 Acceptance는 proposal에 넣지 않는다. diff --git a/.agents/skills/harness-review/SKILL.md b/.agents/skills/harness-review/SKILL.md index 60b0e07..06af9e7 100644 --- a/.agents/skills/harness-review/SKILL.md +++ b/.agents/skills/harness-review/SKILL.md @@ -10,14 +10,20 @@ Codex에서 Claude Code `/harness-review`에 해당하는 리뷰 절차를 수 ## 절차 1. `AGENTS.md`, `CLAUDE.md`, `agents/quality-gates.md`, 대상 Task, Acceptance evidence, 현재 diff를 읽는다. -2. 코드 리뷰 관점으로 버그, 회귀 위험, 누락된 테스트, 규칙 위반, `agents/quality-gates.md` 위반을 우선 찾는다. -3. findings를 심각도순으로 먼저 보고하고, 각 항목은 파일·라인 근거를 포함한다. -4. 문제가 없으면 "발견 없음"을 명확히 말하고 남은 테스트 gap이나 잔여 위험만 짧게 남긴다. +2. Spec compliance 관점으로 Task DoD, Acceptance, TDD evidence, fresh verification evidence, scope/YAGNI 위반을 먼저 확인한다. +3. Code quality 관점으로 버그, 회귀 위험, 누락된 테스트, 유지보수성 문제, `agents/quality-gates.md` 위반을 찾는다. +4. findings를 심각도순으로 먼저 보고하고, 각 항목은 파일·라인 근거를 포함한다. +5. 문제가 없으면 "발견 없음"을 명확히 말하고 남은 테스트 gap이나 잔여 위험만 짧게 남긴다. + +## 리뷰 축 + +- `Spec compliance`: Task 요구, DoD, Acceptance, TDD 또는 예외 사유, fresh verification evidence 충족 여부. +- `Code quality`: 버그, 회귀 위험, 과한 추상화, 불필요한 범위 확장, 테스트 누락 여부. ## 판정 -- `APPROVE`: blocker 없음, Acceptance evidence가 충분함. -- `REQUEST_CHANGES`: 동작 버그, 규칙 위반, Acceptance 미실행/실패, 테스트 누락이 Task 완료를 막음. +- `APPROVE`: `Spec compliance`와 `Code quality` 모두 blocker 없음, fresh verification evidence가 충분함. +- `REQUEST_CHANGES`: 둘 중 하나라도 blocker가 있음. 동작 버그, 규칙 위반, TDD evidence 누락, Acceptance 미실행/실패, 테스트 누락이 Task 완료를 막으면 이 판정이다. 리뷰 중 직접 수정하지 않는다. 수정이 필요하면 findings를 근거로 구현 단계로 되돌린다. findings는 `agents/quality-gates.md`의 review/reporting gate처럼 먼저 보고하고, diff --git a/.agents/skills/harness-work/SKILL.md b/.agents/skills/harness-work/SKILL.md index 6051a55..937f97c 100644 --- a/.agents/skills/harness-work/SKILL.md +++ b/.agents/skills/harness-work/SKILL.md @@ -15,15 +15,17 @@ Codex에서 Claude Code `/harness-work`에 해당하는 절차를 직접 수행 4. 기준 미달이면 구현하지 말고 `$harness-plan` 절차로 하위 Task proposal을 만든다. 5. 기준 통과 시 `.harness/tasks//STATE.md`를 갱신하고 구현한다. Task 디렉토리가 없으면 루트 `.harness/*.md` 템플릿을 복사해 만든다. 6. 작업 중 범위가 커지면 중단하고 `agents/quality-gates.md`의 split 조건과 task-decomposer 기준으로 재분해한다. -7. 구현 후 `agents/test-agent.md` 절차대로 해당 Task Acceptance 명령과 관련 테스트 스위트를 실행한다. -8. 검증 실패 시 수정 후 재실행한다. -9. 검증 통과 후 `$harness-review` 절차로 현재 diff를 리뷰한다. +7. 기능, 버그 수정, 동작 변경은 구현 전 failing test 또는 failing Acceptance를 먼저 확인한다. 문서, 설정, 생성 코드, throwaway prototype은 TDD 예외 사유를 기록한다. +8. 구현 후 `agents/test-agent.md` 절차대로 해당 Task Acceptance 명령과 관련 테스트 스위트를 fresh verification으로 실행한다. +9. 검증 실패 시 수정 후 재실행한다. +10. 검증 통과 후 `$harness-review` 절차로 현재 diff를 리뷰한다. ## 완료 기준 -- Acceptance와 관련 테스트가 통과해야 한다. +- Acceptance와 관련 테스트가 fresh verification으로 통과해야 한다. +- TDD evidence 또는 명시적 예외 사유가 있어야 한다. - `.harness/tasks//RUN_REPORT.md`에 변경 요약, 주요 결정 근거, - Acceptance/test evidence, 남은 위험을 짧게 남긴다. + TDD evidence, Acceptance/test evidence, 남은 위험을 짧게 남긴다. - Acceptance와 관련 테스트 통과 후 에이전트가 `tasks/index.json`의 대상 Task를 `done`으로 갱신하고 `Plans.md`를 재생성한다. GitHub Actions는 Task 상태를 전환하지 않는다. diff --git a/.agents/skills/pr-create/SKILL.md b/.agents/skills/pr-create/SKILL.md index 30a60bc..132b2d3 100644 --- a/.agents/skills/pr-create/SKILL.md +++ b/.agents/skills/pr-create/SKILL.md @@ -9,17 +9,19 @@ description: 현재 작업 브랜치에서 GitHub PR을 작성한다. PR 생성, ## 절차 -1. `git status --short`와 `git branch --show-current`를 확인한다. +1. `git status --short`, `git branch --show-current`, `git worktree list`를 확인한다. 2. 현재 브랜치가 `main`/`master`면 PR을 만들지 않는다. 3. 커밋되지 않은 변경분이 있으면 커밋이 필요하다고 보고하고 중단한다. 4. 대상 Task를 `tasks/index.json`에서 확인한다. -5. PR 본문에 변경 요약, 검증 결과, DoD/Acceptance evidence, 남은 위험을 포함한다. -6. Task의 `gh` 값이 `#N`이면 `Closes #N`을 포함한다. -7. 기본은 `gh pr create --draft`다. 사용자가 ready PR을 명시하면 draft를 생략할 수 있다. -8. 생성 후 PR URL과 남은 merge gate를 보고한다. +5. `.harness/tasks//RUN_REPORT.md`에서 TDD evidence, fresh verification evidence, review approval을 확인한다. +6. PR 본문에 변경 요약, 검증 결과, DoD/Acceptance evidence, 남은 위험을 포함한다. +7. Task의 `gh` 값이 `#N`이면 `Closes #N`을 포함한다. +8. 기본은 `gh pr create --draft`다. 사용자가 ready PR을 명시하면 draft를 생략할 수 있다. +9. 생성 후 PR URL과 남은 merge gate를 보고한다. ## 제한 -- Acceptance evidence가 없거나 리뷰가 `REQUEST_CHANGES`면 PR 생성 전 중단한다. +- Acceptance evidence, fresh verification evidence, TDD evidence 또는 예외 사유가 없거나 리뷰가 `REQUEST_CHANGES`면 PR 생성 전 중단한다. - Task 상태 변경은 PR 생성 전에 Acceptance evidence와 함께 이미 반영돼 있어야 한다. GitHub Actions가 상태를 대신 전환하지 않는다. +- merge, PR, keep, discard 선택지는 사용자가 명시 요청할 때만 제시한다. diff --git a/.claude/commands/branch-checkout.md b/.claude/commands/branch-checkout.md index c4af5d8..e7f8e39 100644 --- a/.claude/commands/branch-checkout.md +++ b/.claude/commands/branch-checkout.md @@ -1,6 +1,6 @@ --- description: Create or switch to a dedicated task branch after checking repository state. -allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git switch:*), Bash(git fetch:*), Read +allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git worktree:*), Bash(git submodule:*), Bash(git switch:*), Bash(git fetch:*), Read --- # /branch-checkout @@ -8,7 +8,8 @@ allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git switch:*), Bash( 절차 원본은 `.agents/skills/branch-checkout/SKILL.md`다. 이 command는 Claude Code 호출용 wrapper다. 1. `.agents/skills/branch-checkout/SKILL.md`를 읽고 같은 절차를 따른다. -2. `git status --short`와 `git branch --show-current`를 먼저 확인한다. +2. `git status --short`, `git branch --show-current`, `git worktree list`를 먼저 확인한다. 3. 사용자 변경은 되돌리지 않는다. -4. `git reset --hard`, `git checkout --`, 강제 push는 실행하지 않는다. -5. 인자: `$ARGUMENTS` +4. worktree/submodule 상태와 baseline test 실행 여부를 보고한다. +5. `git reset --hard`, `git checkout --`, 강제 push는 실행하지 않는다. +6. 인자: `$ARGUMENTS` diff --git a/.claude/commands/git-push.md b/.claude/commands/git-push.md index 371f653..d2513f8 100644 --- a/.claude/commands/git-push.md +++ b/.claude/commands/git-push.md @@ -1,6 +1,6 @@ --- description: Push the current branch safely after checking status, branch, and upstream. -allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git remote:*), Bash(git push:*), Read +allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git worktree:*), Bash(git remote:*), Bash(git push:*), Read --- # /git-push @@ -8,7 +8,8 @@ allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git remote:*), Bash( 절차 원본은 `.agents/skills/git-push/SKILL.md`다. 이 command는 Claude Code 호출용 wrapper다. 1. `.agents/skills/git-push/SKILL.md`를 읽고 같은 절차를 따른다. -2. `git status --short`와 `git branch --show-current`를 먼저 확인한다. +2. `git status --short`, `git branch --show-current`, `git worktree list`를 먼저 확인한다. 3. `main`/`master` push와 커밋되지 않은 변경분 push는 중단하고 보고한다. -4. `--force`, `--force-with-lease`는 사용하지 않는다. -5. 인자: `$ARGUMENTS` +4. fresh verification evidence와 review approval이 없으면 PR 가능 상태가 아니라고 보고한다. +5. `--force`, `--force-with-lease`는 사용하지 않는다. +6. 인자: `$ARGUMENTS` diff --git a/.claude/commands/pr-create.md b/.claude/commands/pr-create.md index 5e44637..fd7897d 100644 --- a/.claude/commands/pr-create.md +++ b/.claude/commands/pr-create.md @@ -1,6 +1,6 @@ --- description: Create a GitHub pull request from the current task branch with task and acceptance context. -allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git log:*), Bash(gh pr create:*), Bash(gh pr view:*), Read +allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git worktree:*), Bash(git log:*), Bash(gh pr create:*), Bash(gh pr view:*), Read --- # /pr-create @@ -8,7 +8,7 @@ allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git log:*), Bash(gh 절차 원본은 `.agents/skills/pr-create/SKILL.md`다. 이 command는 Claude Code 호출용 wrapper다. 1. `.agents/skills/pr-create/SKILL.md`를 읽고 같은 절차를 따른다. -2. `git status --short`와 `git branch --show-current`를 먼저 확인한다. -3. Acceptance evidence와 리뷰 상태를 확인한다. +2. `git status --short`, `git branch --show-current`, `git worktree list`를 먼저 확인한다. +3. TDD, fresh verification evidence와 리뷰 상태를 확인한다. 4. 기본은 draft PR이다. 연결 이슈가 있으면 `Closes #N`을 포함한다. 5. 인자: `$ARGUMENTS` diff --git a/.harness/CONTEXT_INDEX.md b/.harness/CONTEXT_INDEX.md index 3b7e340..7e95e6a 100644 --- a/.harness/CONTEXT_INDEX.md +++ b/.harness/CONTEXT_INDEX.md @@ -13,6 +13,12 @@ ## Task별 맥락 +- `.harness/tasks/4.14-superpowers-workflow-docs/`: workflow 문서 정렬 evidence +- `.harness/tasks/4.15-planning-decomposition-rules/`: task-decomposer 규칙 강화 evidence +- `.harness/tasks/4.16-tdd-verification-gates/`: TDD/fresh verification gate evidence +- `.harness/tasks/4.17-review-verdict/`: review verdict 이원화 evidence +- `.harness/tasks/4.18-git-helper-safety/`: git helper 안전 흐름 evidence +- `.harness/tasks/4.19-skeleton-evidence-template/`: skeleton RUN_REPORT 갱신 evidence - `.harness/tasks//STATE.md`: 현재 스냅샷 - `.harness/tasks//LOG.md`: 작업·에러 원문 - `.harness/tasks//RUN_REPORT.md`: 변경·결정·검증 요약 diff --git a/.harness/RUN_REPORT.md b/.harness/RUN_REPORT.md index 3b60769..d95ea70 100644 --- a/.harness/RUN_REPORT.md +++ b/.harness/RUN_REPORT.md @@ -11,15 +11,18 @@ ## Evidence -| 명령 | 결과 | 비고 | -|------|------|------| -| `[acceptance command]` | `[PASS|FAIL|SKIP]` | `[핵심 출력 또는 이유]` | -| `[test command]` | `[PASS|FAIL|SKIP]` | `[핵심 출력 또는 이유]` | +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `[red command 또는 예외 사유]` | `[RED|EXEMPT|N/A]` | `[실패 확인 또는 예외 이유]` | +| Verification: Acceptance | `[acceptance command]` | `[PASS|FAIL|SKIP]` | `[핵심 출력 또는 이유]` | +| Verification: Tests | `[test command]` | `[PASS|FAIL|SKIP]` | `[핵심 출력 또는 이유]` | +| Review | `[harness-review verdict]` | `[APPROVE|REQUEST_CHANGES|SKIP]` | `[Spec compliance / Code quality 요약]` | ## Notes - 결정: `[결정과 근거. 없으면 없음]` - 변경 파일: `[path — 이유]` - 실패/복구: `[LOG.md 위치 또는 없음]` +- TDD 예외: `[문서·설정·생성 코드·prototype 등 사유 또는 없음]` - 다음 행동: `[이어갈 위치 또는 없음]` - 최종 갱신: `YYYY-MM-DD HH:MM KST` diff --git a/.harness/shared/planning/latest.json b/.harness/shared/planning/latest.json new file mode 100644 index 0000000..17fb7af --- /dev/null +++ b/.harness/shared/planning/latest.json @@ -0,0 +1,7 @@ +{ + "run_id": "plan-20260709-121720-5862c6", + "updated_at": "2026-07-09T12:17:20+09:00", + "context": ".harness/shared/planning/runs/plan-20260709-121720-5862c6/context.json", + "proposal": ".harness/shared/planning/runs/plan-20260709-121720-5862c6/proposed-tasks.json", + "report": ".harness/shared/planning/runs/plan-20260709-121720-5862c6/decomposition-report.md" +} diff --git a/.harness/shared/planning/runs/plan-20260709-121720-5862c6/context.json b/.harness/shared/planning/runs/plan-20260709-121720-5862c6/context.json new file mode 100644 index 0000000..665b7fd --- /dev/null +++ b/.harness/shared/planning/runs/plan-20260709-121720-5862c6/context.json @@ -0,0 +1,289 @@ +{ + "run_id": "plan-20260709-121720-5862c6", + "created_at": "2026-07-09T12:17:20+09:00", + "request": "Apply selected obra/superpowers benchmark elements to harness workflow: spec-plan-isolated work-TDD-verification-review-finish, with mandatory TDD, optional subagent gate, unchanged state document count, and six implementation tasks A-F.", + "documents": [ + { + "label": "PRD", + "path": "docs/PRD.md", + "exists": false + }, + { + "label": "User Flow", + "path": "docs/UserFlow.md", + "exists": false + }, + { + "label": "Design", + "path": "docs/DESIGN.md", + "exists": false + }, + { + "label": "Architecture", + "path": "docs/Architecture.md", + "exists": false + } + ], + "existing_tasks": [ + { + "id": "0.1", + "title": "PRD 작성 (`/grill-me` 인터뷰)", + "status": "done", + "section": "완료된 작업" + }, + { + "id": "0.2", + "title": "기획 보완 문서", + "status": "done", + "section": "완료된 작업" + }, + { + "id": "0.3", + "title": "Harness 초기화", + "status": "done", + "section": "완료된 작업" + }, + { + "id": "0.4", + "title": "Plugin 설정", + "status": "done", + "section": "완료된 작업" + }, + { + "id": "1.0", + "title": "Plans.md 템플릿 개선", + "status": "done", + "section": "Week 1 — 템플릿 개선" + }, + { + "id": "1.1", + "title": "test agent 추가", + "status": "done", + "section": "Week 1 — 템플릿 개선" + }, + { + "id": "1.2", + "title": "기획 파이프라인 추가", + "status": "done", + "section": "Week 1 — 템플릿 개선" + }, + { + "id": "1.3", + "title": "task-decomposer + 세션 세분화 게이트 추가", + "status": "done", + "section": "Week 1 — 템플릿 개선" + }, + { + "id": "1.4", + "title": ".harness/ 상태 문서 체계 추가", + "status": "done", + "section": "Week 1 — 템플릿 개선" + }, + { + "id": "2.1", + "title": "테스트 프로젝트 골격 생성", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "2.2", + "title": "기획 파이프라인 테스트 (grill-me 인터뷰)", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "2.3", + "title": "보완 문서 테스트 (UserFlow·Architecture 골격 적용)", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "2.4", + "title": "계획 파이프라인 테스트 (task-decomposer → Plans.md)", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "2.5", + "title": "템플릿 결함 기록", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "2.6", + "title": "DESIGN.md 기획 산출물 추가", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "2.7", + "title": "GitHub 연동 E2E 검증", + "status": "done", + "section": "Week 2 — 템플릿 dogfooding (루틴 관리 SaaS로 실전 테스트, 커밋 제외)" + }, + { + "id": "3.1", + "title": "GitHub branch protection 호환 (H1)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.2", + "title": "clean 골격 세트 분리 (H5)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.3", + "title": "init.sh 초기화 스크립트 (H5)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.4", + "title": "plans-guard 상태 변경 보호 검토 기록 (H2)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.5", + "title": "Depends 검증 경로 정리 (H3)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.6", + "title": "Plans.md 헤더 검증 선행 파싱 (M1·M7)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.7", + "title": "완료 전환 서술 통일 (M3)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.8", + "title": "harness.toml 죽은 설정 정리 (M4)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.9", + "title": "Plans.md anti-pattern 예시 교정 (M2)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.10", + "title": "agents 문서 수행 주체 명시 (M5)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.11", + "title": "ci.yml 이름 고정 요약 잡 (M6)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "3.12", + "title": "플러그인 SHA 기록 절차 (M8)", + "status": "done", + "section": "Week 3 — 감사 빈틈 개선 (기준 문서: docs/specs/2026-07-04-template-audit.md)" + }, + { + "id": "4.1", + "title": "세분화 기준 표현 정확도 개선 (L1)", + "status": "done", + "section": "Week 4 — 백로그 정리 (기준 문서: docs/specs/2026-07-04-template-audit.md L1~L5)" + }, + { + "id": "4.2", + "title": "test-agent pretest 오탐 스택 감지 수정 (L2)", + "status": "done", + "section": "Week 4 — 백로그 정리 (기준 문서: docs/specs/2026-07-04-template-audit.md L1~L5)" + }, + { + "id": "4.3", + "title": "CONTEXT_INDEX.md 미존재 파일 인덱스 정리 (L3)", + "status": "done", + "section": "Week 4 — 백로그 정리 (기준 문서: docs/specs/2026-07-04-template-audit.md L1~L5)" + }, + { + "id": "4.4", + "title": "rm 위험 패턴 매칭 범위 확대 (L4)", + "status": "done", + "section": "Week 4 — 백로그 정리 (기준 문서: docs/specs/2026-07-04-template-audit.md L1~L5)" + }, + { + "id": "4.5", + "title": "grill-me 산출 경로 인자 지원 (L5)", + "status": "done", + "section": "Week 4 — 백로그 정리 (기준 문서: docs/specs/2026-07-04-template-audit.md L1~L5)" + }, + { + "id": "4.6", + "title": "grill-me 비대화형 실행 호환 모드 (L5)", + "status": "done", + "section": "Week 4 — 백로그 정리 (기준 문서: docs/specs/2026-07-04-template-audit.md L1~L5)" + }, + { + "id": "4.7", + "title": "Codex 호환 진입점 추가", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + }, + { + "id": "4.8", + "title": "Codex harness skills 추가", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + }, + { + "id": "4.9", + "title": "Git workflow helper command/skill 추가", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + }, + { + "id": "4.10", + "title": "Claude/Codex 공용 Quality Gate 문서화", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + }, + { + "id": "4.11", + "title": "rescue-from-main workflow helper 추가", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + }, + { + "id": "4.12", + "title": "Task별 .harness 맥락 디렉토리 도입", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + }, + { + "id": "4.13", + "title": "README 사용자 친화 개편", + "status": "done", + "section": "Week 4 — Codex 호환 환경 구성" + } + ], + "rules": { + "task_decomposer": "agents/task-decomposer.md", + "task_state_source": "tasks/index.json", + "readable_plan": "Plans.md" + }, + "outputs": { + "run_dir": ".harness/shared/planning/runs/plan-20260709-121720-5862c6", + "proposal": ".harness/shared/planning/runs/plan-20260709-121720-5862c6/proposed-tasks.json", + "report": ".harness/shared/planning/runs/plan-20260709-121720-5862c6/decomposition-report.md" + }, + "technical": { + "schema_version": 1, + "proposal_dir": ".harness/shared/planning" + } +} diff --git a/.harness/shared/planning/runs/plan-20260709-121720-5862c6/decomposition-report.md b/.harness/shared/planning/runs/plan-20260709-121720-5862c6/decomposition-report.md new file mode 100644 index 0000000..5229551 --- /dev/null +++ b/.harness/shared/planning/runs/plan-20260709-121720-5862c6/decomposition-report.md @@ -0,0 +1,18 @@ +# Superpowers benchmark 적용 Task proposal + +## 완료 기준 + +- 4.14는 사용자-facing rulebook과 구조 문서가 같은 핵심 흐름을 말하게 한다. +- 4.15는 Task 분해 기준에 Files, Interfaces, Verification, no-placeholder 검사를 추가한다. +- 4.16은 TDD evidence와 fresh verification evidence를 완료 전 필수 조건으로 만든다. +- 4.17은 review verdict를 Spec compliance와 Code quality 두 축으로 나눈다. +- 4.18은 git helper가 branch/worktree 상태와 PR 전 verification evidence를 확인하게 한다. +- 4.19는 skeleton RUN_REPORT evidence 표를 새 완료 조건에 맞춘다. + +## 확인 방법 + +각 Task는 repo 루트에서 실행 가능한 `grep` 기반 Acceptance를 가진다. 문서 변경 Task라 런타임 테스트 대신 문구 존재와 전체 task/plans 검증으로 판정한다. + +## 먼저 끝나야 할 작업 + +4.14가 전체 흐름의 기준을 먼저 세운다. TDD/verification gate인 4.16 이후 review, git helper, skeleton evidence 변경을 적용한다. diff --git a/.harness/shared/planning/runs/plan-20260709-121720-5862c6/proposed-tasks.json b/.harness/shared/planning/runs/plan-20260709-121720-5862c6/proposed-tasks.json new file mode 100644 index 0000000..16345c2 --- /dev/null +++ b/.harness/shared/planning/runs/plan-20260709-121720-5862c6/proposed-tasks.json @@ -0,0 +1,74 @@ +{ + "tasks": [ + { + "id": "4.14", + "title": "Superpowers benchmark workflow 문서 정렬", + "dod": "README.md, CLAUDE.md, AGENTS.md, BLUEPRINT.md가 spec -> plan -> work -> TDD/verification -> review -> finish 흐름과 완료 조건을 같은 기준으로 설명한다.", + "acceptance": "grep -q 'fresh verification' CLAUDE.md && grep -q 'TDD' README.md", + "depends": [], + "status": "todo", + "gh": "-", + "section": "Week 4 — Superpowers benchmark 적용" + }, + { + "id": "4.15", + "title": "Planning/Task decomposition 규칙 강화", + "dod": "Task 작성 기준에 Files, Interfaces, Verification, no-placeholder 규칙이 반영된다.", + "acceptance": "grep -q 'Files' agents/task-decomposer.md && grep -q 'Verification' agents/task-decomposer.md", + "depends": [ + "4.14" + ], + "status": "todo", + "gh": "-", + "section": "Week 4 — Superpowers benchmark 적용" + }, + { + "id": "4.16", + "title": "TDD 및 verification-before-completion gate 추가", + "dod": "agents/test-agent.md와 agents/quality-gates.md가 TDD evidence와 fresh verification evidence를 요구한다.", + "acceptance": "grep -q 'fresh verification' agents/test-agent.md && grep -q 'TDD' agents/quality-gates.md", + "depends": [ + "4.14" + ], + "status": "todo", + "gh": "-", + "section": "Week 4 — Superpowers benchmark 적용" + }, + { + "id": "4.17", + "title": "Review verdict 이원화", + "dod": ".agents/skills/harness-review/SKILL.md가 Spec compliance와 Code quality를 별도 판정한다.", + "acceptance": "grep -q 'Spec compliance' .agents/skills/harness-review/SKILL.md && grep -q 'Code quality' .agents/skills/harness-review/SKILL.md", + "depends": [ + "4.16" + ], + "status": "todo", + "gh": "-", + "section": "Week 4 — Superpowers benchmark 적용" + }, + { + "id": "4.18", + "title": "Git helper 안전 흐름 강화", + "dod": "branch-checkout, git-push, pr-create skill이 branch/worktree 상태와 fresh verification evidence 확인 조건을 설명한다.", + "acceptance": "grep -q 'worktree' .agents/skills/branch-checkout/SKILL.md && grep -q 'verification' .agents/skills/pr-create/SKILL.md", + "depends": [ + "4.16" + ], + "status": "todo", + "gh": "-", + "section": "Week 4 — Superpowers benchmark 적용" + }, + { + "id": "4.19", + "title": "Skeleton evidence template 갱신", + "dod": "새 프로젝트 skeleton의 RUN_REPORT.md가 TDD와 Verification evidence를 기록한다.", + "acceptance": "grep -q 'TDD' templates/skeleton/.harness/RUN_REPORT.md && grep -q 'Verification' templates/skeleton/.harness/RUN_REPORT.md", + "depends": [ + "4.16" + ], + "status": "todo", + "gh": "-", + "section": "Week 4 — Superpowers benchmark 적용" + } + ] +} diff --git a/.harness/tasks/4.14-superpowers-workflow-docs/CHECKPOINTS.md b/.harness/tasks/4.14-superpowers-workflow-docs/CHECKPOINTS.md new file mode 100644 index 0000000..b3b894b --- /dev/null +++ b/.harness/tasks/4.14-superpowers-workflow-docs/CHECKPOINTS.md @@ -0,0 +1,8 @@ +# CHECKPOINTS.md — Task 완료 지점 템플릿 + +> 이 루트 파일은 실제 checkpoint 기록이 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//CHECKPOINTS.md`로 복사해서 사용한다. + +| 일시 | Task | 내용 | 커밋 | 검증 | +|------|------|------|------|------| +| YYYY-MM-DD | [id] | [완료 지점] | [hash 또는 미커밋] | [검증 결과] | diff --git a/.harness/tasks/4.14-superpowers-workflow-docs/HANDOFF.md b/.harness/tasks/4.14-superpowers-workflow-docs/HANDOFF.md new file mode 100644 index 0000000..888a81a --- /dev/null +++ b/.harness/tasks/4.14-superpowers-workflow-docs/HANDOFF.md @@ -0,0 +1,21 @@ +# HANDOFF.md — Task 인수인계 템플릿 + +> 이 루트 파일은 실제 인수인계가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//HANDOFF.md`로 복사해서 사용한다. + +## 다음 세션이 먼저 읽을 최소 파일 + +1. `.harness/tasks//STATE.md` +2. `.harness/LESSONS.md` 최근 항목 +3. `tasks/index.json` +4. `Plans.md` +5. `.harness/CONTEXT_INDEX.md`에서 필요한 파일 + +## 재개 지점 + +- [어디서 이어가면 되는지 기록] + +## 주의사항 + +- Task 상태의 단일 출처는 `tasks/index.json`이다. +- 루트 `.harness/*.md` 템플릿에 실제 진행 상태를 기록하지 않는다. diff --git a/.harness/tasks/4.14-superpowers-workflow-docs/LOG.md b/.harness/tasks/4.14-superpowers-workflow-docs/LOG.md new file mode 100644 index 0000000..0d92697 --- /dev/null +++ b/.harness/tasks/4.14-superpowers-workflow-docs/LOG.md @@ -0,0 +1,9 @@ +# LOG.md — Task 작업·에러 로그 템플릿 + +> 이 루트 파일은 실제 작업 로그가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//LOG.md`로 복사해서 사용한다. +> 전역 재발 방지 규칙은 루트 `.harness/LESSONS.md`에 유지한다. + +## YYYY-MM-DD + +- [작업 또는 에러를 시간순으로 추가] diff --git a/.harness/tasks/4.14-superpowers-workflow-docs/RUN_REPORT.md b/.harness/tasks/4.14-superpowers-workflow-docs/RUN_REPORT.md new file mode 100644 index 0000000..de04fe2 --- /dev/null +++ b/.harness/tasks/4.14-superpowers-workflow-docs/RUN_REPORT.md @@ -0,0 +1,25 @@ +# RUN_REPORT.md — Task 4.14 + +## Summary + +- Task: `4.14` +- 상태: `done` +- 변경: README, CLAUDE, AGENTS, BLUEPRINT가 spec -> plan -> isolated work -> TDD -> fresh verification -> review -> finish 흐름을 설명하게 정렬했다. + +## Evidence + +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `grep -q 'fresh verification' CLAUDE.md && grep -q 'TDD' README.md` | `RED -> PASS` | 구현 전 실패, 문서 변경 후 통과 | +| Verification: Acceptance | `grep -q 'fresh verification' CLAUDE.md && grep -q 'TDD' README.md` | `PASS` | fresh verification | +| Verification: Tests | `python3 scripts/validate_tasks.py`; `python3 scripts/sync_plans.py --check` | `PASS` | tasks valid, Plans sync | +| Review | `$harness-review` inline | `APPROVE` | Spec compliance/Code quality blocker 없음 | + +## Notes + +- 결정: superpowers 전체 구조 복제 없이 핵심 흐름만 rulebook에 반영했다. +- 변경 파일: `README.md`, `CLAUDE.md`, `AGENTS.md`, `BLUEPRINT.md` +- 실패/복구: 없음 +- TDD 예외: 없음 +- 다음 행동: 없음 +- 최종 갱신: `2026-07-09 12:30 KST` diff --git a/.harness/tasks/4.14-superpowers-workflow-docs/STATE.md b/.harness/tasks/4.14-superpowers-workflow-docs/STATE.md new file mode 100644 index 0000000..8777284 --- /dev/null +++ b/.harness/tasks/4.14-superpowers-workflow-docs/STATE.md @@ -0,0 +1,29 @@ +# STATE.md — Task 상태 스냅샷 + +## 현재 목표 + +README, CLAUDE, AGENTS, BLUEPRINT를 spec -> plan -> work -> TDD/verification -> review -> finish 흐름으로 정렬한다. + +## 진행 중인 Task + +- Task ID: `4.14` +- 상태: `done` +- 기준 문서: `tasks/index.json` + +## 마지막 검증 결과 + +- `grep -q 'fresh verification' CLAUDE.md && grep -q 'TDD' README.md` PASS +- `python3 scripts/validate_tasks.py` PASS +- `python3 scripts/sync_plans.py --check` PASS + +## 차단 요소 + +- 없음 + +## 마지막 커밋 + +- 없음 + +## 최종 갱신 + +- 2026-07-09 12:30 KST diff --git a/.harness/tasks/4.14-superpowers-workflow-docs/TASKS.md b/.harness/tasks/4.14-superpowers-workflow-docs/TASKS.md new file mode 100644 index 0000000..fdecc78 --- /dev/null +++ b/.harness/tasks/4.14-superpowers-workflow-docs/TASKS.md @@ -0,0 +1,14 @@ +# TASKS.md — Task 내부 체크리스트 템플릿 + +> 이 루트 파일은 실제 체크리스트가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//TASKS.md`로 복사해서 사용한다. + +## 현재 Task: [id] [title] + +- [ ] 세분화 기준 확인 +- [ ] scope/YAGNI 기준 확인 +- [ ] 구현 +- [ ] Acceptance 실행 +- [ ] 관련 테스트 실행 +- [ ] 리뷰 +- [ ] `tasks/index.json`/`Plans.md` 갱신 diff --git a/.harness/tasks/4.15-planning-decomposition-rules/CHECKPOINTS.md b/.harness/tasks/4.15-planning-decomposition-rules/CHECKPOINTS.md new file mode 100644 index 0000000..b3b894b --- /dev/null +++ b/.harness/tasks/4.15-planning-decomposition-rules/CHECKPOINTS.md @@ -0,0 +1,8 @@ +# CHECKPOINTS.md — Task 완료 지점 템플릿 + +> 이 루트 파일은 실제 checkpoint 기록이 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//CHECKPOINTS.md`로 복사해서 사용한다. + +| 일시 | Task | 내용 | 커밋 | 검증 | +|------|------|------|------|------| +| YYYY-MM-DD | [id] | [완료 지점] | [hash 또는 미커밋] | [검증 결과] | diff --git a/.harness/tasks/4.15-planning-decomposition-rules/HANDOFF.md b/.harness/tasks/4.15-planning-decomposition-rules/HANDOFF.md new file mode 100644 index 0000000..888a81a --- /dev/null +++ b/.harness/tasks/4.15-planning-decomposition-rules/HANDOFF.md @@ -0,0 +1,21 @@ +# HANDOFF.md — Task 인수인계 템플릿 + +> 이 루트 파일은 실제 인수인계가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//HANDOFF.md`로 복사해서 사용한다. + +## 다음 세션이 먼저 읽을 최소 파일 + +1. `.harness/tasks//STATE.md` +2. `.harness/LESSONS.md` 최근 항목 +3. `tasks/index.json` +4. `Plans.md` +5. `.harness/CONTEXT_INDEX.md`에서 필요한 파일 + +## 재개 지점 + +- [어디서 이어가면 되는지 기록] + +## 주의사항 + +- Task 상태의 단일 출처는 `tasks/index.json`이다. +- 루트 `.harness/*.md` 템플릿에 실제 진행 상태를 기록하지 않는다. diff --git a/.harness/tasks/4.15-planning-decomposition-rules/LOG.md b/.harness/tasks/4.15-planning-decomposition-rules/LOG.md new file mode 100644 index 0000000..0d92697 --- /dev/null +++ b/.harness/tasks/4.15-planning-decomposition-rules/LOG.md @@ -0,0 +1,9 @@ +# LOG.md — Task 작업·에러 로그 템플릿 + +> 이 루트 파일은 실제 작업 로그가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//LOG.md`로 복사해서 사용한다. +> 전역 재발 방지 규칙은 루트 `.harness/LESSONS.md`에 유지한다. + +## YYYY-MM-DD + +- [작업 또는 에러를 시간순으로 추가] diff --git a/.harness/tasks/4.15-planning-decomposition-rules/RUN_REPORT.md b/.harness/tasks/4.15-planning-decomposition-rules/RUN_REPORT.md new file mode 100644 index 0000000..7b482e6 --- /dev/null +++ b/.harness/tasks/4.15-planning-decomposition-rules/RUN_REPORT.md @@ -0,0 +1,25 @@ +# RUN_REPORT.md — Task 4.15 + +## Summary + +- Task: `4.15` +- 상태: `done` +- 변경: task-decomposer 기준에 Files, Interfaces, Verification, no-placeholder 검사를 추가했다. + +## Evidence + +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `grep -q 'Files' agents/task-decomposer.md && grep -q 'Verification' agents/task-decomposer.md` | `RED -> PASS` | 구현 전 실패, 문서 변경 후 통과 | +| Verification: Acceptance | `grep -q 'Files' agents/task-decomposer.md && grep -q 'Verification' agents/task-decomposer.md` | `PASS` | fresh verification | +| Verification: Tests | `python3 scripts/validate_tasks.py`; `python3 scripts/sync_plans.py --check` | `PASS` | tasks valid, Plans sync | +| Review | `$harness-review` inline | `APPROVE` | Spec compliance/Code quality blocker 없음 | + +## Notes + +- 결정: 2-5분 단위 step 강제는 추가하지 않고, 1 PR 이내 독립 검증 단위만 유지했다. +- 변경 파일: `agents/task-decomposer.md`, `.agents/skills/harness-plan/SKILL.md` +- 실패/복구: 없음 +- TDD 예외: 없음 +- 다음 행동: 없음 +- 최종 갱신: `2026-07-09 12:30 KST` diff --git a/.harness/tasks/4.15-planning-decomposition-rules/STATE.md b/.harness/tasks/4.15-planning-decomposition-rules/STATE.md new file mode 100644 index 0000000..c647c37 --- /dev/null +++ b/.harness/tasks/4.15-planning-decomposition-rules/STATE.md @@ -0,0 +1,29 @@ +# STATE.md — Task 상태 스냅샷 + +## 현재 목표 + +Task 작성 기준에 Files, Interfaces, Verification, no-placeholder 규칙을 추가한다. + +## 진행 중인 Task + +- Task ID: `4.15` +- 상태: `done` +- 기준 문서: `tasks/index.json` + +## 마지막 검증 결과 + +- `grep -q 'Files' agents/task-decomposer.md && grep -q 'Verification' agents/task-decomposer.md` PASS +- `python3 scripts/validate_tasks.py` PASS +- `python3 scripts/sync_plans.py --check` PASS + +## 차단 요소 + +- 없음 + +## 마지막 커밋 + +- 없음 + +## 최종 갱신 + +- 2026-07-09 12:30 KST diff --git a/.harness/tasks/4.15-planning-decomposition-rules/TASKS.md b/.harness/tasks/4.15-planning-decomposition-rules/TASKS.md new file mode 100644 index 0000000..fdecc78 --- /dev/null +++ b/.harness/tasks/4.15-planning-decomposition-rules/TASKS.md @@ -0,0 +1,14 @@ +# TASKS.md — Task 내부 체크리스트 템플릿 + +> 이 루트 파일은 실제 체크리스트가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//TASKS.md`로 복사해서 사용한다. + +## 현재 Task: [id] [title] + +- [ ] 세분화 기준 확인 +- [ ] scope/YAGNI 기준 확인 +- [ ] 구현 +- [ ] Acceptance 실행 +- [ ] 관련 테스트 실행 +- [ ] 리뷰 +- [ ] `tasks/index.json`/`Plans.md` 갱신 diff --git a/.harness/tasks/4.16-tdd-verification-gates/CHECKPOINTS.md b/.harness/tasks/4.16-tdd-verification-gates/CHECKPOINTS.md new file mode 100644 index 0000000..b3b894b --- /dev/null +++ b/.harness/tasks/4.16-tdd-verification-gates/CHECKPOINTS.md @@ -0,0 +1,8 @@ +# CHECKPOINTS.md — Task 완료 지점 템플릿 + +> 이 루트 파일은 실제 checkpoint 기록이 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//CHECKPOINTS.md`로 복사해서 사용한다. + +| 일시 | Task | 내용 | 커밋 | 검증 | +|------|------|------|------|------| +| YYYY-MM-DD | [id] | [완료 지점] | [hash 또는 미커밋] | [검증 결과] | diff --git a/.harness/tasks/4.16-tdd-verification-gates/HANDOFF.md b/.harness/tasks/4.16-tdd-verification-gates/HANDOFF.md new file mode 100644 index 0000000..888a81a --- /dev/null +++ b/.harness/tasks/4.16-tdd-verification-gates/HANDOFF.md @@ -0,0 +1,21 @@ +# HANDOFF.md — Task 인수인계 템플릿 + +> 이 루트 파일은 실제 인수인계가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//HANDOFF.md`로 복사해서 사용한다. + +## 다음 세션이 먼저 읽을 최소 파일 + +1. `.harness/tasks//STATE.md` +2. `.harness/LESSONS.md` 최근 항목 +3. `tasks/index.json` +4. `Plans.md` +5. `.harness/CONTEXT_INDEX.md`에서 필요한 파일 + +## 재개 지점 + +- [어디서 이어가면 되는지 기록] + +## 주의사항 + +- Task 상태의 단일 출처는 `tasks/index.json`이다. +- 루트 `.harness/*.md` 템플릿에 실제 진행 상태를 기록하지 않는다. diff --git a/.harness/tasks/4.16-tdd-verification-gates/LOG.md b/.harness/tasks/4.16-tdd-verification-gates/LOG.md new file mode 100644 index 0000000..0d92697 --- /dev/null +++ b/.harness/tasks/4.16-tdd-verification-gates/LOG.md @@ -0,0 +1,9 @@ +# LOG.md — Task 작업·에러 로그 템플릿 + +> 이 루트 파일은 실제 작업 로그가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//LOG.md`로 복사해서 사용한다. +> 전역 재발 방지 규칙은 루트 `.harness/LESSONS.md`에 유지한다. + +## YYYY-MM-DD + +- [작업 또는 에러를 시간순으로 추가] diff --git a/.harness/tasks/4.16-tdd-verification-gates/RUN_REPORT.md b/.harness/tasks/4.16-tdd-verification-gates/RUN_REPORT.md new file mode 100644 index 0000000..d72fa99 --- /dev/null +++ b/.harness/tasks/4.16-tdd-verification-gates/RUN_REPORT.md @@ -0,0 +1,25 @@ +# RUN_REPORT.md — Task 4.16 + +## Summary + +- Task: `4.16` +- 상태: `done` +- 변경: TDD evidence와 fresh verification evidence를 test-agent, quality-gates, harness-work 완료 기준에 추가했다. + +## Evidence + +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `grep -q 'fresh verification' agents/test-agent.md && grep -q 'TDD' agents/quality-gates.md` | `RED -> PASS` | 구현 전 실패, 문서 변경 후 통과 | +| Verification: Acceptance | `grep -q 'fresh verification' agents/test-agent.md && grep -q 'TDD' agents/quality-gates.md` | `PASS` | fresh verification | +| Verification: Tests | `python3 scripts/validate_tasks.py`; `python3 scripts/sync_plans.py --check` | `PASS` | tasks valid, Plans sync | +| Review | `$harness-review` inline | `APPROVE` | Spec compliance/Code quality blocker 없음 | + +## Notes + +- 결정: 문서, 설정, 생성 코드, throwaway prototype은 예외 가능하되 RUN_REPORT에 사유를 남기도록 했다. +- 변경 파일: `agents/test-agent.md`, `agents/quality-gates.md`, `.agents/skills/harness-work/SKILL.md`, `CLAUDE.md` +- 실패/복구: 없음 +- TDD 예외: 없음 +- 다음 행동: 없음 +- 최종 갱신: `2026-07-09 12:30 KST` diff --git a/.harness/tasks/4.16-tdd-verification-gates/STATE.md b/.harness/tasks/4.16-tdd-verification-gates/STATE.md new file mode 100644 index 0000000..c696d58 --- /dev/null +++ b/.harness/tasks/4.16-tdd-verification-gates/STATE.md @@ -0,0 +1,29 @@ +# STATE.md — Task 상태 스냅샷 + +## 현재 목표 + +TDD evidence와 fresh verification evidence를 완료 전 필수 gate로 문서화한다. + +## 진행 중인 Task + +- Task ID: `4.16` +- 상태: `done` +- 기준 문서: `tasks/index.json` + +## 마지막 검증 결과 + +- `grep -q 'fresh verification' agents/test-agent.md && grep -q 'TDD' agents/quality-gates.md` PASS +- `python3 scripts/validate_tasks.py` PASS +- `python3 scripts/sync_plans.py --check` PASS + +## 차단 요소 + +- 없음 + +## 마지막 커밋 + +- 없음 + +## 최종 갱신 + +- 2026-07-09 12:30 KST diff --git a/.harness/tasks/4.16-tdd-verification-gates/TASKS.md b/.harness/tasks/4.16-tdd-verification-gates/TASKS.md new file mode 100644 index 0000000..fdecc78 --- /dev/null +++ b/.harness/tasks/4.16-tdd-verification-gates/TASKS.md @@ -0,0 +1,14 @@ +# TASKS.md — Task 내부 체크리스트 템플릿 + +> 이 루트 파일은 실제 체크리스트가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//TASKS.md`로 복사해서 사용한다. + +## 현재 Task: [id] [title] + +- [ ] 세분화 기준 확인 +- [ ] scope/YAGNI 기준 확인 +- [ ] 구현 +- [ ] Acceptance 실행 +- [ ] 관련 테스트 실행 +- [ ] 리뷰 +- [ ] `tasks/index.json`/`Plans.md` 갱신 diff --git a/.harness/tasks/4.17-review-verdict/CHECKPOINTS.md b/.harness/tasks/4.17-review-verdict/CHECKPOINTS.md new file mode 100644 index 0000000..b3b894b --- /dev/null +++ b/.harness/tasks/4.17-review-verdict/CHECKPOINTS.md @@ -0,0 +1,8 @@ +# CHECKPOINTS.md — Task 완료 지점 템플릿 + +> 이 루트 파일은 실제 checkpoint 기록이 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//CHECKPOINTS.md`로 복사해서 사용한다. + +| 일시 | Task | 내용 | 커밋 | 검증 | +|------|------|------|------|------| +| YYYY-MM-DD | [id] | [완료 지점] | [hash 또는 미커밋] | [검증 결과] | diff --git a/.harness/tasks/4.17-review-verdict/HANDOFF.md b/.harness/tasks/4.17-review-verdict/HANDOFF.md new file mode 100644 index 0000000..888a81a --- /dev/null +++ b/.harness/tasks/4.17-review-verdict/HANDOFF.md @@ -0,0 +1,21 @@ +# HANDOFF.md — Task 인수인계 템플릿 + +> 이 루트 파일은 실제 인수인계가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//HANDOFF.md`로 복사해서 사용한다. + +## 다음 세션이 먼저 읽을 최소 파일 + +1. `.harness/tasks//STATE.md` +2. `.harness/LESSONS.md` 최근 항목 +3. `tasks/index.json` +4. `Plans.md` +5. `.harness/CONTEXT_INDEX.md`에서 필요한 파일 + +## 재개 지점 + +- [어디서 이어가면 되는지 기록] + +## 주의사항 + +- Task 상태의 단일 출처는 `tasks/index.json`이다. +- 루트 `.harness/*.md` 템플릿에 실제 진행 상태를 기록하지 않는다. diff --git a/.harness/tasks/4.17-review-verdict/LOG.md b/.harness/tasks/4.17-review-verdict/LOG.md new file mode 100644 index 0000000..0d92697 --- /dev/null +++ b/.harness/tasks/4.17-review-verdict/LOG.md @@ -0,0 +1,9 @@ +# LOG.md — Task 작업·에러 로그 템플릿 + +> 이 루트 파일은 실제 작업 로그가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//LOG.md`로 복사해서 사용한다. +> 전역 재발 방지 규칙은 루트 `.harness/LESSONS.md`에 유지한다. + +## YYYY-MM-DD + +- [작업 또는 에러를 시간순으로 추가] diff --git a/.harness/tasks/4.17-review-verdict/RUN_REPORT.md b/.harness/tasks/4.17-review-verdict/RUN_REPORT.md new file mode 100644 index 0000000..f529682 --- /dev/null +++ b/.harness/tasks/4.17-review-verdict/RUN_REPORT.md @@ -0,0 +1,25 @@ +# RUN_REPORT.md — Task 4.17 + +## Summary + +- Task: `4.17` +- 상태: `done` +- 변경: harness-review 판정을 Spec compliance와 Code quality 두 축으로 나눴다. + +## Evidence + +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `grep -q 'Spec compliance' .agents/skills/harness-review/SKILL.md && grep -q 'Code quality' .agents/skills/harness-review/SKILL.md` | `RED -> PASS` | 구현 전 실패, 문서 변경 후 통과 | +| Verification: Acceptance | `grep -q 'Spec compliance' .agents/skills/harness-review/SKILL.md && grep -q 'Code quality' .agents/skills/harness-review/SKILL.md` | `PASS` | fresh verification | +| Verification: Tests | `python3 scripts/validate_tasks.py`; `python3 scripts/sync_plans.py --check` | `PASS` | tasks valid, Plans sync | +| Review | `$harness-review` inline | `APPROVE` | Spec compliance/Code quality blocker 없음 | + +## Notes + +- 결정: 둘 중 하나라도 blocker면 전체 `REQUEST_CHANGES`가 되도록 명시했다. +- 변경 파일: `.agents/skills/harness-review/SKILL.md`, `agents/quality-gates.md`, `CLAUDE.md` +- 실패/복구: 없음 +- TDD 예외: 없음 +- 다음 행동: 없음 +- 최종 갱신: `2026-07-09 12:30 KST` diff --git a/.harness/tasks/4.17-review-verdict/STATE.md b/.harness/tasks/4.17-review-verdict/STATE.md new file mode 100644 index 0000000..2a7e2d7 --- /dev/null +++ b/.harness/tasks/4.17-review-verdict/STATE.md @@ -0,0 +1,29 @@ +# STATE.md — Task 상태 스냅샷 + +## 현재 목표 + +harness-review verdict를 Spec compliance와 Code quality 두 축으로 나눈다. + +## 진행 중인 Task + +- Task ID: `4.17` +- 상태: `done` +- 기준 문서: `tasks/index.json` + +## 마지막 검증 결과 + +- `grep -q 'Spec compliance' .agents/skills/harness-review/SKILL.md && grep -q 'Code quality' .agents/skills/harness-review/SKILL.md` PASS +- `python3 scripts/validate_tasks.py` PASS +- `python3 scripts/sync_plans.py --check` PASS + +## 차단 요소 + +- 없음 + +## 마지막 커밋 + +- 없음 + +## 최종 갱신 + +- 2026-07-09 12:30 KST diff --git a/.harness/tasks/4.17-review-verdict/TASKS.md b/.harness/tasks/4.17-review-verdict/TASKS.md new file mode 100644 index 0000000..fdecc78 --- /dev/null +++ b/.harness/tasks/4.17-review-verdict/TASKS.md @@ -0,0 +1,14 @@ +# TASKS.md — Task 내부 체크리스트 템플릿 + +> 이 루트 파일은 실제 체크리스트가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//TASKS.md`로 복사해서 사용한다. + +## 현재 Task: [id] [title] + +- [ ] 세분화 기준 확인 +- [ ] scope/YAGNI 기준 확인 +- [ ] 구현 +- [ ] Acceptance 실행 +- [ ] 관련 테스트 실행 +- [ ] 리뷰 +- [ ] `tasks/index.json`/`Plans.md` 갱신 diff --git a/.harness/tasks/4.18-git-helper-safety/CHECKPOINTS.md b/.harness/tasks/4.18-git-helper-safety/CHECKPOINTS.md new file mode 100644 index 0000000..b3b894b --- /dev/null +++ b/.harness/tasks/4.18-git-helper-safety/CHECKPOINTS.md @@ -0,0 +1,8 @@ +# CHECKPOINTS.md — Task 완료 지점 템플릿 + +> 이 루트 파일은 실제 checkpoint 기록이 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//CHECKPOINTS.md`로 복사해서 사용한다. + +| 일시 | Task | 내용 | 커밋 | 검증 | +|------|------|------|------|------| +| YYYY-MM-DD | [id] | [완료 지점] | [hash 또는 미커밋] | [검증 결과] | diff --git a/.harness/tasks/4.18-git-helper-safety/HANDOFF.md b/.harness/tasks/4.18-git-helper-safety/HANDOFF.md new file mode 100644 index 0000000..888a81a --- /dev/null +++ b/.harness/tasks/4.18-git-helper-safety/HANDOFF.md @@ -0,0 +1,21 @@ +# HANDOFF.md — Task 인수인계 템플릿 + +> 이 루트 파일은 실제 인수인계가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//HANDOFF.md`로 복사해서 사용한다. + +## 다음 세션이 먼저 읽을 최소 파일 + +1. `.harness/tasks//STATE.md` +2. `.harness/LESSONS.md` 최근 항목 +3. `tasks/index.json` +4. `Plans.md` +5. `.harness/CONTEXT_INDEX.md`에서 필요한 파일 + +## 재개 지점 + +- [어디서 이어가면 되는지 기록] + +## 주의사항 + +- Task 상태의 단일 출처는 `tasks/index.json`이다. +- 루트 `.harness/*.md` 템플릿에 실제 진행 상태를 기록하지 않는다. diff --git a/.harness/tasks/4.18-git-helper-safety/LOG.md b/.harness/tasks/4.18-git-helper-safety/LOG.md new file mode 100644 index 0000000..0d92697 --- /dev/null +++ b/.harness/tasks/4.18-git-helper-safety/LOG.md @@ -0,0 +1,9 @@ +# LOG.md — Task 작업·에러 로그 템플릿 + +> 이 루트 파일은 실제 작업 로그가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//LOG.md`로 복사해서 사용한다. +> 전역 재발 방지 규칙은 루트 `.harness/LESSONS.md`에 유지한다. + +## YYYY-MM-DD + +- [작업 또는 에러를 시간순으로 추가] diff --git a/.harness/tasks/4.18-git-helper-safety/RUN_REPORT.md b/.harness/tasks/4.18-git-helper-safety/RUN_REPORT.md new file mode 100644 index 0000000..c13e1ee --- /dev/null +++ b/.harness/tasks/4.18-git-helper-safety/RUN_REPORT.md @@ -0,0 +1,25 @@ +# RUN_REPORT.md — Task 4.18 + +## Summary + +- Task: `4.18` +- 상태: `done` +- 변경: Git helper skill과 Claude wrapper가 worktree 상태, verification evidence, review approval을 확인하도록 강화했다. + +## Evidence + +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `grep -q 'worktree' .agents/skills/branch-checkout/SKILL.md && grep -q 'verification' .agents/skills/pr-create/SKILL.md` | `RED -> PASS` | 구현 전 실패, 문서 변경 후 통과 | +| Verification: Acceptance | `grep -q 'worktree' .agents/skills/branch-checkout/SKILL.md && grep -q 'verification' .agents/skills/pr-create/SKILL.md` | `PASS` | fresh verification | +| Verification: Tests | `python3 scripts/validate_tasks.py`; `python3 scripts/sync_plans.py --check` | `PASS` | tasks valid, Plans sync | +| Review | `$harness-review` inline | `APPROVE` | wrapper allowed-tools 누락 발견 후 수정 | + +## Notes + +- 결정: finish 선택지(merge, PR, keep, discard)는 사용자 명시 요청 시만 제시하도록 helper 제한에 남겼다. +- 변경 파일: `.agents/skills/branch-checkout/SKILL.md`, `.agents/skills/git-push/SKILL.md`, `.agents/skills/pr-create/SKILL.md`, `.claude/commands/branch-checkout.md`, `.claude/commands/git-push.md`, `.claude/commands/pr-create.md` +- 실패/복구: review 중 Claude wrapper `allowed-tools` 누락을 발견해 `git worktree`/`git submodule` 권한을 추가했다. +- TDD 예외: 없음 +- 다음 행동: 없음 +- 최종 갱신: `2026-07-09 12:30 KST` diff --git a/.harness/tasks/4.18-git-helper-safety/STATE.md b/.harness/tasks/4.18-git-helper-safety/STATE.md new file mode 100644 index 0000000..5be3417 --- /dev/null +++ b/.harness/tasks/4.18-git-helper-safety/STATE.md @@ -0,0 +1,29 @@ +# STATE.md — Task 상태 스냅샷 + +## 현재 목표 + +branch/worktree 상태 감지와 PR 전 verification/review evidence 요구를 helper skill에 반영한다. + +## 진행 중인 Task + +- Task ID: `4.18` +- 상태: `done` +- 기준 문서: `tasks/index.json` + +## 마지막 검증 결과 + +- `grep -q 'worktree' .agents/skills/branch-checkout/SKILL.md && grep -q 'verification' .agents/skills/pr-create/SKILL.md` PASS +- `python3 scripts/validate_tasks.py` PASS +- `python3 scripts/sync_plans.py --check` PASS + +## 차단 요소 + +- 없음 + +## 마지막 커밋 + +- 없음 + +## 최종 갱신 + +- 2026-07-09 12:30 KST diff --git a/.harness/tasks/4.18-git-helper-safety/TASKS.md b/.harness/tasks/4.18-git-helper-safety/TASKS.md new file mode 100644 index 0000000..fdecc78 --- /dev/null +++ b/.harness/tasks/4.18-git-helper-safety/TASKS.md @@ -0,0 +1,14 @@ +# TASKS.md — Task 내부 체크리스트 템플릿 + +> 이 루트 파일은 실제 체크리스트가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//TASKS.md`로 복사해서 사용한다. + +## 현재 Task: [id] [title] + +- [ ] 세분화 기준 확인 +- [ ] scope/YAGNI 기준 확인 +- [ ] 구현 +- [ ] Acceptance 실행 +- [ ] 관련 테스트 실행 +- [ ] 리뷰 +- [ ] `tasks/index.json`/`Plans.md` 갱신 diff --git a/.harness/tasks/4.19-skeleton-evidence-template/CHECKPOINTS.md b/.harness/tasks/4.19-skeleton-evidence-template/CHECKPOINTS.md new file mode 100644 index 0000000..b3b894b --- /dev/null +++ b/.harness/tasks/4.19-skeleton-evidence-template/CHECKPOINTS.md @@ -0,0 +1,8 @@ +# CHECKPOINTS.md — Task 완료 지점 템플릿 + +> 이 루트 파일은 실제 checkpoint 기록이 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//CHECKPOINTS.md`로 복사해서 사용한다. + +| 일시 | Task | 내용 | 커밋 | 검증 | +|------|------|------|------|------| +| YYYY-MM-DD | [id] | [완료 지점] | [hash 또는 미커밋] | [검증 결과] | diff --git a/.harness/tasks/4.19-skeleton-evidence-template/HANDOFF.md b/.harness/tasks/4.19-skeleton-evidence-template/HANDOFF.md new file mode 100644 index 0000000..888a81a --- /dev/null +++ b/.harness/tasks/4.19-skeleton-evidence-template/HANDOFF.md @@ -0,0 +1,21 @@ +# HANDOFF.md — Task 인수인계 템플릿 + +> 이 루트 파일은 실제 인수인계가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//HANDOFF.md`로 복사해서 사용한다. + +## 다음 세션이 먼저 읽을 최소 파일 + +1. `.harness/tasks//STATE.md` +2. `.harness/LESSONS.md` 최근 항목 +3. `tasks/index.json` +4. `Plans.md` +5. `.harness/CONTEXT_INDEX.md`에서 필요한 파일 + +## 재개 지점 + +- [어디서 이어가면 되는지 기록] + +## 주의사항 + +- Task 상태의 단일 출처는 `tasks/index.json`이다. +- 루트 `.harness/*.md` 템플릿에 실제 진행 상태를 기록하지 않는다. diff --git a/.harness/tasks/4.19-skeleton-evidence-template/LOG.md b/.harness/tasks/4.19-skeleton-evidence-template/LOG.md new file mode 100644 index 0000000..0d92697 --- /dev/null +++ b/.harness/tasks/4.19-skeleton-evidence-template/LOG.md @@ -0,0 +1,9 @@ +# LOG.md — Task 작업·에러 로그 템플릿 + +> 이 루트 파일은 실제 작업 로그가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//LOG.md`로 복사해서 사용한다. +> 전역 재발 방지 규칙은 루트 `.harness/LESSONS.md`에 유지한다. + +## YYYY-MM-DD + +- [작업 또는 에러를 시간순으로 추가] diff --git a/.harness/tasks/4.19-skeleton-evidence-template/RUN_REPORT.md b/.harness/tasks/4.19-skeleton-evidence-template/RUN_REPORT.md new file mode 100644 index 0000000..29de50a --- /dev/null +++ b/.harness/tasks/4.19-skeleton-evidence-template/RUN_REPORT.md @@ -0,0 +1,25 @@ +# RUN_REPORT.md — Task 4.19 + +## Summary + +- Task: `4.19` +- 상태: `done` +- 변경: skeleton과 루트 RUN_REPORT 템플릿이 TDD, Verification, Review evidence를 기록하게 했다. + +## Evidence + +| 구분 | 명령 또는 근거 | 결과 | 비고 | +|------|----------------|------|------| +| TDD | `grep -q 'TDD' templates/skeleton/.harness/RUN_REPORT.md && grep -q 'Verification' templates/skeleton/.harness/RUN_REPORT.md` | `RED -> PASS` | 구현 전 실패, 문서 변경 후 통과 | +| Verification: Acceptance | `grep -q 'TDD' templates/skeleton/.harness/RUN_REPORT.md && grep -q 'Verification' templates/skeleton/.harness/RUN_REPORT.md` | `PASS` | fresh verification | +| Verification: Tests | `python3 scripts/validate_tasks.py`; `python3 scripts/sync_plans.py --check` | `PASS` | tasks valid, Plans sync | +| Review | `$harness-review` inline | `APPROVE` | Spec compliance/Code quality blocker 없음 | + +## Notes + +- 결정: skeleton뿐 아니라 현재 루트 `.harness/RUN_REPORT.md` 템플릿도 같은 형식으로 맞췄다. +- 변경 파일: `templates/skeleton/.harness/RUN_REPORT.md`, `.harness/RUN_REPORT.md` +- 실패/복구: 없음 +- TDD 예외: 없음 +- 다음 행동: 없음 +- 최종 갱신: `2026-07-09 12:30 KST` diff --git a/.harness/tasks/4.19-skeleton-evidence-template/STATE.md b/.harness/tasks/4.19-skeleton-evidence-template/STATE.md new file mode 100644 index 0000000..c0e0dad --- /dev/null +++ b/.harness/tasks/4.19-skeleton-evidence-template/STATE.md @@ -0,0 +1,29 @@ +# STATE.md — Task 상태 스냅샷 + +## 현재 목표 + +skeleton RUN_REPORT가 TDD와 Verification evidence를 기록하게 한다. + +## 진행 중인 Task + +- Task ID: `4.19` +- 상태: `done` +- 기준 문서: `tasks/index.json` + +## 마지막 검증 결과 + +- `grep -q 'TDD' templates/skeleton/.harness/RUN_REPORT.md && grep -q 'Verification' templates/skeleton/.harness/RUN_REPORT.md` PASS +- `python3 scripts/validate_tasks.py` PASS +- `python3 scripts/sync_plans.py --check` PASS + +## 차단 요소 + +- 없음 + +## 마지막 커밋 + +- 없음 + +## 최종 갱신 + +- 2026-07-09 12:30 KST diff --git a/.harness/tasks/4.19-skeleton-evidence-template/TASKS.md b/.harness/tasks/4.19-skeleton-evidence-template/TASKS.md new file mode 100644 index 0000000..fdecc78 --- /dev/null +++ b/.harness/tasks/4.19-skeleton-evidence-template/TASKS.md @@ -0,0 +1,14 @@ +# TASKS.md — Task 내부 체크리스트 템플릿 + +> 이 루트 파일은 실제 체크리스트가 아니라 템플릿이다. +> 새 Task를 시작할 때 `.harness/tasks//TASKS.md`로 복사해서 사용한다. + +## 현재 Task: [id] [title] + +- [ ] 세분화 기준 확인 +- [ ] scope/YAGNI 기준 확인 +- [ ] 구현 +- [ ] Acceptance 실행 +- [ ] 관련 테스트 실행 +- [ ] 리뷰 +- [ ] `tasks/index.json`/`Plans.md` 갱신 diff --git a/AGENTS.md b/AGENTS.md index 57cf00d..254ceb8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -73,6 +73,7 @@ branches, pushing, or creating PRs. Never force push or discard local changes. ## Mandatory Gates +- Core workflow is `spec -> plan -> isolated work -> TDD -> fresh verification -> review -> finish`. - Before adding or changing task rows, use the planning proposal contract in `CLAUDE.md` and the scripts: `build_planning_context.py`, `validate_task_proposal.py`, @@ -81,7 +82,8 @@ branches, pushing, or creating PRs. Never force push or discard local changes. `agents/task-decomposer.md` granularity criteria and `agents/quality-gates.md` scope/YAGNI criteria. - After implementation and before review, follow `agents/test-agent.md`: run - the task Acceptance command and the relevant project test suite. + the task Acceptance command and the relevant project test suite, and record + TDD or explicit exception evidence. - During review, apply `agents/quality-gates.md`: findings first, verification evidence first, and only useful residual risk after approval. - Do not mark a task `done` unless the Acceptance evidence has passed. GitHub diff --git a/BLUEPRINT.md b/BLUEPRINT.md index 146d1c1..6577c88 100644 --- a/BLUEPRINT.md +++ b/BLUEPRINT.md @@ -4,12 +4,13 @@ ## 최소 성공 흐름 -1. 목표를 한 문단으로 적는다. -2. `tasks/index.json`에 작은 Task, DoD, Acceptance를 둔다. -3. 구현 전 `agents/task-decomposer.md`와 `agents/quality-gates.md`를 확인한다. -4. 구현 후 Acceptance와 관련 테스트를 실행한다. -5. 실패는 `.harness/tasks//LOG.md`, 완료 요약은 `RUN_REPORT.md`에 남긴다. -6. `tasks/index.json`을 갱신하고 `python3 scripts/sync_plans.py`를 실행한다. +1. spec: 목표, 제약, 성공 기준을 한 문단으로 적는다. +2. plan: `tasks/index.json`에 작은 Task, DoD, Acceptance를 둔다. +3. isolated work: 구현 전 `agents/task-decomposer.md`와 `agents/quality-gates.md`를 확인한다. +4. TDD: 동작 변경은 실패하는 테스트나 Acceptance evidence를 먼저 확인한다. +5. fresh verification: 구현 후 Acceptance와 관련 테스트를 새로 실행한다. +6. review: `Spec compliance`와 `Code quality`를 분리해 확인한다. +7. finish: 실패는 `.harness/tasks//LOG.md`, 완료 요약과 evidence는 `RUN_REPORT.md`에 남긴 뒤 `tasks/index.json`과 `Plans.md`를 갱신한다. ## 레이어 @@ -18,7 +19,7 @@ -> CLAUDE.md / AGENTS.md 규칙 확인 -> tasks/index.json에서 대상 Task 선택 -> agents/* gate 적용 - -> 구현, 테스트, 리뷰 + -> 구현, TDD, fresh verification, 리뷰 -> Plans.md snapshot 갱신 ``` @@ -68,10 +69,11 @@ ponytail/caveman의 durable 원칙은 Codex에서 별도 plugin으로 실행된 2. `agents/task-decomposer.md` 세분화 게이트 확인 3. `agents/quality-gates.md` scope/YAGNI 확인 4. `.harness/tasks//STATE.md` 갱신 -5. 구현 -6. Acceptance와 관련 테스트 실행 -7. 리뷰 -8. 통과 시 `tasks/index.json` 상태 변경과 `Plans.md` 재생성 +5. TDD red evidence 확인 또는 예외 사유 기록 +6. 구현 +7. Acceptance와 관련 테스트를 fresh verification으로 실행 +8. 리뷰 +9. 통과 시 `tasks/index.json` 상태 변경과 `Plans.md` 재생성 Actions는 Task 상태를 쓰지 않고 PR 검증만 수행한다. diff --git a/CLAUDE.md b/CLAUDE.md index 5e2b3ab..c8e28fe 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,6 +27,7 @@ Claude Code 기준 rulebook이다. Codex는 `AGENTS.md`와 `.agents/skills/*`로 ## 기획 규칙 - 새 프로젝트/기능 착수 시 코드보다 먼저 `/grill-me`를 실행한다. +- 핵심 흐름: spec -> plan -> isolated work -> TDD -> fresh verification -> review -> finish. - 기획 흐름: 인터뷰 -> `docs/PRD.md` 초안 -> 필요한 보완 문서 -> `/harness-plan`. - 보완 문서는 `docs/templates/{UserFlow,DESIGN,Architecture}.md` 중 필요한 것만 복사한다. - UI가 있으면 `docs/DESIGN.md`를 UI 구현의 single source of truth로 둔다. UI 없는 프로젝트는 생략한다. @@ -75,17 +76,28 @@ Planning 로그의 최상위 `step`, `result`, `message`, `next_action`은 사 - `/harness-work` 실행 전 대상 `todo` Task가 `agents/task-decomposer.md`의 세분화 기준을 통과했는지 확인한다. - DoD/Acceptance 미기재, 뭉뚱그린 표현, 여러 관심사 혼재, 1 PR 초과 징후가 있으면 구현하지 않는다. `/harness-plan`으로 하위 Task proposal을 먼저 만든다. - 작업 중 범위가 커지면 멈추고 `agents/task-decomposer.md`와 `agents/quality-gates.md` 기준으로 재분해한다. +- 기능, 버그 수정, 동작 변경은 TDD가 기본 완료 조건이다. 먼저 실패하는 테스트나 Acceptance evidence를 확인하고, 최소 구현 후 green을 확인해야 한다. +- 문서, 설정, 생성 코드, throwaway prototype처럼 TDD가 맞지 않는 변경은 예외로 둘 수 있지만, 예외 이유를 `.harness/tasks//RUN_REPORT.md` Evidence 또는 Notes에 남긴다. +- 큰 Task이거나 리뷰 리스크가 높으면 implementer/reviewer subagent 사용을 선택형 gate로 제안한다. ledger나 `.superpowers/` 디렉토리는 만들지 않는다. - `plans-guard.yml`은 구조와 sync만 검증한다. 세분화와 YAGNI 판단은 현재 세션의 책임이다. ## 테스트 규칙 - worker 구현 완료 후 reviewer 검토 전에 `agents/test-agent.md` 절차를 실행한다. - 해당 Task의 Acceptance 명령과 관련 프로젝트 테스트 스위트를 모두 실행한다. +- 완료, 통과, 수정 완료, PR 가능 같은 성공 주장은 구현 이후 fresh verification evidence가 있을 때만 허용한다. +- Acceptance가 통과해도 TDD evidence 또는 예외 사유가 없으면 리뷰에서 `REQUEST_CHANGES`가 가능하다. - Verdict FAIL이면 reviewer에 넘기지 않는다. 실패 내용을 근거로 수정 후 재실행한다. ## 리뷰 규칙 - worker 완료 후 PR 오픈 전에 `/harness-review`를 실행한다. - 리뷰는 `agents/quality-gates.md`의 review/reporting gate를 따른다. -- findings를 먼저 보고하고 Acceptance/test evidence와 잔여 risk를 짧게 남긴다. +- findings를 먼저 보고하고 TDD, Acceptance/test, fresh verification evidence와 잔여 risk를 짧게 남긴다. +- verdict는 `Spec compliance`와 `Code quality` 두 축을 따로 본다. 둘 중 하나라도 blocker면 전체 판정은 `REQUEST_CHANGES`다. - `REQUEST_CHANGES` 상태에서 PR을 열지 않는다. + +## Finish 규칙 + +- finish는 검증과 리뷰가 끝난 뒤에만 말한다. `RUN_REPORT.md` Evidence 표가 완료 판정의 근거다. +- merge, PR, branch keep/discard 같은 선택지는 사용자가 명시 요청할 때만 제시한다. diff --git a/Plans.md b/Plans.md index 8342fa1..dc6145d 100644 --- a/Plans.md +++ b/Plans.md @@ -88,6 +88,19 @@ --- +## Week 4 — Superpowers benchmark 적용 + +| Task | 내용 | DoD | Acceptance | Depends | Status | GH | +|------|------|-----|------------|---------|--------|----| +| 4.14 | Superpowers benchmark workflow 문서 정렬 | README.md, CLAUDE.md, AGENTS.md, BLUEPRINT.md가 spec -> plan -> work -> TDD/verification -> review -> finish 흐름과 완료 조건을 같은 기준으로 설명한다. | grep -q 'fresh verification' CLAUDE.md && grep -q 'TDD' README.md | - | cc:완료 | - | +| 4.15 | Planning/Task decomposition 규칙 강화 | Task 작성 기준에 Files, Interfaces, Verification, no-placeholder 규칙이 반영된다. | grep -q 'Files' agents/task-decomposer.md && grep -q 'Verification' agents/task-decomposer.md | 4.14 | cc:완료 | - | +| 4.16 | TDD 및 verification-before-completion gate 추가 | agents/test-agent.md와 agents/quality-gates.md가 TDD evidence와 fresh verification evidence를 요구한다. | grep -q 'fresh verification' agents/test-agent.md && grep -q 'TDD' agents/quality-gates.md | 4.14 | cc:완료 | - | +| 4.17 | Review verdict 이원화 | .agents/skills/harness-review/SKILL.md가 Spec compliance와 Code quality를 별도 판정한다. | grep -q 'Spec compliance' .agents/skills/harness-review/SKILL.md && grep -q 'Code quality' .agents/skills/harness-review/SKILL.md | 4.16 | cc:완료 | - | +| 4.18 | Git helper 안전 흐름 강화 | branch-checkout, git-push, pr-create skill이 branch/worktree 상태와 fresh verification evidence 확인 조건을 설명한다. | grep -q 'worktree' .agents/skills/branch-checkout/SKILL.md && grep -q 'verification' .agents/skills/pr-create/SKILL.md | 4.16 | cc:완료 | - | +| 4.19 | Skeleton evidence template 갱신 | 새 프로젝트 skeleton의 RUN_REPORT.md가 TDD와 Verification evidence를 기록한다. | grep -q 'TDD' templates/skeleton/.harness/RUN_REPORT.md && grep -q 'Verification' templates/skeleton/.harness/RUN_REPORT.md | 4.16 | cc:완료 | - | + +--- +