Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

claude-code-kit

Six Claude Code hooks and two skills, in six plugins, and a statusline. Each one closes a gap that costs real time: an agent that narrates history in a comment, a subagent you cannot correct until it finishes, a bot challenge that reads like a missing file, a long turn that ends while you are in another window, a team of agents that merges a conflict nobody saw.

Install what you want. No hook depends on another, and the skills work without any of them — delegation reaches further with agent-steer and help-intercept installed, and says so where it matters.

Install

/plugin marketplace add moghaddas/claude-code-kit
/plugin install curl-ua-guard@moghaddas

From a shell instead of a session:

claude plugin marketplace add moghaddas/claude-code-kit
claude plugin install curl-ua-guard@moghaddas --scope user

All six plugins at once:

claude plugin install kit@moghaddas

The hooks

Plugin Event What it does
curl-ua-guard PreToolUse Gives curl and wget a browser User-Agent before they leave the machine. A Cloudflare-fronted origin serves a challenge to a default curl/8.x UA, and that response reads like a real finding.
notify Notification, Stop Writes a desktop banner when Claude needs you, and when a long turn ends.
doc-guards PostToolUse, PreToolUse Flags a comment that narrates history in code just written. Hands back the brevity bar before a CLAUDE.md, AGENTS.md or SKILL.md is written, by blocking the first write of each.
agent-steer PreToolUse Corrects a running subagent. A queued message reaches an agent only at a turn boundary, so this one delivers by pull instead.
help-intercept UserPromptSubmit Prints a skill's help text for zero model tokens. The hook returns the text through the block contract, so the model never runs.

doc-guards and agent-steer install disabled. Both change how the agent behaves, so you opt in rather than discover them. Enable either in /plugin.

Each plugin's README carries its own configuration table and its failure mode.

The skills

delegation holds two skills and the agent one of them spawns. Both are about work you hand to someone else.

Skill Invoke What it does
orchestrate /delegation:orchestrate Leads a team of subagents. Decompose into tracks that cannot touch the same file, pick a model per track, brief completely in the spawn, steer, spot-check every claim before accepting it, merge.
second-opinion /delegation:second-opinion Gates a consult on a decision that is expensive to unwind, and briefs an agent that has none of your context. Ships with that agent, pinned to fable at xhigh effort and read-only.

Three facts about the harness do most of the work in orchestrate, and each one explains an agent that looks broken and is not. A queued message arrives only at a turn boundary, one per turn, in both directions — so a running agent reads nothing you send it, and your own inbox stays unread while you keep calling tools. A backgrounded agent's final text reaches nobody, and the idle notification that follows reads exactly like a delivered report. And Write refuses a subagent any file named REPORT.md, SUMMARY.md, FINDINGS.md or ANALYSIS.md, so a brief that asks for one gets nothing.

orchestrate reaches a live track by writing a control file, which is what agent-steer delivers. That matters most at the 15-minute cap, where the file tells a track to stop taking new work, checkpoint, commit and report — without it the only brake is TaskStop, which kills the unit of work in flight. Mid-run corrections are the rarer case: with a complete brief, a correction usually means the brief was wrong, which is a respawn. The skill says so, and falls back to respawning when the hook is absent. orchestrate carries a ## Help section, so /delegation:orchestrate --help prints its options — for zero model tokens when help-intercept is installed.

The statusline

statusline/ holds a statusline that reports two things a stock one does not: the true cost of a session including subagents, and every repo in the workspace grouped by branch.

It is not a plugin. A plugin's bundled settings.json supports only the agent and subagentStatusLine keys, so no plugin can install a statusline. Run the installer:

git clone https://github.com/moghaddas/claude-code-kit ~/src/claude-code-kit
~/src/claude-code-kit/statusline/install.sh

Requirements

The statusline needs jq, and uses ccusage for the cost segment when it is present. Every hook runs on bash and the Python 3 that ships with the system. The skills need nothing but Claude Code. Nothing here needs a package manager.

License

MIT.

About

Six Claude Code hooks in five plugins, and a statusline. Install what you want.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages