You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Turns a Jira ticket into a ready-to-work worktree with a validated plan. Stops before writing code.
Why
Starting a ticket is the same six steps every time: open Jira, read it, figure out which repo it belongs to, make a branch, make a worktree, write a spec. This does all of it in one command, and because every ticket lands in its own worktree, several can be in flight at once without stepping on each other.
Usage
Command
What it does
/scan-board
lists your In Progress tickets, you pick one
/scan-board WC-1234
goes straight to that ticket
/scan-board Samuel
scans a teammate's board
One-time setup on first run: a Jira API token in your keychain. The skill walks you through it.
Example
▎ /scan-board
Your In Progress tickets:
WC-3516 Support-ticket Calendar year view drops the last week of December
WC-3402 Bug Combobox clears selection on blur
▎ WC-3516
Ticket WC-3516 — Calendar year view drops the last week of December
Repo web-widgets (component: calendar (widget))
Worktree ../worktrees/web-widgets-wc-3516
Branch wc-3516/year-view-last-week
Spec openspec/changes/fix-year-view-week-boundary/
Zendesk 1 linked ticket, not accessible from here paste any repro if you have one
Next /openspec-apply to implement
What it does not do
No code, no commits, no pushes, planning only
No Zendesk access. It only tells you linked tickets exist, so you know extra context is out there.
Only asks you a question when the ticket is genuinely ambiguous. Otherwise it just reports and stops.
⚠️ Approved with suggestions — low-severity items only, safe to merge
What was reviewed
File
Change
.agents/skills/scan-board/SKILL.md
New skill definition for /scan-board — full Jira-to-worktree workflow
.agents/skills/README.md
Registry entry added for scan-board
Skipped (out of scope): dist/, pnpm-lock.yaml
All CI checks: could not retrieve status (permission prompt declined); no widget code changed so lint/unit/E2E are not applicable.
Findings
⚠️ Low — read flag syntax is zsh-only
File:.agents/skills/scan-board/SKILL.md line 57 Note: The token-setup step uses read -r -s "JIRA_TOKEN?Paste the full Jira token: " — the "var?prompt" form works in zsh but not in bash. If a developer's default shell (or any non-interactive shell invoked by an agent) is bash this silently sets JIRA_TOKEN to an empty string, producing an opaque 401 at the auth check. Fix: Use the portable form:
printf'Paste the full Jira token: 'read -r -s JIRA_TOKEN
printf'\n'
⚠️ Low — JIRA_SERVER sed expression is fragile on non-GNU sed
File:.agents/skills/scan-board/SKILL.md line 94 Note: The one-liner sed 's/.*"cloudId":"\([^"]*\)".*/\1/' relies on the entire JSON being on one line and on basic-regex capturing groups. macOS ships BSD sed where this works, but the expression is sensitive to whitespace in the JSON response. A more robust alternative:
python3 is available on every macOS developer machine and handles pretty-printed or compact JSON equally.
⚠️ Low — worktree symlink fallback points at .claude/skills, not .agents/skills
File:.agents/skills/scan-board/SKILL.md line 227 Note: The fallback creates ln -s "$REPO/.claude/skills" "$WT/.claude/skills". In the current repo .claude/skills is itself a symlink to ../.agents/skills, so this resolves correctly — but only because that indirection already exists. If .claude/skills is ever removed or restructured, the fallback silently creates a dangling symlink. Pointing directly at the canonical location is more resilient:
ln -s "$REPO/.agents/skills""$WT/.agents/skills"# and optionally alias: ln -s "../.agents/skills" "$WT/.claude/skills"
Positives
The prerequisite check sequence (skill → CLI → keychain) is front-loaded and explicit — agents can't accidentally skip a dependency and get a mysterious 401 later.
The JIRA_SERVER explanation (site host vs. gateway host, why mendix.atlassian.net returns misleading 404s) is unusually thorough and will save significant debugging time for anyone who hits the gotcha.
Token handling avoids echoing: read -s, unset JIRA_TOKEN after storing, and the explicit "Never echo the token" instruction on the failure path are all correct practices.
The gate section has well-defined, non-overlapping trigger conditions — "A Zendesk badge count is never a trigger" prevents the guard from collapsing into an unconditional prompt on support tickets.
The spec-validation gate ("every acceptance criterion must map to a task") closes the loop between planning and execution with a concrete completion criterion.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add
/scan-boardskillTurns a Jira ticket into a ready-to-work worktree with a validated plan. Stops before writing code.
Why
Starting a ticket is the same six steps every time: open Jira, read it, figure out which repo it belongs to, make a branch, make a worktree, write a spec. This does all of it in one command, and because every ticket lands in its own worktree, several can be in flight at once without stepping on each other.
Usage
/scan-board/scan-board WC-1234/scan-board SamuelOne-time setup on first run: a Jira API token in your keychain. The skill walks you through it.
Example
▎ /scan-board
Your In Progress tickets:
WC-3516 Support-ticket Calendar year view drops the last week of December
WC-3402 Bug Combobox clears selection on blur
▎ WC-3516
Ticket WC-3516 — Calendar year view drops the last week of December
Repo web-widgets (component: calendar (widget))
Worktree ../worktrees/web-widgets-wc-3516
Branch wc-3516/year-view-last-week
Spec openspec/changes/fix-year-view-week-boundary/
Zendesk 1 linked ticket, not accessible from here paste any repro if you have one
Next /openspec-apply to implement
What it does not do