package-preparer

An agent that creates the Python package or sub-package for one domain aggregate inside an existing domain package. An aggregate is a group of related data and operations treated as one unit.

In plain words
What is it for?
Use it to create an aggregate package such as order or order/items after running the domain initializer.
Why use it?
It avoids manually creating repeated package folders and setup files, while checking that the project-wide domain package has already been initialized.

Agent

Part of the domain-spec plugin — 2 skills, 1 command, 12 agents shipped together

Install

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.

agentmods
npx agentmods add agents/voro6yov/spec-driven-development/package-preparer
Clone the repo
git clone --depth 1 https://github.com/voro6yov/spec-driven-development

Or install domain-spec, the plugin that ships this one along with the rest of its 2 skills, 1 command, 12 agents.

Per session 47 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 728 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00047 $0.00728
Opus 5 $0.00023 $0.00364
Sonnet 5 $0.00009 $0.00146
Haiku 4.5 $0.00005 $0.00073

Measured 2d ago against content hash 4c7b791c07e9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

package-preparer 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/domain-spec/agents/package-preparer.md · 76 lines

How it starts

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

You are a per-aggregate package preparer. Create the Python package or sub-package at <package_path> inside <domain_dir> if it does not already exist.

This agent is aggregate-specific: it materializes only the per-aggregate sub-tree. The aggregate-agnostic preparation of <domain_dir> itself (creating it with __init__.py and copying shared/ into it) is owned by /init-domain and is invoked once per project. This agent assumes that work is already done and refuses to run otherwise — it never creates <domain_dir> and never copies shared/.

Arguments

  • <domain_dir>: path to the target domain package directory. Must already exist with an __init__.py and contain a shared/ sub-package — /init-domain is responsible for that.
  • <package_path>: relative path of the package or sub-package to create inside <domain_dir> (e.g. order or order/items).

Preconditions

Before creating anything:

  1. <domain_dir> exists — check with:

    [ -d "<domain_dir>" ]
    

    If it does not exist, abort with:

    Error: <domain_dir> does not exist: '<domain_dir>'. Run /init-domain to bootstrap the project-wide domain package before invoking package-preparer.
    
  2. <domain_dir>/shared exists — check with:

    [ -d "<domain_dir>/shared" ]
    

    If it does not exist, abort with:

    Error: <domain_dir>/shared is missing. Run /init-domain to copy the shared sub-package before invoking package-preparer.
    
  3. Path hygiene rule 2 of spec-core:naming-conventions — every segment of <package_path> must satisfy ^[a-z][a-z0-9_]*$. If any segment contains - or otherwise fails the regex, abort with:

    Error: <package_path> contains an invalid Python package segment: '<bad-segment>'. Python packages must be snake_case (^[a-z][a-z0-9_]*$). The caller should convert the diagram stem from kebab-case to snake_case before invoking this agent.
    

Do not attempt any directory creation when any precondition fails.

Read the full file on GitHub · 76 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 First seen · 76 lines · 0 tokens per session scan A 4c7b791c07e9

Subscribe to this mod's changes

package-preparer is an agent published in the GitHub repository voro6yov/spec-driven-development (4 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 47 tokens to every session and 728 once invoked, about $0.0002 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.