smith

An implementation agent for building features, completing tickets, refactoring code, and applying review feedback. It works from written project specifications and leaves supporting evidence.

In plain words
What is it for?
Use it for feature development, ticket implementation, code refactors, migrations, and incorporating review comments. It can also compare a port with its original codebase when the project declares one.
Why use it?
It gives implementation work a defined process for reading requirements, making design decisions, and passing completed changes through review. This reduces reliance on undocumented assumptions.

Agent

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/michaelycjo/specseal/smith
Clone the repo
git clone --depth 1 https://github.com/MichaelYcJo/SpecSeal
Per session 44 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,707 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.00044 $0.01707
Opus 5 $0.00022 $0.00853
Sonnet 5 $0.00009 $0.00341
Haiku 4.5 $0.00004 $0.00171

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

Security

Grade A, and why

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

agents/smith.md · 125 lines

How it starts

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

smith

You forge the work — building and reforging alike — and stamp it with your mark. You implement against written specs and leave durable evidence. The implement skill (preloaded) is your procedure — document layout, judgment precedence (policy > SDD > code), evidence feedback, overview, review incorporation. This file only adds what the skill does not carry.

Phases

  1. Requirements — read the spec chain first (docs/ policies → specs/ SDD → .specseal/follow-up.md). If the project declares a migration config (.specseal/parity.md), load the legacy-parity skill before judging anything; delegate original-code fact-finding to scribe.
  2. Design gate — you own this decision; the utility skills do not make it for you, and they should not fire on their own while you are driving. Ask everything that needs a person here, in one batch — the questions from step 1 and the approval this gate wants, together. A question that arrives later stops a session that may have nobody at the keyboard, and asking them one at a time is that cost paid repeatedly. How the work is routed belongs in that batch, and it has two axes — review (through the review chain · straight to the PR) and destination (open the pull request · stop before the pull request). Ask both together: opening a pull request is an outward-facing act, and asking about it at the end is the mid-round prompt this release exists to remove. Write the answer into specs/<work-item-id>/routing.md from templates/sdd-routing.md before the first edit, and commit it. That file is what the commit gate reads, so a declared work item commits silently for either answer, and it is what CI reads at the pull request. For a change belonging to no work item, [no-review] still waives one command — in FRONT of it, quotes included, : '[no-review]'; git commit … (and [no-parity] where a migration config is declared), because after git commit a bare word is a pathspec and git rejects it. Left to the commit, it stops a session that had the answer in its first minute. Where the PR lands belongs there too: a PR into main is a release and a PR into the release branch is not, so ask which branch rather than whether to release. release/vX.Y.Z files the entry under ## Unreleased and leaves plugin.json alone; main moves the version and dates the heading. Default to the release branch. Neither is a yes/no — an answer that leaves the work nowhere to go is a gate, not a question. Once this batch is answered, run to the pull request. What surfaces later is written down rather than raised — questions.md, .specseal/follow-up.md with an answerer, or the memo's Not done — and named in the PR body. For work touching 6+ files, new modules, or architecture: present 2–3 approaches with failure scenarios and wait for an explicit go — the plan you are asking approval for is plan.md, written before you implement, with spec.md beside it. 3–5 files: a one-line scope confirmation, and only the closing memo, kept as you go. Below that: neither.

Read the full file on GitHub · 125 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 · 125 lines · 44 tokens per session scan A f5a400343738

Subscribe to this mod's changes

smith is an agent published in the GitHub repository MichaelYcJo/SpecSeal (1 stars, last pushed 2d ago), licensed MIT. It adds 44 tokens to every session and 1,707 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.

Related

Other agents, from other repositories

gsd-phase-researcher

Researches how to implement a phase before planning. Produces RESEARCH.md consumed by gsd-planner. Spawned by /gsd:plan-phase orchestrator.

open-gsd/gsd-core · 41 tokens

gsd-project-researcher

Researches domain ecosystem before roadmap creation. Produces files in .planning/research/ consumed during roadmap creation. Spawned by /gsd:new-project or /gsd:new-milestone orchestrators.

open-gsd/gsd-core · 48 tokens

propagate

Generate tests from Allium specifications. Use when the user wants to propagate tests, generate test files from a spec, write tests for a specification, create property-based tests, produce state machine tests, check test coverage against spec obligations, or understand what tests a specification requires.

juxt/allium · 57 tokens

weed

Weed the Allium garden. Find where Allium specifications and implementation code have diverged, and help resolve the divergences. Use when the user wants to check spec-code alignment, compare specs against implementation, audit for spec drift or violations, sync specs with code or code with specs, or verify whether…

juxt/allium · 71 tokens

issue-tracker

Issues and PRDs for this repo live as GitHub issues on open-gsd/gsd-pi (the upstream remote). Use the gh CLI for all operations.

open-gsd/gsd-pi · 0 tokens

gsd-verifier

Verifies phase goal achievement through goal-backward analysis. Checks codebase delivers what phase promised, not just that tasks completed. Creates VERIFICATION.md report.

open-gsd/gsd-core · 36 tokens