Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add ihudak/ihudak-claude-plugins/plugin install product-workflowsWrote 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/commands/ihudak/ihudak-claude-plugins/specify)<a href="https://agentmods.dev/commands/ihudak/ihudak-claude-plugins/specify"><img src="https://agentmods.dev/badge/commands/ihudak/ihudak-claude-plugins/specify/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/commands/ihudak/ihudak-claude-plugins/specify"><img src="https://agentmods.dev/badge/commands/ihudak/ihudak-claude-plugins/specify.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.00000 | $0.24004 |
| Opus 5 | $0.00000 | $0.12002 |
| Sonnet 5 | $0.00000 | $0.04801 |
| Haiku 4.5 | $0.00000 | $0.02400 |
Grade A, and why
specify 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 today.
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 — 1,073 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Author a product specification for the resolved item: $ARGUMENTS
Core references. A citation of the form workflows-core:<name> names a shared reference in the workflows-core plugin. Load it with Skill(skill: "workflows-core:reference", args: "<name>") — never by path: ${CLAUDE_PLUGIN_ROOT} resolves to this plugin, which does not carry it.
/specify is the PE-phase specification-authoring workflow — the specification step of the PM→PA→PE→Dev pipeline
(/specify → specification.md; then /design → design.md). Given an Epic or PRD address,
it reads the item from the specs tree, lightly scans code to
ground feasibility, and authors an org-standard specification.md through a relentless
one-question-at-a-time grill — resolving open questions live instead of stopping. It gates on the
Opus spec-reviewer and offers to land the spec on the specs repo's main branch (via branch + PR) as
Published: no.
Key distinction from /epics: /epics splits a PRD into Epic drafts; /specify authors one
specification for a single item (typically an Epic). Run /epics first, then /specify per Epic.
Usage: /specify <ADDRESS> [--no-docs] [--docs <path>], where <ADDRESS> is a key or an @<path>. --docs <path> — points documentation grounding at that root for this run instead of ${DOCS_PATH:-/workspace/docs}; strip the flag and its value together before any remaining-argument classification, or the path is read as part of the address. Declared for every consumer by workflows-core:docs-grounding §1's Flags first rung, which resolves it; this command only has to recognise it and pass the invocation through. On the BRD
route the run is seeded from a reconciled BRD and the address is the PRD- slice key
/brd-split carved; a BRD- container is refused (Phase 0 step 0). One address on every route: a
second positional token is refused (Phase 0 step 1, SPECIFY_ONE_ADDRESS).
Phase 0 — Resolve input
-
The route is a property of the resolved folder, not of a flag.
One resolution serves both routes now. A BRD key and a PRD key both name a folder under
$SPECS_PATH/specifications/, andresolve-addressresolves either — so this step no longer skips a front-end, it reads a differentkindfrom the same resolution. What distinguishes the routes is what the resolved folder holds, not how it was addressed. The BRD route is aPRD-folder carrying abrd-link.md— the slice/brd-splitcarved — and nothing else.A
BRD-container is refused, on either route. Take this on the folder step 1 resolves, the moment that resolution returnsstatus: foundand ahead of every read this command makes — and not as part of the BRD-route branch. The BRD route is detected from abrd-link.md, and a root BRD folder need not carry one:/brd-intakewrites none, and only/prd-ground,/brd-splitand/brd-packageever do. A refusal conditioned on the detected route would let/specify <ROOT-BRD-KEY>fall through to the keyed route and author a specification into the container. A BRD is a container: its requirements are built by thePRD-slices under it, one specification each, and aspecification.mdwritten into the container would sit besidebrd/,grounding/,coverage-ledger.mdandslices.mdin a folder the design's §4.1 tree gives no specification. The test is the directory prefix, and never the folder's assertedkind:—/brd-splitwriteskind: brdinto thebrd-link.mdinside aPRD-slice folder, so a slice assertsbrdwhile being exactly the folder a specification belongs in, and a gate on the asserted kind would refuse every slice.Where the folder resolved through
workflows-core:addressing§5's legacy fallback and carries no prefix, the question is answered by positive evidence that it is a BRD, never by the absence of a file —${CLAUDE_PLUGIN_ROOT}/references/coverage-ledger-format.md§5.1, the shared authority/create-prd,/create-ardand/epicstake this same test from. In short: a legacy folder carryingcoverage-ledger.mdorbrd/brd-inventory.md, and nobrd-link.mdnaming aparent:, is a root container; a legacy folder carrying neither of those two files is a legacy idea-route PRD folder, which holdsprd.mdand nobrd-link.mdeither — this refusal does not fire on it, and refusing it would offer/product-workflows:brd-spliton a folder with no coverage ledger to walk. Stop gracefully:SPECIFY_BRD_NOT_SLICED: <BRD-KEY> resolves to a BRD- container at <path>, and a BRD is never the folder a specification is authored in — its requirements are specified in the PRD- slices under it, one specification each (coverage-ledger-format.md §5). <the remedy, per the branch below>
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.
- today Changed · +16 lines 31659fbdb280
- yesterday Changed · +43 lines 4a1ba9b54e53
- 4d ago First seen · 1,014 lines · 0 tokens per session scan A 4fc30751b480
specify is a command published in the GitHub repository ihudak/ihudak-claude-plugins (2 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 24,004 tokens. 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-09-05.
Other commands, from other repositories
battlecard
Create a sales-ready competitive battlecard — positioning, feature comparison, objection handling, and win strategies.
cloudflare-r2:presigned-url
Generate presigned URLs for secure client-side uploads or downloads.
pi-code-review
Adversarial code review via Codex — break confidence in changes, not validate them.
infogenius
Research-First Image Generation - Facts → Visual Prompt → High-Quality Image.
watch
You are executing the /hydra:watch command. Live monitoring of all background agents with real-time status updates.
ops
Weekly operations loop — triage the inquiry inbox, advance the CRM pipeline, sweep open PRs across repos, and surface the content plan. Loads the ops skill.