From claude-code-harness
Research-backed, team-validated task planning and Plans.md management with progress sync. Handles plan creation, task addition, marker updates, and implementation alignment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-code-harness:harness-plan [create|add|update|sync|sync --no-retro|--ci][create|add|update|sync|sync --no-retro|--ci]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Harness の統合プランニングスキル。
Harness の統合プランニングスキル。 以下の3つの旧スキルを統合:
planning (plan-with-agent) — アイデア → Plans.md への落とし込みplans-management — タスク状態管理・マーカー更新sync-status — Plans.md と実装の同期確認| ユーザー入力 | サブコマンド | 動作 |
|---|---|---|
"計画を作って" / /harness-plan create | create | Spec delta / skip reason → Plans.md task 生成 |
"タスクを追加して" / /harness-plan add | add | Plans.md に新タスク追加 |
"完了にして" / /harness-plan update | update | タスクマーカーを cc:完了 に変更 |
"今どこ?" / /harness-plan sync | sync | 実装とPlans.mdを照合・同期 |
/harness-sync | sync | 進捗確認(独立 sync surface と同等) |
/harness-plan create | create | spec.md / Plans.md 二正本の計画作成 |
/harness-plan list | list | plans/manifest.json の named Plans を一覧 |
/harness-plan switch <name> | switch | active plan を .claude/state/active-plan.json に保存 |
/recap: 久しぶりに戻った時に要約を取り直してから sync へ入る/undo: /rewind の別名。直前の plan 更新を即座に戻したい時にそのまま使うSee references/planning-quality.md
harness-plan は、spec.md product contract and Plans.md task contract の co-required planning output を作る planning surface である。
precedence は spec.md > sub-spec > Plans.md のまま維持する。
Plans.md は task ledger、root spec.md は product contract であり、上下関係は崩さない。
渡された情報をそのまま Plans.md に落とさない。
計画作成や大きな task 追加では、最新情報・既存仕様・記憶・TeamAgent / サブエージェントによる複数視点の議論を確認し、
このプロダクトに取り入れるべき要素だけを task contract に変換する。
/harness-plan create は Spec delta または Spec skip reason と Plans.md task 生成をセットで返す。
出力には必ず Spec delta または Spec skip reason を含める。
Spec delta / Spec skip reason は Harness が生成し、consumer は承認・修正だけ行う。
Non-trivial planning gate:
単発・軽微タスクでない planning は、TeamAgent またはサブエージェント前提で扱う。
ここでの non-trivial は、複数 task / 複数 file / 複数 session / product behavior / API / data model / 権限 / 課金 / 外部連携 / 配布面 / セキュリティに影響する依頼を指す。
Task tool が使える場合は Product / Architecture / Security / QA / Skeptic の独立視点を走らせる。
使えない場合は サブエージェント未使用 と明示し、同じ観点を単独で分けて評価する。
non-trivial planning の出力には、次の検証を必ず含める。
team_validation_mode: not_required_lightweight / native / subagent / manual-pass / unavailablespec.md / sub-spec / Plans.md の整合性軽量 task は team_validation_mode: not_required_lightweight でよい。
non-trivial planning は native / subagent / manual-pass のいずれかを使う。
unavailable のまま Required にしてはいけない。
Product / Architecture / Security / QA / Skeptic は検証 perspective であり、agent_type 名ではない。
利用可能な TeamAgent / Task サブエージェントに perspective として依頼し、任意 agent spawn を要求しない。
Security gate は秘密情報の実読取を要求しない。
.env や secret の read が必要になる場合は Risk Gate として止め、許可された既存 guard / evidence で確認する。
適用する場面:
create で新しい計画を作るadd で product behavior / API / 権限 / 課金 / 外部連携 / 配布面に影響する task を足す軽く扱ってよい場面:
updatesync品質フロー:
spec.md・Plans.md・README・docs・CLAUDE.md・関連 skill を確認する.claude/agent-memory/ / .claude/state/ など、利用可能な記憶面を project-scoped で確認する$easy 形式で、提案内容・理由・どうなるのかを報告するspec.md / Plans.md / test task へ落とし込むFast / Gate / Release は 新 skill ではなく Plans metadata として扱う。 Plans.md の 5 column テンプレート(Task / 内容 / DoD / Depends / Status)は変更しない。 lane / stage / TDD / unknown などの metadata は 内容(Content)または DoD の先頭 に埋め込む。
Lane Taxonomy — 各 task の Content か DoD 先頭に、次のいずれか 1 つを付ける:
| タグ | 用途 |
|---|---|
[lane:fast] | low-risk local work(refactor / docs / typo) |
[lane:gate] | spec / workflow / mirror / guardrail を触る変更(大半の機能実装) |
[lane:release] | public artifact / version / tag / GitHub Release を出す変更 |
Stage gate — planning output(create / product-impacting add)は、次の 5 段階で構造化する:
[tdd:required] または [tdd:skip:<reason>] を各 task に付けるharness-review または companion review)を DoD に落とす[lane:release] gate へ)stage gate は planning セクションの見出しまたは task 群の前置きとして出力し、
各 stage に対応する task を Plans.md 行として生成する。
release closeout は [lane:release] task または harness-release へ委譲してよい。
Unknown data contract — AI が見えていない data / failed search / missing fixture / API unavailable は
not_observed != absent 原則で unknown と明示する。absent と断定しない。
| 観測状態 | 出力 |
|---|---|
| 確認済みで存在しない | absent(evidence 必須) |
| 検索失敗・未読・API 不可・fixture 欠落 | unknown |
| 確認できた事実 | 通常の evidence 記述 |
create / add の出力契約には、調査段(stage 1)で unknown 一覧または
unknown_data: [...] を残す。DoD に「未確認の前提を absent と書かない」を含めてよい。
アイデア・要件をヒアリングし、実行可能な Plans.md を生成する。
フロー:
cc:TODO マーカー付き)create で計画を確定する時は、Plans.md task を出したあと、承認前に 事前確認セクションを必ず生成する。
目的は、常設 allowlist で何でも許可するのではなく、作業スコープごとに「発生しそうな stop / ask」を plan 承認時に 1 回だけ前倒しで確認すること。
抽出対象:
secret-read path(.env*, secrets/**, *.pem, *.key, .ssh/**, .aws/**, credentials など)git push, gh pr create, gh api, curl / API call, release / publish / deploy)rm -rf, migration destructive step, force push, production apply)固定 format:
## 事前確認
- 事項: <secret-read / external-send / destructive の具体操作>
理由: <DoD または task 実行上必要な理由を 1 行>
scope: Phase <phase> / Task <task>
出力ルール:
理由 は secret 値を含めない。path / コマンド名 / 対象サービスまでに留める。.claude/state/plan-preapprovals.json に plan-preapproval.v1 として記録する。schema は templates/schemas/plan-preapproval.v1.json。事項 + 理由 1 行 + scope (phase/task) を維持し、operations には secret-read / external-send / destructive の列挙、paths / commands / targets には対象を列挙、decision と approved_at を入れる。harness-work / breezing 実行中、宣言済み事項だけを理由に AskUserQuestion を出してはいけない。runtimefloor.secretAllow へ per-run 反映するための入力として扱う。Plans.md は「やるべきこと」の task contract、root spec.md は「何が正しいか」の product contract として扱う。
co-required planning output は両方の出力を必須にするという意味であり、precedence は spec.md > sub-spec > Plans.md のまま維持する。
実装がぶれる可能性がある時は、Plans.md 生成前に root spec.md を更新する。
create と product-impacting add は毎回 root spec.md を読む。
優先する保存先:
spec.mdspec.md がない時だけ、既存の project spec / architecture / product compassspec.md がない時だけ、docs/spec/00-project-spec.md作成/更新が必要な条件:
不要な条件:
出力契約:
Spec delta: product contract を更新する時に、対象 spec path と変更点を書くSpec skip reason: product contract を更新しない時に、理由を書くSpec delta / Spec skip reason は Harness が生成し、consumer は承認・修正だけ行うSpec skip reason を task context / sprint contract に残すnot_observed != absent参照:
docs/plans/spec-ssot.mdcreate が終わったら、説明だけで終わらせず、新しいセッションの起動コマンド と
起動後にそのまま入れる最初の指示プロンプト をセットで案内する。
優先順位は次の通り:
claude/harness-work <task番号>claude/breezing all/harness-work allENABLE_PROMPT_CACHING_1H=1 claude/harness-loop all/breezing all最低でも次の 3 行を含める:
新しいセッションの起動コマンド:起動後の最初の入力:向いている場面:例:
新しいセッションの起動コマンド: claude
起動後の最初の入力: /breezing all
向いている場面: Phase 1 の task が複数あり、まとめて進めるほうが自然なため
長時間系を勧める場合は、Claude Code セッション起動コマンドも併記する:
新しいセッションの起動コマンド: ENABLE_PROMPT_CACHING_1H=1 claude
起動後の最初の入力: /harness-loop all
向いている場面: 5 分を超える待機や resume をまたぐ長時間タスクのため
補足:
scripts/claude-longrun.sh はこのリポジトリの開発補助スクリプトで、plugin install 後の consumer 環境には配布されないENABLE_PROMPT_CACHING_1H=1 claude の 1 行コマンドを優先するbash scripts/claude-longrun.sh はローカル checkout 上では利用してよいCI モード (--ci):
ヒアリングなし。既存の Plans.md をそのまま利用してタスク分解のみ行う。
Plans.md に新しいタスクを追加する。
product-impacting な追加では、上の「spec.md / Plans.md 二正本チェック」に従い Spec delta または Spec skip reason も出力する。
/harness-plan add タスク名: 詳細説明 [--phase フェーズ番号]
タスクは cc:TODO マーカーで追加される。
タスクのステータスマーカーを変更する。
/harness-plan update [タスク名|タスク番号] [WIP|完了|blocked]
マーカー対応表:
| コマンド | マーカー |
|---|---|
WIP | cc:WIP |
完了 / done | cc:完了 |
blocked | blocked |
TODO | cc:TODO |
実装状況と Plans.md を照合し、差分を検出・更新する。
フロー:
.claude/state/agent-trace.jsonl)レトロスペクティブ(デフォルト ON):
cc:完了 タスクが 1 件以上あれば自動的に振り返りを実行する。
見積もり精度、ブロック原因パターン、スコープ変動を分析し、学びを記録。
sync --no-retro で明示的にスキップ可能。
Plans.md は正本のまま維持し、GitHub Issue 連携は opt-in の team mode だけで使う。
scripts/plans-issue-bridge.sh は実際に GitHub を更新せず、常に dry-run の payload を返す参照:
docs/plans/team-mode.md複数の Plans.md を使う場合は plans/manifest.json を正本にして、名前で選択する。
scripts/plan-registry.sh list
scripts/plan-registry.sh switch roadmap
scripts/plans-issue-bridge.sh --plan roadmap --format markdown
node scripts/generate-sprint-contract.js --plan roadmap 9.1.1
運用ルール:
--plan <name> を渡す..、repo 外 symlink は拒否される参照:
docs/plans/named-plans.md# [プロジェクト名] Plans.md
作成日: YYYY-MM-DD
---
## Phase N: フェーズ名
| Task | 内容 | DoD | Depends | Status |
|------|------|-----|---------|--------|
| N.1 | 説明 | テスト通過 | - | cc:TODO |
| N.2 | 説明 | lint エラー 0 | N.1 | cc:WIP |
| N.3 | 説明 | マイグレーション実行可能 | N.1, N.2 | cc:完了 |
DoD(Definition of Done): 検証可能な完了条件を 1 行で記述。「いい感じ」「ちゃんと動く」は禁止。Yes/No で判定できる形にする。
Depends: タスク間の依存関係。-(依存なし)、タスク番号(N.1)、カンマ区切り(N.1, N.2)、フェーズ依存(Phase N)。
Plans.md の task には、TDD 判定を明示するタグを内容または DoD に書ける。
| タグ | 意味 | tdd_required 推論 |
|---|---|---|
[tdd:required] | この task は先に失敗テストを書く必要がある | true |
[tdd:skip:<reason>] | この task は理由つきで TDD を省略する | false, skip_tdd_reason=<reason> |
<reason> は空にしない。
例: [tdd:skip:docs-only]、[tdd:skip:no-test-framework-detected]。
タグがない場合の tdd_required は次の順で推論する。
[tdd:required] / [tdd:skip:<reason>]src/, app/, cmd/, lib/, pkg/, internal/, go/ など source 実装を含むなら requiredharness-plan create は、必要なときだけ brief を付ける。
design briefcontract briefscripts/generate-skill-manifest.sh で machine-readable JSON にできる参照:
docs/plans/briefs-manifest.mddocs/plans/spec-ssot.md| マーカー | 意味 |
|---|---|
pm:依頼中 | PM から依頼済み |
cc:TODO | 未着手 |
cc:WIP | 作業中 |
cc:完了 | Worker 作業完了 |
pm:確認済 | PM レビュー完了 |
blocked | ブロック中(理由を必ず記載) |
Plans.md への task append が完了したら、非エンジニアの発注者が計画を判断できるよう
harness-plan-brief を提案する。これは理解・選択肢・リスク・合格条件を 1 枚の HTML に
まとめた「計画概要」画面で、専門知識なしで読める。実装に入る前の合意形成に使う。
harness-sync — 実装と Plans.md を同期するharness-work — 計画したタスクを実装するharness-plan-brief — 計画概要 HTML(非エンジニア向け、計画確定時に提案)harness-review — 実装のレビューharness-setup — プロジェクト初期化npx claudepluginhub chachamaru127/claude-code-harness --plugin claude-code-harnessManages task planning and Plans.md tracking with create, add, update, sync subcommands. Useful for structured plan creation and progress sync.
Manages planning-tools plugin commands and master-plan workflow lifecycle, including plan-file storage, multi-phase plan authoring, and interactive Open Questions walkthroughs.
Creates structured plans for multi-step tasks including software features, research workflows, events, and study plans. Also deepens existing plans by reviewing sub-agent findings.