Work on Issue Skill
When to Use
Activate when the user wants to:
- •Implement code changes for a planned issue
- •Work through a specific phase of a development plan
- •Write code following TDD (test-driven development) methodology
- •Continue implementation from a previous phase
User Preferences
Before implementation, resolve the user's Profile:
- •Check for
.github/copilot-preferences.ymlor.vscode/copilot-preferences.ymlin the workspace. - •Load policy packs from
policy/packs/*.ymland overrides frompolicy/module-policy.ymlorpolicy/modules/*.ymlif they exist. - •Follow the resolved Profile's canonical idioms for logging, tests, observability, and coding style.
Inputs
- •Path to the local issue file. No CLIs/network.
Strict Non-Goals
- •Do not create or edit
## Plan,## Impacted Files, or_artifacts/plan.json. - •Do not enter brainstorming or analysis mode. If the plan is not locked, stop.
Steps
- •
Re-read the Issue
- •If
status: needs-info→ attempt to answer from context; else stop. - •If
status: brainstormORplan_lock: false→ refuse to code. Summarize open options/questions, setstatus: brainstorm, print change summary, stop.
- •If
- •
Read the Plan
- •If
## Planis absent, stop and instruct: "Run the analyze-and-plan skill to produce a phased plan + plan.json (locked)."
- •If
- •
Phase-Lock
- •Read
phasefrom front-matter (default: 1). - •Build a TODO only from steps tagged
phase:<n>. - •Refuse to touch files outside
## Impacted Filesandplan.json.allowed_paths.
- •Read
- •
Verification Block (Trust-but-Verify)
- •List exact symbols, files, and lines that justify each planned change.
- •If key evidence is missing → set
status: needs-infowith one question; stop.
- •
Implement Each Step (TDD) For each step in the current phase:
- •Add a failing test (or framework-agnostic outline) → minimal fix → cleanup.
- •Keep diffs surgical.
- •Generated-file guard: if path suggests generated output (
dist/,build/,target/generated-sources/) or file containsDO NOT EDIT/@Generated/policy markers, stop and file a scaffold issue. - •Profile conformance: follow the resolved Profile idioms (logging/tests/observability). If a contradiction exists, propose updating
policy/modules/*.ymlinstead of inventing a one-off. - •Append a timestamped entry under
## Activitydescribing what changed and why.
- •
Security, Performance, and Observability
- •Sanitize logs (no secrets).
- •Parameterize data access.
- •Add or update minimal metrics/traces per the resolved Profile.
- •
Stop-After-Phase
- •When all
phase:<n>steps pass tests, incrementphasein front-matter and exit. - •If all Acceptance Criteria are met, set
status: review; otherwise keepstatus: in-progress.
- •When all
- •
Safety Check
- •If touched lines of code feels excessive for the phase or edits fall outside the allowlist, ask to split or update the plan; then stop.
- •
Print Change Summary
- •List all files created or modified with their paths and actions.
Guardrails
- •Never start without a locked plan (
plan_lock: trueand_artifacts/plan.jsonpresent). - •Never touch files outside the allowlist without an explicit plan update.
- •Never enter brainstorming mode — if the plan is insufficient, stop and redirect to the analyze-and-plan skill.
- •Always follow TDD: failing test first, then minimal fix, then cleanup.