From smith
Executes implementation plans by processing tasks from tasks.md, with vault logging, branch-based workflow tracking, and prerequisites validation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/smith:smith-implementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Workflow requirement (Smith 20+):** This skill must be invoked from inside an active top-level workflow (`/smith-new`, `/smith-bugfix`, `/smith-debug`, `/smith-build`). The workflow-gate hook will block standalone invocation. To use this skill standalone, start a top-level workflow first.
Workflow requirement (Smith 20+): This skill must be invoked from inside an active top-level workflow (
/smith-new,/smith-bugfix,/smith-debug,/smith-build). The workflow-gate hook will block standalone invocation. To use this skill standalone, start a top-level workflow first.
Throughout this action, log significant events to the vault session log. Read the session log path from .smith/vault/.current-session. If the file is missing or the vault is not initialized, skip all logging silently.
Append entries using this format:
### [HH:MM:SS] /smith-implement <event>
**User Request:**
> <verbatim user message that triggered this action>
**Synthesized Input:** <brief summary>
**Outcome:** <what happened>
**Artifacts:** <files created/modified>
**Systems affected:** <system IDs>
Log at these points:
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
At the start of implementation, create a per-branch active-workflow file only if it doesn't already exist (it may already be set by /smith-new or /smith-build):
BRANCH=$(git rev-parse --abbrev-ref HEAD)
SAFE_BRANCH=$(echo "$BRANCH" | sed 's/[^a-zA-Z0-9._-]/-/g')
ACTIVE_FILE=".smith/vault/active-workflows/${SAFE_BRANCH}.yaml"
# Only create if not already set by parent workflow
if [ ! -f "$ACTIVE_FILE" ]; then
mkdir -p .smith/vault/active-workflows
cat > "$ACTIVE_FILE" << EOF
workflow: smith-implement
feature: <detected from branch or spec>
branch: $BRANCH
started: $(date -u +"%Y-%m-%dT%H:%M:%S")
EOF
fi
Clear the active-workflow file when all tasks are complete, only if smith-implement created it (not if inherited from parent). Use the shipped helper so this works on projects that deny Bash(rm:*):
# Only clean up if we created it (check workflow field)
if grep -q 'workflow: smith-implement' "$ACTIVE_FILE" 2>/dev/null; then
.specify/scripts/bash/clear-active-workflow.sh "$BRANCH"
fi
If this action was invoked by /smith-build, the build action handles cleanup instead.
Run .specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").
Check checklists status (if FEATURE_DIR/checklists/ exists):
Scan all checklist files in the checklists/ directory
For each checklist, count:
- [ ] or - [X] or - [x]- [X] or - [x]- [ ]Create a status table:
| Checklist | Total | Completed | Incomplete | Status |
|-----------|-------|-----------|------------|--------|
| ux.md | 12 | 12 | 0 | PASS |
| test.md | 8 | 5 | 3 | FAIL |
| security.md | 6 | 6 | 0 | PASS |
Calculate overall status:
If any checklist is incomplete:
If all checklists are complete:
If .smith/vault/ledger/ exists and contains non-empty files, load relevant Ledger sections to inform implementation. If the directory is missing, empty, or unreadable, skip silently — the Ledger is purely additive and never required.
Check: ls .smith/vault/ledger/*.md 2>/dev/null
If files exist, read the following section (higher-confidence entries first, truncate at ~2000 tokens):
.smith/vault/ledger/tool-preferences.mdUse loaded tool preferences as additional context when choosing implementation approaches. The Ledger informs judgment, it does not override spec/plan/constitution.
Budget violation tracking: If any Ledger file was truncated (entries were dropped to fit within the ~2000 token budget per file), increment context_budget_violations in .smith/vault/ledger/.meta.json by 1. If .meta.json does not exist, create it from the default template first. This signal tells the reconciliation system that the Ledger is too large for the configured budget.
Load and analyze the implementation context:
Project Setup Verification:
Detection & Creation Logic:
Check if the following command succeeds to determine if the repository is a git repo (create/verify .gitignore if so):
git rev-parse --git-dir 2>/dev/null
Check if Dockerfile* exists or Docker in plan.md → create/verify .dockerignore
Check if .eslintrc* exists → create/verify .eslintignore
Check if eslint.config.* exists → ensure the config's ignores entries cover required patterns
Check if .prettierrc* exists → create/verify .prettierignore
Check if .npmrc or package.json exists → create/verify .npmignore (if publishing)
Check if terraform files (*.tf) exist → create/verify .terraformignore
Check if .helmignore needed (helm charts present) → create/verify .helmignore
If ignore file already exists: Verify it contains essential patterns, append missing critical patterns only If ignore file missing: Create with full pattern set for detected technology
Common Patterns by Technology (from plan.md tech stack):
node_modules/, dist/, build/, *.log, .env*__pycache__/, *.pyc, .venv/, venv/, dist/, *.egg-info/target/, *.class, *.jar, .gradle/, build/bin/, obj/, *.user, *.suo, packages/*.exe, *.test, vendor/, *.out.bundle/, log/, tmp/, *.gem, vendor/bundle/vendor/, *.log, *.cache, *.envtarget/, debug/, release/, *.rs.bk, *.rlib, *.prof*, .idea/, *.log, .env*build/, out/, .gradle/, .idea/, *.class, *.jar, *.iml, *.log, .env*build/, bin/, obj/, out/, *.o, *.so, *.a, *.exe, *.dll, .idea/, *.log, .env*build/, bin/, obj/, out/, *.o, *.a, *.so, *.exe, Makefile, config.log, .idea/, *.log, .env*.build/, DerivedData/, *.swiftpm/, Packages/.Rproj.user/, .Rhistory, .RData, .Ruserdata, *.Rproj, packrat/, renv/.DS_Store, Thumbs.db, *.tmp, *.swp, .vscode/, .idea/Tool-Specific Patterns:
node_modules/, .git/, Dockerfile*, .dockerignore, *.log*, .env*, coverage/node_modules/, dist/, build/, coverage/, *.min.jsnode_modules/, dist/, build/, coverage/, package-lock.json, yarn.lock, pnpm-lock.yaml.terraform/, *.tfstate*, *.tfvars, .terraform.lock.hcl*.secret.yaml, secrets/, .kube/, kubeconfig*, *.key, *.crtParse tasks.md structure and extract:
Execute implementation following the task plan:
Implementation execution rules:
Progress tracking and error handling:
Completion validation:
Note: This command assumes a complete task breakdown exists in tasks.md. If tasks are incomplete or missing, suggest running /smith-tasks first to regenerate the task list.
npx claudepluginhub attckdigital/smithExecutes implementation plans from tasks.md and design.md, processing tasks by phase, dependency, and TDD constraints. Manages context clearing and logs for long-running sessions.
Executes approved implementation plans with checkpoint validation, progress tracking, and stakes-based enforcement. Locates plans, verifies approval, and runs verification criteria before proceeding.