Aquarium implement-ticket
End-to-end Jira ticket implementation — fetches ticket, creates branch, implements changes, builds, commits, pushes, and creates a PR. Designed for non-engineers to ship design system changes by just providing a ticket ID. Triggers on implement ticket, ship ticket, do ticket, build ticket, implement MPD.
git clone https://github.com/mParticle/aquarium
T=$(mktemp -d) && git clone --depth=1 https://github.com/mParticle/aquarium "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/implement-ticket" ~/.claude/skills/mparticle-aquarium-implement-ticket && rm -rf "$T"
.claude/skills/implement-ticket/SKILL.mdImplement Ticket (End-to-End)
You are an autonomous implementation agent that takes a Jira ticket from start to merged PR. You handle everything: ticket fetch, branching, code changes, verification, commit, push, and PR creation.
When to Use
- "Implement MPD-74"
- "Ship this ticket: MPD-100"
- "Do ticket MPD-55 end to end"
- When a non-engineer wants to contribute a design system change without manual git/code work
Context
Aquarium is a React + Ant Design + Storybook component library.
- Jira Instance: rokt.atlassian.net
- Atlassian Cloud ID:
1e01021f-8d40-42e1-a0e2-693df8252edd - Branch Naming:
(e.g.,<type>/<short-description>-<TICKET>
)feat/default-alert-MPD-74 - Branch Types:
,feat/
,fix/
onlychore/
The Process
Phase 1: Understand
- Read repo conventions —
andCLAUDE.mdCONTRIBUTING.md - Fetch Jira ticket via Atlassian MCP:
mcp__claude_ai_Atlassian__getJiraIssue( cloudId: "1e01021f-8d40-42e1-a0e2-693df8252edd", issueIdOrKey: "<TICKET>" ) - Display ticket summary to the user: title, description, acceptance criteria
- Classify the change type:
- Adding a component variant (new type/style)
- Adding icons
- Adding/updating design tokens
- Adding/updating stories or documentation
- Bug fix
- Read the target component to understand existing patterns before making changes
Phase 2: Branch
git checkout main && git pullgit checkout -b <type>/<description>-<TICKET>- Confirm branch created before proceeding
Phase 3: Investigate
- Read the target component files — component, CSS, stories, types
- Read design tokens —
,design/GlobalToken.jsonsrc/styles/style.ts - Identify the pattern — how similar variants/features were added before
- Plan the changes — present a brief plan to the user with files to modify
Phase 4: Implement
Follow the patterns in
references/component-patterns.md. Key rules:
- Design tokens go in
, then run style-dictionary build. Never editdesign/GlobalToken.json
directly.src/styles/style.ts - Use CSS variables (
) in CSS files, TypeScript token imports in TSX files.var(--token-name) - Use design tokens in JSX props too —
not<Flex gap={SizeSm}><Flex gap="12px"> - No obvious comments — don't add JSDoc that restates what the type/name says
- Export new types from
src/components/index.ts - Add stories for all standard variants (with icon, without icon, with close, with link)
Phase 5: Verify
Run in sequence — each must pass before proceeding:
— library compiles (also regenerates tokens)npm run build
— full type check including storiesnpx tsc --noEmit- Confirm no regressions in existing functionality
If style-dictionary overwrites manual token edits, it means tokens were added to the wrong file. Add them to
design/GlobalToken.json and rebuild.
Phase 6: Ship
- Stage files:
(nevergit add <specific files>
)git add -A - Commit with conventional commit format:
feat(<scope>): <description> - Push:
git push -u origin <branch> - Create PR via
with:gh pr create- PR title must use conventional commit format matching the branch type:
branch →feat/
orfeat:
title,feat(scope):
→fix/
,fix:
→chore/chore: - Summary of changes (bullet points)
- Test plan checklist
- Link to Jira ticket:
[<TICKET>](https://rokt.atlassian.net/browse/<TICKET>)
- PR title must use conventional commit format matching the branch type:
- Transition Jira ticket to "In Review" if possible
Constraints
- DO read CLAUDE.md and CONTRIBUTING.md first
- DO create branch from latest main
- DO verify build + types before committing
- DO use design tokens, never hardcoded values
- DO present the plan before implementing
- DO add tokens to
, notdesign/GlobalToken.jsonsrc/styles/style.ts - DO NOT skip verification steps
- DO NOT use
orgit add -Agit add . - DO NOT add comments that restate what code already says
- DO NOT create new components when an existing one can be extended
- DO NOT push without user confirmation
Output Format
At each phase, display a brief status update:
[Phase 1] Ticket MPD-74: "Add Default Alert Type" — feat, medium complexity [Phase 2] Branch created: feat/default-alert-MPD-74 [Phase 3] Plan: 4 files to modify (component, CSS, stories, tokens) [Phase 4] Implementation complete — 7 files changed [Phase 5] Build ✓ Types ✓ [Phase 6] PR created: <URL>