CafeKit installs an operating system for the assistant.
The package adds managed skills, agents, rules, scripts, hooks, statusline, runtime config, and state synchronization into the project.
30 packaged workflows and domain capabilities
13 specialist agents for planning, code, QA, docs, git, and deploy
Privacy, scope, state, usage, docs sync, and spec-state gates
Runtime configuration, paths, locale, usage, and model hints
Claude Code hook wiring and statusline command
Git, context, usage, task, and agent statusline
Hooks#
Claude Code uses CommonJS hooks under .claude/hooks/. Codex CLI uses project hooks from .codex/hooks.json plus shared rules and scripts under .codex/.
| Hook | Purpose |
|---|---|
privacy-block.cjs | Requires user approval for sensitive files such as .env, keys, credentials, and tokens. |
inspect-block.cjs | Blocks heavy or unsafe scopes such as .git, node_modules, build outputs, and broad glob scans. |
rules.cjs | Injects concise workflow, skill routing, docs path, and modularization reminders. |
spec-state.cjs | Finds active specs and injects the state sync tollgate. |
docs-sync.cjs | Detects missing or stale project docs. |
state.cjs | Persists session state and modified-file summaries. |
agent.cjs | Gives subagents lightweight path, locale, and rule context. |
usage.cjs | Fetches Claude usage limits for the statusline cache. |
Validators#
The runtime includes deterministic scripts:
node .claude/scripts/validate-spec-output.cjs specs/<feature>
node .claude/scripts/validate-docs.cjs docs
node .claude/scripts/validate-docs-reconstruct.cjs docs/as-is/<scope>
node .claude/scripts/generate-skill-catalog.cjs --skills
Use validators as hard backstops. Prompt instructions can drift; scripts should not.
State model#
New process-first Specs keep human-readable state in the plan and flat tasks:
plan.mdstores C1 scope, acceptance criteria, exclusions, findings decisions, and the task map.task-NN-*.mdstores oneStatus:, outcome, ownership, dependencies, acceptance, proof command, and final inline## Receipt.
Only the controller synchronizes observed Status and proof. Chat messages are not a source of truth. Existing legacy packets retain their separate adapter without redefining the process-first default.