-
Notifications
You must be signed in to change notification settings - Fork 2
Configuration
FeatherSpec ships with almost no configuration on purpose. This page covers the few knobs that exist, and the two integrations (MCP, hooks) that ship as documentation so you can add them yourself.
Lives in AGENTS.md, and only there:
DocLanguage: English # default; /sdd-setup may change thisIt governs the language of your project documentation — the Memory Bank, your specs and
plans, your README — not FeatherSpec's own wiring, which stays English. /sdd-setup sets it as
its very first question; you can also edit the line directly.
Every command writes its output in DocLanguage, including the interviews and reports.
Also in AGENTS.md, also only there:
architecture:
style: 'TBD'
entrypoints:
- 'TBD'
modules: []
shared: []
boundaries:
- 'TBD'/sdd-setup fills it in for the first time; /sdd-architecture-update reconciles it with the
real tree later. The assistant also runs a best-effort drift check at the start of any task that
creates, moves or deletes files: obvious drift is fixed immediately, ambiguous drift is
summarised and confirmed with you first.
| File | Scope | Committed |
|---|---|---|
.claude/settings.json |
everyone who clones the repository | yes |
.claude/settings.local.json |
your machine, your user | no — git-ignored |
CLAUDE.local.md |
your machine, your user | no — git-ignored |
Claude Code writes settings.local.json when you grant a permission with "don't ask again",
so it holds machine- and user-specific rules. Committing it would push your personal permission
set onto the whole team. The shipped .gitignore excludes it, along with CLAUDE.local.md, the
documented local-only memory variant (which VS Code also detects).
Put anything the team should share in .claude/settings.json and AGENTS.md.
Note that VS Code reads hooks from .claude/settings.local.json too — so a local hook affects
both tools on your machine.
{
"autoMemoryEnabled": false
}Claude Code's auto memory is a machine-local, per-repository note store at
~/.claude/projects/<project>/memory/ — effectively a second, invisible Memory Bank. It is not
in your repository, your teammates never see it, it is not reviewable in a pull request, and
Copilot has no equivalent. This template keeps exactly one visible source of truth.
To re-enable it, set the key to true or remove it. Copilot ignores the setting entirely.
FeatherSpec ships no MCP servers. If you add some, each tool reads its own file — neither reads the other, and no setting relocates them:
| Tool | File | Root key |
|---|---|---|
| Claude Code | .mcp.json |
mcpServers |
| VS Code Copilot | .vscode/mcp.json |
servers |
The server definitions inside are otherwise identical, so maintaining both is a copy of the same object under a different key.
FeatherSpec ships none, but a hooks block in .claude/settings.json is read by both tools.
Three caveats if you add one:
-
VS Code ignores matcher values. Hooks fire on every tool invocation, so any shared hook
must filter on
tool_nameinside the script itself. -
The input shape differs. VS Code uses camelCase (
tool_input.filePath) and its own tool names; Claude Code uses snake_case (tool_input.file_path). A shared hook has to handle both. -
Hooks are a Preview feature in VS Code. If yours do not fire, check the
chat.useClaudeHookssetting.
Copilot also has its own hooks file at .github/hooks/hooks.json if you decide to go
Copilot-only later — see Committing to One Tool.
Every path FeatherSpec relies on is already a VS Code default. The shipped file restates them so the setup survives a changed default or an overriding workspace:
{
"chat.useAgentsMdFile": true,
"chat.useClaudeMdFile": false,
"chat.instructionsFilesLocations": { ".claude/rules": true },
"chat.promptFilesLocations": { ".github/prompts": true },
"chat.agentFilesLocations": { ".github/agents": true, ".claude/agents": true }
}chat.useClaudeMdFile is off because Copilot reads AGENTS.md natively — the one-line
CLAUDE.md import file would be redundant for it. See Interop Matrix.
Start here
Reference
Design & interop
- Interop Matrix
- Design Decisions
- Specify Method
- Committing to One Tool
- Migrating from the predecessor
Help