Per-Project Override Patterns
This guide shows when to use per-project config, how to scaffold it, and the common patterns for declaring one reproducible project harness.
When To Use Per-Project Config
Use a project config whenever a project needs a Worker or explicit capability intent. Examples:
- a project should select one Blueprint from several alternative roots
- a project should add its own local MCP server
- a project should enable Parallel, Beads, or MarkItDown without enabling them globally
- a project should disable a downstream target (e.g. no Cursor)
Machine capabilities remain machine-scoped and may be visible ambiently in project sessions. They are not inherited as project declarations.
Scaffold
cd /path/to/project
drwn init
This creates:
<project>/.agents/drwn/config.json
Use --non-interactive or --minimal for scripts. --force overwrites an
existing config.
What Project Config Can Do
A project config can:
- declare alternative Card or Blueprint roots and select at most one
- toggle existing MCP servers on or off for one project
- add project-local MCP server definitions
- enable extensions (Parallel, Beads, MarkItDown) for one project
- include or exclude skills during write
- enable or disable downstream targets for one project
Discovery
Discovery walks upward from the current working directory and stops at the
first matching config. Commands outside a configured project fall back to the
machine-wide harness view. Discovery affects drwn write, drwn mcp list,
drwn mcp write, drwn status, drwn doctor, and all drwn extensions
subcommands.
Full Extension Example
{
"schema": "drwn.project-config",
"schemaVersion": 1,
"workers": ["@team/operator@^1.0.0"],
"activeWorker": "@team/operator",
"extensions": {
"parallel": {
"enabled": true,
"skills": true,
"mcp": false
},
"beads": {
"enabled": true,
"targets": ["codex", "claude"],
"includeSkill": true
},
"markitdown": {
"enabled": true,
"skills": true
}
}
}
Include vs Exclude Precedence
skills.include adds repo-native and package-backed skills into the project
write. skills.exclude removes matching skills from project write.
If an extension derives a skill and skills.exclude names the same skill,
skills.exclude wins. Unknown skill names in skills.include fail
drwn write before mutation and are also reported by drwn doctor.
Declared And Ambient Scope
Project capabilities are resolved only from project-owned inputs:
selected Worker root closure -> explicit project overlays -> explicit local overlay
Machine capability selections and user-home target files are not copied into project intent, lock state, or generated Worker aggregates. Status and doctor may report them as diagnostic-only ambient observations because downstream clients can still expose user-home state during a project session.
Recommended Workflow
cd /path/to/project
drwn init
drwn add @team/operator@^1.0.0
drwn use @team/operator --no-write
drwn add mcp context7
drwn status
drwn write --dry-run
drwn doctor
drwn write