--- name: git-issue-creator description: GitHub issue creation with semantic commit formatting and automatic label assignment, extending git-issue-labeler, git-semantic-commits, git-issue-updater, and ticket-branch-workflow license: Apache-2.0 compatibility: opencode metadata: audience: developers workflow: github-issue-branch --- ## What I do I implement GitHub issue creation with automatic label assignment and semantic commit formatting by extending framework skills: 1. **Analyze Request**: Parse the user's statement to determine issue type and content 2. **Assign Labels**: Use `git-issue-labeler` framework to assign GitHub default labels (bug, enhancement, documentation, duplicate, good first issue, help wanted, invalid, question, wontfix) 3. **Format Commits**: Use `git-semantic-commits` framework for semantic commit message formatting (Conventional Commits specification) 4. **Create GitHub Issue**: Use `gh issue create` with title, description, assigned labels, and assignee 5. **Update Issue Progress**: Use `git-issue-updater` framework to add progress comments with user, date, time, and commit details 6. **Delegate to Framework**: Use `ticket-branch-workflow` for branch creation, PLAN.md, commit (using git-semantic-commits), and push 7. **Display Summary**: Show issue URL, branch name, and framework completion status ## When to use me **Frameworks Used**: This skill extends multiple framework skills: - `git-issue-labeler` - For GitHub default label assignment (bug, enhancement, documentation, duplicate, good first issue, help wanted, invalid, question, wontfix) - `git-semantic-commits` - For semantic commit message formatting (Conventional Commits specification) - `git-issue-updater` - For updating issues with commit progress including user, date, time - `ticket-branch-workflow` - For core workflow (branch creation, PLAN.md, commit, push) Use this workflow when: - You need to create a GitHub issue with automatic label assignment - You want semantic commit message formatting (Conventional Commits) - You want automatic issue progress updates with consistent documentation - You want the complete workflow: issue → branch → PLAN.md → commit → issue update → push - You prefer GitHub CLI (`gh`) for issue creation over manual entry ## Prerequisites - GitHub CLI (`gh`) installed and authenticated - Git repository initialized - Write access to the GitHub repository - Valid `GITHUB_TOKEN` or `gh` authentication setup - `git-issue-labeler` skill available in skills/ directory - `git-semantic-commits` skill available in skills/ directory - `git-issue-updater` skill available in skills/ directory - `ticket-branch-workflow` skill available in skills/ directory ## Steps ### Step 1: Analyze the Request - Read the user's statement describing the issue - Extract title and description for issue creation - Identify any specific requirements or constraints mentioned ### Step 2: Assign Labels Using git-issue-labeler - Use `git-issue-labeler` framework to determine appropriate GitHub default labels - Analyze user statement for issue type indicators - Assign labels from GitHub defaults: bug, enhancement, documentation, duplicate, good first issue, help wanted, invalid, question, wontfix - Let git-issue-labeler handle keyword matching and label detection **Label Detection Logic** (Delegated to git-issue-labeler): ```bash # git-issue-labeler will analyze the statement # and determine appropriate GitHub default labels # Example: "Fix login error" → labels: bug # Example: "Add dark mode" → labels: enhancement, good first issue ``` ### Step 3: Create GitHub Issue - Get the current authenticated GitHub user: ```bash gh api user --jq '.login' ``` - Use `gh issue create` command with labels from git-issue-labeler: ```bash gh issue create --title "" --body "" --label "," --assignee @me ``` - Format the issue body: ```markdown ## Description ## Type ## Labels - - ## Context ## Acceptance Criteria - - ``` - Store the issue number, URL, and assignee for reference ### Step 4: Execute Ticket-Branch-Workflow - Use `ticket-branch-workflow` for the following steps: - Create GitHub branch: `git checkout -b issue-` or `feature/-` - Create PLAN.md with issue reference - Format commit using git-semantic-commits: `docs(plan): add PLAN.md for #` - Commit PLAN.md: `git commit -m "$(git-semantic-commits --type docs --scope plan --subject 'Add PLAN.md for #')"` - Push branch: `git push -u origin ` ### Step 5: Update Issue with Commit Progress Using git-issue-updater - Use `git-issue-updater` framework to add progress comment to GitHub issue - Extract commit details: hash, message, author, date, time, files changed - Format comment with consistent documentation including user, date, time - Add comment to GitHub issue with link to commit **Issue Update Logic** (Delegated to git-issue-updater): ```bash # After committing PLAN.md, update issue with progress git-issue-updater --issue --platform github # This will: # 1. Extract latest commit details # 2. Format comment with user, date, time # 3. Add comment to GitHub issue # 4. Link to commit for reference ``` ### Step 5: Display Summary - Display issue and framework completion status: ``` ✅ GitHub Issue # created successfully! ✅ Labels assigned: (via git-issue-labeler) ✅ Branch created and checked out: ✅ PLAN.md created with semantic commit (via git-semantic-commits) ✅ Issue updated with progress comment (via git-issue-updater) ✅ Branch pushed to remote (via ticket-branch-workflow) **Issue Details**: - Title: - URL: - Labels: (assigned by git-issue-labeler) - Assignee: **Branch**: - Name: - Base Branch: - Remote: origin/ **PLAN.md**: - Created at: ./PLAN.md - Committed with semantic format: docs(plan): add PLAN.md - Pushed: Yes **Issue Update**: - Comment added: Yes (via git-issue-updater) - User: - Date: - Time: You're now on the new branch and ready to start implementation! ``` ## Examples ### Example 1: Bug Fix with Automatic Labeling **User Input**: "Fix the login error when user enters invalid credentials" **Workflow Execution**: 1. **git-issue-labeler**: Analyzes statement → assigns `bug` label 2. **GitHub Issue Creation**: Creates issue #123 with title and bug label 3. **ticket-branch-workflow**: Creates branch `issue-123`, PLAN.md 4. **git-semantic-commits**: Formats commit as `docs(plan): add PLAN.md for #123` 5. **git-issue-updater**: Adds progress comment with user, date, time 6. **Push**: Branch pushed to remote **Result**: ``` ✅ GitHub Issue #123 created successfully! ✅ Labels assigned: bug (via git-issue-labeler) ✅ Branch created and checked out: issue-123 ✅ PLAN.md created with semantic commit: docs(plan): add PLAN.md for #123 ✅ Issue updated with progress comment (via git-issue-updater) ✅ Branch pushed to remote Issue Details: - Title: Fix the login error when user enters invalid credentials - URL: https://github.com/org/repo/issues/123 - Labels: bug - Assignee: @john-doe Issue Update: - Comment added: Yes - User: John Doe (john.doe@example.com) - Date: 2024-01-25 - Time: 14:30 UTC+08:00 ``` ### Example 2: New Feature with Multiple Labels **User Input**: "Add support for dark mode in the dashboard and make it good for newcomers" **Workflow Execution**: 1. **git-issue-labeler**: Analyzes statement → assigns `enhancement`, `good first issue` labels 2. **GitHub Issue Creation**: Creates issue #124 with title and labels 3. **ticket-branch-workflow**: Creates branch `issue-124`, PLAN.md 4. **git-semantic-commits**: Formats commit as `docs(plan): add PLAN.md for #124` 5. **git-issue-updater**: Adds progress comment with user, date, time 6. **Push**: Branch pushed to remote **Result**: ``` ✅ GitHub Issue #124 created successfully! ✅ Labels assigned: enhancement, good first issue (via git-issue-labeler) ✅ Branch created and checked out: issue-124 ✅ PLAN.md created with semantic commit: docs(plan): add PLAN.md for #124 ✅ Issue updated with progress comment (via git-issue-updater) ✅ Branch pushed to remote Issue Details: - Title: Add support for dark mode in the dashboard - URL: https://github.com/org/repo/issues/124 - Labels: enhancement, good first issue - Assignee: @jane-smith ``` ### Example 3: Documentation Update **User Input**: "Document the API endpoints for the authentication module" **Workflow Execution**: 1. **git-issue-labeler**: Analyzes statement → assigns `documentation` label 2. **GitHub Issue Creation**: Creates issue #125 with title and documentation label 3. **ticket-branch-workflow**: Creates branch `issue-125`, PLAN.md 4. **git-semantic-commits**: Formats commit as `docs(plan): add PLAN.md for #125` 5. **git-issue-updater**: Adds progress comment with user, date, time 6. **Push**: Branch pushed to remote **Result**: ``` ✅ GitHub Issue #125 created successfully! ✅ Labels assigned: documentation (via git-issue-labeler) ✅ Branch created and checked out: issue-125 ✅ PLAN.md created with semantic commit: docs(plan): add PLAN.md for #125 ✅ Issue updated with progress comment (via git-issue-updater) ✅ Branch pushed to remote ``` ## PLAN.md Template Structure The framework generates PLAN.md with this structure: ```markdown # Plan: ## Overview Brief description of what this issue implements or fixes. ## Issue Reference - Issue: # - URL: - Labels: , , ## Files to Modify 1. `src/path/to/file1.ts` - Description of changes 2. `src/path/to/file2.tsx` - Description of changes 3. `README.md` - Documentation updates ## Approach Detailed steps or methodology for implementation: 1. **Step 1**: Description 2. **Step 2**: Description 3. **Step 3**: Description ## Success Criteria - [ ] All files modified correctly - [ ] No build errors - [ ] All tests pass - [ ] Code review completed ## Notes Any additional notes, constraints, or considerations. ``` ## Best Practices - Always provide clear, descriptive issue titles - Include sufficient context in issue description - Assign issues to yourself (`--assignee @me`) for accountability - Let `git-issue-labeler` framework handle label detection (GitHub default labels: bug, enhancement, documentation, duplicate, good first issue, help wanted, invalid, question, wontfix) - Let `git-semantic-commits` framework handle commit message formatting (Conventional Commits specification) - Let `git-issue-updater` framework handle issue progress updates with user, date, time - Use semantic branch names that reference the issue number - Confirm the issue URL is accessible - The frameworks handle branch creation, PLAN.md, commit, and push automatically - Keep issue titles concise (under 72 characters preferred) - Update the issue with a comment linking to the PR when ready - Framework delegation reduces code duplication and improves maintainability ## Common Issues ### GitHub CLI Not Authenticated **Issue**: `gh issue create` fails with authentication error **Solution**: Run `gh auth login` to authenticate with GitHub ### Repository Not Initialized **Issue**: Git commands fail with "not a git repository" **Solution**: Initialize the repository: `git init` and set up remote: `git remote add origin ` ### Branch Already Exists **Issue**: Branch checkout fails due to existing branch **Solution**: The framework handles this with `-B` flag to force branch creation ### No Labels Detected **Issue**: Issue created without labels **Solution**: Default to `enhancement` label (via git-issue-labeler) Note: git-issue-labeler should still be called to ensure consistent label assignment even when no keywords match ### PLAN.md Already Exists **Issue**: PLAN.md file already exists in the branch **Solution**: The framework handles this by asking if you want to overwrite or append ## Troubleshooting Checklist Before creating the issue: - [ ] GitHub CLI is installed: `gh --version` - [ ] GitHub CLI is authenticated: `gh auth status` - [ ] Git repository is initialized: `git status` - [ ] Current branch is clean (no uncommitted changes) - [ ] Remote repository is set up: `git remote -v` After issue creation: - [ ] Issue number is captured - [ ] Issue URL is accessible - [ ] Labels are correctly applied - [ ] Issue is assigned to current user - [ ] Framework completes successfully: branch created, PLAN.md committed, branch pushed ## Related Commands ```bash # View current authenticated GitHub user gh api user --jq '.login' # List issues in the repository gh issue list # View issue details gh issue view # Edit an issue gh issue edit --title "New Title" --body "New Description" # Assign issue to yourself gh issue edit --add-assignee @me # Delete an issue gh issue delete # Format commit message using git-semantic-commits git-semantic-commits --type docs --scope plan --subject "Add PLAN.md for #123" # Update issue with commit progress using git-issue-updater git-issue-updater --issue 123 --platform github ``` ## Related Skills - **Frameworks**: - `ticket-branch-workflow` - Provides core workflow (branch creation, PLAN.md, commit, push) - `git-issue-labeler` - Provides GitHub default label assignment (bug, enhancement, documentation, duplicate, good first issue, help wanted, invalid, question, wontfix) - `git-semantic-commits` - Provides semantic commit message formatting (Conventional Commits specification) - `git-issue-updater` - Provides issue progress updates with user, date, time - `jira-git-integration` - Provides JIRA-specific operations when working with JIRA tickets - **Related Workflows**: - `nextjs-pr-workflow`: For creating PRs after completing the issue - `jira-git-workflow`: For JIRA-integrated workflows (uses same ticket-branch-workflow framework) - `git-pr-creator`: For creating PRs with optional JIRA integration - `pr-creation-workflow`: For generic PR creation with configurable quality checks