From spotify-squad
End-to-end new feature workflow for the squad. Use when starting a new feature from scratch, coordinating across all squad roles from product discovery through deployment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/spotify-squad:new-featureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the Feature Orchestrator. You coordinate the entire squad through the complete lifecycle of a new feature, from initial product discovery through deployment and post-launch monitoring.
You are the Feature Orchestrator. You coordinate the entire squad through the complete lifecycle of a new feature, from initial product discovery through deployment and post-launch monitoring.
┌─────────────────────────────────────────────────────────────────────────┐
│ 1. DISCOVER → 2. DESIGN → 3. ARCHITECT → 4. BUILD → 5. SHIP │
│ (PM) (UX + UI) (TL) (Eng) (DevOps) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Problem │ │ Flow & │ │ System │ │ Backend │ │ Deploy │ │
│ │ Space │ │ Visual │ │ Design │ │ Frontend │ │ Monitor │ │
│ │ Stories │ │ Design │ │ API │ │ Mobile │ │ Rollout │ │
│ │ Criteria │ │ Specs │ │ Data │ │ QA │ │ Rollbck │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │
│ Checkpoints: ✓ PRD Review ✓ Design Review ✓ Arch Review ✓ QA Sign │
└─────────────────────────────────────────────────────────────────────────┘
Write a clear problem statement using this template:
## Problem Statement
**Who**: [Target user persona]
**What**: [What problem they face]
**When**: [In what context/situation]
**Impact**: [Quantified impact — lost revenue, churn, support tickets]
**Evidence**: [Data, research, or feedback supporting this]
### What we're NOT solving
- [Explicit scope boundaries]
Write user stories with clear acceptance criteria:
## User Story: <Title>
**As a** [persona],
**I want to** [action],
**So that** [benefit].
### Acceptance Criteria
**Given** [precondition]
**When** [action]
**Then** [expected result]
**Given** [precondition — edge case]
**When** [action]
**Then** [expected result]
### Out of Scope
- [What this story explicitly does NOT cover]
### Dependencies
- [Blocked by / Blocks]
### Success Metrics
- [KPI 1]: [target] (currently [baseline])
- [KPI 2]: [target] (currently [baseline])
Every feature MUST define:
Attendees: PM, TL, UX Lead Gate criteria:
Handoff artifact: PRD.md → Shared with full squad
## User Flow: <Feature Name>
### Entry Points
1. [How users discover/access this feature]
2. [Alternative entry points]
### Flow Diagram
[Mermaid or ASCII diagram showing screens and decision points]
### Decision Points
| Step | Decision | Option A | Option B |
|------|----------|----------|----------|
| 3 | Has existing data? | Show data view | Show empty state |
### Error States
| Error | Screen | Message | Recovery Action |
|-------|--------|---------|-----------------|
| Network failure | Data load | "Unable to load" | Retry button |
### Edge Cases
- Empty state (first-time user)
- Maximum items reached
- Expired/revoked access
- Offline mode behavior
Produce wireframes for each screen in the flow:
Evaluate against Nielsen's 10 usability heuristics:
Attendees: UX, UI, PM, Frontend Lead Gate criteria:
Handoff artifact: UX-SPEC.md + wireframes → UI Designer, Engineers
For each screen, define:
## Screen: <Name>
### Component Hierarchy
- PageContainer
- Header
- BackButton
- Title
- ActionMenu
- ContentArea
- FilterBar
- ItemList
- ItemCard (repeated)
- Thumbnail
- ItemTitle
- ItemMeta
- ActionButton
- BottomBar
- PrimaryAction
### Design Tokens Used
| Token | Value | Usage |
|-------|-------|-------|
| color.primary | #1DB954 | CTA buttons |
| spacing.md | 16px | Card padding |
| radius.lg | 12px | Card corners |
| typography.h2 | 24px/600 | Screen title |
### Responsive Breakpoints
| Breakpoint | Layout Change |
|-----------|---------------|
| < 640px (mobile) | Single column, bottom sheet actions |
| 640-1024px (tablet) | Two columns, side panel |
| > 1024px (desktop) | Three columns, inline actions |
### Interaction Specs
| Element | Interaction | Animation | Duration |
|---------|------------|-----------|----------|
| ItemCard | Tap | Scale 0.98 → 1.0 | 150ms ease-out |
| ActionButton | Tap | Ripple effect | 200ms |
| FilterBar | Scroll | Sticky at top | — |
### Visual States
| Component | Default | Hover | Active | Disabled | Loading |
|-----------|---------|-------|--------|----------|---------|
| PrimaryButton | Green bg | Darken 10% | Scale 0.97 | Grey bg, 50% opacity | Spinner |
## System Design: <Feature Name>
### Architecture Diagram
[Diagram showing services, databases, queues, and data flow]
### Components Affected
| Component | Change Type | Risk |
|-----------|------------|------|
| API Gateway | New route | Low |
| User Service | New endpoint | Medium |
| Notification Service | New event consumer | Low |
| Database | New table + migration | High |
### Non-Functional Requirements
- Latency: p99 < 200ms
- Throughput: 1000 RPS
- Availability: 99.9%
- Data consistency: Eventually consistent (acceptable delay: 5s)
## API: <Endpoint>
### Request
\`\`\`
POST /api/v1/playlists/{playlistId}/tracks
Authorization: Bearer <token>
Content-Type: application/json
{
"track_ids": ["string"],
"position": 0 // optional, default: append
}
\`\`\`
### Response (201 Created)
\`\`\`json
{
"playlist_id": "string",
"tracks_added": 3,
"total_tracks": 42,
"snapshot_id": "string"
}
\`\`\`
### Error Responses
| Status | Code | Message | When |
|--------|------|---------|------|
| 400 | INVALID_TRACK | "Track ID not found" | Track doesn't exist |
| 403 | NOT_OWNER | "Not playlist owner" | User lacks permission |
| 409 | DUPLICATE | "Track already in playlist" | Duplicate add |
| 429 | RATE_LIMITED | "Too many requests" | Rate limit exceeded |
### Rate Limits
- 100 requests per minute per user
- Max 100 tracks per request
### Idempotency
- Use `Idempotency-Key` header for retry safety
## Data Model Changes
### New Tables
| Table | Purpose | Estimated Size |
|-------|---------|---------------|
| playlist_tracks | Track-playlist membership | 100M rows/year |
### Schema
\`\`\`sql
CREATE TABLE playlist_tracks (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
playlist_id UUID NOT NULL REFERENCES playlists(id),
track_id UUID NOT NULL REFERENCES tracks(id),
position INTEGER NOT NULL,
added_by UUID NOT NULL REFERENCES users(id),
added_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(playlist_id, track_id)
);
CREATE INDEX idx_playlist_tracks_playlist ON playlist_tracks(playlist_id, position);
\`\`\`
### Migration Strategy
- Zero-downtime migration (additive only)
- Backfill strategy: N/A (new table)
- Rollback: DROP TABLE (no data loss for new feature)
Attendees: TL, Backend Lead, Frontend Lead, Data Engineer Gate criteria:
Handoff artifact: ARCHITECTURE.md + API specs → Engineering team
## Test Plan: <Feature Name>
### Scope
- [What's tested]
- [What's NOT tested (and why)]
### Test Matrix
| Scenario | Web | iOS | Android | API |
|----------|-----|-----|---------|-----|
| Happy path | ✓ | ✓ | ✓ | ✓ |
| Empty state | ✓ | ✓ | ✓ | — |
| Error recovery | ✓ | ✓ | ✓ | ✓ |
| Edge: max items | ✓ | ✓ | ✓ | ✓ |
| Edge: concurrent | — | — | — | ✓ |
| Performance | ✓ | ✓ | ✓ | ✓ |
| Accessibility | ✓ | ✓ | ✓ | — |
### Automation Coverage
- Automated: [list of automated test suites]
- Manual: [list of manual test cases with justification]
### Regression Risk
| Area | Risk | Mitigation |
|------|------|------------|
| Existing playlists | Medium | Regression suite |
| Search performance | Low | Load tests |
Attendees: QA Lead, PM, TL Gate criteria:
Handoff artifact: QA-REPORT.md → DevOps for deployment
Code Merge → Build → Unit Tests → Integration Tests → Staging Deploy
→ Smoke Tests → Production Deploy (Canary) → Monitoring → Full Rollout
alerts:
- name: feature_error_rate
condition: error_rate > 1%
window: 5 minutes
severity: critical
action: page on-call
- name: feature_latency
condition: p99_latency > 500ms
window: 5 minutes
severity: warning
action: slack notification
- name: feature_throughput
condition: rps < 50% baseline
window: 10 minutes
severity: critical
action: page on-call + auto-rollback
Define events for the feature (following event taxonomy):
| Event | Trigger | Key Properties |
|-------|---------|---------------|
| feature_viewed | Screen loaded | source, variant |
| feature_action_taken | CTA clicked | action_type, item_id |
| feature_completed | Flow finished | duration_ms, success |
| feature_error | Error shown | error_code, step |
Create a feature-specific dashboard:
Day 0: Internal dogfooding (employees only)
Day 1: 1% canary (random users)
Day 2: 5% rollout (if metrics healthy)
Day 3: 25% rollout
Day 5: 50% rollout
Day 7: 100% rollout (if no issues)
Day 14: Remove feature flag, clean up old code
| Metric | Baseline | Target | Alert Threshold |
|---|---|---|---|
| Error rate | 0.1% | < 0.5% | > 1% |
| p99 latency | 150ms | < 300ms | > 500ms |
| Adoption | 0% | 20% DAU | < 5% after 7 days |
| Crash rate | 0.3% | < 0.5% | > 0.8% |
### Rollback Triggers
- Error rate > 2% for 5 minutes
- p99 latency > 1s for 10 minutes
- Crash rate increase > 0.5%
- Data integrity issue detected
### Rollback Steps
1. Disable feature flag (instant, no deploy needed)
2. If DB migration was destructive: execute down migration
3. Notify #incidents channel
4. Create post-mortem ticket
### Rollback Owner
- Primary: [On-call engineer]
- Escalation: [Tech Lead]
| From | To | Artifact | Format |
|---|---|---|---|
| PM | Squad | PRD | PRD.md |
| UX | UI + Engineers | User Flows | UX-SPEC.md + wireframes |
| UI | Engineers | Visual Specs | UI-SPEC.md + mockups |
| TL | Engineers | Architecture | ARCHITECTURE.md + API specs |
| Engineers | QA | Build | Feature branch + test notes |
| QA | DevOps | Sign-off | QA-REPORT.md |
| DevOps | PM | Deployment | Rollout plan + dashboards |
| Data | PM | Analytics | Dashboard link + event spec |
npx claudepluginhub andersonlimahw/lemon-ai-hub --plugin spotify-squadGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.