__pycache__/
*.py[cod]
build/
dist/
*.egg-info/
.venv/
.pytest_cache/
.mypy_cache/
.DS_Store

# Per-developer secret vaults + registry (plaintext secrets, tokens, file paths).
# NEVER commit this — it holds credentials. Also where local session/usage state
# (e.g. sessions/<id>.usage) lands when the CLI or its tests run against ROOT.
/.charter/

# SDD scratch (review packages, task briefs) — never publish
.superpowers/

# added by `charter init`
/workspaces/*/*
!/workspaces/.gitkeep
# >>> charter live workspaces (managed by `charter workspace live`) >>>
!/workspaces/plane-shape/workspace.json
!/workspaces/plane-shape/workspace.md
!/workspaces/plane-shape/memory
!/workspaces/plane-shape/memory/**
!/workspaces/plane-shape/todos
!/workspaces/plane-shape/todos/**
!/workspaces/todos/workspace.json
!/workspaces/todos/workspace.md
!/workspaces/todos/memory
!/workspaces/todos/memory/**
!/workspaces/todos/todos
!/workspaces/todos/todos/**
!/workspaces/user-reporting/workspace.json
!/workspaces/user-reporting/workspace.md
!/workspaces/user-reporting/memory
!/workspaces/user-reporting/memory/**
!/workspaces/user-reporting/todos
!/workspaces/user-reporting/todos/**
# <<< charter live workspaces <<<

# Per-developer Claude Code settings. charter dogfoods itself, so this is where the
# working-tree status line lives (`python3 -m charter statusline`) — the committed
# settings.json keeps `charter statusline`, which is what an actual user runs.
/.claude/settings.local.json

# Agent worktrees created by the harness for isolated sub-agent runs.
.claude/worktrees/
