Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/mattmre/EVOKORE-MCP-PUBLICnpx agentmods add skills/mattmre/evokore-mcp-public/hooks-automationWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/mattmre/evokore-mcp-public/hooks-automation)<a href="https://agentmods.dev/skills/mattmre/evokore-mcp-public/hooks-automation"><img src="https://agentmods.dev/badge/skills/mattmre/evokore-mcp-public/hooks-automation/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/mattmre/evokore-mcp-public/hooks-automation"><img src="https://agentmods.dev/badge/skills/mattmre/evokore-mcp-public/hooks-automation.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00038 | $0.00726 |
| Opus 5 | $0.00019 | $0.00363 |
| Sonnet 5 | $0.00008 | $0.00145 |
| Haiku 4.5 | $0.00004 | $0.00073 |
Grade A, and why
hooks-automation scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 92 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Hooks Automation Skill
Implements Claude Code hooks using the STATUS→PROGRESS→COMPLETE 3-phase memory sync pattern for reliable hook orchestration.
Trigger
Use this skill when:
- Implementing new Claude Code hook scripts
- Debugging existing hooks (PreToolUse, PostToolUse, UserPromptSubmit, Stop)
- Adding JSON flow-control responses to existing hooks
- Implementing memory sync between hook invocations
Hook Types
| Hook | Trigger | Control Response |
|---|---|---|
PreToolUse |
Before any tool call | {decision: "block"|"ask"|"allow", reason?} |
PostToolUse |
After any tool call | {suppress?: true} (suppress tool result from context) |
UserPromptSubmit |
On each user message | {additionalContext: "..."} (inject context) |
Stop |
Before session ends | {decision: "block", reason} (prevent exit) |
3-Phase Memory Sync Pattern
All hooks should implement the STATUS→PROGRESS→COMPLETE lifecycle:
STATUS Phase
On hook invocation, emit status to session manifest:
appendEvent(sessionId, { type: 'stop_check', payload: { status: 'checking', ts: Date.now() } });
PROGRESS Phase
During computation, write incremental state (for long-running hooks):
appendEvent(sessionId, { type: 'stop_check', payload: { status: 'in_progress', step: 'checking_tasks' } });
COMPLETE Phase
On completion, emit final result:
appendEvent(sessionId, { type: 'stop_check', payload: { status: 'complete', result: decision } });
JSON Flow-Control Response Format
Hooks communicate with Claude Code via stdout JSON:
// Allow (default if no output)
// No output needed
// Block with reason
console.log(JSON.stringify({ decision: 'block', reason: 'X incomplete tasks remain' }));
// Ask for approval
console.log(JSON.stringify({ decision: 'ask', reason: 'Destructive action detected', reason }));
// Inject context into next prompt
console.log(JSON.stringify({ additionalContext: 'Current session has 3 pending tasks:\n1. ...' }));
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 92 lines · 38 tokens per session scan A 2e2fe61444c1
hooks-automation is a skill published in the GitHub repository mattmre/EVOKORE-MCP-PUBLIC (3 stars, last pushed 3mo ago), licensed MIT. It adds 38 tokens to every session and 726 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
harness-help
Orient a non-coder to this project's Agentsmith harness — fires on "what is this harness?", "what are my rules?", "which profile am I on?", "what do I type next?". Part of the Agentsmith harness; reads the canonical instructions and selected agent's safety configuration, then reports the profile, rules, safety mode…
example-skill
Template/example skill showing the minimal structure. Replace or delete it. Use as a starting point when you want to capture a repeatable workflow as a skill.
brainstorming
Interactive spec generation — turn ideas into concrete specs with R-numbered requirements and testable acceptance criteria.
executing
Autonomous task implementation workflow — implement, test, review, commit for each task in the frontier.
reviewing
Claude-on-Claude code review protocol — reviews implementation against spec requirements and code quality standards.
oo-asana
Asana (asana.com). Use this skill for ANY Asana request — reading, creating, updating, and deleting data. Whenever a task involves Asana, use this skill instead of calling the API directly.