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 discovering-edge-casesgit 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/discovering-edge-cases)<a href="https://agentmods.dev/skills/acendas/shipyard/discovering-edge-cases"><img src="https://agentmods.dev/badge/skills/acendas/shipyard/discovering-edge-cases.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.00014 | $0.01850 |
| Opus 5 | $0.00007 | $0.00925 |
| Sonnet 5 | $0.00003 | $0.00370 |
| Haiku 4.5 | $0.00001 | $0.00185 |
Grade A, and why
discovering-edge-cases 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 8d 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 — 162 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Discovering Edge Cases
Most spec drafts describe the happy path. The bugs live in everything else. This skill systematically enumerates the categories where reality diverges from the happy path, then asks the model to populate each category for the specific feature being discussed.
The output is a list of cases the spec should address, not opinions or warnings — concrete inputs/conditions/scenarios with whether the current draft handles them.
When to Invoke
| Caller | Trigger |
|---|---|
/ship-discuss Phase 1.5b |
After feature draft + happy-path AC, before user approval |
/ship-sprint task decomposition |
When breaking a feature into tasks, to surface tasks that aren't obvious from the happy path |
/ship-spec review |
When auditing an existing feature spec for missing-coverage rot |
| Manual / ad-hoc | When the user says "what could go wrong with this?" |
Do NOT invoke for trivial features (effort: S, single touchpoint). The discovery overhead exceeds value for those.
Inputs
feature_draft— the current spec text (markdown). May be a draft from/ship-discussor an existing feature file.acceptance_criteria— the happy-path AC list, if separate from the draft.domain_hints— optional list of domain tags (["payments", "auth", "external-api", "user-input"]) that activate domain-specific case categories.data_dir— for reading<SHIPYARD_DATA>/codebase-context.mdand prior learnings.
Discovery Categories
Walk these in order. Each category has a set of probe questions; the output finds answers for the specific feature.
1. Boundary inputs
Probe questions:
- Empty: empty string, empty list, empty file, zero count, null, undefined.
- Singleton: one element where the spec implies many.
- Max: largest realistic input (1M items, 10MB file, max-int).
- Beyond max: input one larger than the bound (UX, error path).
- Off-by-one: ranges, slices, off-by-one in pagination.
- Negative / zero: where positive was assumed.
- Type extremes: NaN, Infinity, very-precise floats, Unicode (emoji, RTL, combining chars), surrogates.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 8d ago First seen · 162 lines · 14 tokens per session scan A 664132755f6e
discovering-edge-cases is a skill published in the GitHub repository Acendas/shipyard (2 stars, last pushed 26d ago), licensed MIT. It adds 14 tokens to every session and 1,850 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
accessibility-a11y
WCAG 2.2 compliance, ARIA patterns, keyboard navigation, screen readers, automated testing.
test-first
Use when implementing any feature, bugfix, or refactor that has a testable outcome. Activate for keywords like "TDD", "test-first", "red-green", "write the test first", "implement ", "fix ". Enforces the red-green-refactor discipline -- write a failing test, make it pass with the smallest change, refactor with tests…
testing-strategy
Follow the testing pyramid — more unit tests, fewer integration tests, even fewer e2e tests.
fable-prove-it
Use before claiming anything works, is fixed, is done, or passes; before status updates on changes you haven't run; before agreeing with someone else's claim about your work; and before state-changing commands like restarts, deletes, or config edits.
afc:qa
Project quality audit — test confidence, error handling gaps, code health.
safe-extraction
Apply when extracting code from a large monolith file into submodules. Covers barrel re-exports, internals DI seam proxy patterns, CI invariant allowlist updates, and cross-file test verification. Prevents CI failures, broken imports, and test regressions from code extraction.