Guide · Agent skill
How to use the Constraint-Driven Development agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The constraint-driven-development skill is an agent skill that turns your project's quality bar into a written CONSTRAINTS.md file with numeric thresholds, then watches code changes for signs that the bar is being lowered. It is for developers and teams who use AI coding agents and want standards that are written down and checked, not argued about in every pull request. After this guide you will know what the skill does, how to install it, how to trigger it with plain requests, and what it needs before it works well.
Quick start
- 1Download and unzip. Download the skill ZIP from this page and unzip it. The folder should be named constraint-driven-development.
- 2Place the skill folder. Put it in ~/.claude/skills/ for all projects, or in .claude/skills/ inside one project. In the Claude apps, upload the ZIP under Settings, Capabilities, Skills instead.
- 3Ask for constraints. Start a session in your project and say something like 'set up constraints for this project'. The skill will first read your existing config and report what it found.
- 4Answer the four questions. Choose which dimensions to enforce, whether checks block or warn, whether to measure or set targets, and how long checks may take. Each question has a default, so 'I don't know' still works.
- 5Install the tools for your choices. Install the checking tools for each dimension you picked, such as your test runner, linter or axe and lighthouse for accessibility and performance.
- 6Review CONSTRAINTS.md. Read the generated file at the repo root and commit it so changes appear in review. Confirm that each rule names a working command.
What the skill makes the agent do
An agent skill is a folder of instructions that an AI agent loads when a task matches the skill's description. This one covers quality standards. It interviews you, one question at a time, about which quality dimensions matter, such as test coverage, security scanning, accessibility, performance and architecture boundaries. Where you have no number in mind, it supplies a sensible default threshold.
The agreed bar is recorded in a CONSTRAINTS.md file at the repo root. Each enforced dimension gets a rule, the command that checks it and the point where that check runs. The skill also watches the diff for a weakened bar: new suppression comments such as @ts-ignore or eslint-disable, skipped or deleted tests, assertions stripped out, unimplemented stubs, and thresholds edited downward.
- Interviews you about which dimensions to enforce, with a default for each question
- Writes numeric thresholds and the checking command into CONSTRAINTS.md
- Flags changes that silence checks, skip tests or lower thresholds
Install the constraint-driven-development skill
Download the skill's ZIP from the skill's page in this directory and unzip it. Put the resulting folder in one of two places. For all your projects, use ~/.claude/skills/. For a single project, use the .claude/skills/ folder inside that project.
If you use the Claude apps instead of Claude Code, open Settings, go to Capabilities, then Skills, and upload the ZIP there.
- Personal install: unzip into ~/.claude/skills/
- Project install: unzip into .claude/skills/ in the project root
- Claude apps: Settings → Capabilities → Skills, then upload the ZIP
Trigger the skill with natural requests
You do not need a special command. The skill loads when your request matches its description. Plain requests work well, for example asking the agent to set up constraints or define your team's standards.
The skill also loads when you notice a specific problem. If an agent keeps silencing checks or skipping tests to reach green, say so. If you need a coverage or performance threshold and do not know what number to pick, ask for one. The skill is designed to handle those cases.
- "Set up constraints for this project."
- "Define our standards before we start the payments feature."
- "Make accessibility and web performance enforced constraints."
- "The agent keeps skipping tests to get to green. Put a stop to it."
- "What coverage threshold should we use? I don't have a number."
What the written constraints look like
The file has a floor that is always enforced, a table of numeric rules with the command that checks each one, a list of metrics that are measured but not yet enforced, and an exceptions table. Every rule must name the command that produces its verdict. A number with no command is only an aspiration.
The skill also suggests adding one line to AGENTS.md and CLAUDE.md telling agents to read CONSTRAINTS.md before writing code and not to weaken it to make a change pass.
- Floor: no new suppression comments, no stubs or empty catch blocks, no skipped or deleted tests without a reason in the commit message, no secrets in source, and no weakening of the file itself
- Enforced rules: each with a threshold, a checking command and a run point such as every edit, task end, CI or preview deploy
- Exceptions: each entry has an ID, path, reason, owner and expiry date
Floor (always enforced, no setup required)
- No new suppression comments: @ts-ignore, eslint-disable, # noqa, # type: ignore
- No unimplemented stubs: throw new Error("Not implemented"), empty catch {}
- No skipped or deleted tests without a reason in the commit message
- No secrets in source
- This file does not get weakened to make a change passKnow what the checks need before you enable them
The skill does not install a checking tool by itself. Each dimension you pick needs project tooling, such as a test runner, linters, tsc, gitleaks, semgrep, osv-scanner, axe or lighthouse, depending on your choices. The skill's guidance is to use these common tools so your existing configuration keeps working.
Accessibility and performance checks need a running preview URL. Architecture boundaries need a rules file written. The interview tells you the cost of each choice before you commit to it.
- Test coverage and lint: your project's test runner and linter
- Secrets: gitleaks. Code security: semgrep. Dependencies: osv-scanner
- Accessibility: axe against a preview URL. Performance: lighthouse against a preview URL
- Requires an interactive session for the setup interview
Safety notes: scripts and network
The skill does not run scripts and does not use the network, according to its listing. The checks it proposes are commands you install and run in your own project. Review the commands in CONSTRAINTS.md before you rely on them in CI.
The skill includes a reference file, references/floor-guard.md, that describes a diff-scoped guard for the floor. It is a reference to adapt to your stack, not a script the skill runs for you. It is meant to read both added and removed lines and untracked files, so new work is covered. Do not run the interview in CI or autonomous loops. In those contexts the skill applies only the floor and leaves other gaps for a person to fill.
- Runs scripts: no
- Uses network: no
- Do not run the interview in CI or unattended agent loops
- Skip the skill for throwaway scripts and prototypes, where the overhead adds little value
What people use it for
- Setting a coverage threshold for changed lines on a new feature, so new code must be tested even when old code is not
- Stopping an agent from adding @ts-ignore or eslint-disable comments to get a build passing
- Adding an accessibility rule that fails on critical or serious findings from axe against a preview deploy
- Writing a performance budget for LCP and CLS that lighthouse checks on each preview deploy
- Recording a documented, time-limited exception for legacy code that still breaks a lint rule
Frequently asked questions
How do I install the constraint-driven-development skill?
Download the skill's ZIP from this page and unzip it. Put the folder in ~/.claude/skills/ to use it across projects, or in .claude/skills/ inside one project. In the Claude apps, upload the ZIP under Settings, Capabilities, Skills.
Is the constraint-driven-development skill free?
The skill is published under the MIT licence. The checking tools it proposes, such as semgrep, gitleaks, axe and lighthouse, are separate projects with their own licences, so check each one before you use it.
Does the skill need internet access or run scripts?
According to its listing, the skill does not run scripts and does not use the network. The tools it suggests for checks are installed and run by you in your own project.
What do I need before using it?
You need project tooling for the checks you choose, such as a test runner, linters, tsc or security scanners. Accessibility and performance checks need a running preview URL. Setup also needs an interactive session, because the interview cannot run in CI.
Can the skill run in CI or autonomous agent loops?
The interview should not run in non-interactive contexts. In those cases the skill applies a minimal floor and flags the remaining gaps for a human to fill in.
What if I don't know what coverage or performance number to use?
Tell the skill you don't have a number. Its default is to measure where the project is today and hold that line, rather than inventing a target that people will ignore. Performance defaults are written into the example file as LCP at or below 2500ms and CLS at or below 0.1.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
Use this skill if your team works with AI coding agents and wants quality standards written in a file and enforced by commands, not debated in each pull request. Skip it for throwaway scripts, spikes or projects that already maintain their own CONSTRAINTS.md, and do not rely on it for unattended CI runs, where it only applies a minimal floor.
Download the skill