skills/pick-issue/SKILL.md
Start working on next Linear issue. Use when user types /pick-issue or asks to pick up the next task from the backlog.
npx skillsauth add jamesc/skills pick-issueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When activated, execute this workflow to start working on the next Linear issue:
The issue ID is determined in priority order:
Explicit argument: If user provides an issue ID, use that issue.
/pick-issue BT-42 → issue BT-42/pick-issue 42 → issue BT-42 (BT- prefix added automatically)Worktree name: If in a git worktree with a name matching BT-{number}, use that issue:
# Check if this is a worktree
git rev-parse --git-dir 2>/dev/null | grep -q "worktrees"
# Extract issue ID from directory name
basename "$(pwd)" | grep -oE '^BT-[0-9]+'
Example: /workspaces/BT-34 → issue BT-34
Backlog query: Query Linear for the highest priority agent-ready issue from the backlog that has no unresolved blockers (all blocking issues must be Done):
streamlinear-cli search --state "Backlog" --team BT
# Then filter results to those with the agent-ready label and no unresolved blockers
Get the full issue details from Linear:
streamlinear-cli get BT-{number}
Before proceeding, verify the issue is workable:
agent-ready label — if needs-spec, stop and tell the user the issue needs specification first.Done or In Progress — if already done, inform the user. If in progress by someone else, warn and ask for confirmation.blocked — check that all blocking issues are Done. If blockers remain, list them and stop.If using backlog query (step 1.3), these checks are implicit. If using explicit ID or worktree, these checks are essential.
Before switching branches, verify no uncommitted changes would be lost:
git status --porcelain
If there are uncommitted changes, warn the user and suggest stashing or committing first. Do not proceed with git checkout until the working tree is clean.
Skip this step if:
BT-{number}*Otherwise:
git checkout main
git pull origin main
Skip if already on a matching branch. Otherwise create:
BT-{number}-{slug}BT-7-implement-lexergit checkout -b BT-{number}-{slug}
Mark the issue as "In Progress":
streamlinear-cli update BT-{number} --state "In Progress"
Break down the acceptance criteria into actionable tasks using the todo list tool.
Before writing any new Beamtalk or Erlang FFI code, search the codebase for
3+ existing examples of the pattern you're about to implement. This prevents
wrong syntax assumptions (e.g. :: not : for type annotations, block ^
semantics, DNU behavior).
# Find existing examples of the relevant pattern in Beamtalk source
grep -r "PATTERN" stdlib/test/ stdlib/src/ examples/ --include="*.bt" | head -10
# For Erlang FFI / runtime
grep -r "relevant_module" runtime/apps/ --include="*.erl" | head -10
Review the hits, note the exact syntax used, then implement consistently.
If no examples exist, read docs/beamtalk-language-features.md first.
Skip only for pure Rust changes with no Beamtalk syntax involved.
Begin working on the issue, following AGENTS.md guidelines.
After each significant change, run the fast test suite:
just test
This runs unit tests (~10s). Save full CI for the final check before code review.
Make small, focused commits as you complete each task. Use conventional commit format with the issue ID:
type: description BT-{number}
Push after each commit to keep the remote updated.
Before completing, run the full CI suite to catch any issues:
just ci
This runs all CI checks (build, clippy, fmt-check, test, test-e2e). Fix any failures before proceeding.
After implementation, chain automatically through the remaining skills:
gh pr list --head $(git branch --show-current)).
If one exists with unresolved review comments → chain to /resolve-pr./review-code. If review finds 🔴/🟡 issues, fix them and re-run just test (or just ci if clippy/fmt changes were needed)./done.Only stop for user input if review identifies 🔵 issues requiring design decisions.
tools
Find the next logical piece of work. Use when user types /whats-next or asks what they should work on next, or wants recommendations for the next task.
development
Use when navigating code, finding references, looking up definitions, understanding types, or tracing call hierarchies in TypeScript, Rust, or Beamtalk (.bt) files. Prefer LSP over Grep/Glob for any navigation task where symbol semantics matter.
data-ai
Find and update Linear issues that need labels, blocking relationships, or metadata. Use when user says '/update-issues' with criteria like 'no labels', 'missing agent-ready', 'needs size', etc.
data-ai
Sync modified skills and agents back to the repo and create a PR. Use when user types /sync-skills or wants to save in-session skill improvements.