harden
Skill4 starsChanged 46 days agoMITView on GitHub
Hardens the runtime and perimeter — security headers/CSP, TLS/HSTS, reverse-proxy config, rate/body limits, WebSocket protections, container and network hardening, CI permissions, supply chain (update bot, SHA-pinned Actions, lockfile policy, SBOM and signing jobs), secrets hygiene — verified with live curl/scanner output; `--apply` writes the changes; docs/security/hardening-checklist.md. Use before release or after /security-audit, for 'CSP headers', 'harden the server'.
- Reads credentials
46 other projects use a version of this.
Adopted by
Most recently taken up by
- alchemy-run/alchemy-effecttheir own version, first seen Nov 9, 2026
- alchemy-run/alchemytheir own version, first seen Nov 8, 2026
- parker-brown-family/agent-skillstheir own version, first seen Nov 8, 2026
- nexmoe/DayBeetheir own version, first seen Nov 1, 2026
- davidanthonyn/claude-skillstheir own version, first seen Oct 20, 2026
- excatt/superclaude-plusplustheir own version, first seen Oct 13, 2026
Used with
Projects with it also use layout, shape and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
owshq-mecSkilllayout
Improve layout, spacing, and visual rhythm. Fixes monotonous grids, inconsistent spacing, and weak visual hierarchy. Use when the user mentions layout feeling off, spacing issues, visual hierarchy, crowded UI, alignment problems, or wanting better composition.
Also in 5 projects that use this
HAR5HA-7663Skillshape
Plan the UX and UI for a feature before writing code. Runs a structured discovery interview, then produces a design brief that guides implementation. Use during the planning phase to establish design direction, constraints, and strategy before any code is written.
Also in 8 projects that use this
SentrySkillreview
Fixture review skill.
Also in 4 projects that use this
Microsoft AzureSkillverify
End-to-end app testing pipeline for browser-based web apps on cloud browsers via Azure Playwright Workspaces: verify the live app, author tests for working flows, heal failing tests, then re-run with video and produce one consolidated report. Three phases (app verification, test authoring, test healing) plus a scoped final sanity run; each phase emits a sub-report. Use when asked to "verify my app", "make sure my app works and has good test coverage", "do a full QA pass", "add tests where I'm missing coverage", "fix failing tests and add new ones", "smoke test before deploy", "QA my deployment", or any combined verify-and-test ask. Requires Azure CLI (`az login`) and a Playwright Workspace resource ID — bootstraps configs on first invocation. Browser-based web apps with Playwright only — not for unit/API tests, native mobile/desktop, load/perf, or full accessibility audits.
Also in 3 projects that use this
VercelSkillsetup
Set up Vercel CLI and project configuration. Use when the user says "set up Vercel", "configure Vercel", "link to Vercel", or "vercel init".
Also in 3 projects that use this
GoogleSkilltdd
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
Also in 3 projects that use this
Other versions46 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 46
- alchemy-run/alchemy★ 1.9ksame name
- alchemy-run/alchemy-effect★ 1.9ksame name
- SterlingChin/marvin-template★ 1ksame name
- talesofai/cohub★ 585same name
- educlopez/ui-craft★ 441same name
- nexmoe/DayBee★ 424same name
- nexmoe/eve★ 424same name
- Southclaws/storyden★ 348same name
- AkaraChen/aghub★ 271same name
- zacharyfmarion/openscad-studio★ 238same name
36 more not listed
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 repository52 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- testing/CLAUDE.mdCLAUDE.md
- a11y-auditSkill
- adoptSkill
- api-contractSkill
- architecture-decisionSkill
- architecture-reviewSkill
- backlogSkill
- brainstormSkill
- changelogSkill
- code-reviewSkill
- collaboration-protocolSkill
- create-storiesSkill
- data-modelSkill
- dependency-auditSkill
- deploySkill
- design-systemSkill
- dev-storySkill
- docsSkill
- feature-specSkill
- game-conceptSkill
- helpSkill
- hotfixSkill
- impactSkill
- incidentSkill
- initSkill
- migrateSkill
- pentestSkill
- perf-auditSkill
- product-specSkill
- qa-planSkill
- refactorSkill
- release-checklistSkill
- retrospectiveSkill
- security-auditSkill
- setup-stackSkill
- skill-improveSkill
- skill-testSkill
- sprint-planSkill
- sprint-statusSkill
- stack-updateSkill
- startSkill
- story-doneSkill
- team-featureSkill
- team-gameSkill
- team-releaseSkill
- team-securitySkill
- tech-debtSkill
- test-setupSkill
- threat-modelSkill
- updateSkill
- ux-specSkill
The file
We split this skill into the rules it gives an agent
2 rules. 0 are common, 0 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 44 edited versions we read keep these.
0
Distinctive
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 33
Inventory: every secret the project uses, from the deploy contract's Prerequisites & secrets, .env.example, compose environment:/env_file:, …
- Very specific: line 53
When HEAD is a story branch, name it and ask one AskUserQuestion: switch to the default branch and commit there (Recommended — a …
“Common” is measured: kept by at least 6 in 10 of the 44 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Harden
Reply in the project conversation language (CLAUDE.md → Language); code, identifiers, paths and commit messages stay in English.
References: stack-reference/security-standards.md, stack-reference/supply-chain.md (checklist SC-01…SC-12), security-baseline.md (headers, network), rules rules/ci-docker.md, rules/security-sensitive.md. In the commands below, <hooks> is .claude/hooks/ in copy mode and ${CLAUDE_PLUGIN_ROOT}/hooks/ in plugin mode.
Mode (argument, default full): full runs every checklist group of Phase 2; headers, tls, proxy, docker, ci, supply-chain narrow it to that group; secrets runs the rotation checklist instead. --apply goes on to Phase 3 without a separate "apply?" question; every file write still has its own "May I write?".
Phase 1: Inventory
- Where the config lives. Proxy configs in this repository, or in the Infra repo / Proxy config from
technical-preferences.md(Infrastructure) when the proxy lives elsewhere. Also compose/Dockerfile, workflows, and where TLS terminates. - No infra repo declared and no proxy config here → say so: the proxy checklist can only be verified live, not fixed here, and
/setup-stack//adoptrecords the field. - Current headers:
curl -sI <url>on dev/staging/prod, with consent. No URL reachable (or consent declined) → continue with static analysis of the configs and say that every item is unverified live.
Phase 2: Checklist
Per item: status and a verification command.
- Headers: HSTS, CSP nonce/strict-dynamic (mind Angular
ngCspNonce/ Nuxt), nosniff, Referrer-Policy, Permissions-Policy, COOP/CORP; cookie flags. - TLS: the TLS profile.
- Proxy:
server_tokens/limit_req/client_max_body_size/ timeouts; WebSocket Origin checks and limits. - Docker: networks, non-root,
cap_drop,read_only, pins (base image digests → SC-11), health checks. - CI: workflow
permissions— this group owns SC-04 (contents: readat the top, raised only per job); the supply-chain group reports it by id but does not re-check it. - Supply chain: read
references/supply-chain.mdand run its five checks — update bot config (renovate.json/.github/dependabot.yml), Actions pinned by SHA, lockfile policy in CI, SBOM job, signing job; every finding carries itsSC-NNid fromstack-reference/supply-chain.md. A missing job is a finding with the template to add (docs/templates/supply-chain/), proposed in Phase 3 like any other config diff. - Secrets hygiene:
.envignored, gitleaks.
secrets mode (rotation checklist) — an inventory, never the values. Trigger: a leak (/incident), a departure, quarterly.
- Inventory every secret the project uses, from the deploy contract's Prerequisites & secrets,
.env.example, composeenvironment:/env_file:, workflowsecrets.*references and the platform UI names. - Per secret: where it lives (platform env,
~/.config/<project>/*.env, CI secret, registry token), which component reads it, the provider's rotation steps (issue new → deploy → verify → revoke old), the last rotation date if recorded. - Checks:
gitleaks/git log -p -Sfor the old value's pattern (never the value itself on the command line); no secret in images (docker history, build args); CIpermissionsleast-privilege;.envignored. - Output: the rotation table, the order to rotate in (dependencies first) and the verification per secret; it goes into
docs/security/hardening-checklist.md§ Secrets (Phase 4).
Phase 3: Changes (--apply, or with consent)
Without --apply, ask one AskUserQuestion after Phase 2: apply the fixes (Recommended) · checklist only · stop.
- Show the config diffs and write each one only after its own "May I write
<path>?" — oneAskUserQuestionper file: write (Recommended) · show the full diff first · skip this file;touch .claude/.write-consentafter the "write" answer:- config in this repository (proxy, compose, Dockerfile, workflows,
renovate.json/dependabot.yml) → the diff here; - proxy in the declared infra repo → the diff there ("May I write
<infra repo path/file>?"); - neither → no write: the exact snippet for the owner of the proxy.
- config in this repository (proxy, compose, Dockerfile, workflows,
- Validate:
nginx -t/caddy validate/docker compose config; a workflow diff →actionlintwhen available, elsebash -non itsrun:blocks;renovate.json→npx --yes renovate-config-validator(or state that it was not validated). - Re-check live: repeat
curl -Iand show the before/after output. The live headers are the evidence in every case.
Phase 4: Write
Render the checklist (and the § Secrets table in secrets mode) in the chat, then "May I write docs/security/hardening-checklist.md?" — one AskUserQuestion: write (Recommended) · show the draft/diff first · not now. After the "write" answer: touch .claude/.write-consent (rule 7 — the consent-guard hook checks the marker).
Phase 5: Commit (documents lane)
Right after the write, one commit gate (rule 7 (4), .claude/docs/git-workflow.md § Documents): docs: hardening checklist (docs: hardening checklist — secrets in secrets mode), staging exactly docs/security/hardening-checklist.md. Record the gate before asking — <hooks>session-state.sh set Gate "/harden Phase 5: commit?" — and clear it after the answer (<hooks>session-state.sh set Gate "—").
- On the default branch when no story work is in progress: one
AskUserQuestion— commit (Recommended) · leave uncommitted. - When HEAD is a story branch, name it and ask one
AskUserQuestion: switch to the default branch and commit there (Recommended — a pipeline-wide document) · commit here (the document belongs to this story) · leave uncommitted. - The Phase 3 config diffs (proxy, compose, Dockerfile, workflows) are infra, not documents: they never ride the
docs:commit — name them in the result and offer the chore lane (git-workflow.md § Chore / infra: branchchore/harden-<group>,ci(…)/chore(…)commits, a PR,/code-review --diffbefore the merge, workflow files todevops-engineer). A diff written in the declared infra repo is committed there under that repository's rules, named in the result.
Nothing is committed without the answer.
Verdict: HARDENED | PARTIAL (open: …). Next step — one AskUserQuestion: /security-audit quick (Recommended) · /pentest (optional) · stop here.
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.

