원클릭으로
gh-kickoff
Create a GitHub repo (or use an existing one), scaffold files, then turn a plan into milestones and issues.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create a GitHub repo (or use an existing one), scaffold files, then turn a plan into milestones and issues.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | gh-kickoff |
| description | Create a GitHub repo (or use an existing one), scaffold files, then turn a plan into milestones and issues. |
| allowed-tools | Bash Read Write Glob Grep |
| argument-hint | [repo-name] [--public] [--no-readme] [--no-changelog] [--org <name>] |
Bootstrap a GitHub project from a plan. Creates the repo (or detects an existing one), scaffolds README and CHANGELOG, then creates milestones and issues from the plan in the current conversation.
The user provides one or more of:
lately) — creates it under the authenticated user's account by defaultArguments and flags:
| Arg/Flag | Default | Description |
|---|---|---|
<repo-name> | (inferred from cwd if in a repo) | Name of the repo to create |
--public | false (private) | Make the repo public instead of private |
--no-readme | false (include README) | Skip README.md scaffolding |
--no-changelog | false (include CHANGELOG) | Skip CHANGELOG.md scaffolding |
--org <name> | (authenticated user) | Create under an org instead of personal account |
Follow all steps in order. Do not skip steps. Present findings to the user at each checkpoint and wait for confirmation before proceeding.
Check gh is available:
gh auth status
If gh is not installed, tell the user:
"This skill requires the GitHub CLI (
gh). Install it from https://cli.github.com/ and rungh auth loginto authenticate."
Stop here. Do not attempt workarounds.
Check if already in a GitHub repo:
git remote get-url origin 2>/dev/null
If a GitHub remote exists (Path B): Extract the org/repo from the remote URL. Confirm with the user:
"You're already in
<org>/<repo>. I'll skip repo creation and go straight to creating milestones and issues. Sound right?"
Wait for confirmation. If confirmed, skip to Step 4. The --public, --no-readme, and --no-changelog flags are ignored in Path B.
If no remote exists (Path A): A <repo-name> argument is required. If not provided, ask:
"What should the repo be called?"
Wait for the user's response before continuing.
Determine the owner. If --org was provided, use that. Otherwise, create under the authenticated user's personal account (no org prefix needed).
gh repo create <repo-name> --private --clone
If --org was provided:
gh repo create <org>/<repo-name> --private --clone
If --public was passed, replace --private with --public.
If the command fails (name conflict, permission error), show the user the error output and say:
"Repo creation failed. Check the error above — usually it's a name conflict or a permissions issue."
Stop here. Do not proceed with a failed create.
cd into the cloned repo directory.
README.md (unless --no-readme was passed):
Generate a README with the project title derived from the repo name and a placeholder description. Keep it minimal — this is a starting point, not a finished document.
# <Project Title>
> TODO: Add project description.
CHANGELOG.md (unless --no-changelog was passed):
Use references/changelog-template.md as the base. Fill in the project name.
Stage the scaffolded files and create the initial commit:
git add README.md CHANGELOG.md
git commit -m "chore: initial project scaffold"
git push -u origin main
Only include files that were actually created (respect --no-readme and --no-changelog).
Read the plan from one of these sources, in priority order:
If no plan is found in either location, ask:
"I don't see a plan in our conversation or a file path. Can you paste the plan or tell me where to find it?"
Wait for the user's response before continuing.
Parse the plan into milestones and tasks:
1 - Setup and Configuration, 2 - Core Implementation, 3 - Testing and Validation, etc.| Label | When to use |
|---|---|
feat | New functionality, new endpoints, new UI |
fix | Bug fixes, corrections |
docs | Documentation, comments, READMEs |
chore | Config, setup, scaffolding, dependencies |
refactor | Restructuring without behavior change |
test | Adding or updating tests |
ci | CI/CD pipeline changes |
Present the parsed structure to the user for confirmation:
Here's how I'd break this down:
Milestone 1 - [Name] [Description]
feat— [Task title]chore— [Task title]Milestone 2 - [Name] [Description]
feat— [Task title]test— [Task title]Does this look right? Want to move, rename, or re-label anything before I create these?
Wait for the user to confirm or request changes. Iterate until they approve.
Collect the unique label types from Step 4. For each one, check if it already exists on the repo:
gh label list --repo <org>/<repo> --json name --jq '.[].name'
Create any missing labels:
gh label create "<label>" --repo <org>/<repo> --description "<description>" --color "<color>"
Use these colors:
| Label | Color | Description |
|---|---|---|
feat | 0e8a16 | New feature |
fix | d73a4a | Bug fix |
docs | 0075ca | Documentation |
chore | cfd3d7 | Maintenance |
refactor | a2eeef | Code restructuring |
test | bfd4f2 | Tests |
ci | e4e669 | CI/CD |
Create milestones in order using the GitHub API:
gh api repos/<org>/<repo>/milestones --method POST --field title="<milestone-title>" --field description="<milestone-description>"
Store the returned milestone number for each so issues can reference them.
If a milestone with the same title already exists, use the existing one instead of creating a duplicate.
Create issues in order within each milestone. Process milestones sequentially (Milestone 1 first, then 2, etc.) and tasks within each milestone in order. This ensures issue numbers track logically with the plan.
For each task, create an issue with a structured body:
gh issue create --repo <org>/<repo> \
--title "<title>" \
--label "<label>" \
--milestone "<milestone-title>" \
--body "<body>"
Title format: Clear and actionable, commitlint-style. Examples:
feat: implement IP allowlist validation endpointchore: configure Firebase project and deploy pipelinetest: add integration tests for allowlist CRUD operationsBody structure:
## Context
[Why this task exists. Where it fits in the milestone. Background from the plan
that helps someone — human or LLM — understand the motivation and constraints.]
## Task
[What specifically needs to be accomplished. Implementation details, endpoints,
files, patterns, data structures — whatever the plan provides. Be specific enough
that an LLM can pick this up and start working without chasing down the original
plan.]
## Acceptance Criteria
- [ ] [Concrete, verifiable condition]
- [ ] [Another concrete, verifiable condition]
- [ ] [Derived from the plan's task description]
## Dependencies
- Depends on #N [if earlier issues in the sequence are prerequisites]
- No dependencies [if this is the first task or is independent]
The body should be rich enough that someone opening the issue cold — whether a developer or an LLM — has full context to start working.
After all milestones and issues are created, present a summary:
Project kickoff complete.
Repository:
<org>/<repo>([link]) Milestones: N created Issues: N created
Milestone Issues Labels 1 - Setup and Configuration #1, #2, #3 chore, docs 2 - Core Implementation #4, #5, #6, #7 feat, refactor ... ... ... Issues are numbered in execution order. Start with #1.
references/changelog-template.md — Keep a Changelog seed for new reposreferences/issue-body-template.md — Structural guide for issue bodies