121 lines
3.2 KiB
Markdown
121 lines
3.2 KiB
Markdown
---
|
|
name: ship-it
|
|
description: This skill should be used when the user wants to ticket, branch, commit, and open a PR in one shot. It creates a Jira ticket from conversation context, assigns it, moves it to In Progress, creates a branch, commits changes, pushes, and opens a PR. Triggers on "ship it", "ticket and PR this", "put up a PR", "let's ship this", or any request to package completed work into a ticket + PR.
|
|
---
|
|
|
|
# Ship It
|
|
|
|
End-to-end workflow: Jira ticket + branch + commit + push + PR from conversation context. Run after a fix or feature is done and needs to be formally shipped.
|
|
|
|
## Constants
|
|
|
|
- **Jira cloudId**: `9cbcbbfd-6b43-42ab-a91c-aaaafa8b7f32`
|
|
- **Jira project**: `ZAS`
|
|
- **Issue type**: `Story`
|
|
- **Assignee accountId**: `712020:62c4d18e-a579-49c1-b228-72fbc63186de`
|
|
- **PR target branch**: `stg` (unless specified otherwise)
|
|
|
|
## Workflow
|
|
|
|
### Step 1: Gather Context
|
|
|
|
Analyze the conversation above to determine:
|
|
- **What was done** — the fix, feature, or change
|
|
- **Why** — the problem or motivation
|
|
- **Which files changed** — run `git diff` and `git status` to see the actual changes
|
|
|
|
Synthesize a ticket summary (under 80 chars, imperative mood) and a brief description. Do not ask the user to describe the work — extract it from conversation context.
|
|
|
|
### Step 2: Create Jira Ticket
|
|
|
|
Use `/john-voice` to draft the ticket content, then create via MCP:
|
|
|
|
```
|
|
mcp__atlassian__createJiraIssue
|
|
cloudId: 9cbcbbfd-6b43-42ab-a91c-aaaafa8b7f32
|
|
projectKey: ZAS
|
|
issueTypeName: Story
|
|
summary: <ticket title>
|
|
description: <ticket body>
|
|
assignee_account_id: 712020:62c4d18e-a579-49c1-b228-72fbc63186de
|
|
contentFormat: markdown
|
|
```
|
|
|
|
Extract the ticket key (e.g. `ZAS-123`) from the response.
|
|
|
|
### Step 3: Move to In Progress
|
|
|
|
Get transitions and find the "In Progress" transition ID:
|
|
|
|
```
|
|
mcp__atlassian__getTransitionsForJiraIssue
|
|
cloudId: 9cbcbbfd-6b43-42ab-a91c-aaaafa8b7f32
|
|
issueIdOrKey: <ticket key>
|
|
```
|
|
|
|
Then apply the transition:
|
|
|
|
```
|
|
mcp__atlassian__transitionJiraIssue
|
|
cloudId: 9cbcbbfd-6b43-42ab-a91c-aaaafa8b7f32
|
|
issueIdOrKey: <ticket key>
|
|
transition: { "id": "<transition_id>" }
|
|
```
|
|
|
|
### Step 4: Create Branch
|
|
|
|
Create and switch to a new branch named after the ticket:
|
|
|
|
```bash
|
|
git checkout -b <ticket-key>
|
|
```
|
|
|
|
Example: `git checkout -b ZAS-123`
|
|
|
|
### Step 5: Commit Changes
|
|
|
|
Stage and commit all relevant changes. Use the ticket key as a prefix in the commit message. Follow project git conventions (lowercase, no periods, casual).
|
|
|
|
```bash
|
|
git add <specific files>
|
|
git commit -m "<ticket-key> <short description>"
|
|
```
|
|
|
|
Example: `ZAS-123 fix candidate email field mapping`
|
|
|
|
Include the co-author trailer:
|
|
```
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
```
|
|
|
|
### Step 6: Push and Open PR
|
|
|
|
Push the branch:
|
|
|
|
```bash
|
|
git push -u origin <ticket-key>
|
|
```
|
|
|
|
Use `/john-voice` to write the PR title and body. Create the PR:
|
|
|
|
```bash
|
|
gh pr create --title "<PR title>" --base stg --body "<PR body>"
|
|
```
|
|
|
|
PR body format:
|
|
|
|
```markdown
|
|
## Summary
|
|
<2-3 bullets describing the change>
|
|
|
|
## Jira
|
|
[<ticket-key>](https://discoverorg.atlassian.net/browse/<ticket-key>)
|
|
|
|
## Test plan
|
|
<bulleted checklist>
|
|
```
|
|
|
|
### Step 7: Report
|
|
|
|
Output the ticket URL and PR URL to the user.
|