constraint-driven-development
Establishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which dimensions matter, supplies sane default thresholds when they have no number in mind, records everything in CONSTRAINTS.md, and watches the diff for a weakened bar — new @ts-ignore or eslint-disable suppressions, skipped or deleted tests, assertions stripped out, unimplemented stubs, thresholds edited down. Use when no quality bar is written down, when the user says "set up constraints" or "define our standards", when the user wants dimensions they care about — accessibility, web performance, coverage — set up as enforced constraints, when an agent keeps silencing checks or skipping tests to get to green, when you need a coverage or performance threshold and don't know what number to pick, or when an agent writes more code than anyone will read.
Why we recommend it: Establishes a project's quality bar as a written contract with enforced thresholds. Generic engineering process, not data engineering.
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
--- name: constraint-driven-development description: Establishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which dimensions matter, supplies sane default thresholds when they have no number in mind, records everything in CONSTRAINTS.md, and watches the diff for a weakened bar — new @ts-ignore or eslint-disable suppressions, skipped or deleted tests, assertions stripped out, unimplemented stubs, thresholds edited down. Use when no quality bar is written down, when the user says "set up constraints" or "define our standards", when the user wants dimensions they care about — accessibility, web performance, coverage — set up as enforced constraints, when an agent keeps silencing checks or skipping tests to get to green, when you need a coverage or performance threshold and don't know what number to pick, or when an agent writes more code than anyone will read. --- # Constraint-Driven Development ## Overview Other skills in this pack describe what good looks like. `code-review-and-quality` gives you five axes. `test-driven-development` gives you a cycle. `security-and-hardening` gives you a threat list. All of that lives in prose the agent reads and may or may not follow, and none of it survives the end of the session. This skill produces something different: a written record of **this project's** bar, with numbers, that outlives the conversation and can be checked mechanically. The reason matters. When you wrote the code, reading it told you whether it was any good. An agent writes more in an afternoon than you will read that week, so the judgement moves out of your head and into checks that run around the loop. Those checks need to exist, they need numbers you actually chose, and they need to fire close enough to the work that the agent fixes its own output. Spec-driven development says what to build. Test-driven development proves it works. Constraint-driven development defines what "good enough to ship" means, before anyone argues about it in a pull request. ## When to Use Apply this skill when: - Starting a project or a significant feature and no quality bar is written down - The user asks to "set up constraints", "add quality gates", "define our standards", or "stop the agent shipping junk" - An agent is producing volume nobody is reading line by line - CI has checks but nobody can say which ones block a merge and which ones are decoration - Coverage, performance, or accessibility numbers get argued about per-PR instead of decided once - You're about to run `/build auto` or any autonomous loop, and the only thing standing between it and main is a test suite the agent also wrote **When NOT to use:** - The project already has a `CONSTRAINTS.md` and the user isn't changing it — read it and follow it instead - One-off scripts, spikes, throwaway prototypes - The user wants a code review right now (`code-review-and-quality`) or a CI pipeline built (`ci-cd-and-automation`) - Pre-product-market-fit code with a two-week expected lifetime — the floor below is still worth it, the rest isn't ## Loading Constraints The interview needs a live user. **Don't run it in non-interactive contexts** (CI, `/loop`, autonomous runs). If constraints are missing and you're in one of those, apply the Floor below, note that you did, and flag the rest for a human. ## The Process ### Step 1: Detect before you ask Never ask what you can read. Before the first question, gather: | What | Where to look | |------|---------------| | Language and stack | `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml` | | Test runner | dev dependencies, `test` script, existing test files | | Existing linters | `eslint.config.*`, `biome.json`, `.ruff.toml` | | Coverage today | `coverage/` output, or run the suite once | | CI | `.github/workflows/`, `.gitlab-ci.yml` | | Agent harness | `.claude/`, `.codex/`, `AGENTS.md` | Report what you found in two lines, then ask only what's left. ### SRead the full source on GitHub (opens external page)