agentleFS
umararshad4umararshad4/honey-stack/skills/security/SKILL.md

security

Skill4 starsChanged 15 days agoMITView on GitHub

Use when touching auth, sessions, permissions, secrets, payments, user data, DB writes, webhooks or deploy config, or when asked for a security audit.

  • Reads credentials

We split this skill into the rules it gives an agent

3 rules. 0 are common, 2 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 100 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read the diff and its callers against each line that applies:

    line 29
  2. Distinctive:

    Webhooks verify signatures: Verify the provider signature over the raw request body with a constant-time compare, reject stale timestamps …

    line 34
  3. Very specific:

    SQL is parameterized: Use bound parameters or the ORM's query builder.

    line 36

“Common” is measured: kept by at least 6 in 10 of the 100 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Security

Think like an attacker and report like a defender: every finding names the exploit path, then the fix.

AskBranch
A change touches a sensitive surfaceSanity check (below)
"Security audit", "threat model", "OWASP", "pentest review", a pre-launch reviewFull audit: read references/audit.md

On Claude Code, the built-in /security-review command reviews the pending changes on the current branch. Suggest it as a second opinion before a PR that touches these surfaces. On Codex, use the review skill.

1. Map the trust boundary

Name where untrusted data enters the changed code: request params, body and headers, cookies, webhooks, file uploads, fetched URLs, third-party API responses, LLM output. Then name where it reaches something privileged: the database, a shell, the filesystem, rendered HTML, redirects, outbound requests, money, or another user's records.

Done when: you can list each entry point and each privileged sink the diff touches.

2. Check the change

Read the diff and its callers against each line that applies:

  • Authorization on every route. Each route, handler, server action, RPC method and GraphQL resolver checks on the server that the caller is authenticated and allowed to act on this specific record (owner, tenant or role check against the object id). "Logged in" is not "allowed". A new route copies the guard its siblings use. Client-side checks are UX, not security.
  • Input validated at the trust boundary. Parse input into typed data with the repo's schema library (zod, pydantic, and so on) where it enters. Allowlist the fields a write may set; never spread a request body into an ORM update. Inside the boundary, trust the types instead of re-checking at every layer.
  • Secrets stay out of code, logs and clients. No keys in source, committed .env files, URLs, error messages, logs or client bundles (NEXT_PUBLIC_*, VITE_*). Read them from the environment or a secret store. A secret that reached git is leaked: rotate it, because removing the commit doesn't un-leak it.
  • Webhooks verify signatures. Verify the provider signature over the raw request body with a constant-time compare, reject stale timestamps to stop replays, and dedupe on the event id so a retry can't apply twice.
  • Payments trust the server. Amounts, prices, currency and paid status come from the server or the provider, never from the client.
  • SQL is parameterized. Use bound parameters or the ORM's query builder. No string interpolation into SQL, shell commands, templates or eval. Raw HTML sinks (dangerouslySetInnerHTML, v-html, innerHTML) get sanitized input only.
  • Outbound requests and redirects are allowlisted. A user-supplied URL is checked against allowed schemes and hosts before the server fetches it (SSRF). Redirect targets are relative paths or allowlisted hosts.
  • Sessions and tokens. Cookies are HttpOnly, Secure and SameSite. Rotate the session id on login and privilege change, and invalidate it on logout and password change. JWTs: verify the signature with a pinned algorithm and check exp. Cookie-authenticated writes need CSRF protection.
  • Least privilege. DB roles, API keys, OAuth scopes, IAM policies and CI tokens get only what this feature needs. No wildcard actions. Service-role keys stay server-side.
  • Safe defaults. Deny by default and fail closed: an error in an auth check denies. No * CORS origin on credentialed routes, debug mode off in production, generic error messages to clients with detail kept in server logs. Login, sign-up, password reset and OTP endpoints are rate-limited.
  • User data. Responses carry only the fields this caller may see: no password hashes, tokens, or other users' emails. PII stays out of logs and analytics.
  • LLM features. User text stays out of system prompts and tool schemas. Model output is untrusted: never eval it or render it as raw HTML. Tool calls are validated before they run, and spend per user is capped.

Done when: every applicable line is checked, and each failure is fixed or recorded as a finding.

3. Prove the negative path

Positive tests show the feature works; negative tests show it's safe. For each boundary touched, run at least one check that must be refused:

  • unauthenticated request: 401
  • another user's or tenant's id: 403 or 404
  • invalid or extra-field payload: 400 with nothing written
  • bad or replayed webhook signature: rejected with nothing applied

Scan the staged diff for secrets with the repo's scanner (gitleaks, trufflehog) when one is installed, otherwise grep for known key shapes:

git diff --staged | grep -nE 'AKIA[0-9A-Z]{16}|sk_live_|sk-ant-|ghp_|github_pat_|xox[abp]-|-----BEGIN [A-Z ]*PRIVATE KEY-----'

Done when: each touched boundary has a negative check that ran this turn and was refused as expected, and the secret scan is clean.

4. Report

One line per finding: severity (critical, high, medium), file:line, the exploit path in one sentence, and the fix. A finding without a concrete exploit path is a note, not a finding. For a leaked secret, include the playbook in references/audit.md.

Download now (ZIP)

  • Other versions122 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 122

    1. BuilderIO/agent-native★ 7.4ksame name
    2. parcadei/Continuous-Claude★ 3.9ksame name
    3. parcadei/Continuous-Claude-v2★ 3.9ksame name
    4. parcadei/Continuous-Claude-v3★ 3.9ksame name
    5. gridaco/grida★ 2.7ksame name
    6. static-web-server/static-web-server★ 2.4ksame name
    7. BankrBot/skills★ 1.2ksame name
    8. BankrBot/openclaw-skills★ 1.2ksame name
    9. alinaqi/maggy★ 711same name
    10. alinaqi/claude-bootstrap★ 708same name

    112 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.

  • Used alongsideProjects with it also use cost-reducer, albert-dm and 10 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.
    • huyvpSkill

      cost-reducer

      Reduce cloud, infrastructure, and operational costs while maintaining performance. Use when writing database queries, configuring cloud resources, optimizing bundles, setting up caching, choosing between services, sizing instances, configuring CDN, managing storage, or reviewing code for cost inefficiencies. Covers AWS/GCP/Vercel pricing, database optimization, serverless tuning, image pipelines, observability costs, and FinOps practices.

      Also in 12 projects that use this

    • vikneshwaran16032005-altSkill

      albert-dm

      Reply to DMs and messages the way Albert would. Use when the user asks "how would Albert reply to this", pastes a conversation and wants an Albert-style response, or asks you to draft/write a DM in Albert's voice. Albert sells AI voice agents / automations to local service businesses (Go High Level, lead follow-up, bookings).

      Also in 6 projects that use this

    • vikneshwaran16032005-altSkill

      new-client-system

      Scaffold a new client's full stack — Next.js 16 frontend dashboard + Trigger.dev backend worker — from the Shiney automations template. Use when the user says "new client", "onboard a client", "scaffold a client system", "set up <client-name>", or wants to start a fresh frontend+backend project styled and structured like the Shiney automations dashboard. Produces structure only; no automations are scaffolded — those are added later.

      Also in 6 projects that use this

    • ffsshhttiikkSkill

      scalability

      Core foundational concepts and principles for Scalability

      Also in 11 projects that use this

    • xfstudioSkill

      trigger-dev

      Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design. Use when: trigger.dev, trigger dev, background task, ai background job, long running task.

      Also in 11 projects that use this

    • xfstudioSkill

      customer-support

      Elite AI-powered customer support specialist mastering

      Also in 12 projects that use this

    • +4 more from vikneshwaran16032005-alt
  • In this repository39 other files it gives its agents.

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.