harness-plan
Skill42 starsChanged 6 days agoMITView on GitHub
HAR: Research-backed, team-validated task planning, Plans.md management, progress sync. Trigger: create a plan, add tasks, update Plans.md, mark complete, check progress. Do NOT load for: implementation, review, release.
- Reads credentials
4 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- anyoneanderson/agent-skillstheir own version, first seen Oct 13, 2026
- Chachamaru127/claude-code-harnessedited, first seen Oct 13, 2026
- lumatic2/askewly-harnesstheir own version, first seen Aug 21, 2026
- konglong87/enjoy_harness_aitheir own version, first seen Apr 1, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- Chachamaru127/claude-code-harness★ 3.2k12% same
Wrote their own version · 3
- anyoneanderson/agent-skills★ 3same name
- lumatic2/askewly-harness★ 1same name
- konglong87/enjoy_harness_ai★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agent-browserSkill
- authSkill
- ciSkill
- crudSkill
- deploySkill
- harness-acceptSkill
- harness-loopSkill
- harness-plan-briefSkill
- harness-progressSkill
- harness-releaseSkill
- harness-reviewSkill
- harness-setupSkill
- harness-syncSkill
- harness-workSkill
- maintenanceSkill
- memorySkill
- principlesSkill
- research-harness-auditSkill
- research-harness-cleanSkill
- research-harness-planSkill
- research-harness-releaseSkill
- research-harness-reviewSkill
- research-harness-setupSkill
- research-harness-workSkill
- session-controlSkill
- session-initSkill
- session-memorySkill
- sessionSkill
- session-stateSkill
- uiSkill
- workflow-guideSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
32 rules. About 0 are common, 15 are distinctive, and 17 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
17
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 55
Do not convert provided information directly into Plans.md.
- Distinctive: line 66
If the Task tool is available, run independent perspectives for Product / Architecture / Security / QA / Skeptic.
- Distinctive: line 67
If unavailable, explicitly state "sub-agent not used" and evaluate the same perspectives separately.
- Distinctive: line 74
Not deviating from the product purpose
- Distinctive: line 75
No issues with security, permissions, secrets, or supply chain
- Very specific: line 79
Use team_validation_mode: not_required_lightweight for lightweight tasks.
- Very specific: line 81
Must not leave it as unavailable and make it Required.
- Very specific: line 85
If reading .env or secrets becomes necessary, stop at a Risk Gate and verify using allowed existing guards / evidence.
- Very specific: line 104
Check existing specifications, root spec.md, Plans.md, README, docs, CLAUDE.md, related skills
- Very specific: line 105
Check available memory surfaces project-scoped: harness-mem / harness-recall / .claude/agent-memory/ / .claude/state/, etc.
- Distinctive: line 119
Check conversation context (extract from preceding discussion or new interview)
- Distinctive: line 120
Ask what to build (max 3 questions)
- Very specific: line 134
When implementation is likely to drift, update root spec.md before generating Plans.md.
- Very specific: line 140
Only when consumer repo has no root spec.md: existing project spec / architecture / product compass
- Very specific: line 141
Only when consumer repo has no root spec.md: docs/spec/00-project-spec.md
- Very specific: line 162
Leave Spec skip reason in task context / sprint contract even for docs-only / mechanical tasks
- Very specific: line 163
Do not assert absent for missing search results, unavailable memory, or unread files.
- Distinctive: line 164
Do not have the user write the spec from scratch.
- Very specific: line 172
After create completes, do not end with just an explanation.
- Distinctive: line 177
Only 1 incomplete task, or natural to start with just the first one
- Distinctive: line 203
When recommending long-running mode, also include the Claude Code session launch command:
- Very specific: line 215
When in a local checkout and you want to use an equivalent wrapper only during repository development, bash scripts/claude-longrun.sh may …
- Distinctive: line 218
No interview. Use existing Plans.md as-is and only perform task decomposition.
- Very specific: line 222
Add a new task to Plans.md.
- Very specific: line 258
Check agent trace (.claude/state/agent-trace.jsonl)
- Distinctive: line 270
Keep Plans.md as the source of truth.
- Distinctive: line 272
Do not use bridge in solo development
- Very specific: line 283
When using multiple Plans.md, use plans/manifest.json as the source of truth and select by name.
- Distinctive: line 294
Only use one named plan per run
- Distinctive: line 322
DoD (Definition of Done): Write the verifiable completion condition in one line.
- Very specific: line 335
Do not leave <reason> empty.
- Very specific: line 338
When no tag is present, infer tdd_required in this order:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Harness Plan
The integrated planning skill of Harness. Consolidates the following 3 legacy skills:
planning(plan-with-agent) — converting ideas → Plans.mdplans-management— task state management and marker updatessync-status— Plans.md and implementation sync verification
Quick Reference
| User input | Subcommand | Action |
"Create a plan" / /harness-plan create | create | Spec delta / skip reason → generate Plans.md tasks |
"Add a task" / /harness-plan add | add | Add new task to Plans.md |
"Mark as complete" / /harness-plan update | update | Change task marker to cc:done |
"Where are we?" / /harness-plan sync | sync | Cross-reference and sync implementation with Plans.md |
/harness-sync | sync | Progress check (equivalent to independent sync surface) |
/harness-plan create | create | Create plans with spec.md / Plans.md dual-source |
/harness-plan list | list | List named Plans from plans/manifest.json |
/harness-plan switch <name> | switch | Save active plan to .claude/state/active-plan.json |
Literal companion commands (CC 2.1.108+)
/recap: Run sync after getting a fresh summary when you return after a break/undo: Alias for/rewind. Use when you want to immediately revert the last plan update
Subcommand Details
Standard planning quality contract
See references/planning-quality.md
harness-plan is a planning surface that produces co-required planning output of spec.md product contract and Plans.md task contract.
Precedence remains spec.md > sub-spec > Plans.md.
Plans.md is a task ledger; root spec.md is a product contract; the hierarchy must not be broken.
Do not convert provided information directly into Plans.md.
For plan creation and significant task additions, verify the latest information, existing specifications, memory, and TeamAgent / sub-agent multi-perspective discussions,
and only convert elements worth incorporating into this product into task contracts.
/harness-plan create returns Spec delta or Spec skip reason paired with Plans.md task generation.
Output must always include Spec delta or Spec skip reason.
Harness generates Spec delta / Spec skip reason; the consumer only approves or revises.
Non-trivial planning gate:
Planning that is not single-instance or lightweight is treated as requiring TeamAgent or sub-agents. Non-trivial here refers to requests affecting multiple tasks / multiple files / multiple sessions / product behavior / API / data model / permissions / billing / external integrations / distribution surfaces / security. If the Task tool is available, run independent perspectives for Product / Architecture / Security / QA / Skeptic. If unavailable, explicitly state "sub-agent not used" and evaluate the same perspectives separately.
Non-trivial planning output must always include the following verifications.
team_validation_mode:not_required_lightweight/native/subagent/manual-pass/unavailable- Consistency of
spec.md/ sub-spec /Plans.md - Wheel-reinvention prevention check via harness-mem / harness-recall / repo memory
- Not deviating from the product purpose
- No issues with security, permissions, secrets, or supply chain
- Whether lint / formatter baseline exists; if a plan with source code changes has none configured, place a setup task before implementation tasks
- Whether the plan actually works — i.e., whether test / smoke / CI / review / release gates are included in task DoD
Use team_validation_mode: not_required_lightweight for lightweight tasks.
For non-trivial planning, use one of native / subagent / manual-pass.
Must not leave it as unavailable and make it Required.
Product / Architecture / Security / QA / Skeptic are verification perspectives, not agent_type names.
Request them as perspectives from available TeamAgent / Task sub-agents; do not require arbitrary agent spawning.
The Security gate does not require actual reading of secrets.
If reading .env or secrets becomes necessary, stop at a Risk Gate and verify using allowed existing guards / evidence.
When to apply:
- Creating a new plan with
create - Adding tasks with
addthat affect product behavior / API / permissions / billing / external integrations / distribution surfaces - User has provided external products, competitors, specification proposals, improvement ideas, or comparison materials
- There is a risk of conflict with existing specifications or past decisions
When to treat lightly:
updatewith only marker updatessyncwith only status reconciliation- typo, format, README/CHANGELOG only
- Narrow changes where the correct answer is fixed by existing spec and tests
Quality flow:
- Decompose input, clearly state evaluation targets, scoring axes, and uncertain facts
- Get latest information. Prioritize WebSearch / official docs / primary sources for external facts; cross-check important points against multiple sources
- Check existing specifications, root
spec.md, Plans.md, README, docs, CLAUDE.md, related skills - Check available memory surfaces project-scoped: harness-mem / harness-recall /
.claude/agent-memory//.claude/state/, etc. - For non-trivial planning, use TeamAgent / Task sub-agents for independent review from different perspectives such as Product / Architecture / Security / QA / Skeptic
- For plans with source code changes, check lint / formatter baseline; if not configured, add setup task first
- Output neutral scoring review and classify as Required / Recommended / Optional / Reject
- Report proposal content, reason, and what changes in
$easyformat - Incorporate only adopted proposals into root
spec.md/ Plans.md / test tasks
create — Plan creation
See references/create.md
Interview for ideas and requirements, then generate an actionable Plans.md.
Flow:
- Check conversation context (extract from preceding discussion or new interview)
- Ask what to build (max 3 questions)
- Planning quality check (latest information, existing specs, memory, TeamAgent / sub-agent multi-perspective review, scoring)
- Technical research (WebSearch)
- Feature list extraction
- spec.md / Plans.md dual-source check (Spec delta or Spec skip reason + Plans.md tasks)
- Priority matrix (Required / Recommended / Optional / Reject)
- TDD adoption decision (test design)
- Generate Plans.md (with
cc:TODOmarkers) - Next action guidance
spec.md / Plans.md dual-source check (default)
Plans.md is treated as the task contract for "what needs to be done"; root spec.md is treated as the product contract for "what is correct."
Co-required planning output means making both outputs required; precedence remains spec.md > sub-spec > Plans.md.
When implementation is likely to drift, update root spec.md before generating Plans.md.
create and product-impacting add always read root spec.md.
Priority for storage location:
- Root
spec.md - Only when consumer repo has no root
spec.md: existing project spec / architecture / product compass - Only when consumer repo has no root
spec.md:docs/spec/00-project-spec.md - For repos with existing conventions, follow the spec path per those conventions
Conditions requiring creation/update:
- Tasks that decide user-visible behavior, API, data model, permissions, billing, or external integrations
- Tasks where multiple implementation policies exist and the choice changes product behavior
- Tasks where "spec ambiguity caused implementation drift" is evident in past or current conversations
- Tasks where the work content is in Plans.md but the project's correct conditions are not in a stable document
Conditions not requiring it:
- typo, format, dependency bump, README/CHANGELOG only
- Narrow refactor without behavior changes
- Fixes where the correct answer is sufficiently fixed by existing spec and tests
Output contract:
Spec delta: When updating the product contract, write the target spec path and what changesSpec skip reason: When not updating the product contract, write the reason- Harness generates
Spec delta/Spec skip reason; the consumer only approves or revises - Leave
Spec skip reasonin task context / sprint contract even for docs-only / mechanical tasks - Do not assert absent for missing search results, unavailable memory, or unread files.
not_observed != absent - Do not have the user write the spec from scratch. The agent creates the minimum delta from existing spec and input, only presenting decision branches when ambiguous
Reference:
docs/plans/spec-ssot.md
Session launch guidance after create (required)
After create completes, do not end with just an explanation; always provide the new session launch command and
the first instruction prompt to enter right after launch as a set.
Priority order:
- Only 1 incomplete task, or natural to start with just the first one
- Launch command:
claude - First input:
/harness-work <task number>
- Launch command:
- Multiple tasks with loose dependencies, natural to advance together
- Launch command:
claude - First input:
/breezing all - Alternative:
/harness-work all
- Launch command:
- Long-running execution or re-entry required
- Launch command:
ENABLE_PROMPT_CACHING_1H=1 claude - First input:
/harness-loop all - Alternative:
/breezing all
- Launch command:
Include at least these 3 lines:
New session launch command:First input after launch:Suited for:
Example:
New session launch command: claude
First input after launch: /breezing all
Suited for: Phase 1 has multiple tasks and advancing them together is most naturalWhen recommending long-running mode, also include the Claude Code session launch command:
New session launch command: ENABLE_PROMPT_CACHING_1H=1 claude
First input after launch: /harness-loop all
Suited for: Long-running tasks where waits exceeding 5 minutes or resumptions across sessions are likelyNote:
scripts/claude-longrun.shis a development helper script for this repository and is not distributed to consumer environments after plugin install- Therefore, for consumer-facing guidance, always prioritize the single-line command
ENABLE_PROMPT_CACHING_1H=1 claude - When in a local checkout and you want to use an equivalent wrapper only during repository development,
bash scripts/claude-longrun.shmay be used
CI mode (--ci):
No interview. Use existing Plans.md as-is and only perform task decomposition.
add — Add task
Add a new task to Plans.md.
For product-impacting additions, output Spec delta or Spec skip reason following the "spec.md / Plans.md dual-source check" above.
/harness-plan add task name: detailed description [--phase phase number]Tasks are added with the cc:TODO marker.
update — Marker update
Change task status markers.
/harness-plan update [task name|task number] [WIP|done|blocked]Marker mapping:
| Command | Marker |
WIP | cc:WIP |
done / complete | cc:done |
blocked | blocked |
TODO | cc:TODO |
sync — Progress sync
Cross-reference implementation status with Plans.md, detect differences, and update.
See references/sync.md
Flow:
- Get current state of Plans.md
- Detect Plans.md format (v1: 3 columns / v2: 5 columns)
- Get implementation status from git status / git log
- Check agent trace (
.claude/state/agent-trace.jsonl) - Detect differences between Plans.md and implementation
- Propose auto-fix for outdated markers
- Present next actions
Retrospective (default ON):
Automatically run a retrospective if there is at least 1 cc:done task.
Analyze estimate accuracy, block cause patterns, and scope fluctuation; record learnings.
Can be explicitly skipped with sync --no-retro.
team mode / issue bridge
Keep Plans.md as the source of truth; use GitHub Issue integration only in opt-in team mode.
- Do not use bridge in solo development
- Team mode creates one tracking issue and generates sub-issue payloads per task in dry-run
scripts/plans-issue-bridge.shnever actually updates GitHub; always returns dry-run payloads- This bridge does not modify Plans.md
Reference:
docs/plans/team-mode.md
named Plans
When using multiple Plans.md, use plans/manifest.json as the source of truth and select by name.
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.1Operating rules:
- Only use one named plan per run
- Pass
--plan <name>explicitly for long-running / CI / issue bridge rather than relying on the active pointer - Manifest path is project root relative only. Absolute paths,
.., and out-of-repo symlinks are rejected
Reference:
docs/plans/named-plans.md
Plans.md Format Convention
Format
# [Project name] Plans.md
Created: YYYY-MM-DD
---
## Phase N: Phase name
| Task | Content | DoD | Depends | Status |
|------|------|-----|---------|--------|
| N.1 | Description | Tests pass | - | cc:TODO |
| N.2 | Description | lint errors 0 | N.1 | cc:WIP |
| N.3 | Description | Migration executable | N.1, N.2 | cc:done |DoD (Definition of Done): Write the verifiable completion condition in one line. "Looks good" or "works properly" are prohibited. Must be determinable Yes/No.
Depends: Task dependencies. - (no dependency), task number (N.1), comma-separated (N.1, N.2), phase dependency (Phase N).
TDD tags
Tasks in Plans.md can have TDD judgment tags in their content or DoD.
| Tag | Meaning | tdd_required inference |
[tdd:required] | This task must write failing tests first | true |
[tdd:skip:<reason>] | This task skips TDD with a reason | false, skip_tdd_reason=<reason> |
Do not leave <reason> empty.
Examples: [tdd:skip:docs-only], [tdd:skip:no-test-framework-detected].
When no tag is present, infer tdd_required in this order:
- Plans.md tag:
[tdd:required]/[tdd:skip:<reason>] - Files: required if task includes source implementations under
src/,app/,cmd/,lib/,pkg/,internal/,go/, etc. - Scaffolder inference: not required with skip reason if docs-only or no test framework detected
optional briefs / manifest
harness-plan create only attaches a brief when needed.
- project spec SSOT is a document that fixes the correct conditions for the entire project, created only when needed
design brieffor tasks with UIcontract brieffor tasks with API- A brief is a short supplementary document that fixes "what to build"; it does not replace Plans.md or spec SSOT
- The list of skill frontmatter can be generated as machine-readable JSON with
scripts/generate-skill-manifest.sh
References:
docs/plans/briefs-manifest.mddocs/plans/spec-ssot.md
Marker list
| Marker | Meaning |
pm:requested | Requested by PM |
cc:TODO | Not started |
cc:WIP | In progress |
cc:done | Worker work complete |
pm:confirmed | PM review complete |
blocked | Blocked (always include reason) |
Related Skills
harness-sync— Sync implementation with Plans.mdharness-work— Implement planned tasksharness-review— Review implementationsharness-setup— Project initialization
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

