Merge upstream origin/main with local fork additions preserved
Accept upstream's ce-review pipeline rewrite (6-stage persona-based architecture with structured JSON, confidence gating, three execution modes). Retire 4 overlapping review agents (security-sentinel, performance-oracle, data-migration-expert, data-integrity-guardian) replaced by upstream equivalents. Add 5 local review agents as conditional personas in the persona catalog (kieran-python, tiangolo- fastapi, kieran-typescript, julik-frontend-races, architecture- strategist). Accept upstream skill renames (file-todos→todo-create, resolve_todo_ parallel→todo-resolve), port local Assessment and worktree constraint additions to new files. Merge best-practices-researcher with upstream platform-agnostic discovery + local FastAPI mappings. Remove Rails/Ruby skills (dhh-rails-style, andrew-kane-gem-writer, dspy-ruby) per fork's FastAPI pivot. Component counts: 36 agents, 48 skills, 7 commands. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
120
plugins/compound-engineering/skills/ship-it/SKILL.md
Normal file
120
plugins/compound-engineering/skills/ship-it/SKILL.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user