Synced 79 commits from EveryInc/compound-engineering-plugin upstream while
preserving fork-specific customizations (Python/FastAPI pivot, Zoominfo-internal
review agents, deploy-wiring operational lessons, custom personas).
## Triage decisions (15 conflicts resolved)
Keep deleted (7) -- fork already removed these in prior cleanups:
- agents/design/{design-implementation-reviewer,design-iterator,figma-design-sync}
(no fork successor; backend-Python focus doesn't need UI/Figma agents)
- agents/docs/ankane-readme-writer (replaced by python-package-readme-writer)
- agents/review/{data-migration-expert,performance-oracle,security-sentinel}
(replaced by *-reviewer naming convention: data-migrations-reviewer,
performance-reviewer, security-reviewer)
Keep local (1):
- agents/workflow/lint.md (Python tooling: ruff/mypy/djlint/bandit; upstream
deleted the file). Fixed pre-existing duplicate "2." numbering bug.
Restore from upstream (1):
- agents/review/data-integrity-guardian.md (kept for GDPR/CCPA privacy
compliance angle not covered by data-migrations-reviewer)
Merge both (6) -- upstream structural wins layered with fork intent:
- agents/research/best-practices-researcher.md (upstream <examples> removal +
fork's Rails/Ruby -> Python/FastAPI translations)
- skills/ce-brainstorm/SKILL.md (universal-brainstorming routing + Slack
context + non-obvious angles + fork's Deploy wiring flag)
- skills/ce-plan/SKILL.md (universal-planning routing + planning-bootstrap +
fork's two Deploy wiring check bullets)
- skills/ce-review/SKILL.md (Run ID, model tiering haiku->sonnet, compact-JSON
artifact contract, file-type awareness, cli-readiness-reviewer + fork's
zip-agent-validator, design-conformance-reviewer, Stage 6 Zip Agent
Validation)
- skills/ce-review/references/persona-catalog.md (cli-readiness row + adversarial
refinement + fork's Language & Framework Conditional layer; 22 personas total)
- skills/ce-work/SKILL.md (Parallel Safety Check, parallel-subagent constraints,
Phase 3-4 compression + fork's deploy-values self-review row, with duplicate
checklist bullet collapsed to single occurrence)
## Auto-applied (no triage needed)
- 225 remote-only files: accepted as-is (new docs, brainstorms, plans,
upstream skills, tests, scripts)
- 70 local-only files: 46 preserved as-is (kieran-python, tiangolo-fastapi,
zip-agent-validator, design-conformance-reviewer, essay/proof commands,
excalidraw-png-export, etc.); 24 stayed deleted (dhh-rails-style,
andrew-kane-gem-writer, dspy-ruby Ruby skills no longer needed)
## README updated
- Removed Design section (3 deleted agents)
- Removed deleted Review entries (data-migration-expert, dhh-rails-reviewer,
kieran-rails-reviewer, performance-oracle, security-sentinel)
- Added new Review entries: design-conformance-reviewer, previous-comments-reviewer,
tiangolo-fastapi-reviewer, zip-agent-validator
- Workflow: added lint
- Docs: replaced ankane-readme-writer with python-package-readme-writer
## Known issues (not introduced by merge decisions)
- 9 detect-project-type.sh tests fail on macOS bash 3.2 (script uses
`declare -A` which requires bash 4+). Upstream regression in commit 070092d
(#568). Resolution: install bash 4+ via `brew install bash` locally;
upstream fix tracked separately.
- 2 review-skill-contract tests reference deleted agents (dhh-rails-reviewer,
data-migration-expert). Pre-existing fork inconsistency, not new.
bun run release:validate: passes (46 agents, 51 skills, 0 MCP servers)
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.
|