skills/issue-workflow/issue-gh-bulk-scratch/SKILL.md
Creates an EPIC and many GitHub issues with gh, keeps local gitignored tmp body files named 1-1 with issue numbers, and self-assigns. Use when batch-filing a portfolio/roadmap set from scratch files or renumbering after creation.
npx skillsauth add pkuppens/pkuppens issue-gh-bulk-scratchInstall 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.
gh issue create and want local markdown copies that stay in sync (filename = GitHub issue number).ISSUE-1 … ISSUE-n (sequence) before you knew the real numbers.gh auth login (user who should own issues, so @me matches intended assignee)tmp/ in repo .gitignore for scratch (see repo CLAUDE.md)--assignee @meDraft bodies in gitignored tmp/ (repo root or tmp/github/ if your repo standardizes that):
tmp/EPIC-DRAFT.md and tmp/ISSUE-DRAFT-1.md … tmp/ISSUE-DRAFT-N.md — import order = creation order, not the final issue number.tmp/EPIC-<#>.md, tmp/ISSUE-<#>.md (GitHub number in the name).Create on GitHub (PowerShell: parse number from the URL line https://github.com/OWNER/REPO/issues/N if gh issue create has no --json number in your gh version):
gh issue comment on the EPIC listing children.gh issue create --title "..." --body-file tmp/... --assignee @me (or run Assign in step 4 in one pass).Rename to 1-1 (required): after you know the numbers, write final files as tmp/EPIC-<N>.md and tmp/ISSUE-<N>.md and delete the draft names. The integer in the filename must equal the GitHub issue number. Optional first line in each file:
> **Local scratch** for GitHub **#N** — [open issue](.../issues/N) · EPIC: [#PARENT](.../issues/PARENT)
Self-assign (required for visibility on “my” list): for EPIC and every child, either:
--assignee @me on each gh issue create, orgh issue edit <n> --add-assignee @me for all N in one loop.PowerShell: @me must be quoted or the shell treats @ as splatting — use --add-assignee '@me' (or assign the login from gh api user -q .login).
Record mapping in tmp/GITHUB-REFS.md (gitignored) or tmp/GITHUB-REFS.md + table: Kind | # | URL | local file.
Link children to EPIC: gh issue comment on the EPIC with a checklist - #16 …, and optionally a short comment on each child: Part of portfolio EPIC #15.
# Create with assignee
gh issue create -t "Title" -F tmp/EPIC-DRAFT.md --assignee @me
# Self-assign in batch (bash)
for n in 15 16 17 18; do gh issue edit "$n" --add-assignee @me; done
tmp/* to git unless the project explicitly version-controls drafts.@me or the requester’s login.ISSUE-1 … ISSUE-10 as final names when GitHub actually issued #16…#25 (breaks 1-1 reference).testing
Syncs remote default branch locally (checkout, fetch --prune, pull) and returns to the previous branch when it still exists. Reports stashes and worktrees not yet handled. Use when the user asks to sync main, update default branch, fetch/pull origin, or run /sync-branch.
tools
Creates, queries, updates, and links Azure Boards work items via az boards CLI. Use when filing ADO work items, running WIQL queries, or setting area path, iteration, tags, and assignee.
tools
Creates, reviews, and completes Azure Repos pull requests and branch policies via az repos CLI. Use when opening ADO PRs, setting required reviewers, or configuring build validation policies.
development
Guides Azure Pipelines YAML structure, build validation on PRs, and staged deployment with environments and approvals. Use when authoring azure-pipelines.yml or configuring CI/CD on Azure DevOps.