Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/telus-labs/stagecraft/security-checklistnpx skills add telus-labs/stagecraft --skill security-checklistgit clone --depth 1 https://github.com/telus-labs/stagecraftWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/telus-labs/stagecraft/security-checklist)<a href="https://agentmods.dev/skills/telus-labs/stagecraft/security-checklist"><img src="https://agentmods.dev/badge/skills/telus-labs/stagecraft/security-checklist.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00063 | $0.01624 |
| Opus 5 | $0.00032 | $0.00812 |
| Sonnet 5 | $0.00013 | $0.00325 |
| Haiku 4.5 | $0.00006 | $0.00162 |
Grade A, and why
security-checklist scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 145 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Security Checklist
Load this skill during design review, implementation, and code review. Every item is a potential BLOCKER if violated. Each item is paired with a concrete failure example so reviewers can recognise the shape.
Input & Validation
-
All user-supplied input is validated (type, length, format) at the boundary, not deep in business logic.
// BAD: input flows untyped into business code; validation buried far from entry. app.post("/orders", async (req, res) => { const order = await createOrder(req.body); // req.body is `any` }); // GOOD: schema validates at the handler; business code receives a typed value. const OrderInput = z.object({ items: z.array(ItemInput).min(1).max(50) }); app.post("/orders", validateBody(OrderInput), async (req, res) => { const order = await createOrder(req.body); // typed and bounded }); -
Validation errors return
400(malformed) or422(well-formed but semantically invalid). Never500. -
File uploads validated for type AND size BEFORE processing.
// BAD: read into memory first, then check size. OOM on a multi-GB upload. const data = await req.file.buffer(); if (data.length > 10_000_000) throw new TooLarge(); // GOOD: streaming with limits, enforced at the parser layer. const upload = multer({ limits: { fileSize: 10_000_000 }, fileFilter: typeAllowlist });
Authentication & Authorisation
-
All endpoints that require auth have auth middleware applied — and the same middleware applied to every route in the group (no per-route opt-in that's easy to forget).
// BAD: each route opts in individually; easy to forget on the 17th route. app.get("/account", requireAuth, ...); app.get("/account/orders", requireAuth, ...); app.get("/account/preferences", ...); // ← oops, public // GOOD: router-level middleware; opt-out is loud, opt-in is the default. const account = express.Router(); account.use(requireAuth); account.get("/", ...); account.get("/orders", ...); account.get("/preferences", ...);
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 145 lines · 63 tokens per session scan A cca46ef091f4
security-checklist is a skill published in the GitHub repository telus-labs/stagecraft (6 stars, last pushed today), licensed MIT. It adds 63 tokens to every session and 1,624 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
semantix
Install and use the semantix memory kernel as a middleware in your agent: extract user preferences / workflows / experience from past sessions, retrieve and inject them on demand. One binary + your agent's own tools.
semantix-guide
Troubleshoot and configure Semantix capabilities: Skills (project/custom/global/builtin priority, discovery dirs), Commands (override order, /dir:file naming), Hooks (11 events, automatic project loading, matchers, timeouts), MCP (semantix-agent.toml + .mcp.json + plugin packages, autostart), plugin packages…
intuitive-tests
Use this skill whenever the user asks about unit test best practices, test organization, flat test suites, redundant tests, test refactors, pytest/JUnit/Jest/xUnit layout, test taxonomy, flaky tests, coverage quality, fixtures, mocks, parametrization, pruning existing UTs, or "which tests are worth keeping." It…
intuitive-flow
Stable execution/change router after an approved plan, preflight contract, or tiny concrete task. Refactor-shaped work delegates to intuitive-refactor, and durable work runs through staged planning, review, GSD handoff, implementation, cleanup, and verification while keeping plan ledgers and active capsules compact by…
intuitive-preflight
Turn a vague task, plan, issue, or "LGTM/go ahead" request into an approval-ready preflight contract before implementation starts. Use when the user wants prompt preflight, clearer scope, non-goals, context package, acceptance criteria, definition of done, verification, stop gates, the exact execution command, or…
intuitive-squash
Squash local GSD or agent-generated commit history into a clean, reviewable story while preserving important fixes. Use when the user asks to squash commits, clean git history, compress phase commits, prepare a branch before PR, compare aggressive vs moderate squash options, or preserve hotfix/security commits during…