Author · 2026 · Private repo
claude-config
A configuration framework for Claude Code: skills that trigger themselves, cheap models for cheap work, and a CI verifier that catches drift.
68
structural checks
A deterministic verifier across five sections, exit-code gated for CI; one command returns 0 failing check(s).
2
model-pinned subagents
A cheap model for bulk retrieval and a vision model for visual verification.
7
auto-triggering skills
Seven auto-triggering skills, dispatched by their descriptions.
- Role
- Author
- Period
- 2026
- Status
- Private repo
- Focus
- AI · Tooling
- Stack
- Claude Code
- Python
- Markdown frontmatter
- JSON policy
Problem
Every project on a machine ends up with the same agent problems: instructions that grow until they crowd out the work, skills that only run when someone remembers to call them, expensive models doing cheap retrieval, and a configuration that drifts quietly until the agent behaves differently from one week to the next. claude-config is the machine-wide answer: one configuration living in ~/.claude, applied to every project, with a verifier that says whether it is still intact.
Structure
CLAUDE.md— the router, capped at 150 lines. It loads into every session, so it points at detail files instead of containing them.context/stack.md— the stack facts the router points to.- Seven skills — grill-me, scaffold-project, verify-visually, capture-learning, brand-kit, campaign and video-pipeline — each triggered from its own description field.
- Two subagents with pinned models: bulk-researcher on a cheap model, visual-qa on a vision-capable model.
settings.json— the permission rules, the status line and a stop-hook notification.statusline.py— model, directory, branch, context percentage and session cost in the status line.verify.py— 68 structural checks across five sections (prereqs, router, skills, agents, hygiene), exit-code gated for CI.
Decisions
- Context budget. A CLAUDE.md router capped at 150 lines routes to detail files instead of containing them.
- Description-driven dispatch. A skill states when it applies and the agent triggers it; nothing is invoked by hand.
- Model routing per task class. Bulk retrieval goes to a cheap model and visual verification to a vision model, which keeps cost predictable.
- Schema-validated frontmatter on every skill and agent, so a malformed file fails verification instead of failing quietly in a session.
- A 100-rule permission policy — 75 allow, 23 deny, 2 confirm — where deny beats allow.
- Deny-by-default
.gitignore, so session keys and transcripts are structurally unstageable. - No project-specific facts in global files. The verifier fails on known project strings.
Result
One command, python3 ~/.claude/verify.py all, returns 0 failing check(s). The same configuration applies to every project on the machine, and structural drift fails the check before it reaches a session.
Layers
How it is built.
4 layers, back to front: what each one owns, and why it is its own layer.
Router
- ~/.claude/CLAUDE.md
- 150-line cap, routes to detail files
- context/stack.md
Skills
- 7 skills, description-driven dispatch
- grill-me · scaffold-project · verify-visually
- capture-learning · brand-kit · campaign · video-pipeline
Agents
- 2 model-pinned subagents
- bulk-researcher → cheap model
- visual-qa → vision model
Verifier
- python3 ~/.claude/verify.py all
- 68 checks · 5 sections · exit-code gated
- 100 permission rules · deny beats allow
- 0 failing check(s)
Router
The router loads into every session, so it is capped at 150 lines and points elsewhere instead of explaining.
Skills
Skills trigger from their own description field; nothing is invoked by hand.
Agents
Bulk retrieval goes to a cheap model and visual checks to a vision model, which is how cost stays predictable.
Verifier
Sixty-eight structural invariants, schema-validated frontmatter on every skill and agent, and a policy where deny always wins.
Hiring?
Hiring for frontend, full-stack or AI?
The CV has the degree, six internships and every project. Email is the fastest way to reach me.