Use for any development work - the master 13-step coding process that orchestrates all other skills, ensuring GitHub issue tracking, proper branching, TDD, code review, and CI verification
The master coding process. Every step references specific skills. Follow in order.
Core principle: No work without an issue. No shortcuts. No exceptions.
Announce at start: "I'm using issue-driven-development to implement this work."
Create TodoWrite items for each step you'll execute. This is not optional.
Question: Am I working on a clearly defined GitHub issue that is tracked in the project board?
Actions:
issue-prerequisite skillVerification (MANDATORY) - uses cached data:
# Verify issue is in project board (0 API calls - uses cache)
ITEM_ID=$(echo "$GH_CACHE_ITEMS" | jq -r ".items[] | select(.content.number == [ISSUE_NUMBER]) | .id")
if [ -z "$ITEM_ID" ] || [ "$ITEM_ID" = "null" ]; then
echo "BLOCKED: Issue not in project board. Add it before proceeding."
# Add to project (1 API call) and refresh cache (1 API call)
gh project item-add "$GITHUB_PROJECT_NUM" --owner "$GH_PROJECT_OWNER" \
--url "$(gh issue view [ISSUE_NUMBER] --json url -q .url)"
export GH_CACHE_ITEMS=$(gh project item-list "$GITHUB_PROJECT_NUM" --owner "$GH_PROJECT_OWNER" --format json)
ITEM_ID=$(echo "$GH_CACHE_ITEMS" | jq -r ".items[] | select(.content.number == [ISSUE_NUMBER]) | .id")
fi
# Verify Status field is set (0 API calls - uses cache)
STATUS=$(echo "$GH_CACHE_ITEMS" | jq -r ".items[] | select(.id == \"$ITEM_ID\") | .status.name")
if [ -z "$STATUS" ] || [ "$STATUS" = "null" ]; then
echo "BLOCKED: Issue has no Status in project. Set Status before proceeding."
fi
Skill: issue-prerequisite, project-board-enforcement
Gate: Do not proceed unless:
Question: Are there comments on the issue I need to read?
Actions:
Skill: issue-lifecycle
Question: Is this issue too large for a single task?
Indicators of too-large:
If too large:
issue-decompositionparent labelSkill: issue-decomposition
Question: Is there previous work on this issue or related issues?
Actions:
episodic-memory for issue number, feature name, related termsmcp__memory knowledge graph for related entitiesSkill: memory-integration
Question: Do I need to perform research to complete this task?
Research types:
Actions:
Skill: pre-work-research
Question: Am I on the correct branch AND has the project status been updated?
Rules:
mainmain, sometimes existing feature branch)Naming: feature/issue-123-short-description or fix/issue-456-bug-name
Project Status Update (MANDATORY) - uses cached IDs:
When starting work, update project board Status to "In Progress":
# Use cached IDs (0 API calls for lookups)
# GH_PROJECT_ID, GH_STATUS_FIELD_ID, GH_STATUS_IN_PROGRESS_ID set by session-start
# Update status to In Progress (1 API call)
gh project item-edit --project-id "$GH_PROJECT_ID" --id "$ITEM_ID" \
--field-id "$GH_STATUS_FIELD_ID" --single-select-option-id "$GH_STATUS_IN_PROGRESS_ID"
# Refresh cache and verify (1 API call)
export GH_CACHE_ITEMS=$(gh project item-list "$GITHUB_PROJECT_NUM" --owner "$GH_PROJECT_OWNER" --format json)
NEW_STATUS=$(echo "$GH_CACHE_ITEMS" | jq -r ".items[] | select(.id == \"$ITEM_ID\") | .status.name")
if [ "$NEW_STATUS" != "In Progress" ]; then
echo "ERROR: Failed to update project status. Cannot proceed."
exit 1
fi
Skill: branch-discipline, project-board-enforcement
Gate: Do not proceed if:
main branchProcess: RED β GREEN β REFACTOR
Standards to apply simultaneously:
tdd-full-coverage - Write test first, watch fail, minimal code to passstrict-typing - No any types, full typinginline-documentation - JSDoc/docstrings for all public APIsinclusive-language - Respectful terminologyno-deferred-work - No TODOs, do it nowActions:
Skills: tdd-full-coverage, strict-typing, inline-documentation, inclusive-language, no-deferred-work
Question: Did I succeed in delivering what is documented in the issue?
Actions:
research-after-failureSkill: acceptance-criteria-verification, research-after-failure
Question: Minor change or major change?
Minor change (Step 9.1):
comprehensive-review checklistMajor change (Step 9.2):
comprehensive-review checklist7 Review Criteria:
Security-Sensitive Check:
# Check if any changed files are security-sensitive
git diff --name-only HEAD~1 | grep -E '(auth|security|middleware|api|password|token|secret|session|routes|\.sql)'
If matches found:
security-reviewer subagent OR perform security-review skillHARD REQUIREMENT: Post review artifact to issue comment:
<!-- REVIEW:START -->
## Code Review Complete
| Property | Value |
|----------|-------|
| Issue | #[ISSUE] |
| Scope | [MINOR|MAJOR] |
| Security-Sensitive | [YES|NO] |
| Reviewed | [ISO_TIMESTAMP] |
[... full artifact per comprehensive-review skill ...]
**Review Status:** β
COMPLETE
<!-- REVIEW:END -->
Gate: PR creation will be BLOCKED by hooks if artifact not found.
Skills: review-scope, comprehensive-review, security-review, review-gate
Rule: Implement ALL recommendations from code review, regardless how minor.
ABSOLUTE: Every finding must result in ONE of:
deferred-finding skillThere is NO third option. "Won't fix without tracking" is NOT permitted.
Actions:
deferred-finding skill to create tracking issuereview-finding and spawned-from:#ISSUE labelsGate: Review artifact must show "Unaddressed: 0" before proceeding.
Skills: apply-all-findings, deferred-finding
Actions:
Skill: tdd-full-coverage
Prerequisites (verified by hooks):
Actions:
CRITICAL: The PreToolUse hook will BLOCK gh pr create if:
If blocked, return to Step 9 or Step 10.
Skills: clean-commits, pr-creation, review-gate
Actions:
When CI is green (MANDATORY):
gh pr merge [PR_NUMBER] --squash --delete-branch# When CI passes
gh pr merge [PR_NUMBER] --squash --delete-branch
# Update project status to Done
# ... project board update commands ...
# Continue to next issue (do not stop)
Do NOT:
Skills: ci-monitoring
Issue AND project board updates happen CONTINUOUSLY, not as a separate step.
These updates are NOT optional. They are gates.
| Moment | Project Status | Verification |
|---|---|---|
| Starting work (Step 6) | β In Progress | Verify status changed |
| PR created (Step 12) | β In Review | Verify status changed |
| Work complete | β Done | Verify status changed |
| Blocked | β Blocked | Verify status changed |
At minimum, update the issue:
Use cached project data (GH_CACHE_ITEMS) for state queries. Never use labels for state. See project-board-enforcement skill.
On failure: Assess severity β Preserve evidence β Attempt recovery β If unrecoverable, set status to Blocked. See error-recovery skill.
Work is complete when:
| Step | Skill(s) | Gate |
|---|---|---|
| 1 | issue-prerequisite, project-board-enforcement | Must have issue IN PROJECT BOARD |
| 2 | issue-lifecycle | - |
| 3 | issue-decomposition | - |
| 4 | memory-integration | - |
| 5 | pre-work-research | - |
| 6 | branch-discipline, project-board-enforcement | Must not be on main, Status β In Progress |
| 7 | tdd-full-coverage, strict-typing, inline-documentation, inclusive-language, no-deferred-work | - |
| 8 | acceptance-criteria-verification, research-after-failure | - |
| 9 | review-scope, comprehensive-review, security-review, review-gate | Review artifact required |
| 10 | apply-all-findings, deferred-finding | Unaddressed: 0 required |
| 11 | tdd-full-coverage | - |
| 12 | clean-commits, pr-creation, review-gate, project-board-enforcement | Hook blocks without artifact, Status β In Review |
| 13 | ci-monitoring, verification-before-merge | Must be green, Status β Done on merge |
Hooks enforce:
Gate failures require fixing before proceeding. See project-board-enforcement skill.