Multi-stack project governance framework — handbook + auditor + scaffolder + portfolio report.
Intendant materializes project management standards (workflows, CI, releases, quality,
security, architecture) in a form that is both human-readable (handbook + ADRs) and
machine-executable (CLI). A single .intendant.toml at a repo root tells the auditor
which stack applies and which rules are exempted; the scaffolder bootstraps a fully
compliant repo from scratch.
Stable (see CHANGELOG). 83 rules across 7 stacks (python, claude-skill,
node, rust, go, swift, dotnet),
795 tests. Multi-language sub-projects supported via
[[subprojects]] in .intendant.toml (see Multi-stack repositories).
The intendant CLI ships init, audit, explain, new, report, doctor, and
mcp (optional MCP server for agents).
# PyPI / uv tool (recommended)
uv tool install intendant
# Editable from source
uv tool install --editable <path-to-clone>cd <your-repo>
intendant init # writes .intendant.toml and docs skeleton
intendant audit . # human reportintendant audit . # full report, human-readable
intendant audit . --severity=required # exit 1 on required failures
intendant audit . --format=json # for CI or scripting
intendant audit . --format=md # for PR comments
intendant audit . --fix --dry-run # preview auto-fixes
intendant audit . --fix # apply auto-fixes# Python package
intendant new my-lib --stack=python --description="..." --author="..."
# Claude Code skill
intendant new my-skill --stack=claude-skill --description="..."
# Node package
intendant new my-pkg --stack=node --description="..."
# Rust crate
intendant new my-crate --stack=rust --description="..."
# Go module
intendant new my-svc --stack=go --description="..."
# Swift (SwiftPM library, package + Sources + Tests + swiftlint + CI)
intendant new my-pkg --stack=swift --description="..."
# .NET (C# library, csproj + xunit test project + .editorconfig + CI)
intendant new my-lib --stack=dotnet --description="..."
# After scaffolding
cd my-lib
uv sync && uv run pre-commit install
intendant audit . --severity=required # should exit 0A repo can host several sub-projects in different languages. Declare each one via
[[subprojects]] in .intendant.toml:
[intendant]
version = "1"
enforcement = "strict"
[[subprojects]]
name = "backend"
path = "services/api"
stack = "python"
[[subprojects]]
name = "frontend"
path = "apps/web"
stack = "node"
role = "frontend" # presentation-only: test-presence rules auto-skip
[[subprojects]]
name = "agent-skill"
path = "skills/triage"
stack = "claude-skill"Each sub-project is audited independently — only transverse rules and its own
stack's rules apply. Exemptions can be scoped to a single sub-project with
[exemptions.<name>]:
[exemptions.backend]
PYTHON_QU002 = "Ruff config inherited from monorepo root, not duplicated here"For single-stack repos, prefer auto-detection (omit stack) or pin once with
[intendant] stack = "<name>". See the Multi-stack handbook
page for the resolution model, field
constraints, and scoped-exemption semantics.
intendant report <portfolio-root> # human table
intendant report <portfolio-root> --format=json # machine-readable
intendant report <portfolio-root> --save-snapshot
intendant report <portfolio-root> --diff # compare to last snapshot
intendant report <portfolio-root> --against snapshots/2026-04-01.jsonintendant explain PYTHON_LO001 # handbook entry + linked ADR
intendant explain --all # table of all 83 rulesintendant doctor # verify install integrity83 rules total. Transverse rules apply to every stack; adapter rules apply only to the declared stack.
| Family | Prefix | Count | Examples |
|---|---|---|---|
| Docs & governance | DG |
5 | README, CLAUDE.md, ADRs, LICENSE, specs local-only |
| Layout | LO |
2 | docs/ directory, orphan nested stack roots |
| Releases | RL |
6 | CHANGELOG, conventional commits, release-please, SemVer, branch protection, App-token release |
| CI | CI |
4 | workflow present, commit-msg check, caching, SHA-pinned actions |
| Quality | QU |
1 | configured tools actually run in CI |
| Sanitizing | SA |
5 | pre-commit baseline, gitleaks, .env.example, .gitignore, update automation |
| Tests | TS |
1 | regression_tests/ (when applicable) |
Covers layout (PYTHON_LO), packaging (PYTHON_PK), quality (PYTHON_QU), and
tests (PYTHON_TS).
Covers SKILL.md presence and frontmatter, evals/, referenced directories, and README install path.
Covers packaging (NODE_PK), quality (NODE_QU), tests (NODE_TS), CI
(NODE_CI), and sanitizing (NODE_SA).
Covers packaging (RUST_PK: Cargo.toml/lock, edition), quality (RUST_QU:
toolchain pin), tests (RUST_TS: #[test] annotations), CI (RUST_CI: cargo
fmt/clippy/test), and sanitizing (RUST_SA: target/ in .gitignore,
cargo-deny/cargo-audit scanning).
Covers packaging (GO_PK: go.mod/go.sum, go directive), quality (GO_QU:
golangci-lint config), tests (GO_TS: *_test.go with func Test*), CI
(GO_CI: vet/build + test + lint), and sanitizing (GO_SA: *.test in
.gitignore).
Covers packaging (SWIFT_PK: Package.swift/.resolved, swift-tools-version),
quality (SWIFT_QU: swiftlint/swiftformat config), tests (SWIFT_TS:
Tests/**/*.swift with func test*/XCTestCase/@Test), CI (SWIFT_CI:
swift build/test + lint), and sanitizing (SWIFT_SA: .build/ and
xcuserdata/ in .gitignore).
Covers packaging (DOTNET_PK: .csproj with TargetFramework, packages.lock.json),
quality (DOTNET_QU: nullable reference types, .editorconfig), tests
(DOTNET_TS: xunit/NUnit/MSTest test project), CI (DOTNET_CI:
dotnet format/build/test), and sanitizing (DOTNET_SA: bin/ and obj/
in .gitignore).
Rule IDs were renamed in v0.2.0 (e.g.
LO001→PYTHON_LO001). See docs/migrations/0.2.0-rule-prefix-rename.md to update.intendant.tomlexemptions.
Intendant ships an optional MCP server so any MCP-compatible agent (Claude Code, Claude Desktop, Cursor, …) can query governance state directly.
Install with the extra:
uv tool install 'intendant[mcp]'Then register the server in your MCP client. Example for Claude Desktop
(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"intendant": {
"command": "intendant",
"args": ["mcp"]
}
}
}Five tools are exposed: audit_repo, explain_rule, list_rules,
report_portfolio, diff_portfolio. All return JSON-serializable payloads
matching the schemas of the corresponding CLI commands.
- Handbook — charter + all 83 rules with rationale.
- Multi-stack repositories —
[[subprojects]]syntax and scoped exemptions. - ADRs — justified architecture decisions.
- Migrations — upgrade guides between major versions.
Future paliers: portfolio polish, additional adapters as needed.
MIT — see LICENSE.