.cursor/skills/github-issue-workflow/SKILL.md
Create, refine, close, and reference GitHub issues for concrete brainstorming, resumable work, next-state improvements, and feature follow-ups.
npx skillsauth add doesitscript/dotfile-vnext github-issue-workflowInstall 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.
Use this skill when brainstorming, partial-state notes, or real follow-up work have become concrete enough to deserve durable GitHub tracking outside the conversation, but not every note deserves an issue.
This skill fits a lightweight GitHub-backed planning style well, especially for solo or small-team work where GitHub issues are being adapted into the main feature/bug/follow-up planning area.
Suggested owners:
Planner / Steward
decides whether the conversation has become concrete enough to preserve as a
durable issueResearcher
gathers the best repo context and shapes the issue bodyExecutor
performs the GitHub operation and aligns repo references when neededThese can be separate agents or separate steps in one agent workflow.
Examples:
This skill is designed to be reusable across projects.
Suggested placement in a project workflow:
If a project uses named roles or agents, a good default mapping is:
These do not have to be separate agents. They can be separate steps in a single agent workflow. The important part is the concept:
This skill is trigger-based, not ambient.
Use it when:
Do not keep invoking it just because a topic exists in the repo. Once the current GitHub state is already known, do not re-check or re-draft unless new work, a new decision point, or an explicit user request makes that useful.
If a repo note or README already points at an issue and that note is being used to start implementation, treat the issue read as a one-time hydration step:
Think of it like this:
Create or update a GitHub issue when at least one of these is true:
Do not create an issue by default when:
Use the skill loosely but intentionally:
You do not need a perfectly modeled edge-case taxonomy to use this skill well.
Check these surfaces before drafting the issue:
docs/ folders for node- or role-specific logicdocs/intake/ for massaged but not yet active workPrefer short scope-first titles:
tunnelblick: import router OpenVPN profile on mac-devnetwork-server: translate Hyper-V/Multipass intake into Ubuntu VM automationGood title shape:
<scope>: <next concrete outcome>Where scope is usually one of:
Labels are not optional for issues created through this skill.
Use this light required schema for every issue:
type:* labelstate:* labelscope:* labelSuggested type:* values:
type:capabilitytype:featuretype:bugtype:cleanuptype:researchSuggested state:* values:
state:stagedstate:blockedstate:readystate:in-progressstate:doneSuggested scope:* values should be specific and stable enough to filter by:
scope:tunnelblickscope:network-serverscope:codex-frameworkOptional extra labels are allowed when they materially help filtering, such as:
area:ansibleplatform:macosplatform:windowstopic:vmtopic:vpnDo not skip labels just because the issue is small. Use the minimum required three-label schema and add extras only when they improve pickup or triage.
Keep the issue body compact and operational.
Default light schema:
OverviewCurrent statePrimary execution planBlockers / missing inputsDefinition of donePick-up referencesIf the issue is small, those sections can stay very short. The important thing is that a future agent can pick the work back up without rereading the entire repo.
Use a GitHub issue as the higher-level roadmap and tracking layer for the work when:
That does not replace repo plans. The intended model is:
docs/plans/ = canonical detailed planWhen the work spans repositories, this skill can draft or create an issue set instead of a single issue.
Use explicit repo roles:
primary
The main product or feature issue.secondary
Supporting implementation, framework, or process work in another repo.reference_only
Repo or document context that informs the issue set but does not get its own
issue by default.Do not assume a default secondary repo. When multi-repo mode is active, the repo-role mapping must be explicit.
The minimum issue-set output should include, for each issue:
Use one of these relationship modes for multi-repo work:
supporting_tracking
Default for primary/secondary coordination. Use backlinks in both issue
bodies, and after the secondary issue exists add a tasklist reference to it in
the primary issue body.blocking_dependency
Use only when one issue truly blocks the other. Recommend GitHub issue
dependencies for the native relationship.parent_child
Use only when the secondary issue is genuinely child work under the primary
issue. Recommend GitHub sub-issues for the native relationship.Do not force blocker semantics for ordinary supporting repo work.
Primary issue body should usually include:
OverviewWhy this issue lives hereCross-repo issue mapPrimary execution planDefinition of donePick-up referencesSecondary issue body should usually include:
OverviewWhy this issue lives herePrimary issue linkLocal execution planDefinition of donePick-up referencesFor multi-repo issue creation, use this order:
If GitHub creation is blocked, produce a durable local draft artifact with the complete issue set instead of failing open.
Preferred command:
gh issue create --repo <owner/repo> --title "<title>" --body "<body>" \
--label "type:..." --label "state:..." --label "scope:..."
For issue-set flows, also use:
gh issue edit <number> --repo <owner/repo> --body-file <file>
Current gh issue create / gh issue edit usage is enough for:
Do not pretend that this CLI path directly creates GitHub-native sub-issues or issue dependencies. For those, recommend the GitHub UI or targeted API work instead of over-claiming automation.
If gh auth is not working:
gh auth is the blockerWhen the user is already in the GitHub UI, produce a clean title and body that can be pasted directly into the issue form.
Close an issue when:
Preferred command:
gh issue close <number> --repo <owner/repo> --comment "<short closeout note>"
When useful, leave a short note in the relevant repo surface such as:
Tracked in GitHub issue #123Do this when the issue meaningfully helps future resumption, especially if the doc, intake note, or role README materially contributed to shaping the issue. Do not spray issue references everywhere.
Preferred places for issue references:
docs/ folders for bigger role-specific workdocs/intake/ notes that were used to shape the issueThe goal is:
When a role README, role-local doc, or intake note references a GitHub issue created through this workflow:
This is the intended balance:
When the user says things like:
create an issue for this capabilitymake an issue for this featurecapture this in GitHubtreat that as enough to:
Do not require the user to pre-format the issue unless something material is missing.
For prompts about linked issues, supporting repos, or cross-repo tracking, treat that as enough to draft or create a multi-repo issue set rather than repeatedly falling back to isolated single-repo issue drafts.
Read references/examples.md when you need concrete examples of issue shape, titles, or when to elevate resumable work into GitHub.
For multi-repo and GitHub-native relationship usage, also read:
testing
Creates a zip archive from the project root while excluding .git and downloaded dependency/source folders. Use when the user asks to zip a project without git metadata or dependencies, including short trigger prompts like zipprojectroot, @zipprojectroot, archiveproject, or run zipprojectroot.
documentation
Reads .envrc, creates or updates .envrc.sample with sanitized placeholder values safe for committing, and ensures .envrc is in .gitignore. Use when adding secrets to .envrc, setting up a new project environment, creating a sample env file, protecting secrets from git, or when asked to sanitize, clean, or document environment variables.
documentation
Registers remote documentation URLs in project-level .cursor/config.json and processes them for active use. Use when the user provides doc sources, asks to add/index docs, or requests @doc handles with suggested titles.
testing
Stage only related work, exclude unrelated dirty files, and create one or more grouped multiline git commits with clear titles and bodies. Use when the user asks to add and commit current work cleanly, especially in a dirty worktree.