Skip to content
Agentmart
Submit a tool

security

Skill by rust-off-rails

IndexedApache-2.0★ 45
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/rust-off-rails-security

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

The publisher has not written a description yet.

Use cases: security

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions: not checked yet.

What's inside

Skill name
security
Description
None
License
Apache-2.0
Instructions
44 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Agent Skills spec issues

  • invalid YAML frontmatter: Nested mappings are not allowed in compact mappings at line 2, column 14:
  • name: missing
  • description: missing

Files (1)

  • SKILL.md

SKILL.md (first lines)

# /offrails:security: security is the gold standard

Only for Rust off Rails apps (a `.offrails/` directory exists). Scope: $ARGUMENTS (empty = the whole app).

You are the app's adversary. Assume every input is hostile, every client is scripted, and every proxy lies. **Security controls are never weakened to make something work.** If a fix would weaken one, stop and ask the human.

1. **Load the rules:** `.offrails/guides/security.md` (the whole thing, including the checklist), `.offrails/guides/test-standards.md` §3, and the app's `AGENTS.md` (mode, accounts, tenancy, API, deploy target).
2. **Threat model the scope.** For each feature spec in scope, fill or update its `## Security` section (see `.offrails/blueprints/feature-spec.md`):
   - assets;
   - actors (anonymous, user, other user, other tenant, admin, a compromised account);
   - entry points (routes, sockets, jobs, inbound email, webhooks, uploads);
   - STRIDE threats, with the control for each and the test that proves it.

   Any threat without a control *and* a test is a finding.
3. **Run the scanners** (install them if missing; report versions):
   - `cargo deny check` for advisories, licenses, bans and duplicate sources;
   - a secret scan of git history and the working tree (`gitleaks git .` and `gitleaks dir .`; gitleaks 8.30+);
   - `pnpm audit --prod` in TS modes;
   - the **ZAP baseline** against the release build running locally with `APP_ENV=production` (`docker run … zaproxy … zap-baseline.py -t http://host.docker.internal:$PORT`; development binds 127.0.0.1 and refuses that `Host`, see `.offrails/guides/testing.md` CI). Treat every WARN as a finding until it's triaged.
4. **Verify the response hardening live** (curl every response class: HTML page, JSON, SSE, WebSocket upgrade, kernel page, error page, static asset, redirect):
   - a strict CSP with no `unsafe-inline` or `unsafe-eval`, `frame-ancestors 'none'`, `base-uri 'self'` and `form-action 'self'`;
   - HSTS in production (`max-age=63072000; includeSubDomains`), `X-Content-Type-Options: nosniff`, `Referrer-Policy`, `Permissions-Policy`, COOP `same-origin` and CORP `same-origin`;
   - `Cache-Control: no-store` on authenticated and kernel pages;
   - cookies `HttpOnly; Secure (prod); SameSite=Lax`, with the `__Host-` prefix where possible.
   - development is this machine only: `lsof -nP -iTCP:$PORT -sTCP:LISTEN` shows `127.0.0.1`, not `*`, and `curl -H 'Host: evil.test' $URL/dev` is 403 (DNS rebinding; `.offrails/guides/security.md#development-is-this-machine-only`).
5. **Walk the checklist** in `security.md` item by item against the code, with `file:line` evidence for each verdict. Go hard on:
   - authorization on every route **and** every socket join and push;
   - tenant scoping on every query;
   - IDOR via guessable ids;
   - mass assignment;
   - CSRF and Origin checks (including the WebSocket upgrade);
   - rate limits (login, magic link, API tokens, socket frames);
   - upload validation;
   - SSRF on any outbound fetch;
   - open redirects (`return_to`);
   - timing-safe token comparison;
   - token storage (digests only) and expiry;
   - sessions revoked on logout and password change, **including open sockets and streams**;
   - secrets in logs, job args or error pages;
   - dependencies pinned.
6. **Attack it.** For each finding you suspect, write the failing test first (`tests/app/security_test.rs` or the feature's test file), then fix it, then confirm the test passes on SQLite and Postgres.
7. **Report:** a findings table (severity, `file:line`, exploit scenario, fix, test name), scanner results, header matrix, and what was out of scope. Severity: critical / high / medium / low / info. Never call the app "secure". Say what was checked.

From rust-off-rails/rustoffrails, Apache-2.0.

More from rust-off-rails/rustoffrails

Signals

Stars
45
Forks
1
Open issues
0
Last commit (this folder)
Oct 17, 2026 (11 days ago)
Last release
Oct 20, 2026 (8 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from rust-off-rails

Cite this page

security skill. Agent Mart. https://agentmart.dev/skills/rust-off-rails-security (last updated 2026-10-24)