aped-method 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aped-method",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "type": "module",
5
5
  "description": "Scaffold the APED pipeline (Analyze, PRD, Epics, Dev, Review) into any Claude Code project",
6
6
  "bin": {
@@ -55,7 +55,7 @@ Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-r/SKILL.md
55
55
  path: `${c.commandsDir}/aped-ux.md`,
56
56
  content: `---
57
57
  name: aped-ux
58
- description: 'Designs UX specifications from PRD screen flows, wireframes, component inventory. Use when user says "design UX", "create wireframes", "UX spec", "aped ux", or invokes /aped-ux. Runs between PRD and Epics phases.'
58
+ description: 'Designs UX via the ANF framework (Assemble design system, Normalize with React preview, Fill all screens). Use when user says "design UX", "UX spec", "aped ux", or invokes /aped-ux. Runs between PRD and Epics phases.'
59
59
  ---
60
60
 
61
61
  Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-ux/SKILL.md
@@ -552,7 +552,186 @@ mobile_app,"iOS,Android,app,mobile,iPhone,iPad","Native or cross-platform?;Offli
552
552
  saas_b2b,"SaaS,B2B,platform,dashboard,teams,enterprise","Multi-tenant?;Permission model?;Subscription tiers?;Integrations?;Compliance?","tenant_model;rbac_matrix;subscription_tiers;integration_list;compliance_reqs","cli_interface;mobile_first","compliance requirements;integration guides","Workflow automation;AI agents"
553
553
  cli_tool,"CLI,command,terminal,bash,script","Interactive or scriptable?;Output formats?;Config method?;Shell completion?","command_structure;output_formats;config_schema;scripting_support","visual_design;ux_principles;touch_interactions","CLI design patterns;shell integration","Natural language CLI;AI commands"`;
554
554
 
555
- const UX_PATTERNS = `# UX Screen Patterns Catalog
555
+ const UX_PATTERNS = `# UX Design Rules — Priority-Ranked
556
+
557
+ Rules ranked by impact. Apply in order — never skip a higher-priority rule for a lower one.
558
+
559
+ ---
560
+
561
+ ## P1: Accessibility (CRITICAL)
562
+
563
+ - Contrast ≥ 4.5:1 normal text, ≥ 3:1 large text (WCAG AA)
564
+ - Visible focus rings (2-4px) on ALL interactive elements
565
+ - Alt text on meaningful images; decorative images use alt=""
566
+ - aria-label on icon-only buttons
567
+ - Tab order matches visual order; full keyboard support
568
+ - Form inputs have visible labels (not placeholder-only)
569
+ - Skip-to-main-content link for keyboard users
570
+ - Heading hierarchy: sequential h1→h6, no level skipping
571
+ - Information never relies on color alone (add icon/text)
572
+ - Support dynamic text scaling (no truncation on resize)
573
+ - Respect prefers-reduced-motion — disable animations when set
574
+ - Screen reader: meaningful labels, logical reading order
575
+ - Escape routes: cancel/back in modals and multi-step flows
576
+ - Preserve system keyboard shortcuts
577
+
578
+ ## P2: Touch & Interaction (CRITICAL)
579
+
580
+ - Touch targets ≥ 44x44pt (iOS) / 48x48dp (Android)
581
+ - Minimum 8px gap between touch targets
582
+ - Primary interactions via tap, never hover-only
583
+ - Loading buttons: disable during async + show spinner
584
+ - Error feedback: clear message near the problem field
585
+ - cursor:pointer on clickable web elements
586
+ - No horizontal swipe conflicts on main content
587
+ - touch-action:manipulation to kill 300ms tap delay
588
+ - Use platform-standard gestures consistently
589
+ - Don't block system gestures (back swipe, control center)
590
+ - Visual press feedback (ripple/opacity) within 80-150ms
591
+ - Haptic feedback for confirmations only — no overuse
592
+ - Always provide visible controls alongside gestures
593
+ - Keep targets away from notch, Dynamic Island, edges
594
+ - No precision-required taps on tiny icons
595
+
596
+ ## P3: Performance (HIGH)
597
+
598
+ - Images: WebP/AVIF, responsive srcset, lazy load below fold
599
+ - Declare width/height or aspect-ratio to prevent CLS
600
+ - font-display:swap, preload only critical fonts
601
+ - Critical CSS above the fold; lazy load the rest
602
+ - Code split by route/feature
603
+ - Third-party scripts: async/defer, audit necessity
604
+ - Batch DOM reads then writes to reduce reflows
605
+ - Reserve space for async content (no content jumping)
606
+ - Virtualize lists with 50+ items
607
+ - Keep per-frame work under 16ms for 60fps
608
+ - Skeleton/shimmer for operations >300ms
609
+ - Input latency under 100ms for taps/scrolls
610
+ - Debounce/throttle high-frequency events (scroll, resize, input)
611
+ - Provide offline state messaging
612
+ - Degraded mode for slow networks
613
+
614
+ ## P4: Style & Consistency (HIGH)
615
+
616
+ - Match visual style to product type and audience
617
+ - Same style across all screens — no mixed aesthetics
618
+ - SVG icons only (Lucide, Heroicons) — never emoji as structural icons
619
+ - Color palette derived from product domain/industry
620
+ - Effects (shadows, blur, radius) aligned with chosen style
621
+ - Respect platform idioms (iOS HIG vs Material Design)
622
+ - Hover/pressed/disabled states visually distinct
623
+ - Consistent elevation/shadow scale across components
624
+ - Design light and dark variants together from day 1
625
+ - One icon set, one visual language throughout
626
+ - Prefer native controls over custom when possible
627
+ - One primary CTA per screen — secondary actions subordinate
628
+
629
+ ## P5: Layout & Responsive (HIGH)
630
+
631
+ - viewport meta: width=device-width, initial-scale=1
632
+ - Mobile-first: design small, scale up
633
+ - Systematic breakpoints: 375 / 768 / 1024 / 1440
634
+ - Minimum 16px body text on mobile
635
+ - Line length: 35-60 chars mobile, 60-75 chars desktop
636
+ - No horizontal scroll on any breakpoint
637
+ - 4pt/8dp spacing scale consistently applied
638
+ - Consistent max-width container on desktop (1200-1440px)
639
+ - Layered z-index scale (avoid arbitrary values)
640
+ - Safe padding for fixed/sticky elements
641
+ - Avoid nested scroll regions
642
+ - Prefer min-h-dvh over 100vh (mobile address bar)
643
+ - Content priority: core content first on mobile
644
+ - Visual hierarchy via size, spacing, and contrast
645
+
646
+ ## P6: Typography & Color (MEDIUM)
647
+
648
+ - Body line-height: 1.5-1.75
649
+ - Font pairing: match heading/body personalities
650
+ - Consistent type scale: 12/14/16/18/24/32
651
+ - Weight hierarchy: bold headings (600-700), regular body (400)
652
+ - Semantic color tokens: primary, secondary, error, warning, success, surface
653
+ - Dark mode: desaturated/lighter variants, NOT inverted colors
654
+ - Foreground/background pairs meet 4.5:1 (AA) or 7:1 (AAA)
655
+ - Prefer text wrapping over truncation; ellipsis only with tooltip
656
+ - Tabular figures for data columns, prices, timers
657
+ - Intentional whitespace to group and separate
658
+
659
+ ## P7: Animation (MEDIUM)
660
+
661
+ - Duration: 150-300ms micro-interactions, ≤400ms complex, never >500ms
662
+ - Animate transform and opacity ONLY (GPU composited)
663
+ - ease-out entering, ease-in exiting
664
+ - Every animation must express cause-effect (meaningful motion)
665
+ - Max 1-2 animated elements per view transition
666
+ - Exit animations ~60-70% of enter duration
667
+ - Stagger list items by 30-50ms
668
+ - Animations must be interruptible by user
669
+ - Never block user input during animation
670
+ - Subtle scale feedback on press (0.95-1.05)
671
+ - Real-time response to drag/swipe/pinch gestures
672
+ - Animations must not cause CLS (no layout shift)
673
+ - Modal: animate from trigger source
674
+ - Navigation: forward = left/up, backward = right/down
675
+
676
+ ## P8: Forms & Feedback (MEDIUM)
677
+
678
+ - Visible label per input — never placeholder-only
679
+ - Error shown below the field, near the problem
680
+ - Submit: show loading → then success/error state
681
+ - Mark required fields (asterisk + sr-only text)
682
+ - Empty states: helpful message + CTA action
683
+ - Toast: auto-dismiss 3-5s, use aria-live="polite"
684
+ - Confirm before destructive actions
685
+ - Persistent helper text below complex inputs
686
+ - Disabled: opacity 0.38-0.5 + cursor change + no tap
687
+ - Progressive disclosure: reveal options step by step
688
+ - Validate on blur, show error after user finishes typing
689
+ - Semantic input types (email, tel, number, url)
690
+ - Password show/hide toggle
691
+ - Support autocomplete/textContentType for autofill
692
+ - Allow undo for destructive actions
693
+ - Auto-focus first invalid field after submit
694
+ - Error summary at top with anchor links for long forms
695
+ - Mobile input height ≥ 44px
696
+ - Unsaved changes: confirm before dismissing
697
+
698
+ ## P9: Navigation (HIGH)
699
+
700
+ - Bottom nav ≤ 5 items, each with icon + label
701
+ - Drawer for secondary nav only, not primary
702
+ - Predictable back behavior; preserve scroll/state
703
+ - All key screens reachable via deep link/URL
704
+ - Current location visually highlighted (active state)
705
+ - Primary vs secondary navigation clearly separated
706
+ - Modal: clear close affordance, swipe-down on mobile
707
+ - Search: accessible from top bar or dedicated tab
708
+ - Breadcrumb for 3+ level deep hierarchies
709
+ - Restore scroll, filters, input on back navigation
710
+ - Adaptive: sidebar ≥1024px, bottom/top nav for small screens
711
+ - Never silently reset navigation stack
712
+ - Same navigation placement across all pages
713
+ - Don't mix Tab + Sidebar + Bottom Nav simultaneously
714
+ - Focus moves to main content on route change
715
+
716
+ ## P10: Charts & Data (LOW)
717
+
718
+ - Match chart type to data: trend→line, comparison→bar, proportion→pie
719
+ - Accessible color palettes — supplement with patterns/textures
720
+ - Always show legend near chart
721
+ - Tooltip on hover (web) or tap (mobile)
722
+ - Label axes with units; never truncate/rotate axis labels
723
+ - Responsive: reflow charts on small screens
724
+ - Empty data: show "No data yet" with action
725
+ - Skeleton placeholder while loading
726
+ - Respect prefers-reduced-motion for chart animations
727
+ - Virtualize/aggregate datasets >1000 points
728
+ - Interactive elements ≥ 44pt tap area
729
+ - No pie chart for >5 categories
730
+ - Direct-label values for small datasets
731
+ - Offer CSV/image export for data tables
732
+ - Screen reader: aria-label describing key insight
733
+
734
+ ---
556
735
 
557
736
  ## Screen Types
558
737
 
@@ -580,55 +759,43 @@ const UX_PATTERNS = `# UX Screen Patterns Catalog
580
759
  - **Error Page**: error code, message, back/home links
581
760
  - **Loading**: skeleton screens, progress bar, spinner
582
761
 
583
- ## Layout Patterns
584
-
585
- ### Navigation
586
- - **Top Nav**: logo left, nav center/right, avatar far right
587
- - **Sidebar**: collapsible, icons + labels, active indicator, mobile hamburger
588
- - **Tab Bar**: bottom tabs (mobile), top tabs (desktop), badge counts
589
- - **Breadcrumb**: path hierarchy, current page non-linked
590
-
591
- ### Content Layout
592
- - **Sidebar + Content**: 240-280px sidebar, fluid content, responsive collapse
593
- - **Full Width**: max-width container (1200-1440px), centered
594
- - **Split View**: list left, detail right (email pattern), resizable
595
- - **Grid**: 12-column, responsive breakpoints (sm/md/lg/xl)
596
-
597
- ## Interaction Patterns
598
-
599
- ### Forms
600
- - **Inline Validation**: validate on blur, show error below field, green checkmark on valid
601
- - **Progressive Disclosure**: show fields based on previous answers
602
- - **Autosave**: debounced save, "Saved" indicator, conflict resolution
603
-
604
- ### Data
605
- - **Optimistic Updates**: update UI immediately, revert on error
606
- - **Pagination**: page numbers for known total, infinite scroll for feeds
607
- - **Search**: debounced input (300ms), loading indicator, clear button
608
-
609
- ### Feedback
610
- - **Toast/Snackbar**: bottom-right, auto-dismiss (5s), action button, stacking
611
- - **Modal/Dialog**: overlay, focus trap, escape to close, confirm/cancel
612
- - **Inline Alerts**: contextual, dismissible, icon + message + action
613
-
614
- ## Responsive Breakpoints
615
-
616
- | Name | Width | Typical |
617
- |------|-------|---------|
618
- | sm | < 640px | Mobile portrait |
619
- | md | 640-1024px | Tablet / mobile landscape |
620
- | lg | 1024-1440px | Desktop |
621
- | xl | > 1440px | Large desktop |
622
-
623
- ## Accessibility Checklist
624
-
625
- - [ ] All interactive elements keyboard-navigable (Tab, Enter, Escape)
626
- - [ ] Focus indicator visible on all focusable elements
627
- - [ ] ARIA labels on icon-only buttons
628
- - [ ] Color contrast ratio ≥ 4.5:1 (text), ≥ 3:1 (large text)
629
- - [ ] Form fields have associated labels
630
- - [ ] Error messages linked to fields via aria-describedby
631
- - [ ] Skip navigation link for screen readers
632
- - [ ] Alt text on meaningful images
633
- - [ ] Touch targets ≥ 44x44px on mobile
762
+ ---
763
+
764
+ ## Pre-Delivery Checklist
765
+
766
+ ### Visual Quality
767
+ - [ ] SVG icons only no emoji as structural elements
768
+ - [ ] Consistent icon family and stroke width
769
+ - [ ] Press states don't shift layout or cause jitter
770
+ - [ ] Semantic theme tokens used consistently
771
+ - [ ] Official brand assets with correct proportions
772
+
773
+ ### Interaction
774
+ - [ ] All tappable elements provide press feedback
775
+ - [ ] Touch targets ≥ 44x44pt / 48x48dp
776
+ - [ ] Micro-interactions 150-300ms with native easing
777
+ - [ ] Disabled states visually clear and non-interactive
778
+ - [ ] Screen reader focus order matches visual layout
779
+ - [ ] No gesture conflicts between app and system
780
+
781
+ ### Light/Dark Mode
782
+ - [ ] Primary text ≥ 4.5:1 contrast in both modes
783
+ - [ ] Secondary text ≥ 3:1 contrast in both modes
784
+ - [ ] Borders/dividers distinguishable in both modes
785
+ - [ ] Modal scrim preserves foreground legibility
786
+ - [ ] Both themes tested independently
787
+
788
+ ### Layout
789
+ - [ ] Safe areas respected for fixed elements
790
+ - [ ] Scroll content not hidden behind fixed bars
791
+ - [ ] Tested: small phone, large phone, tablet (portrait + landscape)
792
+ - [ ] 4/8dp spacing maintained throughout
793
+ - [ ] Long-form text readable on larger screens
794
+
795
+ ### Accessibility
796
+ - [ ] Meaningful images/icons have labels
797
+ - [ ] Form fields have labels, hints, clear errors
798
+ - [ ] Color not sole indicator of state
799
+ - [ ] Reduced motion and dynamic text size supported
800
+ - [ ] ARIA roles/states announced correctly
634
801
  `;
@@ -8,10 +8,21 @@ export function skills(c) {
8
8
  content: `---
9
9
  name: aped-a
10
10
  description: 'Analyzes a new project idea through parallel market, domain, and technical research. Use when user says "research idea", "aped analyze", or invokes /aped-a. Not for existing codebases — use aped-ctx for brownfield projects.'
11
+ license: MIT
12
+ metadata:
13
+ author: yabafre
14
+ version: ${c.cliVersion || '1.7.1'}
11
15
  ---
12
16
 
13
17
  # APED Analyze — Parallel Research to Product Brief
14
18
 
19
+ ## Critical Rules
20
+
21
+ - NEVER skip Discovery questions — research quality depends on clear inputs
22
+ - ALL 3 agents must complete before synthesis — do not proceed with partial results
23
+ - Take your time with synthesis — quality is more important than speed
24
+ - Do not skip validation steps
25
+
15
26
  ## Setup
16
27
 
17
28
  1. Read \`${a}/config.yaml\` — extract \`user_name\`, \`communication_language\`, \`ticket_system\`, \`git_provider\`
@@ -113,6 +124,20 @@ pipeline:
113
124
  ## Chain
114
125
 
115
126
  Invoke Skill tool with \`skill: "aped-p"\` to proceed to PRD phase.
127
+
128
+ ## Example
129
+
130
+ User says: "I want to build a SaaS for restaurant inventory management"
131
+ 1. Discovery: ask what, for whom, why now
132
+ 2. Launch 3 agents: market (restaurant tech), domain (food service regulations), technical (inventory systems)
133
+ 3. Synthesize into product brief with 5 sections
134
+ 4. Validate → write to \`${o}/product-brief.md\`
135
+
136
+ ## Common Issues
137
+
138
+ - **Agent returns empty results**: WebSearch may fail — retry with different keywords, broaden search terms
139
+ - **Brief validation fails**: Check which section is missing, fill it from agent results, re-validate
140
+ - **User gives vague answers**: Ask follow-up questions before launching research — garbage in = garbage out
116
141
  `,
117
142
  },
118
143
  // ── aped-p ──────────────────────────────────────────────
@@ -121,10 +146,21 @@ Invoke Skill tool with \`skill: "aped-p"\` to proceed to PRD phase.
121
146
  content: `---
122
147
  name: aped-p
123
148
  description: 'Generates PRD autonomously from product brief. Use when user says "create PRD", "generate PRD", "aped prd", or invokes /aped-p.'
149
+ license: MIT
150
+ metadata:
151
+ author: yabafre
152
+ version: ${c.cliVersion || '1.7.1'}
124
153
  ---
125
154
 
126
155
  # APED PRD — Autonomous PRD Generation
127
156
 
157
+ ## Critical Rules
158
+
159
+ - EVERY FR must follow format: \`FR#: [Actor] can [capability]\` — no exceptions
160
+ - Take your time to generate quality FRs — 10-80 range, each independently testable
161
+ - Do not skip domain detection — it determines mandatory sections
162
+ - Quality is more important than speed — validate before writing
163
+
128
164
  ## Setup
129
165
 
130
166
  1. Read \`${a}/config.yaml\` — extract \`user_name\`, \`communication_language\`, \`document_output_language\`
@@ -210,6 +246,20 @@ pipeline:
210
246
  Ask the user: "Do you want to design the UX before creating epics?"
211
247
  - If yes: invoke Skill tool with \`skill: "aped-ux"\`
212
248
  - If no: invoke Skill tool with \`skill: "aped-e"\` to skip directly to Epics
249
+
250
+ ## Example
251
+
252
+ From a restaurant inventory brief → PRD generates:
253
+ - FR1: Manager can add inventory items with name, quantity, and unit
254
+ - FR2: Manager can set low-stock thresholds per item
255
+ - FR3: System can send alerts when stock falls below threshold
256
+ - NFR: The system shall respond to inventory queries within 200ms at p95
257
+
258
+ ## Common Issues
259
+
260
+ - **FR count too low (<10)**: Brief may lack detail — re-read brief, extract implicit capabilities
261
+ - **Anti-pattern words detected**: Replace "easy" with step count, "fast" with time threshold
262
+ - **Validation script fails**: Run \`bash ${a}/aped-p/scripts/validate-prd.sh ${o}/prd.md\` — fix reported issues one by one
213
263
  `,
214
264
  },
215
265
  // ── aped-e ──────────────────────────────────────────────
@@ -218,10 +268,21 @@ Ask the user: "Do you want to design the UX before creating epics?"
218
268
  content: `---
219
269
  name: aped-e
220
270
  description: 'Creates epics and stories from PRD with full FR coverage. Use when user says "create epics", "break into stories", "aped epics", or invokes /aped-e.'
271
+ license: MIT
272
+ metadata:
273
+ author: yabafre
274
+ version: ${c.cliVersion || '1.7.1'}
221
275
  ---
222
276
 
223
277
  # APED Epics & Stories — Requirements Decomposition
224
278
 
279
+ ## Critical Rules
280
+
281
+ - EVERY FR must map to exactly one epic — no orphans, no phantoms
282
+ - Epics describe USER VALUE, not technical layers — "User Authentication" not "Database Setup"
283
+ - Each story must be completable in 1 dev session — split if >8 tasks
284
+ - Quality is more important than speed — do not skip coverage validation
285
+
225
286
  ## Setup
226
287
 
227
288
  1. Read \`${a}/config.yaml\` — extract config including \`ticket_system\`
@@ -302,6 +363,19 @@ mkdir -p ${o}/stories
302
363
  2. Create story files in \`${o}/stories/\` using \`${a}/templates/story.md\`
303
364
  3. Update \`${o}/state.yaml\` with sprint section and pipeline phase
304
365
 
366
+ ## Example
367
+
368
+ PRD with 25 FRs → 3 epics:
369
+ - Epic 1: "Users can manage inventory" (FR1-FR8, 4 stories)
370
+ - Epic 2: "Managers can monitor stock levels" (FR9-FR16, 3 stories)
371
+ - Epic 3: "System sends automated alerts" (FR17-FR25, 3 stories)
372
+
373
+ ## Common Issues
374
+
375
+ - **Coverage validation fails**: Run \`validate-coverage.sh\` — lists orphan FRs
376
+ - **Epic too large**: Split by sub-domain — e.g., "User Auth" → "Registration" + "Sessions"
377
+ - **Forward dependencies**: If story B needs A, merge them or restructure
378
+
305
379
  ## Chain
306
380
 
307
381
  Invoke Skill tool with \`skill: "aped-d"\` to proceed to Dev Sprint.
@@ -314,10 +388,21 @@ Invoke Skill tool with \`skill: "aped-d"\` to proceed to Dev Sprint.
314
388
  name: aped-d
315
389
  description: 'Implements next story with TDD red-green-refactor cycle. Use when user says "start dev", "implement story", "aped dev", or invokes /aped-d.'
316
390
  disable-model-invocation: true
391
+ license: MIT
392
+ metadata:
393
+ author: yabafre
394
+ version: ${c.cliVersion || '1.7.1'}
317
395
  ---
318
396
 
319
397
  # APED Dev Sprint — TDD Story Implementation
320
398
 
399
+ ## Critical Rules
400
+
401
+ - NEVER mark a task \`[x]\` without passing all 5 gate conditions
402
+ - ALWAYS write the failing test FIRST — no implementation without a RED test
403
+ - Take your time — quality is more important than speed
404
+ - Do not skip validation steps or test runs
405
+
321
406
  ## Setup
322
407
 
323
408
  1. Read \`${a}/config.yaml\` — extract config including \`ticket_system\`, \`git_provider\`
@@ -395,6 +480,21 @@ Read \`git_provider\` and \`ticket_system\` from config:
395
480
  1. Update story: mark tasks \`[x]\`, fill Dev Agent Record
396
481
  2. Update \`${o}/state.yaml\`: story — \`review\`
397
482
  3. Invoke Skill tool with \`skill: "aped-r"\` to proceed to Review phase
483
+
484
+ ## Example
485
+
486
+ Story "1-2-user-registration":
487
+ 1. RED: write test \`expect(register({email, password})).resolves.toHaveProperty('id')\` → fails
488
+ 2. GREEN: implement \`register()\` → test passes
489
+ 3. REFACTOR: extract validation → tests still pass
490
+ 4. GATE: tests exist ✓, pass ✓, matches spec ✓, ACs met ✓, no regressions ✓ → mark \`[x]\`
491
+
492
+ ## Common Issues
493
+
494
+ - **Test framework not detected**: Ensure package.json has vitest/jest dependency, or use \`run-tests.sh\` manually
495
+ - **3 consecutive failures**: HALT — ask user. Do not brute-force; the approach may be wrong
496
+ - **Missing dependency**: HALT — ask user before installing. Do not add deps silently
497
+ - **Tests pass before writing code**: The test is wrong — it doesn't test new behavior. Rewrite it
398
498
  `,
399
499
  },
400
500
  // ── aped-r ──────────────────────────────────────────────
@@ -404,10 +504,21 @@ Read \`git_provider\` and \`ticket_system\` from config:
404
504
  name: aped-r
405
505
  description: 'Reviews completed stories adversarially with minimum 3 findings. Use when user says "review code", "run review", "aped review", or invokes /aped-r.'
406
506
  disable-model-invocation: true
507
+ license: MIT
508
+ metadata:
509
+ author: yabafre
510
+ version: ${c.cliVersion || '1.7.1'}
407
511
  ---
408
512
 
409
513
  # APED Review — Adversarial Code Review
410
514
 
515
+ ## Critical Rules
516
+
517
+ - MINIMUM 3 findings — if you found fewer, you didn't look hard enough. Re-examine.
518
+ - NEVER skip the git audit — it catches undocumented file changes
519
+ - Take your time — thoroughness is more important than speed
520
+ - Do not rubber-stamp. Your job is to find problems, not to validate.
521
+
411
522
  ## Setup
412
523
 
413
524
  1. Read \`${a}/config.yaml\` — extract config including \`git_provider\`
@@ -464,6 +575,20 @@ Severity: CRITICAL > HIGH > MEDIUM > LOW. Format: \`[Severity] Description [file
464
575
  ## State Update
465
576
 
466
577
  Update \`${o}/state.yaml\`. If more stories remain: invoke Skill tool with \`skill: "aped-d"\`. If all stories done: report pipeline completion.
578
+
579
+ ## Example
580
+
581
+ Review of story "1-2-user-registration":
582
+ - [HIGH] No input validation on email field [src/auth/register.ts:42]
583
+ - [MEDIUM] Password stored without hashing [src/auth/register.ts:58]
584
+ - [LOW] Missing error message i18n [src/auth/register.ts:71]
585
+ Result: 3 findings → story back to \`in-progress\` with [AI-Review] items.
586
+
587
+ ## Common Issues
588
+
589
+ - **Git audit fails (no git repo)**: Script handles this — skips audit with WARNING, proceeds to code review
590
+ - **Fewer than 3 findings**: Re-examine edge cases, error handling, test gaps, security surface
591
+ - **Story file not found**: Check \`sprint.stories\` in state.yaml — story key may have changed
467
592
  `,
468
593
  },
469
594
  // ── aped-ux ─────────────────────────────────────────────
@@ -471,12 +596,37 @@ Update \`${o}/state.yaml\`. If more stories remain: invoke Skill tool with \`ski
471
596
  path: `${a}/aped-ux/SKILL.md`,
472
597
  content: `---
473
598
  name: aped-ux
474
- description: 'Designs UX specifications from PRD screen flows, wireframes, component inventory. Use when user says "design UX", "create wireframes", "UX spec", "aped ux", or invokes /aped-ux. Runs between PRD and Epics phases.'
599
+ description: 'Designs UX via the ANF framework (Assemble design system, Normalize with React preview, Fill all screens). Use when user says "design UX", "UX spec", "aped ux", or invokes /aped-ux. Runs between PRD and Epics phases.'
600
+ license: MIT
601
+ compatibility: 'Requires Node.js 18+ and npm for Vite+React preview scaffold'
602
+ metadata:
603
+ author: yabafre
604
+ version: ${c.cliVersion || '1.7.1'}
475
605
  ---
476
606
 
477
- # APED UX — Spec-First UX Design
607
+ # APED UX — ANF Framework
608
+
609
+ ## Critical Rules
610
+
611
+ - NEVER use lorem ipsum — every text element must reflect the actual product from the PRD
612
+ - ALWAYS run the pre-delivery checklist before presenting to user
613
+ - Take your time with each screen — quality is more important than speed
614
+ - Do not skip the user review cycle — the prototype MUST be approved before proceeding
615
+
616
+ Produces a validated, interactive React prototype from the PRD. The prototype becomes the UX spec that \`/aped-e\` consumes as the visual source of truth.
478
617
 
479
- Generates UX specifications from the PRD before epics creation. Produces screen flows, wireframes (ASCII), component inventories, and interaction specs that \`/aped-e\` consumes to enrich stories with visual context.
618
+ **ANF = Assemble Normalize Fill**
619
+
620
+ \`\`\`
621
+ A: Design DNA N: React Preview F: Complete + Validate
622
+ (inputs) (live prototype) (user-approved spec)
623
+
624
+ Inspirations Vite + React app All screens built
625
+ + UI library with REAL content + interaction states
626
+ + color/typo from PRD context + responsive behavior
627
+ + components (no lorem ipsum) + user review cycles
628
+ = UX spec for /aped-e
629
+ \`\`\`
480
630
 
481
631
  ## Setup
482
632
 
@@ -489,139 +639,226 @@ Generates UX specifications from the PRD before epics creation. Produces screen
489
639
  ## Task Tracking
490
640
 
491
641
  \`\`\`
492
- TaskCreate: "Analyze PRD user journeys"
493
- TaskCreate: "Define screen inventory"
494
- TaskCreate: "Design screen flows"
495
- TaskCreate: "Create wireframes"
496
- TaskCreate: "Build component inventory"
497
- TaskCreate: "Write interaction specs"
498
- TaskCreate: "Validate UX spec"
642
+ TaskCreate: "A Assemble: collect design DNA"
643
+ TaskCreate: "A Assemble: scaffold Vite + React preview app"
644
+ TaskCreate: "N Normalize: build layout + navigation + design tokens"
645
+ TaskCreate: "N — Normalize: implement screens with real PRD content"
646
+ TaskCreate: "F Fill: complete all states (loading, error, empty)"
647
+ TaskCreate: "F Fill: responsive + accessibility pass"
648
+ TaskCreate: "F Fill: user review + validation"
499
649
  \`\`\`
500
650
 
501
- ## Load PRD
651
+ ---
652
+
653
+ ## A — ASSEMBLE (Design DNA)
502
654
 
503
- - Read PRD from \`pipeline.phases.prd.output\`
504
- - Extract: user journeys, FRs grouped by capability, actors, key workflows
655
+ ### A1: Collect Design Inputs
505
656
 
506
- ## Phase 1: Screen Inventory
657
+ Ask the user (adapt to \`communication_language\`):
507
658
 
508
- For each user journey in the PRD:
659
+ 1. **Inspirations** "Share screenshots, URLs, or describe the visual direction you want"
660
+ - Accept: image files (Read tool), URLs (WebFetch), or verbal description
661
+ - If images: analyze layout, density, color palette, typography, component style
662
+ - If URLs: fetch and analyze visual patterns
509
663
 
510
- 1. **Map the journey** to concrete screens (1 journey = 1+ screens)
511
- 2. **Name each screen** with a slug: \`{area}-{action}\` (e.g., \`auth-login\`, \`dashboard-overview\`, \`settings-profile\`)
512
- 3. **Classify screen type**: form, list, detail, dashboard, wizard, modal, empty-state, error
513
- 4. **Map FR coverage**: which FRs are satisfied by which screen
664
+ 2. **UI Library** "Which component library? Or none (custom)?"
665
+ - Options: shadcn/ui, Radix UI, MUI, Ant Design, Chakra UI, Mantine, none
666
+ - If specified: use MCP context7 (\`resolve-library-id\` then \`query-docs\`) to load component API
667
+ - If none: will create custom components styled to match inspirations
514
668
 
515
- Output: screen inventory table.
669
+ 3. **Design Tokens** — Extract or ask:
670
+ - **Colors**: primary, secondary, accent, neutral scale, semantic (success/warning/error/info)
671
+ - **Typography**: font family, size scale (xs to 2xl), weight scale, line heights
672
+ - **Spacing**: base unit (4px/8px), scale (1-12)
673
+ - **Radius**: none/sm/md/lg/full
674
+ - **Shadows**: sm/md/lg/xl
516
675
 
517
- ## Phase 2: Screen Flows
676
+ 4. **Branding** Logo, brand colors, tone (playful/serious/minimal/bold)
518
677
 
519
- For each major workflow:
678
+ ### A2: Scaffold Preview App
520
679
 
521
- 1. **Draw flow diagram** in text format:
680
+ \`\`\`bash
681
+ mkdir -p ${o}/ux-preview
682
+ cd ${o}/ux-preview
683
+ npm create vite@latest . -- --template react-ts
684
+ npm install
522
685
  \`\`\`
523
- [Landing] → [Login] → [Dashboard]
524
- ↓ ↓
525
- [Register] [Settings]
526
-
527
- [Verify Email] → [Dashboard]
686
+
687
+ If UI library chosen:
688
+ \`\`\`bash
689
+ # Example for shadcn/ui:
690
+ npx shadcn@latest init
691
+ # Example for MUI:
692
+ npm install @mui/material @emotion/react @emotion/styled
528
693
  \`\`\`
529
694
 
530
- 2. **Document transitions**: what triggers navigation (button click, form submit, auto-redirect)
531
- 3. **Identify shared patterns**: navigation, auth guards, error states, loading states
695
+ Create design token files:
696
+ - \`src/tokens/colors.ts\` color palette as CSS custom properties or theme object
697
+ - \`src/tokens/typography.ts\` — font config
698
+ - \`src/tokens/spacing.ts\` — spacing scale
699
+ - \`src/theme.ts\` — unified theme export
532
700
 
533
- ## Phase 3: Wireframes (ASCII)
701
+ Create \`src/data/mock.ts\` **real content from PRD**, not lorem ipsum:
702
+ - Extract product name, user types, feature names, sample data from PRD
703
+ - Generate realistic mock data that matches the product domain
704
+ - Example: if building a project manager, mock projects have real-sounding names and dates
534
705
 
535
- For each screen, produce an ASCII wireframe:
706
+ \`TaskUpdate: "A Assemble: scaffold" completed\`
536
707
 
537
- \`\`\`
538
- ┌─────────────────────────────────┐
539
- │ [Logo] [Nav] [Avatar] │
540
- ├─────────────────────────────────┤
541
- │ │
542
- │ ┌──────────┐ ┌──────────────┐ │
543
- │ │ Sidebar │ │ Content │ │
544
- │ │ │ │ │ │
545
- │ │ • Item 1 │ │ ┌────────┐ │ │
546
- │ │ • Item 2 │ │ │ Card 1 │ │ │
547
- │ │ • Item 3 │ │ └────────┘ │ │
548
- │ │ │ │ ┌────────┐ │ │
549
- │ │ │ │ │ Card 2 │ │ │
550
- │ └──────────┘ │ └────────┘ │ │
551
- │ └──────────────┘ │
552
- ├─────────────────────────────────┤
553
- │ [Footer] │
554
- └─────────────────────────────────┘
555
- \`\`\`
708
+ ---
556
709
 
557
- Rules:
558
- - Use box drawing characters (┌ ─ ┐ │ └ ┘ ├ ┤)
559
- - Label every zone with its purpose
560
- - Show content hierarchy (headings, lists, cards, forms)
561
- - Annotate interactive elements: \`[Button]\`, \`(Input)\`, \`{Dropdown}\`
562
- - Include responsive notes: "sidebar collapses to hamburger on mobile"
710
+ ## N — NORMALIZE (React Preview with Real Content)
563
711
 
564
- ## Phase 4: Component Inventory
712
+ ### N1: Layout + Navigation
565
713
 
566
- Analyze all wireframes and extract:
714
+ Read PRD user journeys and screen inventory (from \`${a}/aped-ux/references/ux-patterns.md\`).
567
715
 
568
- ### Component Tree
569
- \`\`\`
570
- App
571
- ├── Layout
572
- │ ├── Header (logo, nav, avatar)
573
- │ ├── Sidebar (nav items, collapsible)
574
- │ └── Footer
575
- ├── Shared
576
- │ ├── Button (primary, secondary, ghost, danger)
577
- │ ├── Input (text, email, password, search)
578
- │ ├── Card (title, body, actions)
579
- │ ├── Modal (header, body, footer)
580
- │ └── Toast (success, error, warning, info)
581
- └── Feature-specific
582
- ├── UserAvatar (image, initials fallback)
583
- ├── DataTable (sortable, filterable, paginated)
584
- └── StatsCard (value, label, trend)
585
- \`\`\`
716
+ 1. **Map screens** from PRD user journeys:
717
+ - Each journey → concrete screens
718
+ - Name: \`{area}-{action}\` slug (e.g., \`auth-login\`, \`dashboard-overview\`)
719
+ - Classify: form, list, detail, dashboard, wizard, modal
586
720
 
587
- ### Component Spec (for each)
588
- - **Props**: name, type, required, default
589
- - **States**: default, hover, active, disabled, loading, error
590
- - **Variants**: size (sm/md/lg), color (primary/secondary/danger)
591
- - **Accessibility**: ARIA role, keyboard navigation, focus management
721
+ 2. **Build layout shell** — \`src/layouts/\`:
722
+ - App layout (header, sidebar/nav, content, footer)
723
+ - Auth layout (centered card)
724
+ - Apply design tokens throughout
592
725
 
593
- ## Phase 5: Interaction Specs
726
+ 3. **Set up routing** — React Router with all screens as routes:
727
+ - \`src/App.tsx\` — router config
728
+ - \`src/pages/{ScreenSlug}.tsx\` — one page per screen (initially placeholder)
594
729
 
595
- For each screen, document:
730
+ 4. **Navigation** read rules P9 (Navigation) from \`${a}/aped-ux/references/ux-patterns.md\`:
731
+ - Sidebar or top nav matching design inspiration
732
+ - Active state indicators on current route
733
+ - Mobile: bottom nav ≤5 items (icon + label) or hamburger/drawer
734
+ - Desktop ≥1024px: sidebar; smaller: bottom/top nav
735
+ - Predictable back behavior, preserve scroll/state
736
+ - Same navigation placement across all pages
596
737
 
597
- 1. **Loading states**: skeleton, spinner, progressive
598
- 2. **Empty states**: first-use, no-results, error
599
- 3. **Error handling**: inline validation, toast, error page
600
- 4. **Animations**: page transitions, micro-interactions (optional)
601
- 5. **Responsive behavior**: breakpoints, layout changes, touch targets
738
+ Run: \`npm run dev\` verify app runs with working navigation.
602
739
 
603
- ## Validation
740
+ ### N2: Screen Implementation
741
+
742
+ For each screen, in priority order (core journey first):
743
+
744
+ 1. **Read relevant FRs** for this screen
745
+ 2. **Build with UI library components** (or custom styled components)
746
+ 3. **Use real mock data** from \`src/data/mock.ts\` — product names, user names, realistic dates and numbers
747
+ 4. **Implement the primary content** — forms, tables, cards, etc.
748
+ 5. **Wire interactions** — form submits, button clicks, navigation (can be no-op handlers)
749
+
750
+ **CRITICAL: No lorem ipsum.** Every text element must reflect the actual product:
751
+ - If it's a SaaS dashboard, show realistic metric names and values
752
+ - If it's an e-commerce, show real-looking product names and prices
753
+ - If it's a project tool, show plausible project names and statuses
754
+
755
+ \`TaskUpdate: "N — Normalize: implement screens" → completed\`
604
756
 
605
- Check completeness:
606
- - [ ] Every FR from PRD maps to at least one screen
607
- - [ ] Every screen has a wireframe
608
- - [ ] Every interactive element has states defined
609
- - [ ] Flows cover happy path + error paths
610
- - [ ] Component inventory covers all wireframe elements
611
- - [ ] No orphan screens (unreachable from any flow)
757
+ ---
758
+
759
+ ## F FILL (Complete + Validate)
760
+
761
+ ### F1: Interaction States
762
+
763
+ Read rules P7 (Animation) and P8 (Forms & Feedback) from \`${a}/aped-ux/references/ux-patterns.md\`.
764
+
765
+ For each screen, add:
766
+
767
+ 1. **Loading states** — skeleton/shimmer for operations >300ms, spinner for buttons
768
+ 2. **Empty states** — first-use experience with helpful message + CTA, "no results" views
769
+ 3. **Error states** — inline validation on blur, error below field, error summary at top for long forms
770
+ 4. **Success feedback** — toast auto-dismiss 3-5s, confirmation messages
771
+ 5. **Disabled states** — opacity 0.38-0.5, cursor change, non-interactive
772
+ 6. **Press feedback** — visual response within 80-150ms (ripple, opacity, scale 0.95-1.05)
773
+ 7. **Animations** — 150-300ms micro-interactions, transform/opacity only, ease-out enter, ease-in exit
774
+
775
+ ### F2: Responsive + Dark Mode
776
+
777
+ Read rules P5 (Layout) and P6 (Typography & Color) from \`${a}/aped-ux/references/ux-patterns.md\`.
778
+
779
+ 1. **Responsive** — test and fix at 3 breakpoints:
780
+ - Mobile (375px): single column, hamburger nav, touch targets ≥44px, safe areas
781
+ - Tablet (768px): adapted layout, sidebar may collapse, adjusted gutters
782
+ - Desktop (1440px): full layout, max-width container, sidebar visible
783
+
784
+ 2. **Dark mode** — if applicable:
785
+ - Semantic color tokens mapped per theme (not hardcoded hex)
786
+ - Desaturated/lighter variants, NOT inverted colors
787
+ - Primary text ≥ 4.5:1, secondary ≥ 3:1 in both modes
788
+ - Borders/dividers distinguishable in both modes
789
+ - Modal scrim: 40-60% black, foreground legible
790
+ - Test both themes independently
791
+
792
+ ### F3: Accessibility Pass
793
+
794
+ Read rules P1 (Accessibility) and P2 (Touch) from \`${a}/aped-ux/references/ux-patterns.md\`.
795
+
796
+ - Contrast: 4.5:1 normal text, 3:1 large text (test with browser devtools)
797
+ - Focus rings: 2-4px, visible on all interactive elements
798
+ - Tab order: matches visual order
799
+ - Form labels: visible, associated, not placeholder-only
800
+ - Icon buttons: aria-label
801
+ - Skip-to-main link
802
+ - Heading hierarchy: h1→h2→h3, no skipping
803
+ - Touch targets: ≥44x44pt with ≥8px spacing
804
+ - No information conveyed by color alone
805
+
806
+ ### F4: Pre-Delivery Checklist
807
+
808
+ Read the full Pre-Delivery Checklist from \`${a}/aped-ux/references/ux-patterns.md\`.
809
+
810
+ Run through ALL checks before presenting to user:
811
+
812
+ **Visual Quality** — SVG icons, consistent family, no press jitter, semantic tokens, brand assets
813
+ **Interaction** — press feedback, touch targets, micro-interaction timing, disabled states, focus order
814
+ **Light/Dark Mode** — contrast ratios in both, dividers visible, scrim legibility
815
+ **Layout** — safe areas, fixed bars, tested 3 devices, spacing rhythm, text readability
816
+ **Accessibility** — labels, hints, errors, color independence, reduced motion, ARIA
817
+
818
+ If any check fails: fix before showing to user.
819
+
820
+ ### F5: User Review Cycle
821
+
822
+ **This is the most important step.** The prototype must be validated by the user.
823
+
824
+ 1. Run \`npm run dev\` and give the user the local URL
825
+ 2. Present the pre-delivery checklist results
826
+ 3. Ask: "Review each screen. What needs to change?"
827
+ 4. Categories of feedback:
828
+ - **Layout** — move, resize, reorder sections
829
+ - **Content** — missing info, wrong hierarchy, unclear labels
830
+ - **Style** — colors, spacing, typography adjustments
831
+ - **Flow** — navigation changes, missing screens, wrong order
832
+ - **Components** — wrong component type, missing states, wrong behavior
833
+ - **Dark mode** — contrast issues, token problems, scrim opacity
834
+
835
+ 5. **Iterate** until user says "approved" or "good enough"
836
+ 6. Each iteration: apply feedback → run checklist again → present → ask again
837
+
838
+ \`TaskUpdate: "F — Fill: user review" → completed\`
839
+
840
+ ---
612
841
 
613
842
  ## Output
614
843
 
844
+ Once user approves the prototype:
845
+
615
846
  \`\`\`bash
616
847
  mkdir -p ${o}/ux
617
848
  \`\`\`
618
849
 
619
- Write to \`${o}/ux/\`:
620
- 1. \`screen-inventory.md\` — table of all screens with FR mapping
621
- 2. \`flows.md\` all screen flow diagrams
622
- 3. \`wireframes.md\` ASCII wireframes for every screen
623
- 4. \`components.md\` component tree + specs
624
- 5. \`interactions.md\` states, errors, responsive, animations
850
+ 1. **Preview app stays** at \`${o}/ux-preview/\` — living reference
851
+ 2. Write \`${o}/ux/design-spec.md\`:
852
+ - Design tokens (colors, typo, spacing, radius)
853
+ - UI library + version
854
+ - Screen inventory with routes
855
+ - Component tree with props
856
+ - Layout specifications
857
+ - Responsive breakpoints
858
+ 3. Write \`${o}/ux/screen-inventory.md\` — all screens with FR mapping
859
+ 4. Write \`${o}/ux/components.md\` — component catalog from the preview app
860
+ 5. Write \`${o}/ux/flows.md\` — navigation flow diagrams
861
+ 6. Take **screenshots** of each screen at desktop resolution → \`${o}/ux/screenshots/\`
625
862
 
626
863
  ## State Update
627
864
 
@@ -633,12 +870,28 @@ pipeline:
633
870
  ux:
634
871
  status: "done"
635
872
  output: "${o}/ux/"
873
+ preview: "${o}/ux-preview/"
874
+ design_system:
875
+ ui_library: "{library}"
876
+ tokens: "${o}/ux-preview/src/tokens/"
636
877
  \`\`\`
637
878
 
638
879
  ## Chain
639
880
 
640
881
  Invoke Skill tool with \`skill: "aped-e"\` to proceed to Epics phase.
641
- \`/aped-e\` will read UX specs to enrich stories with wireframe refs, component specs, and interaction requirements in Dev Notes.
882
+ \`/aped-e\` reads \`${o}/ux/design-spec.md\` and the preview app to enrich stories with:
883
+ - Component references (which component to use, which props)
884
+ - Screen references (wireframe screenshots)
885
+ - Design tokens to respect
886
+ - Responsive requirements per screen
887
+
888
+ ## Common Issues
889
+
890
+ - **npm create vite fails**: Ensure Node.js 18+ is installed. Try \`node --version\` first.
891
+ - **UI library install fails**: Check network. For shadcn, ensure the project has a tsconfig.json.
892
+ - **User gives no design inspiration**: Use the product domain to suggest a style — "SaaS dashboard" → clean/minimal, "e-commerce" → card-heavy/visual
893
+ - **Prototype looks wrong on mobile**: Check responsive breakpoints — sidebar must collapse, touch targets ≥ 44px
894
+ - **Dark mode contrast fails**: Use semantic tokens, not hardcoded colors. Check with browser devtools contrast checker.
642
895
  `,
643
896
  },
644
897
  // ── aped-s ──────────────────────────────────────────────
@@ -647,7 +900,11 @@ Invoke Skill tool with \`skill: "aped-e"\` to proceed to Epics phase.
647
900
  content: `---
648
901
  name: aped-s
649
902
  description: 'Shows sprint status dashboard with progress, blockers, and next actions. Use when user says "sprint status", "show progress", "aped status", or invokes /aped-s.'
650
- allowed-tools: Read, Grep, Glob, Bash
903
+ allowed-tools: "Read Grep Glob Bash"
904
+ license: MIT
905
+ metadata:
906
+ author: yabafre
907
+ version: ${c.cliVersion || '1.7.1'}
651
908
  ---
652
909
 
653
910
  # APED Status — Sprint Dashboard
@@ -709,6 +966,20 @@ If \`ticket_system\` is not \`none\`:
709
966
  ## Output
710
967
 
711
968
  Display only — no file writes, no state changes. Pure read-only dashboard.
969
+
970
+ ## Example
971
+
972
+ \`\`\`
973
+ Pipeline: A[✓] → P[✓] → UX[✓] → E[✓] → D[▶] → R[ ]
974
+ Epic 1: User Auth [████████░░] 80% (4/5)
975
+ Epic 2: Dashboard [██░░░░░░░░] 20% (1/5)
976
+ Next: /aped-d (story 1-5-session-mgmt is ready-for-dev)
977
+ \`\`\`
978
+
979
+ ## Common Issues
980
+
981
+ - **State file not found**: Ensure \`${o}/state.yaml\` exists — run /aped-a first
982
+ - **Stories show wrong status**: State.yaml may be stale — re-run the last phase to update it
712
983
  `,
713
984
  },
714
985
  // ── aped-c ──────────────────────────────────────────────
@@ -718,6 +989,10 @@ Display only — no file writes, no state changes. Pure read-only dashboard.
718
989
  name: aped-c
719
990
  description: 'Manages scope changes and pivots during development with impact analysis. Use when user says "correct course", "change scope", "pivot", "aped correct", or invokes /aped-c.'
720
991
  disable-model-invocation: true
992
+ license: MIT
993
+ metadata:
994
+ author: yabafre
995
+ version: ${c.cliVersion || '1.7.1'}
721
996
  ---
722
997
 
723
998
  # APED Correct Course — Managed Pivot
@@ -791,6 +1066,22 @@ After applying changes, verify:
791
1066
  - No epic became too large (>8 stories)
792
1067
  - No story became too large (>8 tasks)
793
1068
  - Changed stories still fit single-session size
1069
+
1070
+ ## Example
1071
+
1072
+ User says "We need to add OAuth — the client changed requirements":
1073
+ 1. Impact: minor change — add FRs to PRD, create new stories
1074
+ 2. Update PRD: add FR26-FR28 for OAuth
1075
+ 3. Re-validate PRD
1076
+ 4. Add stories to Epic 1 for OAuth support
1077
+ 5. Re-validate coverage
1078
+ 6. Reset new stories to \`ready-for-dev\`
1079
+
1080
+ ## Common Issues
1081
+
1082
+ - **User wants to change everything**: Confirm scope — "Is this a pivot or an addition?"
1083
+ - **Invalidated stories have committed code**: Archive the code changes, don't delete — user may want to reference them
1084
+ - **FR count exceeds 80 after change**: Some features may need to move to a Growth phase scope
794
1085
  `,
795
1086
  },
796
1087
  // ── aped-ctx ────────────────────────────────────────────
@@ -799,7 +1090,11 @@ After applying changes, verify:
799
1090
  content: `---
800
1091
  name: aped-ctx
801
1092
  description: 'Analyzes existing codebase to generate project context for brownfield development. Use when user says "document codebase", "project context", "existing project", "aped context", or invokes /aped-ctx. Not for new project ideation — use aped-a for greenfield.'
802
- allowed-tools: Read, Grep, Glob, Bash
1093
+ allowed-tools: "Read Grep Glob Bash"
1094
+ license: MIT
1095
+ metadata:
1096
+ author: yabafre
1097
+ version: ${c.cliVersion || '1.7.1'}
803
1098
  ---
804
1099
 
805
1100
  # APED Context — Brownfield Project Analysis
@@ -892,6 +1187,20 @@ project_context:
892
1187
  Suggest:
893
1188
  - If no brief exists: run \`/aped-a\` with project context loaded
894
1189
  - If brief exists: context will inform \`/aped-p\` and \`/aped-d\` decisions
1190
+
1191
+ ## Example
1192
+
1193
+ Scanning a Next.js SaaS project → project-context.md:
1194
+ - Stack: TypeScript, Next.js 14, Prisma, PostgreSQL
1195
+ - Pattern: App Router, server components, feature-based folders
1196
+ - Conventions: camelCase files, Zod validation, Tailwind CSS
1197
+ - 45 dependencies, 3 outdated, 0 security advisories
1198
+
1199
+ ## Common Issues
1200
+
1201
+ - **No package.json/Cargo.toml found**: Project may be multi-language or unconventional — scan for entry points manually
1202
+ - **Very large codebase (>1000 files)**: Focus on src/ and key config files, don't scan node_modules or build output
1203
+ - **Monorepo detected**: Document each package/app separately in the context file
895
1204
  `,
896
1205
  },
897
1206
  // ── aped-qa ─────────────────────────────────────────────
@@ -900,6 +1209,10 @@ Suggest:
900
1209
  content: `---
901
1210
  name: aped-qa
902
1211
  description: 'Generates E2E and integration tests from acceptance criteria for completed features. Use when user says "generate tests", "E2E tests", "integration tests", "aped qa", or invokes /aped-qa.'
1212
+ license: MIT
1213
+ metadata:
1214
+ author: yabafre
1215
+ version: ${c.cliVersion || '1.7.1'}
903
1216
  ---
904
1217
 
905
1218
  # APED QA — E2E & Integration Test Generation
@@ -1002,6 +1315,19 @@ QA doesn't affect pipeline state — it's an additive quality layer.
1002
1315
  ## Next Steps
1003
1316
 
1004
1317
  Suggest running \`/aped-s\` to view updated sprint status with QA coverage noted.
1318
+
1319
+ ## Example
1320
+
1321
+ Epic 1 completed (3 stories) → generate QA:
1322
+ - E2E: 5 tests covering registration → login → dashboard journey
1323
+ - Integration: 3 API tests for auth endpoints
1324
+ - Report: 8/8 ACs covered, 0 gaps, 1 manual test suggested (email verification)
1325
+
1326
+ ## Common Issues
1327
+
1328
+ - **Test framework not detected**: Check project config — ensure test runner is in dependencies
1329
+ - **ACs not testable**: Some ACs describe UX behavior — flag as "manual test required" in report
1330
+ - **Tests fail on generated code**: Review the test — it may assume a specific API shape. Adapt to actual implementation
1005
1331
  `,
1006
1332
  },
1007
1333
  // ── aped-quick ────────────────────────────────────────────
@@ -1010,6 +1336,10 @@ Suggest running \`/aped-s\` to view updated sprint status with QA coverage noted
1010
1336
  content: `---
1011
1337
  name: aped-quick
1012
1338
  description: 'Implements quick fixes and small features bypassing the full pipeline. Use when user says "quick fix", "quick feature", "hotfix", "aped quick", or invokes /aped-quick.'
1339
+ license: MIT
1340
+ metadata:
1341
+ author: yabafre
1342
+ version: ${c.cliVersion || '1.7.1'}
1013
1343
  ---
1014
1344
 
1015
1345
  # APED Quick — Fast Track for Small Changes
@@ -1073,6 +1403,20 @@ Read \`ticket_system\` and \`git_provider\` from config.
1073
1403
  1. Write quick spec to \`${o}/quick-specs/\` (create dir if needed)
1074
1404
  2. No state.yaml update — quick specs don't affect pipeline phase
1075
1405
  3. Report: files changed, tests added, quick spec path
1406
+
1407
+ ## Example
1408
+
1409
+ User: "quick fix the login button not submitting"
1410
+ 1. Quick spec: fix, "login form submit handler not wired"
1411
+ 2. RED: test that clicking submit calls auth API
1412
+ 3. GREEN: wire onClick → submitForm()
1413
+ 4. Self-review: tests pass, no security issues
1414
+ 5. Commit: \`fix(auth): wire login form submit handler\`
1415
+
1416
+ ## Common Issues
1417
+
1418
+ - **Change touches >5 files**: This is too big for quick — recommend full pipeline
1419
+ - **New dependency needed**: HALT — ask user, this may need architectural discussion
1076
1420
  `,
1077
1421
  },
1078
1422
  // ── aped-all ─────────────────────────────────────────────
@@ -1082,6 +1426,10 @@ Read \`ticket_system\` and \`git_provider\` from config.
1082
1426
  name: aped-all
1083
1427
  description: 'Runs the full APED pipeline from Analyze through Review with auto-resume. Use when user says "run full pipeline", "aped all", or invokes /aped-all.'
1084
1428
  disable-model-invocation: true
1429
+ license: MIT
1430
+ metadata:
1431
+ author: yabafre
1432
+ version: ${c.cliVersion || '1.7.1'}
1085
1433
  ---
1086
1434
 
1087
1435
  # APED Pipeline — Full Orchestrator
@@ -1127,6 +1475,22 @@ State persists in \`${o}/state.yaml\`. Next \`/aped-all\` resumes from last inco
1127
1475
  ## Completion Report
1128
1476
 
1129
1477
  Total phases, epics, stories, review iterations. Pipeline status: COMPLETE.
1478
+
1479
+ ## Example
1480
+
1481
+ Fresh start → full pipeline run:
1482
+ 1. A: 3 parallel agents → product brief (5 min)
1483
+ 2. P: PRD with 20 FRs generated + validated (3 min)
1484
+ 3. UX: user says "skip" → proceed to epics
1485
+ 4. E: 3 epics, 8 stories created (3 min)
1486
+ 5. D→R loop: 8 stories × (dev + review) cycles
1487
+ 6. All done → pipeline COMPLETE
1488
+
1489
+ ## Common Issues
1490
+
1491
+ - **Phase fails and can't recover**: Check state.yaml — reset the failed phase to \`in-progress\` and re-run /aped-all
1492
+ - **Context window limit during long pipeline**: Normal — /aped-all chains via Skill tool which starts fresh context per phase
1493
+ - **User wants to skip a phase**: Supported — each phase asks "redo or skip?" if already done
1130
1494
  `,
1131
1495
  },
1132
1496
  ];