GitHub Project
Overview
Create a new GitHub repository and matching local clone from a default-first plan. In this skill, "GitHub project" means a GitHub repository unless the user explicitly asks for a GitHub Projects board.
Do not create anything until the user explicitly confirms Create GitHub project.
Defaults
Infer a complete repo plan before asking questions:
- Artifact: GitHub repository.
- Owner: active authenticated
gh account.
- Parent location:
~/IdeaProjects.
- Visibility: public.
- License: MIT.
- Initial contents: README plus MIT license.
- Repo features: GitHub defaults; do not toggle issues, wiki, projects, or discussions unless requested.
- Folder name: GitHub-safe slug inferred from the project name.
- Repo name: same as folder name unless the user requests otherwise.
- Friendly name: human-readable title inferred from the project name.
- Description: generated from the project purpose, capped at 350 characters.
- Topics: 6-10 GitHub repository topics optimized for user search queries.
Topics are GitHub repository topics for discoverability. They are not issue labels and should not be appended as hashtag-style description text.
Workflow
Resolve prerequisites.
- Run
gh --version.
- Run
gh auth status.
- If
gh is missing or unauthenticated, stop and report the blocker.
- Resolve the active owner from
gh auth status or another read-only gh query if needed.
Infer the project plan.
- Derive the friendly name, folder name, repo name, description, and topics from the user's request.
- Use lowercase hyphenated slugs for folder and repo names.
- Keep the description plain and searchable, not promotional.
- Select topics from terms users would search for on GitHub for the project subject or technology.
Present native menus for every configurable setting.
- Use
request_user_input for each menu when available.
- Ask one setting at a time.
- Defaults are preselected, not hidden.
- The first option in each menu must be the inferred default with
(Recommended) in the label.
- Do not skip a setting just because a good default was inferred.
- If structured menus are unavailable, stop and say the integrated menu UI is unavailable in the current mode.
Required setting menus, in order:
- Parent location.
- Repo, folder, and friendly name.
- Description.
- Topics.
- Visibility.
- License.
- Initial contents.
.gitignore.
Menu requirements by setting:
- Parent location:
~/IdeaProjects (Recommended)
Specify
Do something else
- Repo, folder, and friendly name:
- The inferred names as one recommended option.
Change names
Do something else
- Description:
Use generated description (Recommended)
Specify
Do something else
- Topics:
Use generated topics (Recommended)
Specify
Do something else
- Visibility:
Public (Recommended)
Private
Do something else
- License:
MIT (Recommended)
Apache-2.0
GPL-3.0
- Rely on the tool's free-form Other path when the user wants another license.
- Initial contents:
README plus MIT license (Recommended)
README only
Do something else
.gitignore:
- If the stack is clear, make the matching GitHub template the recommended option.
- If the stack is unclear, make
None (Recommended) the recommended option.
- Always include
Specify.
- Include
Do something else when there is room within the menu option limit.
Check for collisions after the user has confirmed the names and location.
- Expand
~/IdeaProjects to an absolute path.
- If the target local folder already exists, stop and ask for a new name or explicit instruction.
- Check whether the target GitHub repository already exists with a read-only
gh repo view OWNER/REPO.
- If the target repository already exists, stop and ask for a new name or explicit instruction.
Present the final creation plan.
- Show the resolved plan in chat after all setting menus and collision checks are complete.
- Then ask for final confirmation with a native menu.
- Because
request_user_input supports only 2-3 explicit choices, use a compact final menu:
Create GitHub project
Change settings
Do something else
- If the user selects
Change settings, ask a follow-up native menu for the setting category to change:
Location or names
Description or topics
Visibility, license, contents, or gitignore
- After any change, rerun the affected collision checks and return to the final creation plan.
Create only after explicit confirmation.
- Run from the chosen parent directory.
- Use this command shape:
gh repo create REPO --public --clone --add-readme --license mit --description "DESCRIPTION"
- Include
--gitignore TEMPLATE only when the user selected a template.
- If visibility or license changed during confirmation, replace
--public or --license mit with the confirmed value.
- After creation, add topics:
gh repo edit OWNER/REPO --add-topic topic-a,topic-b,topic-c
- Return the result.
- Include the local path, GitHub URL, visibility, license, description, and topics.
- If any step fails, report the exact failed command and stop. Do not retry through an alternate path unless the user asks.
Menu Behavior
Prefer a low-friction default-first interaction. Low friction means defaults are preselected, not hidden.
Menu 1: Parent location
~/IdeaProjects (Recommended)
Specify
Do something else
Menu 2: Names
Use repo-name / Friendly Name (Recommended)
Change names
Do something else
Menu 3: Description
Use generated description (Recommended)
Specify
Do something else
Menu 4: Topics
Use generated topics (Recommended)
Specify
Do something else
Menu 5: Visibility
Public (Recommended)
Private
Do something else
Menu 6: License
MIT (Recommended)
Apache-2.0
GPL-3.0
Other is available through the integrated input-control free-form path.
Menu 7: Initial contents
README plus MIT license (Recommended)
README only
Do something else
Menu 8: .gitignore
None or TEMPLATE (Recommended)
Specify
Do something else
Final menu:
Create GitHub project
Change settings
Do something else
Every configurable setting gets a native menu even when the inferred default is probably correct. The user should be able to press the recommended choice repeatedly and move quickly through the wizard.
Do not replace the integrated input-control menu with a numbered Markdown menu. The intended interaction is the same structured menu surface used by planning. If that surface is unavailable, stop rather than degrading to chat options.
Stop Conditions
Stop and ask, without creating the repository, when:
- The user asks for a GitHub Projects board instead of a repository.
gh is unavailable.
gh is unauthenticated.
- The active owner cannot be resolved.
- The local folder exists.
- The GitHub repository exists.
- The user has not explicitly selected
Create GitHub project.
- The integrated input-control menu is unavailable when a menu decision is required.
Source: hashgraph-online/awesome-codex-plugins → plugins/zfifteen/gh-project-plugin/skills/gh-project/SKILL.md
1---2name: gh-project3description: Create new GitHub repositories with low-friction defaults. Use when the user invokes /gh-project or $gh-project, asks to create a new GitHub project, asks to create a GitHub repo/repository, or wants a local folder plus GitHub repository created from inferred defaults.4---567# GitHub Project89## Overview1011Create a new GitHub repository and matching local clone from a default-first plan. In this skill, "GitHub project" means a GitHub repository unless the user explicitly asks for a GitHub Projects board.1213Do not create anything until the user explicitly confirms `Create GitHub project`.1415## Defaults1617Infer a complete repo plan before asking questions:1819- Artifact: GitHub repository.20- Owner: active authenticated `gh` account.21- Parent location: `~/IdeaProjects`.22- Visibility: public.23- License: MIT.24- Initial contents: README plus MIT license.25- Repo features: GitHub defaults; do not toggle issues, wiki, projects, or discussions unless requested.26- Folder name: GitHub-safe slug inferred from the project name.27- Repo name: same as folder name unless the user requests otherwise.28- Friendly name: human-readable title inferred from the project name.29- Description: generated from the project purpose, capped at 350 characters.30- Topics: 6-10 GitHub repository topics optimized for user search queries.3132Topics are GitHub repository topics for discoverability. They are not issue labels and should not be appended as hashtag-style description text.3334## Workflow35361. Resolve prerequisites.37 - Run `gh --version`.38 - Run `gh auth status`.39 - If `gh` is missing or unauthenticated, stop and report the blocker.40 - Resolve the active owner from `gh auth status` or another read-only `gh` query if needed.41422. Infer the project plan.43 - Derive the friendly name, folder name, repo name, description, and topics from the user's request.44 - Use lowercase hyphenated slugs for folder and repo names.45 - Keep the description plain and searchable, not promotional.46 - Select topics from terms users would search for on GitHub for the project subject or technology.47483. Present native menus for every configurable setting.49 - Use `request_user_input` for each menu when available.50 - Ask one setting at a time.51 - Defaults are preselected, not hidden.52 - The first option in each menu must be the inferred default with `(Recommended)` in the label.53 - Do not skip a setting just because a good default was inferred.54 - If structured menus are unavailable, stop and say the integrated menu UI is unavailable in the current mode.55564. Required setting menus, in order:57 - Parent location.58 - Repo, folder, and friendly name.59 - Description.60 - Topics.61 - Visibility.62 - License.63 - Initial contents.64 - `.gitignore`.65665. Menu requirements by setting:67 - Parent location:68 - `~/IdeaProjects (Recommended)`69 - `Specify`70 - `Do something else`71 - Repo, folder, and friendly name:72 - The inferred names as one recommended option.73 - `Change names`74 - `Do something else`75 - Description:76 - `Use generated description (Recommended)`77 - `Specify`78 - `Do something else`79 - Topics:80 - `Use generated topics (Recommended)`81 - `Specify`82 - `Do something else`83 - Visibility:84 - `Public (Recommended)`85 - `Private`86 - `Do something else`87 - License:88 - `MIT (Recommended)`89 - `Apache-2.0`90 - `GPL-3.0`91 - Rely on the tool's free-form Other path when the user wants another license.92 - Initial contents:93 - `README plus MIT license (Recommended)`94 - `README only`95 - `Do something else`96 - `.gitignore`:97 - If the stack is clear, make the matching GitHub template the recommended option.98 - If the stack is unclear, make `None (Recommended)` the recommended option.99 - Always include `Specify`.100 - Include `Do something else` when there is room within the menu option limit.1011026. Check for collisions after the user has confirmed the names and location.103 - Expand `~/IdeaProjects` to an absolute path.104 - If the target local folder already exists, stop and ask for a new name or explicit instruction.105 - Check whether the target GitHub repository already exists with a read-only `gh repo view OWNER/REPO`.106 - If the target repository already exists, stop and ask for a new name or explicit instruction.1071087. Present the final creation plan.109 - Show the resolved plan in chat after all setting menus and collision checks are complete.110 - Then ask for final confirmation with a native menu.111 - Because `request_user_input` supports only 2-3 explicit choices, use a compact final menu:112 - `Create GitHub project`113 - `Change settings`114 - `Do something else`115 - If the user selects `Change settings`, ask a follow-up native menu for the setting category to change:116 - `Location or names`117 - `Description or topics`118 - `Visibility, license, contents, or gitignore`119 - After any change, rerun the affected collision checks and return to the final creation plan.1201218. Create only after explicit confirmation.122 - Run from the chosen parent directory.123 - Use this command shape:124125```bash126gh repo create REPO --public --clone --add-readme --license mit --description "DESCRIPTION"127```128129 - Include `--gitignore TEMPLATE` only when the user selected a template.130 - If visibility or license changed during confirmation, replace `--public` or `--license mit` with the confirmed value.131 - After creation, add topics:132133```bash134gh repo edit OWNER/REPO --add-topic topic-a,topic-b,topic-c135```1361379. Return the result.138 - Include the local path, GitHub URL, visibility, license, description, and topics.139 - If any step fails, report the exact failed command and stop. Do not retry through an alternate path unless the user asks.140141## Menu Behavior142143Prefer a low-friction default-first interaction. Low friction means defaults are preselected, not hidden.144145```text146Menu 1: Parent location147 ~/IdeaProjects (Recommended)148 Specify149 Do something else150151Menu 2: Names152 Use repo-name / Friendly Name (Recommended)153 Change names154 Do something else155156Menu 3: Description157 Use generated description (Recommended)158 Specify159 Do something else160161Menu 4: Topics162 Use generated topics (Recommended)163 Specify164 Do something else165166Menu 5: Visibility167 Public (Recommended)168 Private169 Do something else170171Menu 6: License172 MIT (Recommended)173 Apache-2.0174 GPL-3.0175 Other is available through the integrated input-control free-form path.176177Menu 7: Initial contents178 README plus MIT license (Recommended)179 README only180 Do something else181182Menu 8: .gitignore183 None or TEMPLATE (Recommended)184 Specify185 Do something else186187Final menu:188 Create GitHub project189 Change settings190 Do something else191```192193Every configurable setting gets a native menu even when the inferred default is probably correct. The user should be able to press the recommended choice repeatedly and move quickly through the wizard.194195Do not replace the integrated input-control menu with a numbered Markdown menu. The intended interaction is the same structured menu surface used by planning. If that surface is unavailable, stop rather than degrading to chat options.196197## Stop Conditions198199Stop and ask, without creating the repository, when:200201- The user asks for a GitHub Projects board instead of a repository.202- `gh` is unavailable.203- `gh` is unauthenticated.204- The active owner cannot be resolved.205- The local folder exists.206- The GitHub repository exists.207- The user has not explicitly selected `Create GitHub project`.208- The integrated input-control menu is unavailable when a menu decision is required.209210---211212**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/zfifteen/gh-project-plugin/skills/gh-project/SKILL.md`