axiomatic-induction
The project constitution AND the reasoning method. Apply it in ALL planning and execution of non-trivial work: reason like a proof system — hold the axioms…
Audit a surface for security problems, score them honestly, and turn each into a task with a fix. Use before declaring work done, after wiring an integration, before a deploy handoff, or when the user says \"/security-audit\", \"check security\", \"audit this\", \"is this
$ npx -y skills add gabrieldabbah/genesis --skill security-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/security-auditContext preview
The summary Claude sees to decide when to auto-load this skill.
Audit a surface for security problems, score them honestly, and turn each into a task with a fix. Use before declaring work done, after wiring an integration, before a deploy handoff, or when the user says \"/security-audit\", \"check security\", \"audit this\", \"is this
name: security-audit description: "Audit a surface for security problems, score them honestly, and turn each into a task with a fix. Use before declaring work done, after wiring an integration, before a deploy handoff, or when the user says \"/security-audit\", \"check security\", \"audit this\", \"is this safe\". Builds the checklist from general application-security concerns plus the per-integration items in the integrations registry. Reports findings with severity, file:line and evidence; states which fixes it applied and which need a human decision; never prints secrets." license: MIT allowed-tools: Read, Bash argument-hint: "[path or 'diff']"
A finding without a location, a reason and a fix is not a finding. An audit that reports "nothing obvious" is not an audit — it is the absence of one.
Start from the domains in §5. Add the per-integration items from each enabled service's registry entry (`security:` field). Tailor depth to what the thing is: deeper threat modelling for anything network-facing, data integrity for pipelines, the PCI surface for payments.
Finding vulnerabilities and deciding what to do about them are different jobs, and this skill is better at the second than the first. A single read of a surface has no adversarial verification and no coverage accounting, so where a dedicated scanner is available, hand it the hunt and fold its output in here:
surface just built, or the whole codebase before a handoff. It partitions the tree, threat-models each component, and puts every candidate through a three-lens panel that defaults to false-positive — which is the part a single pass cannot reproduce. Its `CLAUDE-SECURITY-RESULTS.jsonl` is the evidence to fold in.
Three reasons this stays a preference rather than a step: the plugin may not be installed on the machine running genesis, it cannot be invoked as a skill (only as its own command or agent), and it asks the operator to accept its cost before starting — which an unattended build cannot answer on their behalf. When none is available, or the run is unattended, do §2 onward directly and say in the report which path was taken.
**What stays here either way**, because no general scanner covers it: the per-integration checklist from the registry, dependency advisories, the domain ledger in §5, the fix-versus-gate line in §4, and turning findings into `docs/TODO.md` items that gate the build.
Cheap commands first, so the reading is targeted rather than a scroll:
# entry points — routes, handlers, resolvers (adjust to the framework)
grep -rnE "app\.(get|post|put|patch|delete)|@(Get|Post|Route)|export (async )?function (GET|POST)" .
# dangerous sinks
grep -rnE "innerHTML|dangerouslySetInnerHTML|eval\(|new Function|execSync|os\.system|pickle\.loads|yaml\.load\(" .
# secrets in code — report LOCATION and TYPE, never the value
grep -rnE "(api[_-]?key|secret|token|password)[[:space:]]*[:=][[:space:]]*['\"][A-Za-z0-9_-]{12,}" .
# config: debug flags, permissive CORS, disabled verification
grep -rnE "DEBUG[[:space:]]*=[[:space:]]*True|origin:[[:space:]]*['\"]\*|rejectUnauthorized:[[:space:]]*false" .
# dependency advisories (whichever applies)
npm audit --omit=dev 2>/dev/null || pip-audit 2>/dev/null || cargo audit 2>/dev/null || govulncheck ./... 2>/dev/nullSeverity is **impact if exploited**, adjusted by **how hard it is to reach** and **who can reach it**. The same bug lands differently in different places: reflected XSS on a public login page is not the same finding as the identical code behind an internal admin login.
| Severity | Meaning | |---|---| | **critical** | A direct, likely path to full compromise, mass data exposure, auth bypass — or any live secret. | | **high** | A serious hole a realistic attacker can exploit. | | **medium** | A real weakness that needs preconditions, or a meaningful gap in depth. | | **low** | Minor exposure or a hardening gap, hard to exploit on its own. | | **info** | Not a vulnerability now. Worth noting because it could compound. |
Then adjust: reachable unauthenticated → **up**. Needs victim interaction or rare preconditions → **down**. Affects every tenant, or admin → **up**. Exposes credentials, PII or payment data → **up, and never below high**.
"Fix everything" must not become "silently rewrite security-critical logic". The line:
**Fix directly, with a regression test** — mechanical, small blast radius, no ambiguity about behaviour: a missing security header or cookie flag; a string-built query replaced with a parameterised one; a dangerous sink swapped for the safe equivalent; input validation, size limits, output encoding; a vulnerable dependency moved to a patched version that does not break; a hardcoded secret moved out of code and into the environment; an obviously wrong config (debug enabled on a production path, `origin: '*'` alongside credentials).
**Do not apply — report with the exact fix and let a human run it:**
value that was committed is compromised and only its owner can rotate it. Critical, always — never assume a leaked key is already dead.
risk is real and the decision is not yours.
Ultimate Opus 5 builder. Genesis creates and transforms any setup into the ultimate setup for generation 5 models. Genesis turns an empty folder into a working SaaS, web app, API, or CLI, running autonomously on your machine in Claude Code.
Repo: gabrieldabbah/genesis
The project constitution AND the reasoning method. Apply it in ALL planning and execution of non-trivial work: reason like a proof system — hold the axioms…
Generate a complete pull request when the user asks to create/open a PR, fill the PR template, or mentions "/generate-pr". Fills every section of…
Build a new project from an empty folder, or bring an existing repository up to standard. Use when the user says \"/genesis\", \"start a new project\",…
Stage, write a Conventional Commits message from the actual diff, commit, and push. Use when the user asks to commit, save work to git, or mentions…
Rules for working in a repository where other Claude sessions are editing at the same time — no git writes, no process kills, strict scope, and verification…
Set a repository up so it cannot merge broken code and cannot quietly rot: continuous integration, automated dependency updates, a protected default branch,…