|
| 1 | +--- |
| 2 | +name: create-issue |
| 3 | +description: Create a GitHub issue with Conventional Commits title, labels, milestone, duplicate check, and Voyager Roadmap project assignment. |
| 4 | +--- |
| 5 | + |
| 6 | +# Create Issue |
| 7 | + |
| 8 | +Create a new GitHub issue for the OneLiteFeatherNET/Voyager repository with proper labels, milestone, duplicate detection, and automatic assignment to the Voyager Roadmap project. |
| 9 | + |
| 10 | +## Rules |
| 11 | + |
| 12 | +- Issue title MUST follow Conventional Commits: `type(scope): short description` (e.g. `feat(server): add boost ring effect`). |
| 13 | +- Issue body MUST be written in **English** — never German. |
| 14 | +- Always check for duplicate issues before creating. |
| 15 | +- Always add the issue to the Voyager Roadmap project (ID 19) after creation. |
| 16 | +- A priority label (P0, P1, or P2) MUST always be assigned. |
| 17 | +- Labels are always fetched live from the repo before applying. |
| 18 | + |
| 19 | +## Steps |
| 20 | + |
| 21 | +1. Ask the user for the following information via `AskUserQuestion`. Collect all inputs before proceeding: |
| 22 | + |
| 23 | + - **Title** — must follow Conventional Commits: `type(scope): short description` |
| 24 | + - **Body / description** — what the problem or feature request is, and what the acceptance criteria are |
| 25 | + - **Commit type** — one of `feat`, `fix`, `docs`, `chore`, `ci`, `refactor`, `test` |
| 26 | + - **Domain label(s)** — any of: `gameplay`, `database`, `infrastructure`, `setup` (optional, pick all that apply) |
| 27 | + - **Priority** — one of `P0` (critical), `P1` (high), `P2` (normal) |
| 28 | + - **Milestone** — pick from the list below (by number): |
| 29 | + - 1 — Sprint 1: Playable Loop |
| 30 | + - 2 — Sprint 2: Complete Cup Flow |
| 31 | + - 3 — Alpha v0.1 |
| 32 | + - 4 — Beta v0.2 |
| 33 | + - 5 — Release v1.0 |
| 34 | + |
| 35 | +2. Validate the title format. It must match the pattern `type(scope): short description`. Valid types are: `feat`, `fix`, `docs`, `chore`, `ci`, `refactor`, `test`. If the title does not match, tell the user the correct format and ask them to correct it before continuing. |
| 36 | + |
| 37 | +3. Check for duplicate issues. Extract two or three keywords from the issue title and search open issues: |
| 38 | +```bash |
| 39 | +gh issue list --repo OneLiteFeatherNET/Voyager --state open --search "<keywords from title>" |
| 40 | +``` |
| 41 | +If results are returned, list them (number, title, URL) and ask the user: |
| 42 | +- "These open issues may be related. Do you want to proceed with creating a new issue, or would you like to use one of the existing ones instead?" |
| 43 | +- Only continue if the user confirms creation. |
| 44 | + |
| 45 | +4. Fetch available labels from the repo: |
| 46 | +```bash |
| 47 | +gh label list --repo OneLiteFeatherNET/Voyager |
| 48 | +``` |
| 49 | + |
| 50 | +5. Map the commit type to a primary label: |
| 51 | + - `feat` → `enhancement` |
| 52 | + - `fix` → `bug` |
| 53 | + - `docs` → `documentation` |
| 54 | + - `chore` → `chore` |
| 55 | + - `ci` → `ci` |
| 56 | + - `refactor` → `cleanup` |
| 57 | + - `test` → `testing` |
| 58 | + |
| 59 | + Combine with domain labels chosen in step 1, the priority label (P0/P1/P2), and any other applicable labels from the fetched list (e.g. `sprint-1`, `sprint-2`, `blocked`, `breaking`). |
| 60 | + |
| 61 | +6. Compose the issue body using the following template (fill in all sections in English): |
| 62 | + |
| 63 | +``` |
| 64 | +## Problem / Feature |
| 65 | +
|
| 66 | +<!-- Describe the problem or feature request --> |
| 67 | +
|
| 68 | +## Acceptance Criteria |
| 69 | +
|
| 70 | +- [ ] ... |
| 71 | +
|
| 72 | +## Additional Context |
| 73 | +
|
| 74 | +<!-- Screenshots, logs, related issues, etc. --> |
| 75 | +``` |
| 76 | + |
| 77 | +Replace the placeholder comments with the content the user provided in step 1. Keep acceptance criteria as checkboxes (`- [ ] ...`). |
| 78 | + |
| 79 | +7. Create the issue: |
| 80 | +```bash |
| 81 | +gh issue create \ |
| 82 | + --repo OneLiteFeatherNET/Voyager \ |
| 83 | + --title "<type(scope): short description>" \ |
| 84 | + --body "<full body from step 6>" \ |
| 85 | + --label "<label1>,<label2>,..." \ |
| 86 | + --milestone "<milestone title>" |
| 87 | +``` |
| 88 | + |
| 89 | +Capture the issue URL returned by the command. |
| 90 | + |
| 91 | +8. Add the issue to the Voyager Roadmap project (project ID 19): |
| 92 | +```bash |
| 93 | +gh project item-add 19 --owner OneLiteFeatherNET --url "<issue-url>" |
| 94 | +``` |
| 95 | + |
| 96 | +9. Display the final issue URL and a summary: |
| 97 | + - Issue URL |
| 98 | + - Labels applied |
| 99 | + - Milestone assigned |
| 100 | + - Confirmation that the issue was added to the Voyager Roadmap project |
| 101 | + - Confirmation that no duplicate was found (or that the user confirmed despite a potential duplicate) |
| 102 | + |
| 103 | +## Output |
| 104 | + |
| 105 | +- The URL of the newly created issue. |
| 106 | +- Labels, milestone, and project assignment confirmed. |
| 107 | +- Duplicate check result (none found, or user confirmed). |
0 commit comments