IDD Stack turns vague issues into work orders with acceptance criteria, then has your AI agent research, build, test, and review each one. Every commit links back to the issue that asked for it.
Animated terminal: /issue-creator previews and files issue #42, /issue-triage scans open issues and puts #42 next, /issue-resolver 42 runs its pipeline and opens PR #87, and /issue-pr-review 87 --auto verifies, merges PR #87, and closes #42.
/plan-to-issues turns a plan, or the conversation you just had, into an epic with one issue per task. /auto-pilot then triages, resolves, reviews, and merges them on its own, and can keep going for days: it waits out GitHub rate limits, picks up where it stopped with --resume, and sets aside issues that keep failing.
GitHub issues are written for people to read, not for agents to execute. Everything between the bug report and the fix is left for someone to work out.
Someone files “the login is broken on mobile.” A developer, human or AI, can burn half an hour finding which files to open before writing any code.
Without acceptance criteria or pointers into the code, an agent picks files with confidence and gets them wrong. The issue never said where to look or what done means.
Dozens of open issues and no map: which ones block others, which are already fixed, and which two could ship in parallel.
Six months later, your git log reads “fix stuff”, “update”, “WIP”,
and nobody can say why a change was made.
IDD Stack rewrites each issue into a typed spec with acceptance criteria, resolves it into a tested PR, and names every branch, commit, and PR after the issue it closes. Unlike a one-off prompt, the same pipeline runs every time.
Describe a bug or feature in plain words. You get a typed issue with an effort size and acceptance criteria, and your original text stays intact in a Reporter Context block.
Research, plan, implement, and QA run end to end. Out comes an atomic PR with Closes #N, a conventional branch name and commits, and tests for the change.
Maps dependencies, flags stale issues and ones already fixed by a commit or PR, and proposes an execution order, including work that can run in parallel.
Loops triage, resolve, review, and merge across the backlog. Balanced mode, the default, merges clean PRs and opens a follow-up issue for the rest. Conservative mode holds every merge.
No new platform. Issues stay plain GitHub markdown, and every step is a command in the terminal you already use.
Type the problem in plain English and /issue-creator files a structured issue. For a whole plan, /plan-to-issues files an epic with one issue per task.
/issue-triage maps dependencies, flags stale and already-fixed issues, and proposes an order.
/issue-resolver N researches, plans, implements, and tests, then opens a PR that closes the issue.
/issue-pr-review checks each acceptance criterion, scores five dimensions, and fixes what fails. Add --auto to merge once it’s green.
This repository files, resolves, and reviews its own issues with these skills, in public. More than 200 of its merged PRs close a linked issue.
See every merged PR on GitHub ↗
You need gh 2.0+, Git 2.30+, and a coding agent that loads SKILL.md files (the markdown file that teaches an agent a skill).
asm installs the skills for 20+ coding agents, including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, and Windsurf. Restart your agent, then try /issue-creator with a one-line bug report. The Claude Code plugin namespaces commands, like /idd:issue-resolver 42. Pick one install path: with both, every skill shows up twice. Updates and manual install are in the docs.
Each command is a self-contained skill, so you can install all eight or copy only what you need. /auto-pilot and /plan-to-issues call sibling skills and check for them first. Every input and option is in the docs.
Turn a plan file, or the conversation you just had, into a tracking epic with one labelled issue per task and Depends on #N markers /auto-pilot respects.
Classify, size (XS–XL), and write acceptance criteria. Also suggests a model and thinking level for the job, from CursorBench (a public coding-agent benchmark).
Root cause, git history, implementation options, complexity, and risk, saved to .idd/.
Preflight, research, plan, implement, and QA, then a PR with Closes #N.
Dependency graph, stale and already-fixed detection, priority, and an execution order.
Lint and test pre-pass, a check per acceptance criterion, five-dimension scoring, and fix cycles. Merges only with --auto.
Triage, resolve, review, and merge across the backlog in conservative, balanced (default), or aggressive mode.
Detect your language, framework, and test runner, and write a tuned .idd.yml.
Under the hood, eight shared agents do the work: duplicate detector, codebase researcher, synthesizer, implementer, code reviewer, fixer, relationship scanner, and UI/UX reviewer. Set each one’s model and thinking effort in .idd.yml, or keep the defaults.
idd-lint: enforce the spec in CIscripts/idd-lint.py checks IDD Spec conformance from plain data: issues, PRs, commit messages, branches, or a whole repo. Every check cites the spec section it enforces and maps to an L1–L3 level. Lint checks need no LLM, no network, and nothing beyond the Python standard library.
The stats mode adds an evidence report: trace completeness, Decision-Record coverage, and resolution outcomes by issue quality. Exit codes 0 and 1 drop straight into CI.
Not in the skill pack · runs on any repo · --level L2 skips Decision-Record checks · --json for machines · --no-github keeps stats offline
IDD began as Issue-Driven Development: every change starts as an issue and ends as a PR that closes it. It is just as much Intention-Driven Development: the issue records what someone wants and why, and that intention travels with the work into the code, the review, and your git history.
intention → analysis → implementation → review → memory
Each change starts as a structured issue with acceptance criteria and ends as one atomic PR. SPEC.md (v1.1) defines the issue format, dependency and Part of #N markers, naming grammar, and L1–L3 conformance levels in RFC 2119 language. Any agent, editor, or person can conform; these eight skills are the reference implementation on GitHub.
The issue says what should change and why. The PR proves how it changed, a Decision Record keeps the reasoning, and the commit that resolves the issue carries it into git history, where the next person or agent can find it.
/issue-resolver first rewrites a vague issue into a work order with acceptance criteria, then runs the same pipeline every time: research, plan, implement with tests, and QA against each criterion. The branch, commits, and PR all reference the issue, so the reason behind every change stays in your history.Reporter Context blockquote and posts a backup comment before anything changes. Inferred fields carry confidence markers, (high confidence) or (needs review), so you can see what was guessed.balanced mode: clean PRs merge, and a PR with unresolved review findings stays open with a follow-up issue. conservative mode holds every merge for you. Partial merges happen only if you opt into aggressive mode with merge_partial: true. A dependency-aware merge gate respects Depends on #N and Blocked by #N, and you can pass an explicit issue list for targeted runs.gh) 2.0+ signed in with gh auth login, Git 2.30+, and any coding agent that loads SKILL.md skills. No config file is needed. When you want to tune settings, /init-idd detects your stack and writes a .idd.yml.idd-lint is a single Python file that checks IDD Spec conformance for issues, PRs, commit messages, branches, or a whole repo. Its lint checks need no LLM, no network, and nothing beyond the standard library, and they exit 0 or 1, so they drop straight into CI. It ships in the repo, not the skill pack: download scripts/idd-lint.py and run it on any repo.Eight skills, one install. No config file, no lock-in, nothing to pay.