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 +1 -1
- package/src/templates/references.js +219 -52
- package/src/templates/skills.js +321 -24
package/package.json
CHANGED
|
@@ -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
|
|
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
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
-
|
|
589
|
-
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
-
|
|
606
|
-
-
|
|
607
|
-
-
|
|
608
|
-
|
|
609
|
-
###
|
|
610
|
-
-
|
|
611
|
-
-
|
|
612
|
-
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
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
|
`;
|
package/src/templates/skills.js
CHANGED
|
@@ -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** —
|
|
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
|
|
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
|
|
626
|
-
2. **Empty states** — first-use experience, "no results" views
|
|
627
|
-
3. **Error states** — inline
|
|
628
|
-
4. **Success feedback** —
|
|
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 +
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
650
|
-
3.
|
|
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
|
-
|
|
658
|
-
|
|
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
|
|
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
|
|
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
|
];
|