plugins/sdlc-utils/skills/github-issues-task-management/SKILL.md
This skill should be used when organizing work via GitHub Issues and Projects, creating project boards, managing milestones, or when consolidating fragmented tracking into GitHub-native tracking. Trigger phrases: "set up projects", "create a project board", "organize issues", "milestone planning", "what issues need attention", "consolidate tickets".
npx skillsauth add nsheaps/ai-mktpl github-issues-task-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
GitHub Issues and Projects are one concrete implementation of project-management tracking. This skill covers the methodology for using GitHub as the canonical system for tracking work items, milestones, and project status.
owner/repo#N format.Every issue must have:
Use the issue-management skill for the mechanics of creating, searching, and
updating issues via gh CLI. This skill covers the methodology.
Add magic phrases to the PR body to auto-close issues on merge:
Fixes #42
Fixes nsheaps/ai-mktpl#15
Closes #7
Semantic convention (GitHub treats all linking keywords identically, but we use them to signal intent to human readers):
Fixes -- the PR satisfies/resolves the issue described (bug fix, feature
implementation). The issue represents work that is now complete.Closes -- the PR supersedes or replaces another PR or issue without
necessarily implementing it (e.g., a rewrite that obsoletes an older PR, or
closing a duplicate).For cross-repo links, always use the full owner/repo#N format.
Issues close automatically when a linked PR merges. If closing manually, always include a comment explaining resolution and referencing the relevant commit or PR.
Labels vary by project. Always conform to whatever the project's .github/labels.yaml
defines as the single source of truth. The categories below are common conventions.
Common conventions include p0/p1/p2/p3 or priority:high/priority:low.
Check the project's .github/labels.yaml for the actual label names and use those.
| Concept | Meaning | | -------- | ---------------------------------------- | | Critical | Blocking all other work, fix immediately | | High | Should be resolved this sprint/cycle | | Normal | Important but not urgent | | Low | Nice to have, backlog |
Common type labels (exact names may differ per project):
| Concept | Meaning | | ----------- | ------------------------------------- | | bug | Something is broken | | enhancement | Improvement to existing functionality | | chore | Maintenance, refactoring, tooling | | question | Needs discussion or clarification |
Use sparingly -- GitHub Projects board columns often replace these:
| Concept | Meaning | | ------------ | ------------------------------ | | needs-triage | Not yet prioritized | | blocked | Waiting on external dependency | | in-progress | Actively being worked |
# Create a project (org-level)
gh project create --owner nsheaps --title "Milestone: Feature X"
# Add an issue to a project
gh project item-add PROJECT_NUMBER --owner nsheaps --url https://github.com/nsheaps/repo/issues/42
Standard column layout:
| Column | Purpose | | ----------- | ------------------------ | | Backlog | Triaged but not started | | In Progress | Actively being worked | | In Review | PR open, awaiting review | | Done | Merged and verified |
When transitioning from fragmented tracking to consolidated GitHub tracking:
gh issue list --repo owner/repo --state open --limit 100
Group issues that track the same feature, bug, or initiative. Look for:
When work spans multiple repos, always use full references:
Related to nsheaps/agents#12
Blocked by nsheaps/ai-mktpl#45
Fixes nsheaps/ai-mktpl#15
Short references (#N) only work within the same repo. Cross-repo references
require owner/repo#N.
| Skill / Rule | Scope |
| -------------------------------------------- | ------------------------------------------------------------------------ |
| issue-management | Mechanics: how to create, search, update, close issues via CLI |
| github-issues-task-management (this skill) | Methodology: how to organize work, manage projects, consolidate tracking |
| agentic-behavior/rules/work-tracking.md | Abstract linking and milestone rules (platform-agnostic) |
| Anti-Pattern | Instead |
| ----------------------------------------------------- | ------------------------------------------------------ |
| Tracking work only in chat threads | Create a GitHub Issue; use chat for discussion |
| One issue per tiny sub-task | Consolidate into a parent issue with a checklist |
| Short-form references across repos (#N) | Use owner/repo#N for cross-repo links |
| No labels on issues | Add at least type + priority labels |
| Closing issues without explanation | Comment with resolution and link to PR/commit |
| Using issue body as a living document without history | Use comments for updates; keep body as canonical state |
tools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su