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.
About
Use cases: security
Reviews
Write a reviewNo 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
- 0.657score
doctor
rust-off-rails
Audit a Rust off Rails app against the framework's conventions (structure, stack, banned crates, portability, security, tests, docs drift) and report or fix…
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
deploy
rust-off-rails
Make a Rust off Rails app deployable and ship it (Docker, Fly.io, Kamal, Railway, Render), including production database setup and migrations on deploy.
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
new
rust-off-rails
Create a new Rust off Rails web app (the `rails new` of Rust).
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
scaffold
rust-off-rails
Generate a full resource (migration, model, policy, controller, routes, views or pages, tests) in a Rust off Rails app, like `rails g scaffold`.
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
upgrade
rust-off-rails
Upgrade a Rust off Rails app's vendored framework (.offrails/) to the installed plugin's version and migrate the app to any changed conventions, like `rails…
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
check
rust-off-rails
Run the Rust off Rails Definition of Done (fmt, clippy, tests on SQLite and Postgres, frontend checks, checklist) and fix what fails.
SkillAFreshness: A★ 45Claude Code +9 - 0.649score
feature
rust-off-rails
Build or change a feature in a Rust off Rails app from a plain-language request or from the specs in product/.
SkillAFreshness: A★ 45Claude Code +9 - 0.357score
generate
rust-off-rails
No description from the publisher yet.
SkillAFreshness: A★ 45Claude Code +9
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
- Repository
- github.com/rust-off-rails/rustoffrails
- Website
- rustoffrails.org
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from rust-off-rails
- 0.657score
doctor
rust-off-rails
Audit a Rust off Rails app against the framework's conventions (structure, stack, banned crates, portability, security, tests, docs drift) and report or fix…
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
deploy
rust-off-rails
Make a Rust off Rails app deployable and ship it (Docker, Fly.io, Kamal, Railway, Render), including production database setup and migrations on deploy.
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
check
rust-off-rails
Run the Rust off Rails Definition of Done (fmt, clippy, tests on SQLite and Postgres, frontend checks, checklist) and fix what fails.
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
scaffold
rust-off-rails
Generate a full resource (migration, model, policy, controller, routes, views or pages, tests) in a Rust off Rails app, like `rails g scaffold`.
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
upgrade
rust-off-rails
Upgrade a Rust off Rails app's vendored framework (.offrails/) to the installed plugin's version and migrate the app to any changed conventions, like `rails…
SkillAFreshness: A★ 45Claude Code +9 - 0.652score
new
rust-off-rails
Create a new Rust off Rails web app (the `rails new` of Rust).
SkillAFreshness: A★ 45Claude Code +9
Cite this page
security skill. Agent Mart. https://agentmart.dev/skills/rust-off-rails-security (last updated 2026-10-24)