create-ard

create-ard is a command for Claude Code from ihudak/ihudak-claude-plugins. It costs 0 tokens per session (18,303 once invoked), scanned A, original, MIT.

An architecture-planning command that creates an Architecture Requirements/Decision Document (ARD) for a Jira product, business, or epic requirement. The ARD records architecture rules for later specification, design, and implementation work.

In plain words
What is it for?
Use it to create an ARD from a PRD, BRD, or epic, including an epic document that inherits the parent PRD's ARD.
Why use it?
It gives later engineering work a shared architecture reference before coding begins. It also bases decisions on the available code repositories and avoids changing code.

Command for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions subagents; names the AskUserQuestion tool.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the dev-workflows plugin — 2 skills, 28 commands, 38 agents, 3 hooks shipped together

Good fit Use it to create an ARD from a PRD, BRD, or epic, including an epic document that inherits the parent PRD's ARD.

Compare 6 commands from other repositories ↓
Install

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.

Claude Code
/plugin marketplace add ihudak/ihudak-claude-plugins
Claude Code
/plugin install dev-workflows

Made for: Claude Code.

Or install dev-workflows, the plugin that ships this one along with the rest of its 2 skills, 28 commands, 38 agents, 3 hooks.

Wrote 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.

agentmods badge for create-ard

README.md
[![agentmods](https://agentmods.dev/badge/commands/ihudak/ihudak-claude-plugins/create-ard.svg)](https://agentmods.dev/commands/ihudak/ihudak-claude-plugins/create-ard)
Your own site
<a href="https://agentmods.dev/commands/ihudak/ihudak-claude-plugins/create-ard"><img src="https://agentmods.dev/badge/commands/ihudak/ihudak-claude-plugins/create-ard.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 18,303 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.18303
Opus 5 $0.00000 $0.09151
Sonnet 5 $0.00000 $0.03661
Haiku 4.5 $0.00000 $0.01830

Measured 2d ago against content hash 36956ef33607, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

create-ard 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 2d 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.

plugins/dev-workflows/commands/create-ard.md · 704 lines

How it starts

The opening of the file, as written. The whole thing — 704 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Author an Architecture Requirements/Decision Document for the resolved item: $ARGUMENTS

/create-ard is sub-project 3 of the PRD-creation flow — the Product Architect (PA) phase. It grounds on the mounted implementation repos and authors an ARD that establishes the architecture invariants the downstream (/specify, /design, /implement) will later inherit. The ARD is optional (a simple PRD may not need one) and scoped by the kind of the address it is given:

  • /create-ard <PRD-KEY> → a PRD-level ARD.
  • /create-ard <EPIC-KEY> → an Epic-level ARD (inherits the PRD-level ARD read-only). The Epic's own key is the whole address: it encodes its ancestry, so the PRD is the folder above it and is never typed beside it (D4).
  • /create-ard <SLICE-KEY> → an ARD on the BRD route, authored in the PRD- slice folder /brd-split carved and seeded from the reconciled BRD instead of from a PRD. A BRD- container is refused (Phase 0 step 1a). One address on every route: a second positional token is refused (Phase 0 step 1, CREATE_ARD_ONE_ADDRESS).

Usage: /create-ard <ADDRESS> [--no-docs], where <ADDRESS> is a key or an @<path>.

It authors architecture only — no code writing; grounding is architect-driven (there are no PRs at this stage). Zero external calls.


Phase 0 — Resolve input

  1. Resolve the address.

    One resolution, both routes. Parse the single positional address from $ARGUMENTS — a <KEY>, or an @<path> naming a folder — and resolve it with resolve-address (${CLAUDE_PLUGIN_ROOT}/references/addressing.md §3). A key that fails §1's grammar stops with CREATE_ARD_NEEDS_KEY: /create-ard needs an address (^[A-Z][A-Z0-9_]*(-\d+)+$, e.g. EPIC-008 or the slice EPIC-008-01) — re-run '/dev-workflows:create-ard <ADDRESS>'. Shape only, and never checked against anything (§1) — a key names a folder in $SPECS_PATH.

    A second positional token is refused, on every route (D4). There is no <PRD> <Epic> form to fall back to: an Epic key encodes its own ancestry, so a second argument would be derivable from the first and able to disagree with it, which is the failure class D4 exists to remove. Stop gracefully: CREATE_ARD_ONE_ADDRESS: /create-ard takes one address; <second-token> was given as a second. The kind of the folder the address resolves to is what sets the altitude — an EPIC- folder gives an Epic-level ARD, with its PRD read from the folder above it; a PRD- folder gives a PRD-level one. Re-run '/dev-workflows:create-ard <ADDRESS>' with the single address you meant.

    The resolved kind decides the altitude, which is what replaces the old two-key grammar:

    • a PRD- folder → <PRD> is its key, <EPIC> is null;
    • an EPIC- folder → <EPIC> is its key and <PRD> is its parent's;
    • a PRD- folder holding a brd-link.md → the BRD route. Define <SLICE-KEY> = the resolved folder's key.

    The BRD route is detected, not declared. A folder carrying brd-link.md was produced by /brd-split and holds the seed this command reads; nothing about that needs restating on the command line, and a flag that could disagree with the folder it names is one more disagreement to have. Print which route the run entered before doing anything else.

1a. Refuse a BRD- container — on either route, and the moment the address resolves.

Resolution waits on $SPECS_PATH, and there is exactly one of them. resolve-key globs specifications/**/*-<KEY>-*, so it needs $SPECS_PATH; run step 1's resolution only after step 2 has settled it, and let step 3 reuse that same resolution rather than taking a second one. With the old ordering /create-ard ACME-77 against an unset $SPECS_PATH resolved absent at step 1 — so this refusal did not fire and the route printed as the idea route — then step 2 stopped, the operator supplied the path, and step 3 re-resolved and found the BRD- container with nothing testing it. The run authored ard.md into the container, which is the exact state this step exists to prevent. /create-prd states the same rule for the same reason ("Detection therefore waits on resolution"); the two must not diverge on it. A BRD- folder is not a fourth altitude, and this command used to route one onto the BRD route. This test is not part of the BRD-route branch and must not be folded into it: that route is detected from a brd-link.md, and a root BRD folder need not carry one — /brd-intake writes none, and only /brd-ground, /brd-split and /brd-package ever do — so a route-conditioned refusal would let /create-ard <ROOT-BRD-KEY> fall through and author an ARD into the container. It is a container: the design's §4.1 tree places ard.md only inside a PRD folder, while a BRD- folder holds brd/, grounding/, interview/, coverage-ledger.md, decisions.md and slices.md — and no ARD. Authoring one there writes an artifact the tree has no place for and that ${CLAUDE_PLUGIN_ROOT}/references/ard-resolution.md would then look for one level away.

Read the full file on GitHub · 704 lines

Changes

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.

  1. 2d ago Changed · +180 lines 36956ef33607
  2. 7d ago First seen · 524 lines · 0 tokens per session scan A a781b15e4ab5

Subscribe to this mod's changes

create-ard is a command published in the GitHub repository ihudak/ihudak-claude-plugins (2 stars, last pushed 4d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 18,303 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-08-31.