keel-audit
Skill0 starsChanged 57 days agoMITView on GitHub
Use only when the user explicitly asks to security-audit a whole codebase they name (e.g. "/keel-audit ~/code/foo") — a source-only, coverage-accounted vulnerability audit with an independent verifier per candidate. Never part of the discover→plan→plan-review→execute→finish flow and never started by it; diff-level and design-level security stay with keel-exec-reviewer-security and keel-plan-lens-security. Side lane of the keel pipeline.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- muratsilahtaroglu/claude-code-starter-kittheir own version, first seen Sep 25, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- muratsilahtaroglu/claude-code-starter-kit★ 9same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- security-auditSkill
- keel-debugSkill
- keel-discoverSkill
- keel-executeSkill
- keel-finishSkill
- keel-plan-reviewSkill
- keel-planSkill
- keel-wayfindSkill
- keel-workflowSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 51
Follow upstream's full audit mode as written.
- Distinctive: line 65
2. Source-only unless every control is enforceable: Before dispatching, check the host against each control upstream lists under "Universal …
- Very specific: line 106
Do not pass a model override at the call site — each agent file pins its own.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
keel-audit — Whole-Codebase Security Audit (side lane)
INPUT an explicit request naming the repository to audit, plus read access to it
OUTPUT a run directory outside the target holding findings.json and
coverage-ledger.json that both upstream validators accept, and
REPORT.md / FINDINGS-DETAIL.md / NEEDS-VALIDATION.md derived from themMissing INPUT → BLOCKED: 缺 <target repository named by the user> → 退回 the requester.
There is no earlier stage to route to, and this lane never picks a target on its own.
What this is for, and what it is not. keel-exec-reviewer-security reviews
one task's diff; keel-plan-lens-security threat-models a plan. Neither looks
at code nobody is changing. This lane does, once, on request. It is also not a
replacement for gstack's /cso where that is installed: /cso covers
infrastructure, secrets history, CI and skill supply chain with a confidence
gate; this lane contributes what /cso lacks — a coverage ledger that says
exactly what was and was not examined, a needs_validation state that carries
no severity, and machine-validated findings.
Cost. Each unit in the ledger is roughly one agent; each surviving
candidate is one or two more. Even quick on a small repository is
double-digit agent invocations. That is why nothing in the pipeline starts it.
The method lives upstream — read it on demand
Resolve <U> = the absolute path of upstream/ next to this file
(~/.claude/skills/keel-audit/upstream for a global install,
<repo>/.claude/skills/keel-audit/upstream for a per-project one). Every file
below is read from <U>, and every path you put in a brief is <U>-absolute —
a relative name resolves for you and for nobody in a subagent's cwd.
| When | Read |
| before anything else | <U>/SKILL.md — "Universal execution safety", "Full audit setup", "Full audit planning", "Core principles", "Full audit workflow", "Anti-patterns" |
| Phase 1 | <U>/RECONNAISSANCE.md |
| Phase 2 | <U>/HUNTING.md, <U>/ATTACK-CLASSES.md, and only the domain companions reconnaissance selected |
| Phases 3–6 | <U>/VALIDATION-AND-REPORTING.md, <U>/report-schema.json |
Follow upstream's full audit mode as written. The request that invoked this lane is the explicit audit request upstream requires, so do not ask upstream's disambiguation question. The overrides below are the only places keel departs from it.
keel's overrides
1. Roles. Upstream's research role is keel-audit-hunter — for
reconnaissance, hunting, and coverage-critic passes alike, each brief saying
which. Upstream's candidate and record verifiers are keel-audit-verifier,
a fresh one per candidate as upstream requires. Upstream's general-execution role is
not used: it exists for bounded local execution, and this lane does not
execute target code. Never substitute general-purpose.
2. Source-only unless every control is enforceable. Before dispatching,
check the host against each control upstream lists under "Universal execution
safety". On macOS, as verified 2026-09-19, two fail: the loopback is shared
with live host services — a sandboxed curl allowed localhost reached a
local service on 127.0.0.1 — so upstream's isolated loopback namespace is
unavailable, and ulimit -v is refused, so there is no memory limit. Upstream
then forbids executing target code, and this lane follows it: every question
that only execution could settle becomes needs_validation naming the missing
control. Both agents hold Read, Grep, Glob and no shell, so this is enforced
by their tool lists, not by their good behaviour.
3. The parent is the only writer, and the only one running anything. Only the controller writes the run files upstream lists under "Write isolation", and the only programs it runs are the two validators, which read those files and nothing in the target:
node <U>/validate-findings.cjs <output-dir>/findings.json
node <U>/validate-coverage-ledger.cjs <output-dir>/coverage-ledger.jsonLocal node only; no npx, no package installs.
4. Profile, scope, budget — stated, not asked. Take them from the
invocation; absent ones default to quick, the whole repository, and a budget
of 16 agent invocations. Announce all three and the output directory (upstream's
default, outside the target) in your first line, then proceed. If the budget
cannot fund upstream's minimum, do what upstream says when the request stays
unchanged: launch nothing, record run_status: "incomplete" with its reason,
and say so. This lane adds no stop to keel's gate table.
5. Report honestly about coverage. A quick or scoped run is partial and
says so in its first paragraph; source-only means every execution-dependent
unit is needs_validation or deferred, never covered. A clean report on
an unexecuted target is a statement about the source that was read, not about
the running system.
Fan-out and budget
Fan-out ceiling: ≤8 concurrent per wave; the run's agent budget is the total.
Do not pass a model override at the call site — each agent file pins its own.
Name the agent, not the role: announce each dispatch before it runs and broadcast each result when it lands, both using the agent's literal keel-* name.
Red flags
- Starting this lane because a diff touched auth, or because a plan was risky → those are the other two security stages; this one runs only on request
- Picking the target yourself → the user names it
- Executing anything from the target "just to check" → source-only; record
needs_validation - Relative paths in a brief →
<U>-absolute, always - Reporting a partial run as a clean bill → say what was not covered, first
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

