Thanks for contributing. This repo is a PNPM workspace for offline governance tooling.
git clone https://github.com/stackbilt-dev/charter.git
cd charter
pnpm install
pnpm run buildpackages/
types/ Shared TypeScript contracts
core/ Schemas, sanitization, shared errors
adf/ ADF parser, formatter, patcher, bundler (AI context format)
git/ Git trailer parsing and risk scoring
classify/ Heuristic change classification
validate/ Citation and governance validation
drift/ Anti-pattern drift scanning
cli/ CLI tool (`charter`)
ci/ GitHub Actions integration helpers
Run these from the repo root:
pnpm run typecheck
pnpm run build
node packages/cli/dist/bin.js doctor --format jsonIf you changed CLI behavior, include at least one command sample in your PR body.
Use Conventional Commits:
feat(git): add support for custom trailer namesfix(drift): handle empty anti-pattern stringsdocs: update CLI usage examples
PR checklist:
- Keep scope focused (single concern per PR)
- Describe what changed and why
- Link related issue(s)
- Include command output/screenshots for behavior changes
- Confirm
pnpm run buildpasses - If CLI UX or setup behavior changes, update
README.md,packages/cli/README.md, andCHANGELOG.mdin the same PR
- TypeScript
strict: trueacross all packages - No runtime dependency on cloud services
- Pure functions preferred; side effects in CLI command handlers only
- No LLM API calls in this kit (heuristic-only runtime)
Belongs here (offline, local-first):
- Heuristic classifiers and validators
- Schema definitions and validation
- Git integration logic
- ADF context format parsing, formatting, and patching
- CLI commands and local config parsing
Handled by external services (not in this repo):
- LLM-powered analysis requiring cloud API calls
- Database operations and multi-tenant runtime features
- AuthN/AuthZ and hosted frontend concerns
This repo ships with Claude Code skills and permissions config in .claude/.
Tracked (shared with all contributors):
.claude/skills/— project workflows (/commit,/release,/issue,/test).claude/settings.json— stable Bash permissions and PostToolUse hooksCLAUDE.md/AGENTS.md— thin pointers routing agents to.ai/modules
Not tracked (create your own):
.claude/settings.local.json— personal overrides, MCP server config, WSL/machine-specific permissions
To add personal overrides, create .claude/settings.local.json:
{
"permissions": {
"allow": ["Bash(wslview:*)"]
},
"enabledMcpjsonServers": ["your-mcp-server"]
}Use GitHub Issues for bugs/features. Include Node.js version, OS, and charter --version output.
For security issues, follow SECURITY.md.
- GitHub Issues/PRs are the canonical tracker for active engineering work.
papers/is a curated narrative layer (feedback, research, release plans), not a full mirror of all links.- New
AGENT_DX_FEEDBACK_*.mdfiles must include frontmatter keys required byscripts/papers-lint.mjs:feedback-id,date,source,severity,bucket,status,tracked-issues,tracked-prs. - Release plans under
papers/releases/*-plan.mdmust include the release-plan frontmatter schema validated byscripts/papers-lint.mjs.
By contributing, you agree that contributions are licensed under Apache License 2.0.