Skip to content
Development
Skill

/generate-harness-dsl

Generate, revise, or review complete Harness as Code `.harness` files when a coding-agent workflow, agent role, skill, tool contract, MCP connection, runtime, or deployment must be compiler-valid and resolvable with `@qoder-ai/harness`.

From plugin
better-harness
2.4k4 skills

Claude Code

$ npx -y skills add QoderAI/better-harness --skill generate-harness-dsl --agent claude-code

SKILL.md

generate-harness-dsl.SKILL.md
name: generate-harness-dsl
description: Generate, revise, or review complete Harness as Code `.harness` files when a coding-agent workflow, agent role, skill, tool contract, MCP connection, runtime, or deployment must be compiler-valid and resolvable with `@qoder-ai/harness`.

Generate Harness DSL

Create a standalone Harness as Code v0.3 document and prove the execution contract with the package compiler and resolver.

Workflow

1. Identify the host, the capabilities it must actually expose, and the real control owner. Use `session` for one host session. Use `state-machine` or `program` only when a selected adapter explicitly implements that mode. 2. Read [the DSL contract](references/dsl-contract.md). Start from [the minimal example](../../examples/minimal.harness); open [the standard example](../../examples/standard-coding.harness) when callable tools are required. 3. Generate one self-contained document unless the user requests a fragment. Include `language 0.3`, every referenced declaration, a concrete runtime, and a named deployment. Standard tools may remain implicit. 4. Run `scripts/validate.mjs`. Fix every compiler or resolution error and rerun. A compile-only state machine is not an executable Qoder or Pi deployment. 5. Return the DSL or saved file plus the harness id, deployment id, runtime, resolution status, and any execution boundary the selected adapter cannot satisfy.

Authoring Rules

  • State only falsifiable requirements. Do not add permission, setting,

degradation, binding, input/output-name, or runtime-execution syntax; v0.3 intentionally has none.

  • Match the requirement verb to its capability: `use skill`, `require tool`,

or `connect mcp`.

  • Only the standard tool ids in the contract may be undeclared. Every custom

tool declares a stable `contract` id that the adapter exposure must match.

  • Qoder and Pi descriptors run `session` workflows only. A session workflow

names exactly the one agent role declared by each harness that uses it.

  • State-machine outcomes are typed on agents. Every route emitter, outcome,

destination, entry, and stop must exist, and every agent must be reachable.

  • A `program <language> <entry>` workflow resolves only when the adapter lists

the same language in `programmaticLanguages`.

  • Keep credentials out of source. Prefer `env.VARIABLE` for MCP endpoints, but

remember that declaring an endpoint does not connect it; the adapter must do that.

  • Do not invoke host SDKs, install integrations, or claim native enforcement

while generating or validating DSL.

Validate

From this skill directory, run:

node scripts/validate.mjs /path/to/workflow.harness [harness-id ...]

The command prints JSON and exits non-zero when compilation or any selected named deployment fails resolution. A successful exit is required before calling generated DSL executable.

When editing this skill, build the package first so `dist/` reflects the current compiler:

npm run harness:build
Read more
@qoderai
Ships withbetter-harness

An open-source Harness Engineering platform for coding agents—define harnesses as code, run controlled experiments, inspect evidence, and compare outcomes. Turn task evidence into actionable team and organization insights.

Stars on GitHub

Momentum

stars in total
2.4k
Star history of QoderAI/better-harness on GitHub, a chart by star-history.com

Other skills on better-harness.

memory-recap

memory-recap

Create evidence-linked work profiles, diagnose Coding Agent collaboration friction, and recommend concrete improvements from…

better-harness

better-harness

Use when /better-harness reviews the outer coding-agent Harness for lifecycle controls, repeated work, project feedback, agent…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc11d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about generate-harness-dsl.

Which coding agents can use generate-harness-dsl?
generate-harness-dsl installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.