Help us improve
Share bugs, ideas, or general feedback.
From smith
Open Smith's draft PR — success path (clean PR + label cleanup) or WIP-stuck path (escalation PR + needs-human-attention + JIRA label swap). Always --draft.
npx claudepluginhub lukasrieger-mp/smith-agent --plugin smithHow this skill is triggered — by the user, by Claude, or both
Slash command
/smith:prThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are inside a Mr. Smith teammate session (ticket mode). This skill
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
You are inside a Mr. Smith teammate session (ticket mode). This skill
is the last step of the pipeline. It runs after smith:pipeline
returned a result.
(Design rationale: docs/spec.md §11.2.4 — informational; this file
suffices to operate.)
ticket, branch, worktree, dry_run — from spawn promptoutcome — the pipeline's result: success, stuck, or errorstuck_reason — populated when outcome != "success"The pipeline ran clean: spec + plan + impl committed, quality checks green. Open a normal draft PR.
Ensure the GitHub labels Smith uses actually exist in the repo. The helper is idempotent — a no-op when the labels are already there:
gh_ensure_labels.sh
Push the branch, then kick the PR-comments monitor so its cadence resets — reviewers may start commenting within minutes of the PR appearing:
git push -u origin "$branch"
pr_comments_reset.sh
Compose the PR title:
title="[<TICKET-KEY>] <ticket-summary-from-jira>"
Compose the PR body — a Markdown doc with these sections:
git diff --stat origin/develop...HEAD grouped by
module/path../gradlew commands run via
run-silent.sh during the pipeline.
confident = false: include the
quality-check.sh result. Normal case.confident = true: at the top of this section, emit a
prominent callout:
> ⚠️ This PR was created with `--confident`. The full quality
> check (build + tests) was SKIPPED. Only the Kotlin formatter
> ran. Reviewer must verify the change builds and tests pass
> before merging.
Then list only the formatter command.Drafted by Smith (autonomous agent). Append
[--confident] when that flag was active.Do NOT include a "Spec & plan" links section on the success path.
Spec and plan are agent-internal artefacts; they live only at
<worktree>/.smith/specs/ and <worktree>/.smith/plans/
(gitignored) and are never committed to the branch on success. If
you want to reference them in the PR body, inline a brief summary
instead — do NOT link to repo paths that don't exist on the branch.
Create the draft PR:
gh pr create --draft \
--title "$title" \
--body "$body" \
--base develop \
--head "$branch" \
--label "$(smith_labels.sh PR_AUTHORED)"
Capture the PR URL from gh's stdout.
Trigger the Augment review bot. Post a comment on the new PR to start the autonomous review loop. The pr-comments monitor will surface Augment's findings within ~3–5 minutes and the watchdog will dispatch a smith-fixer + anderson-fixer pair to handle them:
gh pr comment "$pr_number" --body "augment review"
Also kick the pr-comments monitor so its cadence resets to the active interval:
pr_comments_reset.sh
Remove the smith-implementing JIRA label:
acli jira workitem edit --key "$ticket" --label-remove "$(smith_labels.sh JIRA_IMPLEMENTING)"
Append log:
<ts> | smith:pr | $ticket | success-pr | url=<url> branch=$branch
Return the PR URL to the caller; populate the outcome JSON's
pr_url field.
The pipeline returned stuck or error after the retry. Smith is handing this work back to a human. Open a WIP draft PR with all the context the human will need.
Ensure the GitHub labels Smith uses actually exist:
gh_ensure_labels.sh
Promote artefacts so the next human sees them in the PR:
promote_smith_artifacts.sh "$ticket"
This script:
.smith/briefs/<ticket>-brief.md into the
tracked location docs/superpowers/specs/<ticket>-brief.md..smith/specs/ and .smith/plans/
(where smith:pipeline wrote spec and plan files during the run,
gitignored) into docs/superpowers/specs/ and
docs/superpowers/plans/, then git adds them.wip(smith): partial work at point of stuck — <ticket> commit.This is the ONLY codepath that lands spec/plan markdown on the
branch. The success path (Path A) leaves them in .smith/.
Push the branch (still no force), then kick the PR-comments monitor so cadence resets:
git push -u origin "$branch"
pr_comments_reset.sh
Compose title:
title="[WIP - agent-stuck] [<TICKET-KEY>] <summary>"
Compose body — same sections as the success path PLUS:
stuck_reason verbatim<target>/.smith/log.txtdocs/superpowers/specs/ and docs/superpowers/plans/
(this is the WIP-stuck path's exception to the success-path rule
of omitting that section — here the files DO exist on the branch
because promote_smith_artifacts.sh just committed them).Create the draft PR with both labels:
gh pr create --draft \
--title "$title" \
--body "$body" \
--base develop \
--head "$branch" \
--label "$(smith_labels.sh PR_AUTHORED)" \
--label "$(smith_labels.sh PR_NEEDS_ATTENTION)"
Note: do NOT post "augment review" — this PR is being handed to a human. The needs-human-attention label is the signal.
Swap the JIRA labels:
acli jira workitem edit --key "$ticket" \
--label-remove "$(smith_labels.sh JIRA_IMPLEMENTING)" \
--label-add "$(smith_labels.sh JIRA_FAILED)"
Do not post a JIRA comment (per spec Section 6.6 — labels carry the signal; the PR body holds the narrative).
Append log:
<ts> | smith:pr | $ticket | wip-stuck-pr | url=<url> reason=<one-line>
Return the PR URL; populate the outcome JSON.
--draft. Never gh pr ready. Never gh pr merge.--base develop. Never against main or release branches.{result: "error"} — let the lead retry.The two paths described above (Success and WIP-stuck) execute when
dry_run = false in your spawn prompt. When dry_run = true, skip
every external side effect:
git pushgh pr createpromote_smith_artifacts.sh (the wip commit it makes is
also a side effect)Instead, log the intended actions to <target>/.smith/log.txt:
<ts> | smith:pr | $ticket | would-push | branch=$branch
<ts> | smith:pr | $ticket | would-create-draft-pr | title=<title>
<ts> | smith:pr | $ticket | would-label-pr | labels=smith-authored
<ts> | smith:pr | $ticket | would-remove-jira-label | label=smith-implementing
<ts> | smith:pr | $ticket | would-trigger-augment | pr=<pr_number>
…and return dry-run://pr/$ticket as the PR URL in your outcome JSON.
--draft. Never gh pr ready. Never gh pr merge.--base develop. Never against main or release branches.{result: "error"} — let the lead retry.Any failure (push rejected, gh pr create errors, acli failure) → return
{result: "error", reason}. Lead retries once with a fresh teammate
pair. If the retry also fails, hand off to WIP-stuck (this very skill,
Path B, on retry).
Any failure (push rejected, gh pr create errors, acli failure) → return
{result: "error", reason}. Lead retries once with a fresh teammate
pair. If the retry also fails, hand off to WIP-stuck (this very skill,
Path B, on retry).