Skip to content

Commit 2d23eb6

Browse files
authored
feat(skills): add create-issue slash-command skill (#165)
* feat(skills): add 8 new Claude Code slash-command skills - add-translation: guide for i18n keys with MiniMessage <arg:N> enforcement - create-service: sealed-interface + DefaultImpl + JUnit 5 test pattern - create-phase: Minestom phase lifecycle with GamePhaseFactory wiring - create-repository: Hibernate repository with ManisGame sealed-interface pattern - create-adapter: Gson JsonDeserializer following adapter subpackage convention - health-check: combined build + test + ArchUnit + import isolation report - db-start: MariaDB Docker Compose start with health check and connection info - create-pr: GitHub PR creation targeting master with project PR template * fix(skills): enforce English PR body and fix base branch to main in create-pr skill * feat(skills): add labels, milestone, project and issue reference steps to create-pr skill * feat(skills): add create-issue slash-command skill Adds /create-issue skill that guides creation of GitHub issues with Conventional Commits titles, duplicate detection, label mapping, milestone assignment, and automatic Voyager Roadmap project linking.
1 parent 08d2590 commit 2d23eb6

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

.claude/skills/create-issue.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
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

Comments
 (0)