Triage, plan, and implement a fix or feature for a GitHub issue end-to-end
67
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Parse $ARGUMENTS to extract:
-- (or all of it if no --) is the issue number. Referred to as ISSUE below.-- is maintainer hints — domain knowledge, suspected root cause, pointers to relevant code, or constraints. If absent, there are no hints.gh issue view ISSUE --json title,body,comments,labels,state,assignees,author,createdAt,milestoneProduce a concise summary: title, reporter, component/area involved, error message, reproduction steps, expected behavior.
Derive the branch category from the issue labels:
| Label contains | Category |
|---|---|
bug | fix |
enhancement, feature | feat |
test | test |
documentation | docs |
If no matching label exists, ask the human for the category.
Collect implementation hints from all available sources, in priority order:
$ARGUMENTS (after --)If the combined hints from these sources provide sufficient direction (suspected root cause, relevant code areas, constraints), proceed directly to step 3 without asking the human.
If hints are insufficient — the issue is vague, the root cause is unclear, or there are multiple possible approaches — ask the human for guidance.
Before jumping to a fix, verify assumptions. This step prevents wasted effort on the wrong solution.
Use Explore agents to thoroughly investigate the relevant code paths. Trace the flow from user-facing API to the point of failure. Read the code — don't guess.
Check whether the reporter is using the library correctly:
If the issue involves specific external systems (destinations, sources, file formats, etc.):
Based on research, conclude one of:
Report findings to the human before moving on.
Before planning, create the working environment so plan-mode exploration runs against a clean branch.
Use the category from step 2 and the issue number:
{category}/{issue-number}-{short-description}Example: fix/3529-dedup-sort-escape
Invoke the /worktree-issue skill with the branch name:
/worktree-issue {branch-name}This creates the worktree, checks out a new branch from origin/devel, and runs /worktree-make-dev.
Note the worktree path — referred to as WORKTREE below.
Verify that the cwd is now inside the worktree:
pwdIf pwd does not show WORKTREE, run cd WORKTREE and verify again. Stop with an error if the cwd cannot be set. Once confirmed, subsequent Bash calls will run inside the worktree automatically.
Enter plan mode and design a plan that will pass the /review-pr skill. The review-pr skill checks:
@CLAUDE.md, no over-engineering, proper use of existing patterns and utilities.pyproject.toml flagged.The plan must include:
cd instruction (see @.claude/rules/worktree.md).@CLAUDE.md test guidelines (parallel safety, platform independence, proper fixtures).make test-common for extract/normalize/common work, destination-specific tests for load work. See @CLAUDE.md "Testing strategy" section.Present the plan via ExitPlanMode for human approval.
Apply the changes from the approved plan. Follow these rules:
Dict[str, Any] not dict).def test_*() -> None:, pytest fixtures, @pytest.mark.parametrize for variants.Run verification in this order. Stop and fix issues before proceeding to the next step.
Run only the new/changed test functions using the commands from the plan. Be selective — target specific test functions, not entire modules.
When the fix involves an external system (destination, source, API) where you don't have full visibility into the behavior — a "black box" — verify experimentally that the test actually catches the bug:
This is valuable when you cannot fully predict how the external system handles the input (e.g., how a database treats unquoted identifiers, how an API responds to edge-case payloads). It proves the test is meaningful and not a no-op.
Skip this step when the code path is fully internal and you can reason about correctness from the code alone.
make format && make lintBoth must pass cleanly. Fix any issues before reporting.
Summarize results:
## Fix for #ISSUE: <title>
**Branch**: {branch-name}
**Worktree**: WORKTREE
### Changes
- `<file>`: <description> (<lines> lines)
- ...
### Verification
- <test-function> on <config>: passed
- <test-function> on <config> without fix: FAILED (confirms bug) [if applicable]
- make format: pass
- make lint: pass
Ready to commit.Wait for the human to confirm before committing.
e3e58fe
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.