aped-method 1.7.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.7.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": {
@@ -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 ─────────────────────────────────────────────
@@ -472,10 +597,22 @@ Update \`${o}/state.yaml\`. If more stories remain: invoke Skill tool with \`ski
472
597
  content: `---
473
598
  name: aped-ux
474
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
607
  # APED UX — ANF Framework
478
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
+
479
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.
480
617
 
481
618
  **ANF = Assemble → Normalize → Fill**
@@ -590,10 +727,13 @@ Read PRD user journeys and screen inventory (from \`${a}/aped-ux/references/ux-p
590
727
  - \`src/App.tsx\` — router config
591
728
  - \`src/pages/{ScreenSlug}.tsx\` — one page per screen (initially placeholder)
592
729
 
593
- 4. **Navigation** — working nav that links all screens:
730
+ 4. **Navigation** — read rules P9 (Navigation) from \`${a}/aped-ux/references/ux-patterns.md\`:
594
731
  - Sidebar or top nav matching design inspiration
595
- - Active state indicators
596
- - Mobile responsive (hamburger/drawer)
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
597
737
 
598
738
  Run: \`npm run dev\` — verify app runs with working navigation.
599
739
 
@@ -620,42 +760,80 @@ For each screen, in priority order (core journey first):
620
760
 
621
761
  ### F1: Interaction States
622
762
 
763
+ Read rules P7 (Animation) and P8 (Forms & Feedback) from \`${a}/aped-ux/references/ux-patterns.md\`.
764
+
623
765
  For each screen, add:
624
766
 
625
- 1. **Loading states** — skeleton components or spinners where data loads
626
- 2. **Empty states** — first-use experience, "no results" views with CTAs
627
- 3. **Error states** — inline form validation, error boundaries, toast/snackbar
628
- 4. **Success feedback** — confirmation messages, success toasts
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
629
774
 
630
- ### F2: Responsive + Accessibility
775
+ ### F2: Responsive + Dark Mode
776
+
777
+ Read rules P5 (Layout) and P6 (Typography & Color) from \`${a}/aped-ux/references/ux-patterns.md\`.
631
778
 
632
779
  1. **Responsive** — test and fix at 3 breakpoints:
633
- - Mobile (375px): single column, hamburger nav, touch targets ≥44px
634
- - Tablet (768px): adapted layout, sidebar may collapse
635
- - Desktop (1440px): full layout
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
636
791
 
637
- 2. **Accessibility** — verify:
638
- - All images have alt text
639
- - Form inputs have labels
640
- - Color contrast ≥ 4.5:1
641
- - Keyboard navigation works (Tab, Enter, Escape)
642
- - Focus indicators visible
792
+ ### F3: Accessibility Pass
643
793
 
644
- ### F3: User Review Cycle
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
645
821
 
646
822
  **This is the most important step.** The prototype must be validated by the user.
647
823
 
648
824
  1. Run \`npm run dev\` and give the user the local URL
649
- 2. Ask: "Review each screen. What needs to change?"
650
- 3. Categories of feedback:
825
+ 2. Present the pre-delivery checklist results
826
+ 3. Ask: "Review each screen. What needs to change?"
827
+ 4. Categories of feedback:
651
828
  - **Layout** — move, resize, reorder sections
652
829
  - **Content** — missing info, wrong hierarchy, unclear labels
653
830
  - **Style** — colors, spacing, typography adjustments
654
831
  - **Flow** — navigation changes, missing screens, wrong order
655
832
  - **Components** — wrong component type, missing states, wrong behavior
833
+ - **Dark mode** — contrast issues, token problems, scrim opacity
656
834
 
657
- 4. **Iterate** until user says "approved" or "good enough"
658
- 5. Each iteration: apply feedback → run dev → ask again
835
+ 5. **Iterate** until user says "approved" or "good enough"
836
+ 6. Each iteration: apply feedback → run checklist again present → ask again
659
837
 
660
838
  \`TaskUpdate: "F — Fill: user review" → completed\`
661
839
 
@@ -706,6 +884,14 @@ Invoke Skill tool with \`skill: "aped-e"\` to proceed to Epics phase.
706
884
  - Screen references (wireframe screenshots)
707
885
  - Design tokens to respect
708
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.
709
895
  `,
710
896
  },
711
897
  // ── aped-s ──────────────────────────────────────────────
@@ -714,7 +900,11 @@ Invoke Skill tool with \`skill: "aped-e"\` to proceed to Epics phase.
714
900
  content: `---
715
901
  name: aped-s
716
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.'
717
- 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'}
718
908
  ---
719
909
 
720
910
  # APED Status — Sprint Dashboard
@@ -776,6 +966,20 @@ If \`ticket_system\` is not \`none\`:
776
966
  ## Output
777
967
 
778
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
779
983
  `,
780
984
  },
781
985
  // ── aped-c ──────────────────────────────────────────────
@@ -785,6 +989,10 @@ Display only — no file writes, no state changes. Pure read-only dashboard.
785
989
  name: aped-c
786
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.'
787
991
  disable-model-invocation: true
992
+ license: MIT
993
+ metadata:
994
+ author: yabafre
995
+ version: ${c.cliVersion || '1.7.1'}
788
996
  ---
789
997
 
790
998
  # APED Correct Course — Managed Pivot
@@ -858,6 +1066,22 @@ After applying changes, verify:
858
1066
  - No epic became too large (>8 stories)
859
1067
  - No story became too large (>8 tasks)
860
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
861
1085
  `,
862
1086
  },
863
1087
  // ── aped-ctx ────────────────────────────────────────────
@@ -866,7 +1090,11 @@ After applying changes, verify:
866
1090
  content: `---
867
1091
  name: aped-ctx
868
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.'
869
- 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'}
870
1098
  ---
871
1099
 
872
1100
  # APED Context — Brownfield Project Analysis
@@ -959,6 +1187,20 @@ project_context:
959
1187
  Suggest:
960
1188
  - If no brief exists: run \`/aped-a\` with project context loaded
961
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
962
1204
  `,
963
1205
  },
964
1206
  // ── aped-qa ─────────────────────────────────────────────
@@ -967,6 +1209,10 @@ Suggest:
967
1209
  content: `---
968
1210
  name: aped-qa
969
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'}
970
1216
  ---
971
1217
 
972
1218
  # APED QA — E2E & Integration Test Generation
@@ -1069,6 +1315,19 @@ QA doesn't affect pipeline state — it's an additive quality layer.
1069
1315
  ## Next Steps
1070
1316
 
1071
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
1072
1331
  `,
1073
1332
  },
1074
1333
  // ── aped-quick ────────────────────────────────────────────
@@ -1077,6 +1336,10 @@ Suggest running \`/aped-s\` to view updated sprint status with QA coverage noted
1077
1336
  content: `---
1078
1337
  name: aped-quick
1079
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'}
1080
1343
  ---
1081
1344
 
1082
1345
  # APED Quick — Fast Track for Small Changes
@@ -1140,6 +1403,20 @@ Read \`ticket_system\` and \`git_provider\` from config.
1140
1403
  1. Write quick spec to \`${o}/quick-specs/\` (create dir if needed)
1141
1404
  2. No state.yaml update — quick specs don't affect pipeline phase
1142
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
1143
1420
  `,
1144
1421
  },
1145
1422
  // ── aped-all ─────────────────────────────────────────────
@@ -1149,6 +1426,10 @@ Read \`ticket_system\` and \`git_provider\` from config.
1149
1426
  name: aped-all
1150
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.'
1151
1428
  disable-model-invocation: true
1429
+ license: MIT
1430
+ metadata:
1431
+ author: yabafre
1432
+ version: ${c.cliVersion || '1.7.1'}
1152
1433
  ---
1153
1434
 
1154
1435
  # APED Pipeline — Full Orchestrator
@@ -1194,6 +1475,22 @@ State persists in \`${o}/state.yaml\`. Next \`/aped-all\` resumes from last inco
1194
1475
  ## Completion Report
1195
1476
 
1196
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
1197
1494
  `,
1198
1495
  },
1199
1496
  ];