AgentSpec's linter is the heart of why the format exists. It catches the patterns that make agents produce bad code — the same patterns reviewers flag in human-written tickets, but with no human in the loop:
- Vague language — "fast", "secure", "scalable", "improve", "optimize" without numbers or thresholds
- Scope leakage — "etc.", "and so on", "...", "for example" — agents will hallucinate the rest
- Missing error modes — contracts that only define success paths
- Untestable acceptance — "then: works correctly" is not measurable
- Empty out-of-scope — without a fence, agents wander into adjacent features
- Missing required fields — title, intent, at least one acceptance scenario
—
A single stakeholder requirement travels through the full BMAD pipeline. Every agent receives a structured artifact — not English prose — from the one before it. Same spec, zero agent lock-in.
Ambiguous intent, no error modes, no acceptance criteria, no scope boundary. This is what every team starts with — and what AgentSpec is designed to fix.
feat-order-entry-ticket-v1.agentspec.yaml — committed to repoVersion-controlled alongside the code. Every future commit referencing this spec ID is traceable to this exact artifact.
Commit convention: feat/[OMS-247][feat-order-entry-ticket-v1]: implement order entry form — links commit → Jira ticket → YAML spec in one chain.
The Architect adds precision — not scope. Same AgentSpec schema, enriched with file paths, symbol anchors, and resolved constraints from PM advisories.
AgentSpec is a small, opinionated schema for describing a unit of work that an AI coding agent will implement. It deliberately requires fields that English specs leave out — explicit out-of-scope, measurable acceptance, named error modes — because those are the things agents miss.
Fields
name, inputs, outputs, and errors. Errors must be enumerated, not implied.Compatibility — no agent lock-in
AgentSpec is agent-agnostic by design. The agent landscape shifts every quarter. Your spec library should not have to change when it does. The same source spec compiles to:
- A Claude Code prompt brief — structured, with explicit out-of-scope and acceptance up front
- A Markdown spec for human review or Jira ticket body
- Canonical YAML / JSON for storage in your repo, CI lint, or audit trail
Switching from Claude Code to Cursor to Aider means changing the compiler target, not rewriting the spec. In a BMAD pipeline, each agent stage can independently swap its runtime — the spec is the contract, the agent is the runtime.
Jira integration
AgentSpec and Jira are complementary, not competing. Each layer owns what it's good at:
Recommended flow: BA agent produces the .agentspec.yaml → linter clears it → compile to Jira → paste into ticket description → Spec ID becomes part of the commit message convention (feat/[PROJ-123][feat-order-entry-v1]).
BMAD pipeline mapping
AgentSpec is the native contract format for BMAD (Business · Manager · Architect · Developer) multi-agent workflows. Each field maps directly to a BMAD stage:
errors > 0 or score < 70). Machine-readable, no human interpretation required.id is recorded in every commit message and PR description, linking production code back to the spec that authorized it. Required for regulated BMAD deployments.AI coding agents (Claude Code, Cursor, Aider, Cline) all read English specs and produce wildly different code from the same brief. The variance is not the model — it's the spec. English is ambiguous, ticket descriptions skip the boring parts, and the most important field of all — what NOT to do — is almost never written down.
AgentSpec is the smallest opinionated structure I could define that fixes this. Write it in a browser, lint it, then compile to whichever agent your team uses today. The format itself doesn't care which agent runs.
No lock-in to any specific agent. This is a deliberate design principle. The agent landscape shifts every quarter — Claude Code today, Cursor tomorrow, something new next year. AgentSpec sits above that churn. Your specs, your linter rules, your acceptance criteria, your audit trail stay stable regardless of which agent executes them. Switching agents means changing the compiler target, not rewriting your entire spec library.
In a BMAD pipeline, this means each stage (BA, PM, Architect, Developer) can independently adopt a different agent without breaking the handoff contract. The spec is the contract. The agent is the runtime.
Built by Umesh Kumar K V while delivering a broker-dealer trading platform via agentic SDLC. 20+ years across FIS, Caesars Sportsbook, and Wissen Technology. Anthropic-certified in MCP and Claude Code.
· Cursor .cursorrules and Aider system-prompt adapters
· VS Code extension with inline linting on .agentspec.yaml files
· GitHub Action: lint AgentSpec files in PRs, block on errors
· Spec-to-PR provenance — every PR commit links to the spec hash that produced it
· Test scaffolding — generate Jest/pytest skeletons from acceptance scenarios
· Enterprise governance edition: shared spec libraries, custom linter rules, audit trails (the paid tier)
BMAD (Business · Manager · Architect · Developer) is a multi-agent orchestration pattern where specialized AI agents hand work down a chain. AgentSpec is the inter-agent contract — the structured artifact each stage produces and consumes. Without it, every handoff is lossy English prose and the agent at the end of the chain guesses what the one at the start intended.
What AgentSpec does at each stage
.agentspec.yaml instead of a vague English ticket. The linter fires before the handoff — a spec that scores below your threshold never reaches the next agent.errors > 0, flag if score < 70. No human gut-check required, no ambiguity about what "good enough" means.contracts, context.files, and context.symbols as anchors. Adds or refines constraints. Returns enriched spec in the same format — same schema, deeper detail.out_of_scope and acceptance placed first in context. Stops exactly where the fence says to stop. Load the BMAD sample in the editor to see a real broker-dealer example.Why this matters for regulated deployments
In banking, brokerage, and healthcare, every agent handoff needs an audit trail. The spec id links every commit back to the spec that authorized it — your compliance officer can answer "which spec produced this code?" for any line in production. That's not a feature you can retrofit onto an English ticket workflow.
Enterprise governance tier (shared spec libraries, custom linter rules, audit trail, on-prem) is in development. DM on LinkedIn if you'd buy this today.