Agent skill
implement-issue
Implement one or more plan issues end-to-end with proper branching, testing, and status tracking via YAML workflow states. When issues are synced to Linear, updates both local YAML and Linear.
Install this agent skill to your Project
npx add-skill https://github.com/jasonraimondi/dotfiles/tree/macos/config/skillshare/skills/implement-issue
SKILL.md
Work on Issue
Implement one or more issues from a plan end-to-end. YAML fields are the source of truth for workflow; prose is for human context only.
Input
The user provides one or more issue references:
- file path:
./plans/auth/issues/1-setup-middleware.yaml - shorthand:
auth#1(project slug + issue ID)
If none provided, ask: "Which issue(s) should I work on?"
Workflow states
backlog → todo → in-progress → in-review → qa → done
↕
blocked
Process (per issue)
1. Read the issue
Read the issue YAML file. Check:
- acceptance criteria and steps
- blocked_by — read those issues too, confirm they are in done or canceled
- current status
- assignee
- labels
- priority
- track
- tdd / headed flags
If unresolved blockers exist (blocked_by issues not in done/canceled), report them and skip. If the issue is blocked, confirm the blocker is cleared before resuming. If assigned to someone else, ask before taking it.
2. Update status
Update the YAML file:
- backlog → todo (when about to start)
- blocked → todo (when blocker is cleared)
- todo → in-progress (when implementation starts)
- always update the
updateddate on status changes
Linear sync: if the issue has linear_id, also update the Linear issue state:
linear issue update {linear_id} --state "{new_status}"
3. Branch setup
Check if the current branch is already dedicated to this issue or its parent project.
- If yes: stay on the current branch
- If no: create a new branch using
<user>/<project-slug>/<issue-id>-<issue-slug>
4. Explore the codebase
Understand:
- modules mentioned in the issue steps
- adjacent code paths and existing patterns
- existing tests for similar behavior
5. Implement
When steps exist
Follow the steps in order. Each step provides a Target — required behavior pair that specifies where to work and what the behavior should be.
tdd: true: invoke thetesting-tddskill. Use the steps to determine test boundaries — write tests for the behavior described in each step, then implement to make them pass.headed: true: invoke thetooling-agent-browserskill for visual verification. Steps with verification targets (e.g., "verify toast appears") define what to check in the browser.- Both flags: TDD for logic, browser verification for visual outcomes.
- Neither flag: implement steps directly, verify with lint and existing test suite.
When steps are absent (legacy issues)
Fall back to acceptance criteria:
- TDD when acceptance criteria are clear and behavioral
- Implement-first when the work is exploratory, UI-heavy, or requires discovery
General rules
- follow existing patterns and conventions
- lint and test after implementation
- fix lint and test failures before moving on
6. Commit
Create meaningful commits using conventional commit format: type(scope): description.
7. Open PR
Once implementation is complete and tests pass:
- Push the branch with
-u - Create a PR with the issue reference in the title and body
- Include a concise test plan in the PR body
8. Update issue YAML
Update the issue file:
- set
branchto the branch name - set
prto the PR URL - set
status: in-review - after merge:
status: qaif verification needed, orstatus: done - if blocked after starting:
status: blocked, explain innotes - always update
updateddate
Linear sync: if the issue has linear_id, also push these changes to Linear:
# Update status
linear issue update {linear_id} --state "{new_status}"
Attach the PR to the Linear issue if one was created — use linear api with a GraphQL mutation to create an attachment:
linear api --method POST --body '{"query":"mutation{attachmentCreate(input:{issueId:\"{linear_id}\",url:\"{pr_url}\",title:\"Pull Request\"}){success}}"}'
9. Next issue
If there are more issues, proceed to the next one.
- stay on the same branch only when working on tightly coupled issues from the same project
- otherwise create a new branch per issue
- if any issue is blocked, skip it and report at the end
Linear sync
When a plan has been synced to Linear (issues have a linear_id field), update both local YAML and Linear on every status change. Local YAML is always updated first — Linear updates are best-effort. If a Linear update fails, log the failure and continue (do not block implementation).
Check for linear_id once when reading the issue (step 1). If present, all status transitions in steps 2 and 8 push to Linear.
Multiple issues
When given multiple issues, work them sequentially. If any issue is blocked, skip it and report at the end.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
tools-image-manipulation-image-magick
Process and manipulate images using ImageMagick. Supports resizing, format conversion, batch processing, and retrieving image metadata. Use when working with images, creating thumbnails, resizing wallpapers, or performing batch image operations.
frontend-react-doctor
Run after making React changes to catch issues early. Use when reviewing code, finishing a feature, or fixing bugs in a React project.
typescript-advanced-types
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications. Use when implementing complex type logic, creating reusable type utilities, or ensuring compile-time type safety in TypeScript projects.
typescript-better-auth-best-practices
Skill for integrating Better Auth - the comprehensive TypeScript authentication framework.
testing-tdd
Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
planning-interview-me
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "interview me".
Didn't find tool you were looking for?