com um clique
harness-plan
// Plans and tracks tasks in .claude/harness/plans.json. Use when creating plans, adding tasks, updating markers, checking progress, or brainstorming an idea into tasks.
// Plans and tracks tasks in .claude/harness/plans.json. Use when creating plans, adding tasks, updating markers, checking progress, or brainstorming an idea into tasks.
Orchestrates the full powerball-harness plugin release with build, validation, version bump, CHANGELOG, tag, and GitHub Release. Use when releasing this plugin.
Periodic housekeeping and session lifecycle management. Use when performing cleanup, pruning, or session commands.
Runs iterate-until-pass loops with ralph-worker agents in a worktree. Use when running [ralph]-marked tasks or looping until verify passes.
Initializes and configures Harness in a project — CI, memory, duo workflow, Codex. Use when setting up a new project or adding Harness configuration.
Executes plans.json tasks — solo, parallel, or breezing team mode. Use when implementing tasks or running the work loop.
Manages SSOT memory — decisions.md, patterns.md, and cross-session learnings. Use when recording decisions, searching memory, or promoting learnings.
| name | harness-plan |
| description | Plans and tracks tasks in .claude/harness/plans.json. Use when creating plans, adding tasks, updating markers, checking progress, or brainstorming an idea into tasks. |
| when_to_use | create a plan, add a task, mark task done, where am I, check progress, sync plans, archive phases, brainstorm idea, rough idea, design spec |
| allowed-tools | ["Read","Write","Edit","Bash","Grep","Glob","WebSearch","Task"] |
| argument-hint | [create|add|update|sync|archive|session-log|brainstorm|sync --no-retro|sync --snapshot|--ci] |
| effort | xhigh |
| model | opus |
Before executing any subcommand, ensure the JSON plans storage is initialised:
.claude/harness/plans.json exists → proceed normally.Plans.md exists but .claude/harness/plans.json does not → auto-migrate:
harness plan-cli migrate
harness plan-cli add-phase ...).This check is performed silently. Inform the user only if migration was triggered.
| User Input | Subcommand | Behavior |
|---|---|---|
| "create a plan" | create | Default behavior, interactive interview → harness plan-cli add-phase/add-task |
| "add a task" | add | Add new task via harness plan-cli add-task |
| "mark complete" | update | Change task status to cc:done via harness plan-cli update |
"where am I?" / "check progress" / harness-plan sync / "sync status" | sync | Compare implementation with plan state (harness plan-cli list/get) and sync via harness plan-cli update |
harness-plan sync --snapshot | sync --snapshot | Save point-in-time progress snapshot |
"rough idea" / "brainstorm" / harness-plan brainstorm | brainstorm | Shape idea → design spec → tasks via harness plan-cli add-phase/add-task |
"archive old phases" / harness-plan archive | archive | Archive phases via harness plan-cli archive <phase-id> (sets status: archived in plans.json) |
"session log too big" / harness-plan session-log | session-log | Split session-log.md by month; move older months to .claude/memory/session-log-YYYY-MM.md |
Each subcommand has its own reference file. Open the matching file when invoking that subcommand.
| Subcommand | Reference |
|---|---|
create | references/create.md — interview flow, TDD decision rules, plan generation via harness plan-cli |
add | references/add.md — insertion rules, DoD/Depends auto-inference |
update | references/update.md — marker mapping, single-task status changes |
sync | references/sync.md — discrepancy detection, retrospective, --snapshot |
brainstorm | references/brainstorm.md — two-stage idea → spec → plan flow |
archive | references/archive.md — phase archival, retention, naming |
session-log | references/session-log.md — monthly split of session-log.md |
| (CLI reference) | cli-reference.md — all subcommands, flags, exit codes, agent examples |
| (quality gate) | references/planning-quality.md — 8-step planning quality contract for create and high-impact add |
CI mode (--ci) — applies to create only: no interview; uses the existing plan state (harness plan-cli list) and only performs task decomposition. See references/create.md "CI Mode" section.
Retrospective skip (--no-retro) — applies to sync only: skips the automatic retrospective pass. See references/sync.md "Step 6: Retrospective".
Task data is stored in .claude/harness/plans.json (repo root — never the plugin cache path). The canonical schema is defined in plan_types.go. Key invariants:
add-phase prepends; phases are listed newest-on-top.status: archived).plans.json directly; use harness plan-cli subcommands.harness/rules/plans-json-location.md; plugin cache copies are frozen snapshots and must not be read or written.Compact summary. For full semantics (including the cc:done [hash] artifact format and blocked reason annotation), see references/task-fields.md "Status Markers".
| Marker | Meaning |
|---|---|
pm:requested | Requested by PM |
cc:TODO | Not started |
cc:WIP | In progress |
cc:done | Worker completed |
pm:confirmed | PM review completed |
blocked | Blocked (reason must always be noted) |
[ralph] | Iterative loop task — executed by harness-ralph-loop; requires Verify: line. See references/ralph-tasks.md |
harness-plan create attaches briefs only when needed.
design briefcontract briefscripts/generate-skill-manifest.shReference:
docs/plans/briefs-manifest.mdharness-planner AgentFor mechanical plans mutations (mark task status, add a row, archive completed phases, split session-log), skills and agents may delegate to the harness-planner agent (Haiku, low effort) instead of running the edit inline.
The planner agent now calls the harness plan-cli binary — it does not edit Plans.md or plans.json directly. All writes go through the CLI so atomic I/O guarantees are preserved.
| Subcommand handled by agent | CLI call used internally |
|---|---|
update | harness plan-cli update <task_id> --status <status> |
add | harness plan-cli add-phase or harness plan-cli add-task <phaseID> |
archive | harness plan-cli archive <phaseID> |
session-log | No CLI equivalent; still edits session-log.md directly |
The same CLI calls apply when this skill performs the edit inline (without delegating): the SSOT is
.claude/harness/plans.json, and every read goes throughharness plan-cli list/get, every write through aharness plan-clisubcommand.
Subcommands not delegated (require Opus reasoning, stay in this skill): create, brainstorm, sync.
Invocation pattern — callers use the Agent tool with subagent_type: "harness-planner" and pass a planner-request.v1 JSON payload. The agent returns a planner-response.v1 JSON. See harness/agents/harness-planner.md for the full schema and per-operation flows.
The harness-plan skill itself remains the user-facing entry point — delegation is opt-in for callers that want cheap, deterministic edits without burning Opus tokens.
.claude/harness/plans.json is maintained as the source of truth, and GitHub Issue integration is only used in opt-in team mode.
scripts/plans-issue-bridge.sh does not actually update GitHub; it always returns dry-run payloadsReference:
docs/plans/team-mode.mdharness-work — Implement planned tasksharness-review — Review implementationharness-setup — Project initializationharness-planner — Haiku worker for mechanical plan mutations via harness plan-cli (see "Delegation" section above)