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 skills add Acendas/shipyard --skill anti-stub-scangit clone --depth 1 https://github.com/Acendas/shipyardWrote 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/acendas/shipyard/anti-stub-scan)<a href="https://agentmods.dev/skills/acendas/shipyard/anti-stub-scan"><img src="https://agentmods.dev/badge/skills/acendas/shipyard/anti-stub-scan/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/acendas/shipyard/anti-stub-scan"><img src="https://agentmods.dev/badge/skills/acendas/shipyard/anti-stub-scan.svg" alt="Reviewed on agentmods" width="80" 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.00016 | $0.02635 |
| Opus 5 | $0.00008 | $0.01318 |
| Sonnet 5 | $0.00003 | $0.00527 |
| Haiku 4.5 | $0.00002 | $0.00264 |
Grade A, and why
anti-stub-scan 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 10d 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 — 178 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Anti-Stub Scan
A diff scanner that flags code claimed as complete but not actually wired. Runs on the orchestrator side after dispatching-task-loop returns. Findings re-dispatch the subagent with the specific lines listed.
This file is the SPEC, not the runtime. The pattern catalog, placeholder-marker semantics, and output shape documented below are implemented by shipyard-data scan-stubs <base>..<head> [--lang <x>] (bin/scan-stubs.mjs) — a CLI subcommand, not model-driven Bash + grep/awk. The orchestrator invokes the CLI directly; see "Implementation Notes for the Orchestrator" below for the exact invocation and exit-code contract.
Why both this AND the prompt-level Iron Law? The Iron Law (NO STUBS IN CODE YOU CLAIM IS COMPLETE) lives in the subagent's prompt and works most of the time. This scanner is the second line: when the subagent rationalizes past the rule, the orchestrator catches the stub before flipping the task to done. Belt and suspenders.
When to Invoke
From the orchestrator side:
- After
dispatching-task-loopreturnsSTATUS: COMPLETE. - Before marking the task
status: donein its task file. - Before merging the worktree branch back to the working branch.
Do NOT invoke during the subagent's own loop — the prompt-level Iron Law is the in-loop check.
Inputs
base_ref— git ref / sha that this task's commit branched from (typically the working branch HEAD before the wave started).head_ref— the subagent's commit sha (fromCOMMIT:in its return).language— primary language(s) detected in the diff (informs which patterns to apply).
The scan operates on the diff (base_ref..head_ref), not on the whole codebase. Untouched files are not scanned — the subagent is responsible only for what it added or changed.
Stub Patterns
Each pattern has a confidence (HIGH / MEDIUM / LOW) and a language scope. Findings at HIGH confidence block done; MEDIUM go in the report and require a re-dispatch decision; LOW are advisory.
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.
- 10d ago First seen · 178 lines · 16 tokens per session scan A 4cf3458845a0
anti-stub-scan is a skill published in the GitHub repository Acendas/shipyard (2 stars, last pushed 28d ago), licensed MIT. It adds 16 tokens to every session and 2,635 once invoked, about $0.0001 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
review-loop
Run the adversarial verification loop — implement, then hand the change to a fresh checker that did not write it, fix what it finds, and re-dispatch until APPROVE. Use before claiming any behavioural change is done, and on requests like "review loop", "adversarial review", "independent review", "get this verified"…
ai-slop-cleaner
Post-implementation cleanup that removes AI-generated bloat while preserving functionality. Runs pass-by-pass with test verification after each pass. Activate after kraken/spark complete a feature, or when a codebase needs hygiene work.
debug-systematic
Systematic 4-phase debugging methodology for complex, intermittent, or mysterious issues. Use when investigating bugs, race conditions, or unexplained failures.
generic-react-code-reviewer
Review React/TypeScript code for bugs, security vulnerabilities, performance issues, accessibility gaps, and CLAUDE.md workflow compliance. Enforces TypeScript strict mode, GPU-accelerated animations, WCAG AA accessibility, bundle size limits, and surgical simplicity. Use when completing features, before commits, or…
generic-fullstack-code-reviewer
Review full-stack code for bugs, security vulnerabilities, performance issues, accessibility gaps, and CLAUDE.md compliance. Enforces TypeScript strict mode, input validation, GPU-accelerated animations, and design system consistency. Use when completing features, before commits, or reviewing pull requests.
generic-static-code-reviewer
Review static site code for bugs, security issues, performance problems, accessibility gaps, and CLAUDE.md compliance. Enforces pure HTML/CSS/JS standards, minimal page weight, mobile-first design. Use when completing features, before commits, or reviewing changes.