This is the Claude Code configuration for working on the KahnClaude framework itself.
inspiration/ contains third-party reference projects. It is read-only.
- NEVER edit, delete, or create files in
inspiration/ - NEVER commit changes inside
inspiration/ - Read inspiration projects for reference only — extract ideas, never copy verbatim
- NEVER commit
.env, credentials, API keys, or tokens .envandCLAUDE.local.mdmust always be in.gitignore
| Folder | Purpose |
|---|---|
.claude/commands/ |
Slash commands — scope: project ones are distributed to projects |
.claude/commands/kc/ |
Framework-only commands (scope: framework), invoked as /kc:<name> |
.claude/skills/ |
Skills distributed to projects |
.claude/agents/ |
Agents distributed to projects |
.claude/hooks/ |
Hook scripts distributed to projects |
.claude/settings.json |
Hooks wiring for this framework repo |
project/ |
CLAUDE.md templates and settings.json template for new projects |
global/ |
Global ~/.claude/ config templates |
inspiration/ |
Read-only third-party references |
When adding any component (command, skill, agent, hook), update ALL of:
- The component file itself in
.claude/commands/(project) or.claude/commands/kc/(framework),.claude/skills/,.claude/agents/, or.claude/hooks/ README.md— component listing and descriptionCONTRIBUTING.md— any new conventions introduced
If adding a hook: also wire it in @.claude/settings.json and document the wiring in @global/settings.json.
All hooks in hooks/ must be written in Python. No bash. Reasons:
- Cross-platform (Windows, macOS, Linux, WSL)
- No shell quoting edge cases
- Easier to test and maintain
Hooks must use only Python stdlib unless the dependency is explicitly documented and widely available.
This repo primarily contains Markdown and Python. Follow these conventions:
- Use YAML frontmatter for metadata fields (name, description, scope, triggers)
- Keep command prompts actionable and specific
- No emojis unless the user explicitly requested them
- No file > 300 lines
descriptionfields must not exceed 400 characters- Use
@path/to/filesyntax for absolute file path references in.mdfiles (e.g.@src/main.py,@.claude/settings.json); relative or fuzzy references (e.g.file.ext,commands/) are fine as-is - Agents that should auto-trigger must include
Use PROACTIVELY when [specific condition]in their description — only for agents users would otherwise skip, not for agents users always invoke explicitly - Agents may be organized in subfolders:
core/for cross-cutting concerns,<stack>/for tech-specific agents
- Type hints on all functions
- Exit code semantics:
0= allow,2= block with message,1= warn - Print blocking reason to
stderrwhen exiting with code 2 - No external dependencies without documentation
- Work on feature branches —
feat/<name>,fix/<name>,docs/<name> - Keep commits focused: one logical change per commit
- Run
python -m py_compile hooks/*.pyto syntax-check hooks before committing