your-repo/intent.md · Open format · Schema-validated · v1.2
The evidence-backed definition of done.
Your agent knows how to build. intent.md tells it what done means and why: outcomes, edge cases, and the evidence behind them, in one file any coding agent can read.
Validates the schema and grades readiness with a deterministic six-check verdict. Runs locally, free, no account, writes nothing.
Read the spec·Validate one in the browser [V]
---objective: "Allow users to export filtered data to JSON"evidence:- type: "quote"source: "support-ticket-4421"excerpt: "I can't tell what's in my export before I download it. Last time it was empty."anchors: ["outcome:1", "edgeCase:0"]outcomes:- "Users can export the filtered dataset as a JSON download"- "The export contains only the currently filtered rows, never the full dataset"- "The output never includes PII fields"---
readable by claude-code · cursor · windsurf · copilot · aider · any-llm
A spec that can't say why is just an opinion.
The same request, handed off twice.
What the agent usually gets
ticketAdd JSON export
Users have been asking for this. Should be quick, just dump the table to a file.
The agent now guesses
- ? Filtered rows, or the whole table?
- ? Zero rows: an error, an empty file, or nothing?
- ? Do PII columns go into the file?
The same request as an IntentSpec
intent.mdEvery guess, answered on the record
- ✓ Only the currently filtered rows, never the full dataset.anchored to quote · support-ticket-4421
- ✓ Empty dataset: show the toast, create no file.anchored to quote · support-ticket-4421
- ✓ The output never includes PII fields.verification · manual check before merge
Keeping intent explicit, evidence-backed, and upstream of code is Intent Engineering. IntentSpec is the file it travels in.
How it works.
Trace the why
Each evidence item names the outcomes and edge cases it justifies. When someone asks why an outcome exists, the file answers.
evidence:- type: "quote"source: "support-ticket-4421"anchors: ["outcome:1"]
Define done
Outcomes with observable thresholds, edge cases with expected behavior, verification steps that say how you'll know. Concrete criteria, not a vague prompt.
edgeCases:- scenario: "Empty dataset"expectedBehavior: "Show toast,create no file"
Enforce it
The GitHub Action checks the schema on every PR. The CLI grades readiness with a deterministic six-check verdict; when it can't confirm a field, it quotes your text back and flags it instead of guessing.
$ npx -y @pathmode/cli preflight✓ goal ✓ objective✓ outcomes ✓ constraints✓ edgeCases ✓ verification✓ Preflight passed. 6/6 checks.Ready to hand to an agent.
Validate a spec. Right here.
Edit the file on the left. The output runs against the same JSON Schema your CI enforces.
Uses ajv against /intentspec.schema.json, the same schema the GitHub Action enforces.
Then point your agent at it.
One rule line in the agent's config. The agent reads intent.md before it builds. Works the same in every harness.
CLAUDE.mdmarkdownAlways read intent.md beforeimplementing any feature.
Frequently asked questions.
What is IntentSpec?
How is IntentSpec different from AGENTS.md or CLAUDE.md?
Do I need Pathmode to use IntentSpec?
How does IntentSpec prevent AI agent drift?
How is IntentSpec different from spec-driven development tools and GitHub spec-kit?
Start with the file.
Use the standard. It's free.
Plain Markdown, an open schema, and tooling that runs without an account.
- → Read the spec
- → The intent.md profile
- → Get the GitHub Action
- $ npx -y @pathmode/cli preflight
Build it from evidence.
Hand-authoring works, and the format never requires a tool. Pathmode generates the IntentSpec from your product evidence: quotes, friction, observations, each anchored to the outcome it justifies.
Build in PathmodeIntentSpec is an open format stewarded by Pathmode · propose changes on GitHub