From anger-management
Invoked as /crap. Captures a one-line friction note for a later repair pass; runs only when the operator explicitly types this command, never auto-activated.
How this skill is triggered — by the user, by Claude, or both
Slash command
/anger-management:crapThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The operator just cussed "crap" at the session. This is one of the cuss commands:
The operator just cussed "crap" at the session. This is one of the cuss commands:
a capture, not a request to fix anything now. Log it cheap and get back to work. The
constructive pass happens later via /anger-management:repair.
The commands below live in this plugin's bin/ directory. Resolve the loaded
plugin root first; Claude Code exposes ${CLAUDE_PLUGIN_ROOT}, and Codex exposes
the install path through codex plugin list.
Distil what actually set them off into a plain one-line pointer of at most a dozen words. Point at what happened (the thing the agent or workflow did), not at the feeling. Then append it through a quoted heredoc (the quoted delimiter stops the shell touching the text, even if it echoes something hostile):
resolve_anger_plugin_root() {
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
printf '%s\n' "$CLAUDE_PLUGIN_ROOT"
return 0
fi
if command -v codex >/dev/null 2>&1; then
codex plugin list | awk '$1 == "anger-management@laicluse-agent-fieldkit" { print $NF; found=1; exit } END { exit found ? 0 : 1 }'
return $?
fi
return 1
}
PLUGIN_ROOT="$(resolve_anger_plugin_root)" || { echo "anger-management plugin root not found" >&2; exit 1; }
node "$PLUGIN_ROOT/bin/anger-log" crap <<'CAPTURE_NOTE'
<pointer>
CAPTURE_NOTE
No clear cause? Log the word alone, do not invent one:
use the same command with </dev/null instead of the heredoc.
Schedule the cooled-down repair so the operator never has to remember it:
resolve_anger_plugin_root() {
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
printf '%s\n' "$CLAUDE_PLUGIN_ROOT"
return 0
fi
if command -v codex >/dev/null 2>&1; then
codex plugin list | awk '$1 == "anger-management@laicluse-agent-fieldkit" { print $NF; found=1; exit } END { exit found ? 0 : 1 }'
return $?
fi
return 1
}
PLUGIN_ROOT="$(resolve_anger_plugin_root)" || { echo "anger-management plugin root not found" >&2; exit 1; }
node "$PLUGIN_ROOT/bin/anger-schedule"
Single-flight: it starts a background investigation only if none is pending and there are open captures. Safe to run on every capture.
If your harness has a scheduler (Claude Code: CronList/CronCreate) and no
anger-management check-in job exists yet, schedule a recurring poll so the
diagnosis can surface when it arrives: a modest interval (e.g. */5 * * * *) whose
prompt is: "Read
${LAICLUSE_HOME:-~/.laicluse}/anger-management/findings.md. If it
exists, tell the operator a repair diagnosis is ready and offer
/anger-management:repair, then delete this job. If it is absent, do nothing this
tick." The exact 22m22s timing lives in the background worker; this just polls
cheaply until the diagnosis file appears, then removes itself. No scheduler in
your harness? Skip this step; the diagnosis still surfaces at the next
/anger-management:repair.
Acknowledge briefly in the operator's language and get back to work. This is a capture, not a fix: do not start self-improvement or change scope now, that is what the later repair pass is for.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub epologee/laicluse-agent-fieldkit --plugin anger-management