security-hardening
Skill0 starsChanged 51 days agoMITView on GitHub
Find and fix the security defects that actually get exploited, on systems the user owns. Use when the user asks for a security review, asks how to secure or harden their application, asks about authentication, authorisation, password storage, sessions, tokens, encryption, injection, cross site scripting, CSRF, file uploads, dependency vulnerabilities or supply chain risk, or asks whether their setup is safe. Also use before any launch that handles personal data, money or credentials. Works from a threat model rather than a generic list, ranks findings by what an attacker actually reaches, retrieves current advisories instead of recalling them, and treats broken object level authorisation as the first thing to check because it is the most common serious defect in web software. Triggers on security review, harden my app, is this secure, OWASP, SQL injection, XSS, CSRF, password hashing, JWT, session security, file upload security, dependency vulnerabilities, secrets leaked, penetration test my own app.
- Deletes or force-pushes
25 other projects use a version of this.
Adopted by
Most recently taken up by
- valentinesamuel/claude-skillstheir own version, first seen Nov 8, 2026
- Mehul72/skillstheir own version, first seen Nov 8, 2026
- looties-io/looties-skillstheir own version, first seen Nov 1, 2026
- Kin9Zeus/senior-engineer-skillstheir own version, first seen Nov 1, 2026
- DevelopersGlobal/ai-agent-skillstheir own version, first seen Oct 25, 2026
- juanitourquiza/shipframetheir own version, first seen Oct 23, 2026
Used with
Projects with it also use coordinate, observability and 7 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.
swyxioSkillcoordinate
Coordinate focused Luna helpers for bounded work and Astra advisers for difficult design questions while doing the main work yourself.
Also in 3 projects that use this
OpenAISkillobservability
Vercel Observability expert guidance — Drains (logs, traces, speed insights, web analytics), Web Analytics, Speed Insights, runtime logs, custom events, OpenTelemetry integration, and monitoring dashboards. Use when instrumenting, debugging, or optimizing application performance and user experience on Vercel.
Also in 4 projects that use this
barisariburnuSkillperformance-optimization
Complete performance optimization guide for Next.js applications including frontend, backend, database, caching, and general optimization strategies. Use when improving performance, reducing bundle size, optimizing queries, or implementing caching.
Also in 4 projects that use this
MicrosoftSkillapi-design
Guide for designing and documenting RESTful APIs. Use when asked to design an API, create endpoints, or document an API.
Also in 5 projects that use this
AnthropicSkilldocumentation
Write and maintain technical documentation. Trigger with "write docs for", "document this", "create a README", "write a runbook", "onboarding guide", or when the user needs help with any form of technical writing — API docs, architecture docs, or operational runbooks.
Also in 3 projects that use this
Microsoft AzureSkillgit-workflow
Squad branching model: dev-first workflow with insiders preview channel
Also in 3 projects that use this
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- duyet/clickhouse-monitoring★ 303same name
- DevelopersGlobal/ai-agent-skills★ 216same name
- swyxio/skills★ 194same name
- mn-youssef/security-skills★ 47same name
- wulaosiji/skills★ 28same name
- khuynh22/agent-dev-team★ 9same name
- alexderz/agentic-toolbox★ 5same name
- juanitourquiza/shipframe★ 4same name
- jx1100370217/my-openclaw-skills★ 4same name
- thejordanleopold/claude-code-skills-distilled★ 4same name
15 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 repository57 other files it gives its agents.
- accessibility-auditSkill
- agent-orchestrateSkill
- arch-decideSkill
- auth-implementSkill
- backend-buildSkill
- build-pilotSkill
- business-modelSkill
- career-strategySkill
- codebase-onboardSkill
- code-craftSkill
- code-reviewSkill
- compliance-mapSkill
- content-craftSkill
- cost-controlSkill
- data-analysisSkill
- data-layerSkill
- debug-methodSkill
- deep-researchSkill
- dependency-guardSkill
- design-systemSkill
- devex-toolingSkill
- doc-forgeSkill
- email-deliverSkill
- finance-booksSkill
- frontend-buildSkill
- git-disciplineSkill
- growth-experimentSkill
- human-proseSkill
- i18n-localizeSkill
- incident-responseSkill
- index-fastSkill
- infra-deploySkill
- job-huntSkill
- landing-convertSkill
- launch-planSkill
- llm-app-buildSkill
- llm-visibilitySkill
- memory-keeperSkill
- migration-planSkill
- ml-buildSkill
- mobile-buildSkill
- numbers-checkSkill
- observability-setupSkill
- payments-integrateSkill
- performance-tuningSkill
- pricing-modelSkill
- prompt-forgeSkill
- queue-designSkill
- reality-checkSkill
- refactor-safelySkill
- release-manageSkill
- seo-optimizeSkill
- ship-auditSkill
- skill-forgeSkill
- test-strategySkill
- ui-designSkill
- user-researchSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. 0 are common, 15 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 22 edited versions we read keep these.
15
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
Read what the system is and how it is exposed before testing anything, in this order.
- Distinctive: line 39
When nothing is documented, because you are handed a running system with no notes, enumerate the routes from the code and the deployment …
- Distinctive: line 45
Check object level authorisation first.
- Distinctive: line 47
Never invent a vulnerability identifier, a severity score or a compliance requirement.
- Distinctive: line 49
If a live secret is found, that goes in the first line, and the fix includes rotation rather than only deletion.
- Distinctive: line 51
No security theatre. Password composition rules, forced rotation and security questions make things worse.
- Distinctive: line 64
Every entry point: public endpoints, authenticated endpoints, administrative interfaces, webhooks, file uploads, background consumers …
- Distinctive: line 79
Check that role checks exist on the server and are not only enforced in the interface.
- Distinctive: line 99
No shell invocation built from user input.
- Distinctive: line 105
No deserialisation of untrusted data into objects.
- Distinctive: line 129
Check logs, error reports and analytics payloads for personal data and secrets, which is where leaks most often happen.
- Distinctive: line 134
Run the ecosystem audit tool and report the real output.
- Distinctive: line 161
Every advisory cited with a source and a date, none recalled.
- Distinctive: line 167
No security theatre recommended.
- Distinctive: line 172
If the user says "just execute" or "stop", check the single thing asked, such as one endpoint's authorisation, and skip the threat model, …
“Common” is measured: kept by at least 6 in 10 of the 22 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
Security hardening
Defensive work on systems the user owns or is authorised to test. A generic checklist finds generic problems, so start from what an attacker would actually try against this specific system.
Scope
This skill covers the user's own systems, their own code, and systems they have written authorisation to test. It does not help with access to systems the user does not control. If ownership is unclear, ask before proceeding.
Fit to the project
Read what the system is and how it is exposed before testing anything, in this order.
- The stack and its versions: the language, the framework, the datastore, and the authentication library or service. The framework decides where the raw HTML bypass lives, how parameterised queries are written, and which session and token defaults are in play, so the review adapts to it rather than assuming one.
- The entry points that actually reach the internet: public and authenticated endpoints, admin interfaces, webhooks, file uploads, and any debug or metrics endpoint left routed. Map who can call each and what it can reach before ranking anything.
- The dependency manifest and lockfile, so the audit tool that fits the ecosystem is the one that runs, and so runtime dependencies are separated from development ones where the risk differs.
- Where secrets and personal data live today: the config, the environment, the logs, and the datastore. A leak in a log is reached more easily than a flaw behind three controls, so knowing where the data sits shapes the reachability ranking.
When nothing is documented, because you are handed a running system with no notes, enumerate the routes from the code and the deployment config first, treat everything reachable as in scope until shown otherwise, and say which parts you could not confirm are covered.
Non-negotiables
- Check object level authorisation first. Changing an identifier in a request to read someone else's record is the most common serious defect in web applications, and it is usually present because the route check looked sufficient.
- Retrieve advisories, never recall them. Use the dependency tooling and check the current CVE data or the ecosystem advisory database, with dates. A remembered vulnerability list is out of date.
- Never invent a vulnerability identifier, a severity score or a compliance requirement. Cite it or mark it unverified.
- Rank by reachability. A theoretical issue behind three controls ranks below a simple one on an exposed endpoint. Say what an attacker needs before each finding is usable.
- If a live secret is found, that goes in the first line, and the fix includes rotation rather than only deletion. Removing a key from code leaves it in history and in whoever already copied it.
- Fix the class, not only the instance. One unescaped output usually means the escaping approach is wrong somewhere.
- No security theatre. Password composition rules, forced rotation and security questions make things worse. Say so rather than adding them.
Procedure
Step 1, threat model briefly
Ten minutes of this beats a long checklist. The method is in references/threat-model.md.
Name what is worth stealing, who would want it, how they reach it, and what stops them today. Then test the things that stop them.
Step 2, map the attack surface
Every entry point: public endpoints, authenticated endpoints, administrative interfaces, webhooks, file uploads, background consumers reading external data, scheduled jobs, and any debug or metrics endpoint that was left reachable.
For each, record who can call it, what it trusts, and what it can reach.
Find the forgotten ones. Old API versions still routed, a staging environment on a public address with production data, a database port open to the world, an object storage bucket set to public, a metrics endpoint exposing internals.
Step 3, authorisation and authentication
For every endpoint touching user owned data, confirm ownership is checked on the object, not just the session. Test it: as user A, request user B's resource by identifier.
Check that role checks exist on the server and are not only enforced in the interface.
Passwords stored with a current password hashing function at a sensible cost. Never a general purpose digest, with or without a salt.
Sessions invalidated on logout, on password change, and on permission change. Rotated on privilege change.
Tokens: signature, expiry, audience and issuer all validated, algorithm pinned so it cannot be swapped, and lifetimes short with a refresh path. Never trust a claim the client can set.
Account recovery and multi factor enrolment paths tested, since these are the usual bypass rather than the login form.
Rate limits on login, password reset, token refresh, and anything sending mail or costing money.
Step 4, input and output handling
Parameterised queries everywhere, including inside any raw query escape hatch in the ORM.
No shell invocation built from user input. Where a subprocess is required, pass arguments as a list and never through a shell.
Output escaped for the context it lands in: HTML body, attribute, JavaScript, URL and CSS each differ. Find every use of the framework's raw HTML bypass and justify each one.
No deserialisation of untrusted data into objects.
File uploads: validate by content rather than extension, cap the size, store outside the web root or in object storage, generate the stored filename yourself, and never trust the client supplied name or type.
Any feature fetching a URL supplied by a user is a server side request forgery risk. Allow only expected hosts and block internal address ranges, including the cloud metadata endpoint.
Redirect targets validated against an allowed list.
Cross site request forgery protection on state changing requests, with a cookie policy that supports it.
Step 5, data protection
Transport security everywhere, with modern settings, and no mixed content.
Encryption at rest for anything sensitive, with a key management story that permits rotation.
Least privilege on database accounts, cloud roles and API tokens. An application account that can drop tables is an unnecessary risk.
Personal data inventory: what is collected, where it lives, who can read it, how long it is kept, and whether deletion works. Retention with no policy grows into a liability.
Check logs, error reports and analytics payloads for personal data and secrets, which is where leaks most often happen.
Step 6, dependencies and supply chain
Run the ecosystem audit tool and report the real output.
npm audit --omit=dev ; pip-audit ; cargo audit ; govulncheck ./... ; bundle auditSeparate runtime from development findings, since the risk differs.
Lockfile committed and builds reproducible.
Review install scripts on new dependencies, which run with your permissions.
Pin CI actions and base images by digest, since a moving tag is a code execution path into your pipeline.
Restrict who can push to the default branch and who can publish releases.
Step 7, verify and report
Actually try the attacks on your own system: the identifier swap, the missing authorisation, the unescaped field, the oversized upload, the expired token.
Report using the ship-audit structure, ordered by reachability, each finding with what an attacker needs,
what they get, and the fix.
Self-audit
- Object level authorisation tested by actually swapping an identifier.
- Every advisory cited with a source and a date, none recalled.
- Live secrets, if any, reported first with rotation in the fix.
- Findings ordered by reachability, each with the attacker's prerequisites.
- Fixes address the class, not only the instance.
- Audit tooling run with real output included.
- Logs and error reports checked for leakage.
- No security theatre recommended.
- Anything not reviewed is disclosed.
When to stay off
If the user says "just execute" or "stop", check the single thing asked, such as one endpoint's authorisation, and skip the threat model, the full surface map, and the ranked report. The off switch stays off for the rest of the session unless the user reopens it. A review that keeps expanding its own scope after being told to stop is not welcome.
Honest limits
This skill finds and fixes defects on systems the user owns or is authorised to test. It does not perform
unauthorised testing, it does not certify compliance against a named standard, and it does not replace a
formal audit or a professional penetration test on a system where one is legally required. Where a
finding needs a fix written, the patch follows the code-craft contract so it arrives readable and
commented rather than as one dense block, and the correctness of that fix belongs to test-strategy. The
final ranked write-up uses the ship-audit structure.
Its findings are only current at the moment of the scan, because advisories change daily, so every one is
retrieved and dated rather than recalled, and a review is a snapshot rather than a guarantee. The
step-by-step threat model method is in references/threat-model.md, and a reachability ranking table with
worked examples of ordering findings is in references/reachability.md.
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.

