npx claudepluginhub joranhonig/grimoireThis skill uses the workspace's default tool permissions.
Create, apply, and manage vulnerability pattern checks — simple markdown files that describe
Transforms confirmed vulnerability findings into reusable automated detection modules (sigils) by analyzing patterns and assessing feasibility. Ideal for encoding audit lessons.
Scans codebases, dependencies, and configurations for security vulnerabilities including CVEs and code flaws, generating reports with severity ratings and remediation steps.
Scans codebases for OWASP Top 10 vulnerabilities via static analysis: secret exposure, injection flaws, auth/authz gaps, supply-chain risks, misconfigurations, logging failures. Use before deployments, PR merges, auth/payment changes.
Share bugs, ideas, or general feedback.
Create, apply, and manage vulnerability pattern checks — simple markdown files that describe what to look for in a codebase and how to assess matches.
Many simple checks beat one complex check. Checks are starting points based on common
mistakes and best practices, not comprehensive analyses. Each check hunts one pattern. Agent
attention is the scarcest resource — keep checks focused and short. When reasoning gets complex,
split into multiple checks. Consult references/design-principles.md for the full rationale.
When this skill is activated, create a todo list from the following steps. Mark each task in_progress before starting it and completed when done.
- [ ] 1. Determine intent — create new check, apply existing checks, or manage collection
- [ ] 2. (Create) Identify the vulnerability pattern
- [ ] 3. (Create) Write the check file
- [ ] 4. (Create) Validate the check
- [ ] 5. (Apply) Select applicable checks
- [ ] 6. (Apply) Run checks against the codebase
- [ ] 7. Collect and present results
- [ ] 8. Suggest follow-ups
Ask the user (or infer from context) which mode they need:
bash skills/checks/scripts/index-checks.sh grimoire/spells/checks/ to list all checksbash skills/checks/scripts/validate-check.sh <file> to validate a specific checkIf unclear, ask the user. Then skip to the relevant step.
Three sources for new checks:
From a confirmed finding. The user or an agent found a specific bug. Generalize the pattern: what was the observable code pattern? What conditions made it exploitable? What would a grep for similar instances look like?
From domain knowledge. The user knows a class of bugs to look for (e.g., "check for ERC-4626 vault issues"). Extract the specific patterns and assessment criteria.
From external research. Use the librarian agent to gather context on a vulnerability class, then distill into grep-able patterns and assessment rules.
For any source, extract:
Consult references/design-principles.md to decide whether the pattern should be one check or
multiple. If the pattern involves multiple independent sub-patterns or the assessment requires
deep reasoning, split now rather than after writing.
Check in with the user before continuing.
Create a file at grimoire/spells/checks/<slug>.md where <slug> is a lowercase, hyphenated
version of the check name.
Follow the format in references/check-format.md. The file has:
name, description, languages, severity-default, confidence,
tools. Optionally tags, related-checks, attribution-name, and attribution-url.
Add attribution-name and attribution-url when the check is inspired by external
research, a known registry (e.g., SWC), an audit report, or another person's work.Keep the body under ~30 lines. If it grows longer, split into multiple checks.
Consult examples/ for worked examples at different complexity levels:
examples/debug-assertions.md — simplest possible check (one pattern family)examples/rounding-direction.md — scanning check (identify pattern, defer assessment)examples/rounding-inflation-attack.md — assessment check (deep reasoning on known pattern)examples/erc4626-vault.md — checklist-style check (multiple items for one standard)examples/unchecked-return-values.md — cross-language checkIf grimoire/spells/checks/ does not exist, create it. This directory is part of the spellbook
structure created by [[summon]].
Run the validation script:
bash skills/checks/scripts/validate-check.sh grimoire/spells/checks/<slug>.md
This verifies:
Review the check against the simplicity principle: is this one pattern? Is the assessment clear? Could an agent apply this in a single focused pass?
Check in with the user before continuing.
Run the indexing script to see available checks:
bash skills/checks/scripts/index-checks.sh grimoire/spells/checks/
This outputs a tab-separated list: name, description, languages, severity, confidence, filepath.
Filter by:
languages field against the target codebaseFor each selected check, spawn a subagent with:
tools fieldEach subagent operates independently with minimal context — just the check and the code. This isolation is critical for attention management. Do not bundle multiple checks into one agent.
Subagents report back for each match:
Run subagents in parallel where possible.
Aggregate results from all subagents. Present findings grouped by severity:
For each finding, include:
After presenting findings, suggest invoking the familiar agent to triage them. The familiar independently verifies each finding and filters false positives before the user acts on them.
Based on results, suggest:
/scribe-distill to encode validated patterns into detection
modules for future auditsgrimoire/spells/checks/. This is part of the spellbook directory
created by [[summon]].