
harness-spec-anatomy
Shared vocabulary for hedera-harness recipes — the files, the v3 defaults, the stages, and the blind/evaluate-checklist rule. Use when authoring or auditing a harness recipe, or when another skill needs the recipe vocabulary.
- Installs
- 473
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/hedera-dev/hedera-skills --skill harness-spec-anatomy- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads harness-spec-anatomy automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Harness Spec Anatomy
Single source of truth for what a hedera-harness recipe is. Action skills
(/create-harness-spec, /review-harness-spec) reach here for vocabulary;
they own workflow. Use the bold terms from GLOSSARY.md exactly.
Targets hedera-harness schemaVersion 3. Older recipes hard-fail at load.
There is no migrate command — rewrite to v3, or regenerate with
hedera-harness init and reapply edits.
These skills are for authoring — not for generator runs. Recipes do not
list skills. Each run discovers product plugins from hedera-skills
(native-services-js, system-contracts, cross-chain, dev-intelligence)
and the generator picks what the PRD needs. Keep authoring skills out of that
set; they stay Cursor / Claude Code marketplace plugins.
Layout
One layout: .harness/ inside a scaffolded app (from hedera-harness init or
Scaffold HBAR). The workspace is the project itself. Paths in the recipe
file are relative to the project root.
| File | Required? | Default path | Consumed by |
|---|---|---|---|
| Recipe file | Yes | .harness/spec.yaml | Harness CLI |
| PRD | Yes | .harness/prd.md (or a prd: list) | Generator |
| Static validator | ASSERT | .harness/validators/static.json | Static validator |
| Command validator | ASSERT | .harness/validators/yarn.json | Command validator |
| Playwright smoke | SMOKE | .harness/validators/playwright-smoke.yaml | Playwright stage |
| Evaluate checklist | EVALUATE | .harness/eval.json (or an eval: list) | EVALUATE validator |
Every path above is a default. Omit the key and the harness uses it; name a
key only to point somewhere else. Artifacts always land in .harness/runs/,
which is not configurable.
Handoff: yarn harness:run or hedera-harness run .harness/spec.yaml.
What the recipe file must carry
Only four things are required:
schemaVersion: 3
name: my-feature
description: What you want the agent to build in this project.
baseline:
commands:
- name: install # required, and used for install fingerprinting
command: yarn install
- name: build
command: yarn next:build
Everything else — prd, validators.*, maxAttempts, agent, constraints,
forbiddenFiles, secretScan, requiredFiles — is defaulted or detected.
A v3 recipe that sets none of them is complete and correct. Compact bodies and
the full commented template: references/spec-files.md.
baseline is not validators.commands. Baseline proves the project was
healthy before generation; validators.commands grades it after. A command
named install is mandatory in baseline.
Defaults worth knowing
| Key | Default |
|---|---|
agent | claude — omit unless the user wants cursor |
prd | .harness/prd.md; a list delivers ordered increments |
eval | absent (EVALUATE off). Scalar grades every slice; list must be 1:1 with prd: |
maxAttempts | 3 |
constraints.packageManager | detected from package.json / lockfiles |
constraints.forbiddenCommands | every package manager that is not the one in use |
forbiddenFiles / secretScan | .env plus one per workspace |
requiredFiles | empty — the validators are the gate |
Unknown keys are ignored with a warning, so a typo degrades rather than crashes. Treat any such warning as a finding.
Stages
Enable in order. Default is ASSERT only, so the first run stays cheap.
| Stage | Recipe file fields | What it checks |
|---|---|---|
| ASSERT | validators.static, validators.commands, requiredFiles, forbiddenFiles, secretScan | Files, JSON/text, secrets, install/lint/build |
| SMOKE | validators.playwright | Dev server boots; routes HTTP OK; console / forbidden text |
| EVALUATE | eval + validator.enabled: true | Agent grades numbered assertions in the evaluate checklist |
| CHAIN | chainValidation (+ EVALUATE) | Ephemeral ECDSA test signer; real txs; mirror verify |
Full enable order, host prerequisites, and YAML blocks: references/stage-strategy.md.
Cross-file coherence
The v3 defaults removed most path-level coupling. What still must agree:
| Keep in sync | Why |
|---|---|
Evaluate checklist routes ↔ Playwright routes ↔ PRD deliverable routes | The validator visits what the PRD promised |
| Every PRD journey ↔ ≥ 1 assertion in the matching checklist | Unverified journeys pass silently |
| Every assertion ↔ a PRD journey | Orphan assertions are scope creep |
prd: list ↔ eval: list (when both are lists) | Must be 1:1; only the active pair is vendored per increment |
forbiddenFiles ↔ static fileAssertions.forbidden | Two gates, one intent |
constraints.packageManager ↔ static assertion on package.json | Only if you override the detected value |
eval ↔ validator.enabled: true | Either alone is a misconfigured recipe |
Assertion executableWithTestSigner ↔ chainValidation.enabled | Flagged assertions are inert without CHAIN |
templateMetadata.name is the host template identity and may differ from the
feature slug in name. That is not a finding.
Blind / evaluate-checklist rule
Keep the run blind. The PRD carries journeys and outcomes; numbered assertions live in the evaluate checklist. See GLOSSARY.md and references/prd-and-journeys.md.
Drift-sensitive loader fields
When the harness renames these, update this skill and its evals in the same change set:
schemaVersion, agent, baseline, prd, eval, validators.static,
validators.commands, validators.playwright, validator,
chainValidation, constraints, templateMetadata, requiredFiles,
forbiddenFiles, secretScan, executableWithTestSigner, maxAttempts.
Removed — presence hard-fails at load: contract, extend, logging,
skills, seed, generator.
Mechanical check
bash <path-to>/harness-spec-anatomy/scripts/check-spec.sh <project-root>
Resolve the script path relative to the installed skill. It runs
hedera-harness doctor --recipe-only for schema and loader validity, then adds
the cross-file coherence checks doctor does not perform. Exit zero means the
wiring is clean; non-zero prints one finding per line.
If the harness CLI is unavailable the script still runs its coherence checks and says so — treat that as a partial result, not a pass.
Additional resources
- GLOSSARY.md
- references/spec-files.md
- references/prd-and-journeys.md
- references/eval-checklist-guide.md
- references/stage-strategy.md
- scripts/check-spec.sh
- Upstream: docs/authoring-a-recipe.md
FAQ
What does the harness-spec-anatomy skill do?
Shared vocabulary for hedera-harness recipes — the files, the v3 defaults, the stages, and the blind/evaluate-checklist rule. Use when authoring or auditing a harness recipe, or when another skill needs the recipe vocabulary.
How do I install harness-spec-anatomy?
Run npx skills add https://github.com/hedera-dev/hedera-skills --skill harness-spec-anatomy in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/harness-spec-anatomy/ (personal) or .claude/skills/harness-spec-anatomy/ (project).
Which AI agents can use harness-spec-anatomy?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is harness-spec-anatomy safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains harness-spec-anatomy?
It is published by hedera-dev in hedera-dev/hedera-skills. It has 473 recorded installs.
More from hedera-dev/hedera-skills
hedera hackathon submission validator
hedera-dev/hedera-skills
This skill should be used when the user wants to validate, review, or score their Hedera hackathon submission before submitting. Triggered by phrases like "validate hackathon submission", "review my hackathon project", "hackathon scorecard", "check submission readiness", "score my hackathon", "submission review", "judge my project", "hackathon submission quality", or "improve hackathon score".
hedera hackathon prd
hedera-dev/hedera-skills
This skill should be used when the user wants to plan a Hedera hackathon project, create a PRD, write a project spec, brainstorm a hackathon idea, or structure their hackathon submission. Triggered by phrases like "hackathon project plan", "hackathon PRD", "plan my hackathon project", "hedera hackathon idea", "write a hackathon spec", "hackathon project structure", "prepare for hackathon", or "build for hackathon".
hedera-token-service
hedera-dev/hedera-skills
How to create, manage, and transfer tokens on Hedera using the Hiero JavaScript SDK (@hiero-ledger/sdk). Use this skill whenever the user wants to work with fungible tokens, NFTs, token creation, minting, burning, transfers, token association, custom fees (fixed, fractional, royalty), airdrops, KYC/freeze/wipe/pause operations, or any HTS (Hedera Token Service) operation in JavaScript or TypeScript. Also trigger when users mention @hashgraph/sdk token operations, ERC-20/ERC-721 equivalents on Hedera, or tokenization on the Hedera network.
hedera-consensus-service
hedera-dev/hedera-skills
How to create topics, submit messages, and subscribe to real-time message streams on Hedera using the Hiero JavaScript SDK (@hiero-ledger/sdk). Use this skill whenever the user wants to work with Hedera Consensus Service (HCS), including topic creation, message submission, pub/sub messaging, mirror node subscriptions, chunked large messages, topic fees, or any consensus-related operation in JavaScript or TypeScript. Also trigger when users mention @hashgraph/sdk topic operations, event logging on Hedera, decentralized messaging, audit trails, or ordered message streams.
project scaffolding
hedera-dev/hedera-skills
This skill should be used when the user wants to set up Claude for a project, create a CLAUDE.md file, scaffold the .claude directory, initialize an AI workflow, configure a project for Claude, set up dev intelligence, initialize a new project, or do a new project setup. Triggered by phrases like "set up claude for this project", "create CLAUDE.md", "scaffold .claude directory", "init AI workflow", "configure project for claude", "set up dev intelligence", "initialize project", "new project setup".
session management
hedera-dev/hedera-skills
This skill should be used when the user wants to resume previous work, continue from a last session, check what was being worked on, track completed work, log session activity, manage tech debt, review pending items, view session history, or maintain a work log. Triggered by phrases like "resume work", "continue from last session", "what was I working on", "track this work", "log what we did", "tech debt", "what's pending", "session history", "work log".
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.