issue-driven-development — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited issue-driven-development (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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."
fiSkill: 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
fiSkill: 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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.