Skip to content

Instantly share code, notes, and snippets.

@lasergoat
Last active June 27, 2025 21:27
Show Gist options
  • Save lasergoat/0f432321559c8bd0bf843457fe62c561 to your computer and use it in GitHub Desktop.
Save lasergoat/0f432321559c8bd0bf843457fe62c561 to your computer and use it in GitHub Desktop.
Claude slash commands for feature development workflow with Jira integration

Feature Development Commands for Claude

These are custom slash commands for Claude Code that integrate with Jira and GitHub to streamline feature development workflow.

Prerequisites

Before installing these commands, ensure you have:

  • gh CLI installed and authenticated
  • Jira MCP installed and configured (e.g., lasergoat/jira-mcp)
  • Git installed and configured

Installation Instructions

Claude, please follow these steps to install the three custom slash commands:

Step 1: Create the commands directory

mkdir -p .claude/commands

Step 2: Create the command files

Create the following three files in the .claude/commands/ directory:

File 1: featurestart.md

Create .claude/commands/featurestart.md with this content:

---
description: Start work on a Jira ticket - creates branch and updates ticket
allowed-tools: ["Bash", "mcp__jira-mcp__get-ticket", "mcp__jira-mcp__add-comment", "TodoWrite"]
---

# Start Feature Development

## Prerequisites Check
First verify that required tools are available:
- gh CLI: Run `gh --version`
- Jira MCP: Check if jira-mcp tools are available

## Process

1. **Handle uncommitted changes**
   - Run `git status` to check for changes
   - If changes exist, ask user: "You have uncommitted changes. Would you like to: 1) Stash them, 2) Commit them, or 3) Cancel?"
   - If commit is chosen, ask if they should be pushed to origin

2. **Get Jira ticket**
   - If $ARGUMENTS is provided, use it as the ticket ID
   - Otherwise, prompt: "What Jira ticket ID would you like to work on?"
   - Fetch ticket details using `mcp__jira-mcp__get-ticket`

3. **Create feature branch**
   - Branch name format: ticket ID in lowercase (e.g., vip-123)
   - Checkout new branch: `git checkout -b {branch-name}`

4. **Update Jira ticket**
   - Add comment to ticket: "🚀 Development started on branch: `{branch-name}`"
   - Include any implementation details previously discussed

5. **Set up for conventional commits**
   - Store ticket ID in uppercase format (e.g., VIP-123)
   - Inform user: "I'll use {TICKET-ID} for conventional commits in this feature"

6. **Create todo list**
   - Use TodoWrite to track the feature work
   - Add initial task: "Implement {ticket summary}"

File 2: featuredone.md

Create .claude/commands/featuredone.md with this content:

---
description: Complete feature - commit, push, create PR, update Jira
allowed-tools: ["Bash", "mcp__jira-mcp__get-ticket", "mcp__jira-mcp__add-comment", "mcp__gh-cli__gh_execute", "TodoWrite"]
---

# Complete Feature Development

## Prerequisites Check
Verify required tools are available:
- gh CLI: Run `gh --version`
- Jira MCP: Check if jira-mcp tools are available

## Process

1. **Commit final changes**
   - Run `git status` to check for uncommitted changes
   - If changes exist:
     - Get ticket ID from current branch name
     - Create commit using conventional format
     - Example: `feat(VIP-123): implement user authentication`

2. **Push to origin**
   - Ask user: "Ready to push all commits to origin?"
   - If yes: `git push -u origin $(git branch --show-current)`

3. **Create Pull Request**
   - Get current branch: `git branch --show-current`
   - Extract ticket ID from branch name
   - Fetch ticket details for context
   - Create PR using gh CLI:
   
```bash
gh pr create \
  --title "feat(TICKET-ID): {ticket summary}" \
  --body "## Jira Ticket
[TICKET-ID](https://your-instance.atlassian.net/browse/TICKET-ID)

## Summary
{Detailed description of changes}

## Changes Made
- List key changes
- Include technical details

## Dependencies
- Note any dependent PRs or services
- External dependencies

## Testing
- How to test these changes
- Any special test scenarios

## Checklist
- [ ] Tests pass
- [ ] Code reviewed
- [ ] Documentation updated"
\```

4. **Update Jira ticket**
   - Get the PR URL from gh output
   - Add comment to Jira ticket:
     "✅ Pull Request created: {PR_URL}
     
     Summary of completed work:
     - {brief summary of what was implemented}"

5. **Update todo list**
   - Mark feature tasks as completed

File 3: commit.md

Create .claude/commands/commit.md with this content:

---
description: Create a conventional commit with automatic ticket ID detection
allowed-tools: ["Bash", "Read", "Grep"]
---

# Create Conventional Commit

## Process

1. **Analyze changes**
   - Run `git status` to see file changes
   - Run `git diff --staged` for staged changes
   - If no staged changes, run `git diff` to see all changes
   - Read key changed files to understand context

2. **Determine commit type**
   Based on the changes, select appropriate type:
   - `feat`: New feature or functionality
   - `fix`: Bug fix
   - `docs`: Documentation only changes
   - `style`: Code style changes (formatting, semicolons, etc)
   - `refactor`: Code changes that neither fix bugs nor add features
   - `test`: Adding or modifying tests
   - `chore`: Maintenance tasks, dependency updates
   - `perf`: Performance improvements
   - `ci`: CI/CD changes

3. **Extract ticket ID**
   - Get current branch: `git branch --show-current`
   - If branch matches pattern like "vip-123" or "proj-888":
     - Convert to uppercase for commit (VIP-123, PROJ-888)
   - If no ticket pattern found:
     - Ask user: "Include a ticket ID? (optional, press Enter to skip)"

4. **Stage and commit**
   - If no staged changes: `git add -A`
   - Create commit message:
     - With ticket: `{type}({TICKET-ID}): {concise summary}`
     - Without ticket: `{type}: {concise summary}`
   - Execute: `git commit -m "{message}"`
   - Important: Do NOT mention Claude, AI, or automated generation
   - Do NOT push unless explicitly requested

5. **Confirm**
   - Show the commit with `git log -1 --oneline`
   - Inform user: "Commit created. Run 'git push' when ready to push."

Step 3: Verify Installation

After creating all files, verify they're installed:

ls -la .claude/commands/

You should see:

  • featurestart.md
  • featuredone.md
  • commit.md

Step 4: Test the Commands

The commands are now available as:

  • /project:featurestart [TICKET-ID] - Start work on a Jira ticket
  • /project:featuredone - Complete feature and create PR
  • /project:commit - Make a conventional commit

Usage Example

# Start working on ticket VIP-123
/project:featurestart VIP-123

# Make changes to code...

# Commit your changes
/project:commit

# When feature is complete
/project:featuredone

Notes

  • These commands assume your Jira instance URL is configured in the Jira MCP
  • The commands use conventional commit format
  • Branch names are lowercase ticket IDs
  • Commit messages use uppercase ticket IDs
  • All commands preserve your git history and don't force push

Troubleshooting

If commands don't appear:

  1. Ensure files are in .claude/commands/ (project-specific) or ~/.claude/commands/ (user-wide)
  2. Restart Claude Code or reload the window
  3. Check file permissions are readable

To share these commands with others, give them this gist URL and tell them: "Ask Claude to download this gist and follow the installation instructions"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment