aped-method 1.3.0 → 1.7.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/bin/create-aped.js +8 -0
- package/package.json +1 -1
- package/src/index.js +15 -8
- package/src/templates/commands.js +57 -7
- package/src/templates/guardrail.js +2 -2
- package/src/templates/references.js +85 -0
- package/src/templates/skills.js +723 -22
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -63,7 +63,7 @@ ${a.lime}${a.bold} M E T H O D${a.reset}
|
|
|
63
63
|
${a.dim} ─────────────────────────────────${a.reset}
|
|
64
64
|
`;
|
|
65
65
|
|
|
66
|
-
const PIPELINE = ` ${a.emerald}${a.bold}A${a.reset}${a.dim}nalyze${a.reset} ${a.dim}→${a.reset} ${a.mint}${a.bold}P${a.reset}${a.dim}RD${a.reset} ${a.dim}→${a.reset} ${a.yellow}${a.bold}E${a.reset}${a.dim}pics${a.reset} ${a.dim}→${a.reset} ${a.lime}${a.bold}D${a.reset}${a.dim}ev${a.reset} ${a.dim}→${a.reset} ${a.red}${a.bold}R${a.reset}${a.dim}eview${a.reset}`;
|
|
66
|
+
const PIPELINE = ` ${a.emerald}${a.bold}A${a.reset}${a.dim}nalyze${a.reset} ${a.dim}→${a.reset} ${a.mint}${a.bold}P${a.reset}${a.dim}RD${a.reset} ${a.dim}→${a.reset} ${a.magenta}${a.bold}UX${a.reset} ${a.dim}→${a.reset} ${a.yellow}${a.bold}E${a.reset}${a.dim}pics${a.reset} ${a.dim}→${a.reset} ${a.lime}${a.bold}D${a.reset}${a.dim}ev${a.reset} ${a.dim}→${a.reset} ${a.red}${a.bold}R${a.reset}${a.dim}eview${a.reset}`;
|
|
67
67
|
|
|
68
68
|
// ── Spinner ──
|
|
69
69
|
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
@@ -580,15 +580,22 @@ function printDone(created, updated, skipped, mode) {
|
|
|
580
580
|
console.log(` ${a.emerald}${a.bold}╚══════════════════════════════════════╝${a.reset}`);
|
|
581
581
|
console.log('');
|
|
582
582
|
|
|
583
|
-
console.log(` ${a.bold}
|
|
583
|
+
console.log(` ${a.bold}Pipeline commands:${a.reset}`);
|
|
584
584
|
console.log('');
|
|
585
|
-
console.log(` ${a.emerald}${a.bold}/aped-a${a.reset}
|
|
586
|
-
console.log(` ${a.mint}${a.bold}/aped-p${a.reset}
|
|
587
|
-
console.log(` ${a.
|
|
588
|
-
console.log(` ${a.
|
|
589
|
-
console.log(` ${a.
|
|
585
|
+
console.log(` ${a.emerald}${a.bold}/aped-a${a.reset} ${dim('Analyze — parallel research → product brief')}`);
|
|
586
|
+
console.log(` ${a.mint}${a.bold}/aped-p${a.reset} ${dim('PRD — autonomous generation from brief')}`);
|
|
587
|
+
console.log(` ${a.magenta}${a.bold}/aped-ux${a.reset} ${dim('UX — screen flows, wireframes, components')}`);
|
|
588
|
+
console.log(` ${a.yellow}${a.bold}/aped-e${a.reset} ${dim('Epics — requirements decomposition')}`);
|
|
589
|
+
console.log(` ${a.lime}${a.bold}/aped-d${a.reset} ${dim('Dev — TDD story implementation')}`);
|
|
590
|
+
console.log(` ${a.red}${a.bold}/aped-r${a.reset} ${dim('Review — adversarial code review')}`);
|
|
590
591
|
console.log('');
|
|
591
|
-
console.log(`
|
|
592
|
+
console.log(` ${a.bold}Utility commands:${a.reset}`);
|
|
593
|
+
console.log('');
|
|
594
|
+
console.log(` ${a.spring}${a.bold}/aped-s${a.reset} ${dim('Sprint status — progress dashboard')}`);
|
|
595
|
+
console.log(` ${a.spring}${a.bold}/aped-c${a.reset} ${dim('Correct course — manage scope changes')}`);
|
|
596
|
+
console.log(` ${a.spring}${a.bold}/aped-ctx${a.reset} ${dim('Project context — brownfield analysis')}`);
|
|
597
|
+
console.log(` ${a.spring}${a.bold}/aped-qa${a.reset} ${dim('QA — generate E2E & integration tests')}`);
|
|
598
|
+
console.log(` ${a.spring}${a.bold}/aped-quick${a.reset} ${dim('Quick fix/feature — bypass pipeline')}`);
|
|
592
599
|
console.log(` ${a.spring}${a.bold}/aped-all${a.reset} ${dim('Full pipeline A→P→E→D→R')}`);
|
|
593
600
|
console.log('');
|
|
594
601
|
console.log(` ${dim('Guardrail hook active — pipeline coherence enforced')}`);
|
|
@@ -5,7 +5,7 @@ export function commands(c) {
|
|
|
5
5
|
path: `${c.commandsDir}/aped-a.md`,
|
|
6
6
|
content: `---
|
|
7
7
|
name: aped-a
|
|
8
|
-
description: '
|
|
8
|
+
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.'
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-a/SKILL.md
|
|
@@ -15,7 +15,7 @@ Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-a/SKILL.md
|
|
|
15
15
|
path: `${c.commandsDir}/aped-p.md`,
|
|
16
16
|
content: `---
|
|
17
17
|
name: aped-p
|
|
18
|
-
description: '
|
|
18
|
+
description: 'Generates PRD autonomously from product brief. Use when user says "create PRD", "generate PRD", "aped prd", or invokes /aped-p.'
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-p/SKILL.md
|
|
@@ -25,7 +25,7 @@ Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-p/SKILL.md
|
|
|
25
25
|
path: `${c.commandsDir}/aped-e.md`,
|
|
26
26
|
content: `---
|
|
27
27
|
name: aped-e
|
|
28
|
-
description: '
|
|
28
|
+
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.'
|
|
29
29
|
---
|
|
30
30
|
|
|
31
31
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-e/SKILL.md
|
|
@@ -35,7 +35,7 @@ Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-e/SKILL.md
|
|
|
35
35
|
path: `${c.commandsDir}/aped-d.md`,
|
|
36
36
|
content: `---
|
|
37
37
|
name: aped-d
|
|
38
|
-
description: '
|
|
38
|
+
description: 'Implements next story with TDD red-green-refactor cycle. Use when user says "start dev", "implement story", "aped dev", or invokes /aped-d.'
|
|
39
39
|
---
|
|
40
40
|
|
|
41
41
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-d/SKILL.md
|
|
@@ -45,17 +45,67 @@ Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-d/SKILL.md
|
|
|
45
45
|
path: `${c.commandsDir}/aped-r.md`,
|
|
46
46
|
content: `---
|
|
47
47
|
name: aped-r
|
|
48
|
-
description: '
|
|
48
|
+
description: 'Reviews completed stories adversarially with minimum 3 findings. Use when user says "review code", "run review", "aped review", or invokes /aped-r.'
|
|
49
49
|
---
|
|
50
50
|
|
|
51
51
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-r/SKILL.md
|
|
52
|
+
`,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
path: `${c.commandsDir}/aped-ux.md`,
|
|
56
|
+
content: `---
|
|
57
|
+
name: aped-ux
|
|
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
|
+
---
|
|
60
|
+
|
|
61
|
+
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-ux/SKILL.md
|
|
62
|
+
`,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: `${c.commandsDir}/aped-s.md`,
|
|
66
|
+
content: `---
|
|
67
|
+
name: aped-s
|
|
68
|
+
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.'
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-s/SKILL.md
|
|
72
|
+
`,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
path: `${c.commandsDir}/aped-c.md`,
|
|
76
|
+
content: `---
|
|
77
|
+
name: aped-c
|
|
78
|
+
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.'
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-c/SKILL.md
|
|
82
|
+
`,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
path: `${c.commandsDir}/aped-ctx.md`,
|
|
86
|
+
content: `---
|
|
87
|
+
name: aped-ctx
|
|
88
|
+
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.'
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-ctx/SKILL.md
|
|
92
|
+
`,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
path: `${c.commandsDir}/aped-qa.md`,
|
|
96
|
+
content: `---
|
|
97
|
+
name: aped-qa
|
|
98
|
+
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.'
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-qa/SKILL.md
|
|
52
102
|
`,
|
|
53
103
|
},
|
|
54
104
|
{
|
|
55
105
|
path: `${c.commandsDir}/aped-quick.md`,
|
|
56
106
|
content: `---
|
|
57
107
|
name: aped-quick
|
|
58
|
-
description: '
|
|
108
|
+
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.'
|
|
59
109
|
---
|
|
60
110
|
|
|
61
111
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-quick/SKILL.md
|
|
@@ -65,7 +115,7 @@ Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-quick/SKILL.md
|
|
|
65
115
|
path: `${c.commandsDir}/aped-all.md`,
|
|
66
116
|
content: `---
|
|
67
117
|
name: aped-all
|
|
68
|
-
description: '
|
|
118
|
+
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.'
|
|
69
119
|
---
|
|
70
120
|
|
|
71
121
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-all/SKILL.md
|
|
@@ -73,8 +73,8 @@ HAS_EPICS=false
|
|
|
73
73
|
# ── Phase-aware guardrail logic ──
|
|
74
74
|
WARNINGS=()
|
|
75
75
|
|
|
76
|
-
# Phase transition map: none → analyze → prd → epics → dev ↔ review → done
|
|
77
|
-
PHASE_ORDER="none analyze prd epics dev review done"
|
|
76
|
+
# Phase transition map: none → analyze → prd → ux → epics → dev ↔ review → done
|
|
77
|
+
PHASE_ORDER="none analyze prd ux epics dev review done"
|
|
78
78
|
|
|
79
79
|
phase_index() {
|
|
80
80
|
local i=0
|
|
@@ -46,6 +46,10 @@ export function references(c) {
|
|
|
46
46
|
path: `${a}/aped-r/references/review-criteria.md`,
|
|
47
47
|
content: REVIEW_CRITERIA,
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
path: `${a}/aped-ux/references/ux-patterns.md`,
|
|
51
|
+
content: UX_PATTERNS,
|
|
52
|
+
},
|
|
49
53
|
];
|
|
50
54
|
}
|
|
51
55
|
|
|
@@ -547,3 +551,84 @@ web_app,"website,webapp,browser,SPA,PWA","SPA or MPA?;Browser support?;SEO neede
|
|
|
547
551
|
mobile_app,"iOS,Android,app,mobile,iPhone,iPad","Native or cross-platform?;Offline needed?;Push notifications?;Device features?;Store compliance?","platform_reqs;device_permissions;offline_mode;push_strategy;store_compliance","desktop_features;cli_commands","app store guidelines;platform requirements","Gesture innovation;AR/VR features"
|
|
548
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"
|
|
549
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
|
+
|
|
555
|
+
const UX_PATTERNS = `# UX Screen Patterns Catalog
|
|
556
|
+
|
|
557
|
+
## Screen Types
|
|
558
|
+
|
|
559
|
+
### Form Screens
|
|
560
|
+
- **Login/Register**: email + password, social auth buttons, forgot link
|
|
561
|
+
- **Settings**: grouped sections, save/cancel, inline validation
|
|
562
|
+
- **Wizard/Multi-step**: progress indicator, back/next, step validation
|
|
563
|
+
- **Search + Filters**: search bar, filter sidebar/chips, results list
|
|
564
|
+
|
|
565
|
+
### List Screens
|
|
566
|
+
- **Data Table**: sortable headers, row actions, pagination, bulk select
|
|
567
|
+
- **Card Grid**: image + title + meta, responsive columns, load more
|
|
568
|
+
- **Feed/Timeline**: chronological, infinite scroll, activity items
|
|
569
|
+
|
|
570
|
+
### Detail Screens
|
|
571
|
+
- **Profile/Entity**: header (avatar, name, stats), tabbed content, actions
|
|
572
|
+
- **Article/Content**: title, meta, body, sidebar, related items
|
|
573
|
+
|
|
574
|
+
### Dashboard Screens
|
|
575
|
+
- **Analytics**: stat cards, charts, date range picker, export
|
|
576
|
+
- **Admin**: sidebar nav, content area, notification badge
|
|
577
|
+
|
|
578
|
+
### Utility Screens
|
|
579
|
+
- **Empty State**: illustration, message, CTA button
|
|
580
|
+
- **Error Page**: error code, message, back/home links
|
|
581
|
+
- **Loading**: skeleton screens, progress bar, spinner
|
|
582
|
+
|
|
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
|
|
634
|
+
`;
|
package/src/templates/skills.js
CHANGED
|
@@ -7,7 +7,7 @@ export function skills(c) {
|
|
|
7
7
|
path: `${a}/aped-a/SKILL.md`,
|
|
8
8
|
content: `---
|
|
9
9
|
name: aped-a
|
|
10
|
-
description: '
|
|
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
11
|
---
|
|
12
12
|
|
|
13
13
|
# APED Analyze — Parallel Research to Product Brief
|
|
@@ -29,13 +29,23 @@ Ask the user these questions (adapt to \`communication_language\`):
|
|
|
29
29
|
|
|
30
30
|
Wait for answers before proceeding.
|
|
31
31
|
|
|
32
|
+
## Task Tracking
|
|
33
|
+
|
|
34
|
+
Create tasks to track this phase:
|
|
35
|
+
\`\`\`
|
|
36
|
+
TaskCreate: "Parallel research — Market, Domain, Technical"
|
|
37
|
+
TaskCreate: "Synthesize research into product brief"
|
|
38
|
+
TaskCreate: "Validate brief"
|
|
39
|
+
\`\`\`
|
|
40
|
+
|
|
32
41
|
## Parallel Research
|
|
33
42
|
|
|
34
43
|
Read \`${a}/aped-a/references/research-prompts.md\` for detailed agent prompts.
|
|
35
44
|
|
|
36
|
-
Launch **3 Agent tool calls in
|
|
45
|
+
Launch **3 Agent tool calls in a single message** (parallel execution) with \`run_in_background: true\`:
|
|
37
46
|
|
|
38
47
|
### Agent 1: Market Research
|
|
48
|
+
- \`subagent_type: "Explore"\`
|
|
39
49
|
- Customer behavior and pain points in the target segment
|
|
40
50
|
- Competitive landscape: direct and indirect competitors
|
|
41
51
|
- Market size and growth trajectory
|
|
@@ -43,6 +53,7 @@ Launch **3 Agent tool calls in parallel** with \`run_in_background: true\`:
|
|
|
43
53
|
- Use WebSearch for current data
|
|
44
54
|
|
|
45
55
|
### Agent 2: Domain Research
|
|
56
|
+
- \`subagent_type: "Explore"\`
|
|
46
57
|
- Industry analysis and key trends
|
|
47
58
|
- Regulatory requirements and compliance needs
|
|
48
59
|
- Technical trends shaping the domain
|
|
@@ -50,12 +61,15 @@ Launch **3 Agent tool calls in parallel** with \`run_in_background: true\`:
|
|
|
50
61
|
- Use WebSearch for current data
|
|
51
62
|
|
|
52
63
|
### Agent 3: Technical Research
|
|
64
|
+
- \`subagent_type: "Explore"\`
|
|
53
65
|
- Technology stack overview and options
|
|
54
66
|
- Integration patterns and APIs available
|
|
55
67
|
- Architecture patterns for similar products
|
|
56
68
|
- Open-source tools and frameworks relevant
|
|
57
69
|
- Use WebSearch for current data
|
|
58
70
|
|
|
71
|
+
Once all 3 agents return, update task: \`TaskUpdate: "Parallel research" → completed\`
|
|
72
|
+
|
|
59
73
|
## Synthesis
|
|
60
74
|
|
|
61
75
|
Ensure output directory exists:
|
|
@@ -78,6 +92,12 @@ bash ${a}/aped-a/scripts/validate-brief.sh ${o}/product-brief.md
|
|
|
78
92
|
|
|
79
93
|
If validation fails: fix missing sections and re-validate.
|
|
80
94
|
|
|
95
|
+
Update tasks:
|
|
96
|
+
\`\`\`
|
|
97
|
+
TaskUpdate: "Synthesize research" → completed
|
|
98
|
+
TaskUpdate: "Validate brief" → completed
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
81
101
|
## State Update
|
|
82
102
|
|
|
83
103
|
Update \`${o}/state.yaml\`:
|
|
@@ -100,7 +120,7 @@ Invoke Skill tool with \`skill: "aped-p"\` to proceed to PRD phase.
|
|
|
100
120
|
path: `${a}/aped-p/SKILL.md`,
|
|
101
121
|
content: `---
|
|
102
122
|
name: aped-p
|
|
103
|
-
description: '
|
|
123
|
+
description: 'Generates PRD autonomously from product brief. Use when user says "create PRD", "generate PRD", "aped prd", or invokes /aped-p.'
|
|
104
124
|
---
|
|
105
125
|
|
|
106
126
|
# APED PRD — Autonomous PRD Generation
|
|
@@ -127,6 +147,19 @@ description: 'Generate PRD autonomously from product brief. Use when user says "
|
|
|
127
147
|
- Match against \`detection_signals\`
|
|
128
148
|
- Note \`required_sections\`, \`skip_sections\`, \`key_questions\`
|
|
129
149
|
|
|
150
|
+
## Task Tracking
|
|
151
|
+
|
|
152
|
+
Create tasks for each generation phase:
|
|
153
|
+
\`\`\`
|
|
154
|
+
TaskCreate: "P1: Foundation — Executive Summary & Vision"
|
|
155
|
+
TaskCreate: "P2: Scope & Journeys"
|
|
156
|
+
TaskCreate: "P3: Domain Requirements (conditional)"
|
|
157
|
+
TaskCreate: "P4: Functional & Non-Functional Requirements"
|
|
158
|
+
TaskCreate: "Validate PRD"
|
|
159
|
+
\`\`\`
|
|
160
|
+
|
|
161
|
+
Update each task to \`completed\` as you finish each phase.
|
|
162
|
+
|
|
130
163
|
## PRD Generation (4 compressed phases)
|
|
131
164
|
|
|
132
165
|
Generate the PRD autonomously using \`${a}/templates/prd.md\` as structure.
|
|
@@ -174,7 +207,9 @@ pipeline:
|
|
|
174
207
|
|
|
175
208
|
## Chain
|
|
176
209
|
|
|
177
|
-
|
|
210
|
+
Ask the user: "Do you want to design the UX before creating epics?"
|
|
211
|
+
- If yes: invoke Skill tool with \`skill: "aped-ux"\`
|
|
212
|
+
- If no: invoke Skill tool with \`skill: "aped-e"\` to skip directly to Epics
|
|
178
213
|
`,
|
|
179
214
|
},
|
|
180
215
|
// ── aped-e ──────────────────────────────────────────────
|
|
@@ -182,7 +217,7 @@ Invoke Skill tool with \`skill: "aped-e"\` to proceed to Epics phase.
|
|
|
182
217
|
path: `${a}/aped-e/SKILL.md`,
|
|
183
218
|
content: `---
|
|
184
219
|
name: aped-e
|
|
185
|
-
description: '
|
|
220
|
+
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.'
|
|
186
221
|
---
|
|
187
222
|
|
|
188
223
|
# APED Epics & Stories — Requirements Decomposition
|
|
@@ -200,6 +235,18 @@ description: 'Create epics and stories from PRD with full FR coverage. Use when
|
|
|
200
235
|
- If no prd phase in state: ask user for PRD path
|
|
201
236
|
- Extract ALL FRs and NFRs by number
|
|
202
237
|
|
|
238
|
+
## Task Tracking
|
|
239
|
+
|
|
240
|
+
\`\`\`
|
|
241
|
+
TaskCreate: "Extract FRs and NFRs from PRD"
|
|
242
|
+
TaskCreate: "Design epics (user-value grouping)"
|
|
243
|
+
TaskCreate: "Create stories with ACs and tasks"
|
|
244
|
+
TaskCreate: "FR coverage validation"
|
|
245
|
+
TaskCreate: "Write story files"
|
|
246
|
+
\`\`\`
|
|
247
|
+
|
|
248
|
+
Update each to \`completed\` as you progress.
|
|
249
|
+
|
|
203
250
|
## Epic Design
|
|
204
251
|
|
|
205
252
|
Read \`${a}/aped-e/references/epic-rules.md\` for design principles.
|
|
@@ -265,7 +312,8 @@ Invoke Skill tool with \`skill: "aped-d"\` to proceed to Dev Sprint.
|
|
|
265
312
|
path: `${a}/aped-d/SKILL.md`,
|
|
266
313
|
content: `---
|
|
267
314
|
name: aped-d
|
|
268
|
-
description: '
|
|
315
|
+
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
|
+
disable-model-invocation: true
|
|
269
317
|
---
|
|
270
318
|
|
|
271
319
|
# APED Dev Sprint — TDD Story Implementation
|
|
@@ -290,17 +338,35 @@ If story has \`[AI-Review]\` items: address them BEFORE regular tasks.
|
|
|
290
338
|
|
|
291
339
|
Update \`${o}/state.yaml\`: story — \`in-progress\`, epic — \`in-progress\` if first story.
|
|
292
340
|
|
|
341
|
+
## Task Tracking
|
|
342
|
+
|
|
343
|
+
Create a task for each story task checkbox:
|
|
344
|
+
\`\`\`
|
|
345
|
+
For each "- [ ] task description [AC: AC#]" in story:
|
|
346
|
+
TaskCreate: "task description" (status: todo)
|
|
347
|
+
\`\`\`
|
|
348
|
+
Update each to \`in_progress\` when starting RED, \`completed\` when GATE passes.
|
|
349
|
+
|
|
293
350
|
## Context Gathering
|
|
294
351
|
|
|
352
|
+
Launch **2 Agent tool calls in parallel** for context:
|
|
353
|
+
|
|
354
|
+
### Agent 1: Code Context
|
|
355
|
+
- \`subagent_type: "Explore"\`
|
|
295
356
|
- Read story Dev Notes for architecture, file paths, dependencies
|
|
296
|
-
- Use MCP context7 for library docs mentioned in Dev Notes
|
|
297
357
|
- Read existing code files mentioned in story
|
|
358
|
+
- Map the current state of files to modify
|
|
359
|
+
|
|
360
|
+
### Agent 2: Library Docs (if dependencies listed)
|
|
361
|
+
- \`subagent_type: "general-purpose"\`
|
|
362
|
+
- Use MCP context7 (\`resolve-library-id\` then \`query-docs\`) for libraries in Dev Notes
|
|
363
|
+
- Extract relevant API patterns and usage examples
|
|
298
364
|
|
|
299
365
|
## TDD Implementation
|
|
300
366
|
|
|
301
367
|
Read \`${a}/aped-d/references/tdd-engine.md\` for detailed rules.
|
|
302
368
|
|
|
303
|
-
For each task:
|
|
369
|
+
For each task (update TaskUpdate to \`in_progress\` when starting):
|
|
304
370
|
|
|
305
371
|
### RED
|
|
306
372
|
Write failing tests first. Run: \`bash ${a}/aped-d/scripts/run-tests.sh\`
|
|
@@ -328,7 +394,7 @@ Read \`git_provider\` and \`ticket_system\` from config:
|
|
|
328
394
|
|
|
329
395
|
1. Update story: mark tasks \`[x]\`, fill Dev Agent Record
|
|
330
396
|
2. Update \`${o}/state.yaml\`: story — \`review\`
|
|
331
|
-
3.
|
|
397
|
+
3. Invoke Skill tool with \`skill: "aped-r"\` to proceed to Review phase
|
|
332
398
|
`,
|
|
333
399
|
},
|
|
334
400
|
// ── aped-r ──────────────────────────────────────────────
|
|
@@ -336,7 +402,8 @@ Read \`git_provider\` and \`ticket_system\` from config:
|
|
|
336
402
|
path: `${a}/aped-r/SKILL.md`,
|
|
337
403
|
content: `---
|
|
338
404
|
name: aped-r
|
|
339
|
-
description: '
|
|
405
|
+
description: 'Reviews completed stories adversarially with minimum 3 findings. Use when user says "review code", "run review", "aped review", or invokes /aped-r.'
|
|
406
|
+
disable-model-invocation: true
|
|
340
407
|
---
|
|
341
408
|
|
|
342
409
|
# APED Review — Adversarial Code Review
|
|
@@ -357,20 +424,33 @@ Read story from \`${o}/stories/{story-key}.md\`
|
|
|
357
424
|
bash ${a}/aped-r/scripts/git-audit.sh ${o}/stories/{story-key}.md
|
|
358
425
|
\`\`\`
|
|
359
426
|
|
|
427
|
+
## Task Tracking
|
|
428
|
+
|
|
429
|
+
\`\`\`
|
|
430
|
+
TaskCreate: "Git audit"
|
|
431
|
+
TaskCreate: "AC validation"
|
|
432
|
+
TaskCreate: "Task audit"
|
|
433
|
+
TaskCreate: "Code quality review"
|
|
434
|
+
TaskCreate: "Generate review report"
|
|
435
|
+
\`\`\`
|
|
436
|
+
|
|
360
437
|
## Adversarial Review
|
|
361
438
|
|
|
362
439
|
Read \`${a}/aped-r/references/review-criteria.md\` for detailed criteria.
|
|
363
440
|
|
|
364
|
-
|
|
365
|
-
|
|
441
|
+
Launch **2 Agent tool calls in parallel** for the review:
|
|
442
|
+
|
|
443
|
+
### Agent 1: AC & Task Validation (\`subagent_type: "feature-dev:code-explorer"\`)
|
|
444
|
+
- For each AC: search code for evidence (file:line). Rate: IMPLEMENTED / PARTIAL / MISSING
|
|
445
|
+
- For each \`[x]\` task: find proof in code. No evidence = **CRITICAL**
|
|
366
446
|
|
|
367
|
-
### 2
|
|
368
|
-
|
|
447
|
+
### Agent 2: Code Quality (\`subagent_type: "feature-dev:code-reviewer"\`)
|
|
448
|
+
- Security, Performance, Reliability, Test Quality
|
|
449
|
+
- Focus on files listed in the story's File List section
|
|
369
450
|
|
|
370
|
-
|
|
371
|
-
Security, Performance, Reliability, Test Quality.
|
|
451
|
+
Once both agents return, merge findings. Update tasks to \`completed\`.
|
|
372
452
|
|
|
373
|
-
###
|
|
453
|
+
### Minimum 3 findings enforced.
|
|
374
454
|
|
|
375
455
|
## Report
|
|
376
456
|
|
|
@@ -383,7 +463,612 @@ Severity: CRITICAL > HIGH > MEDIUM > LOW. Format: \`[Severity] Description [file
|
|
|
383
463
|
|
|
384
464
|
## State Update
|
|
385
465
|
|
|
386
|
-
Update \`${o}/state.yaml\`. If more stories
|
|
466
|
+
Update \`${o}/state.yaml\`. If more stories remain: invoke Skill tool with \`skill: "aped-d"\`. If all stories done: report pipeline completion.
|
|
467
|
+
`,
|
|
468
|
+
},
|
|
469
|
+
// ── aped-ux ─────────────────────────────────────────────
|
|
470
|
+
{
|
|
471
|
+
path: `${a}/aped-ux/SKILL.md`,
|
|
472
|
+
content: `---
|
|
473
|
+
name: aped-ux
|
|
474
|
+
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.'
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
# APED UX — ANF Framework
|
|
478
|
+
|
|
479
|
+
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
|
+
|
|
481
|
+
**ANF = Assemble → Normalize → Fill**
|
|
482
|
+
|
|
483
|
+
\`\`\`
|
|
484
|
+
A: Design DNA N: React Preview F: Complete + Validate
|
|
485
|
+
(inputs) (live prototype) (user-approved spec)
|
|
486
|
+
|
|
487
|
+
Inspirations Vite + React app All screens built
|
|
488
|
+
+ UI library with REAL content + interaction states
|
|
489
|
+
+ color/typo from PRD context + responsive behavior
|
|
490
|
+
+ components (no lorem ipsum) + user review cycles
|
|
491
|
+
= UX spec for /aped-e
|
|
492
|
+
\`\`\`
|
|
493
|
+
|
|
494
|
+
## Setup
|
|
495
|
+
|
|
496
|
+
1. Read \`${a}/config.yaml\` — extract config
|
|
497
|
+
2. Read \`${o}/state.yaml\` — check pipeline state
|
|
498
|
+
- If \`pipeline.phases.ux.status\` is \`done\`: ask user — redo or skip?
|
|
499
|
+
- If user skips: invoke Skill tool with \`skill: "aped-e"\` and stop
|
|
500
|
+
3. Read \`${a}/aped-ux/references/ux-patterns.md\` for design patterns catalog
|
|
501
|
+
|
|
502
|
+
## Task Tracking
|
|
503
|
+
|
|
504
|
+
\`\`\`
|
|
505
|
+
TaskCreate: "A — Assemble: collect design DNA"
|
|
506
|
+
TaskCreate: "A — Assemble: scaffold Vite + React preview app"
|
|
507
|
+
TaskCreate: "N — Normalize: build layout + navigation + design tokens"
|
|
508
|
+
TaskCreate: "N — Normalize: implement screens with real PRD content"
|
|
509
|
+
TaskCreate: "F — Fill: complete all states (loading, error, empty)"
|
|
510
|
+
TaskCreate: "F — Fill: responsive + accessibility pass"
|
|
511
|
+
TaskCreate: "F — Fill: user review + validation"
|
|
512
|
+
\`\`\`
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
## A — ASSEMBLE (Design DNA)
|
|
517
|
+
|
|
518
|
+
### A1: Collect Design Inputs
|
|
519
|
+
|
|
520
|
+
Ask the user (adapt to \`communication_language\`):
|
|
521
|
+
|
|
522
|
+
1. **Inspirations** — "Share screenshots, URLs, or describe the visual direction you want"
|
|
523
|
+
- Accept: image files (Read tool), URLs (WebFetch), or verbal description
|
|
524
|
+
- If images: analyze layout, density, color palette, typography, component style
|
|
525
|
+
- If URLs: fetch and analyze visual patterns
|
|
526
|
+
|
|
527
|
+
2. **UI Library** — "Which component library? Or none (custom)?"
|
|
528
|
+
- Options: shadcn/ui, Radix UI, MUI, Ant Design, Chakra UI, Mantine, none
|
|
529
|
+
- If specified: use MCP context7 (\`resolve-library-id\` then \`query-docs\`) to load component API
|
|
530
|
+
- If none: will create custom components styled to match inspirations
|
|
531
|
+
|
|
532
|
+
3. **Design Tokens** — Extract or ask:
|
|
533
|
+
- **Colors**: primary, secondary, accent, neutral scale, semantic (success/warning/error/info)
|
|
534
|
+
- **Typography**: font family, size scale (xs to 2xl), weight scale, line heights
|
|
535
|
+
- **Spacing**: base unit (4px/8px), scale (1-12)
|
|
536
|
+
- **Radius**: none/sm/md/lg/full
|
|
537
|
+
- **Shadows**: sm/md/lg/xl
|
|
538
|
+
|
|
539
|
+
4. **Branding** — Logo, brand colors, tone (playful/serious/minimal/bold)
|
|
540
|
+
|
|
541
|
+
### A2: Scaffold Preview App
|
|
542
|
+
|
|
543
|
+
\`\`\`bash
|
|
544
|
+
mkdir -p ${o}/ux-preview
|
|
545
|
+
cd ${o}/ux-preview
|
|
546
|
+
npm create vite@latest . -- --template react-ts
|
|
547
|
+
npm install
|
|
548
|
+
\`\`\`
|
|
549
|
+
|
|
550
|
+
If UI library chosen:
|
|
551
|
+
\`\`\`bash
|
|
552
|
+
# Example for shadcn/ui:
|
|
553
|
+
npx shadcn@latest init
|
|
554
|
+
# Example for MUI:
|
|
555
|
+
npm install @mui/material @emotion/react @emotion/styled
|
|
556
|
+
\`\`\`
|
|
557
|
+
|
|
558
|
+
Create design token files:
|
|
559
|
+
- \`src/tokens/colors.ts\` — color palette as CSS custom properties or theme object
|
|
560
|
+
- \`src/tokens/typography.ts\` — font config
|
|
561
|
+
- \`src/tokens/spacing.ts\` — spacing scale
|
|
562
|
+
- \`src/theme.ts\` — unified theme export
|
|
563
|
+
|
|
564
|
+
Create \`src/data/mock.ts\` — **real content from PRD**, not lorem ipsum:
|
|
565
|
+
- Extract product name, user types, feature names, sample data from PRD
|
|
566
|
+
- Generate realistic mock data that matches the product domain
|
|
567
|
+
- Example: if building a project manager, mock projects have real-sounding names and dates
|
|
568
|
+
|
|
569
|
+
\`TaskUpdate: "A — Assemble: scaffold" → completed\`
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## N — NORMALIZE (React Preview with Real Content)
|
|
574
|
+
|
|
575
|
+
### N1: Layout + Navigation
|
|
576
|
+
|
|
577
|
+
Read PRD user journeys and screen inventory (from \`${a}/aped-ux/references/ux-patterns.md\`).
|
|
578
|
+
|
|
579
|
+
1. **Map screens** from PRD user journeys:
|
|
580
|
+
- Each journey → concrete screens
|
|
581
|
+
- Name: \`{area}-{action}\` slug (e.g., \`auth-login\`, \`dashboard-overview\`)
|
|
582
|
+
- Classify: form, list, detail, dashboard, wizard, modal
|
|
583
|
+
|
|
584
|
+
2. **Build layout shell** — \`src/layouts/\`:
|
|
585
|
+
- App layout (header, sidebar/nav, content, footer)
|
|
586
|
+
- Auth layout (centered card)
|
|
587
|
+
- Apply design tokens throughout
|
|
588
|
+
|
|
589
|
+
3. **Set up routing** — React Router with all screens as routes:
|
|
590
|
+
- \`src/App.tsx\` — router config
|
|
591
|
+
- \`src/pages/{ScreenSlug}.tsx\` — one page per screen (initially placeholder)
|
|
592
|
+
|
|
593
|
+
4. **Navigation** — working nav that links all screens:
|
|
594
|
+
- Sidebar or top nav matching design inspiration
|
|
595
|
+
- Active state indicators
|
|
596
|
+
- Mobile responsive (hamburger/drawer)
|
|
597
|
+
|
|
598
|
+
Run: \`npm run dev\` — verify app runs with working navigation.
|
|
599
|
+
|
|
600
|
+
### N2: Screen Implementation
|
|
601
|
+
|
|
602
|
+
For each screen, in priority order (core journey first):
|
|
603
|
+
|
|
604
|
+
1. **Read relevant FRs** for this screen
|
|
605
|
+
2. **Build with UI library components** (or custom styled components)
|
|
606
|
+
3. **Use real mock data** from \`src/data/mock.ts\` — product names, user names, realistic dates and numbers
|
|
607
|
+
4. **Implement the primary content** — forms, tables, cards, etc.
|
|
608
|
+
5. **Wire interactions** — form submits, button clicks, navigation (can be no-op handlers)
|
|
609
|
+
|
|
610
|
+
**CRITICAL: No lorem ipsum.** Every text element must reflect the actual product:
|
|
611
|
+
- If it's a SaaS dashboard, show realistic metric names and values
|
|
612
|
+
- If it's an e-commerce, show real-looking product names and prices
|
|
613
|
+
- If it's a project tool, show plausible project names and statuses
|
|
614
|
+
|
|
615
|
+
\`TaskUpdate: "N — Normalize: implement screens" → completed\`
|
|
616
|
+
|
|
617
|
+
---
|
|
618
|
+
|
|
619
|
+
## F — FILL (Complete + Validate)
|
|
620
|
+
|
|
621
|
+
### F1: Interaction States
|
|
622
|
+
|
|
623
|
+
For each screen, add:
|
|
624
|
+
|
|
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
|
|
629
|
+
|
|
630
|
+
### F2: Responsive + Accessibility
|
|
631
|
+
|
|
632
|
+
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
|
|
636
|
+
|
|
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
|
|
643
|
+
|
|
644
|
+
### F3: User Review Cycle
|
|
645
|
+
|
|
646
|
+
**This is the most important step.** The prototype must be validated by the user.
|
|
647
|
+
|
|
648
|
+
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:
|
|
651
|
+
- **Layout** — move, resize, reorder sections
|
|
652
|
+
- **Content** — missing info, wrong hierarchy, unclear labels
|
|
653
|
+
- **Style** — colors, spacing, typography adjustments
|
|
654
|
+
- **Flow** — navigation changes, missing screens, wrong order
|
|
655
|
+
- **Components** — wrong component type, missing states, wrong behavior
|
|
656
|
+
|
|
657
|
+
4. **Iterate** until user says "approved" or "good enough"
|
|
658
|
+
5. Each iteration: apply feedback → run dev → ask again
|
|
659
|
+
|
|
660
|
+
\`TaskUpdate: "F — Fill: user review" → completed\`
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
## Output
|
|
665
|
+
|
|
666
|
+
Once user approves the prototype:
|
|
667
|
+
|
|
668
|
+
\`\`\`bash
|
|
669
|
+
mkdir -p ${o}/ux
|
|
670
|
+
\`\`\`
|
|
671
|
+
|
|
672
|
+
1. **Preview app stays** at \`${o}/ux-preview/\` — living reference
|
|
673
|
+
2. Write \`${o}/ux/design-spec.md\`:
|
|
674
|
+
- Design tokens (colors, typo, spacing, radius)
|
|
675
|
+
- UI library + version
|
|
676
|
+
- Screen inventory with routes
|
|
677
|
+
- Component tree with props
|
|
678
|
+
- Layout specifications
|
|
679
|
+
- Responsive breakpoints
|
|
680
|
+
3. Write \`${o}/ux/screen-inventory.md\` — all screens with FR mapping
|
|
681
|
+
4. Write \`${o}/ux/components.md\` — component catalog from the preview app
|
|
682
|
+
5. Write \`${o}/ux/flows.md\` — navigation flow diagrams
|
|
683
|
+
6. Take **screenshots** of each screen at desktop resolution → \`${o}/ux/screenshots/\`
|
|
684
|
+
|
|
685
|
+
## State Update
|
|
686
|
+
|
|
687
|
+
Update \`${o}/state.yaml\`:
|
|
688
|
+
\`\`\`yaml
|
|
689
|
+
pipeline:
|
|
690
|
+
current_phase: "ux"
|
|
691
|
+
phases:
|
|
692
|
+
ux:
|
|
693
|
+
status: "done"
|
|
694
|
+
output: "${o}/ux/"
|
|
695
|
+
preview: "${o}/ux-preview/"
|
|
696
|
+
design_system:
|
|
697
|
+
ui_library: "{library}"
|
|
698
|
+
tokens: "${o}/ux-preview/src/tokens/"
|
|
699
|
+
\`\`\`
|
|
700
|
+
|
|
701
|
+
## Chain
|
|
702
|
+
|
|
703
|
+
Invoke Skill tool with \`skill: "aped-e"\` to proceed to Epics phase.
|
|
704
|
+
\`/aped-e\` reads \`${o}/ux/design-spec.md\` and the preview app to enrich stories with:
|
|
705
|
+
- Component references (which component to use, which props)
|
|
706
|
+
- Screen references (wireframe screenshots)
|
|
707
|
+
- Design tokens to respect
|
|
708
|
+
- Responsive requirements per screen
|
|
709
|
+
`,
|
|
710
|
+
},
|
|
711
|
+
// ── aped-s ──────────────────────────────────────────────
|
|
712
|
+
{
|
|
713
|
+
path: `${a}/aped-s/SKILL.md`,
|
|
714
|
+
content: `---
|
|
715
|
+
name: aped-s
|
|
716
|
+
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
|
|
718
|
+
---
|
|
719
|
+
|
|
720
|
+
# APED Status — Sprint Dashboard
|
|
721
|
+
|
|
722
|
+
## Setup
|
|
723
|
+
|
|
724
|
+
1. Read \`${a}/config.yaml\` — extract \`communication_language\`, \`ticket_system\`
|
|
725
|
+
2. Read \`${o}/state.yaml\` — load full pipeline and sprint state
|
|
726
|
+
|
|
727
|
+
## Pipeline Overview
|
|
728
|
+
|
|
729
|
+
Display current pipeline phase and completion status:
|
|
730
|
+
|
|
731
|
+
\`\`\`
|
|
732
|
+
Pipeline: A[✓] → P[✓] → E[✓] → D[▶] → R[ ]
|
|
733
|
+
\`\`\`
|
|
734
|
+
|
|
735
|
+
For each completed phase, show the output artifact path.
|
|
736
|
+
|
|
737
|
+
## Sprint Progress
|
|
738
|
+
|
|
739
|
+
For each epic in \`sprint.stories\`:
|
|
740
|
+
|
|
741
|
+
1. Count stories by status: \`done\`, \`in-progress\`, \`review\`, \`ready-for-dev\`, \`backlog\`
|
|
742
|
+
2. Calculate completion percentage
|
|
743
|
+
3. Display as progress bar:
|
|
744
|
+
|
|
745
|
+
\`\`\`
|
|
746
|
+
Epic 1: User Authentication [████████░░] 80% (4/5 stories)
|
|
747
|
+
✓ 1-1-project-setup done
|
|
748
|
+
✓ 1-2-user-registration done
|
|
749
|
+
✓ 1-3-login-flow done
|
|
750
|
+
✓ 1-4-password-reset done
|
|
751
|
+
▶ 1-5-session-management in-progress
|
|
752
|
+
\`\`\`
|
|
753
|
+
|
|
754
|
+
## Blockers Detection
|
|
755
|
+
|
|
756
|
+
Scan for:
|
|
757
|
+
- Stories with \`[AI-Review]\` items → **Review blockers**
|
|
758
|
+
- Stories \`in-progress\` for more than 1 session → **Stuck stories**
|
|
759
|
+
- Missing dependencies between stories → **Dependency blockers**
|
|
760
|
+
- HALT conditions logged in Dev Agent Record → **Dev halts**
|
|
761
|
+
|
|
762
|
+
## Next Actions
|
|
763
|
+
|
|
764
|
+
Based on current state, suggest the next logical command:
|
|
765
|
+
- If stories \`ready-for-dev\`: suggest \`/aped-d\`
|
|
766
|
+
- If stories in \`review\`: suggest \`/aped-r\`
|
|
767
|
+
- If all stories \`done\`: suggest pipeline complete
|
|
768
|
+
- If blockers found: describe resolution path
|
|
769
|
+
|
|
770
|
+
## Ticket System Integration
|
|
771
|
+
|
|
772
|
+
If \`ticket_system\` is not \`none\`:
|
|
773
|
+
- Show ticket references alongside story statuses
|
|
774
|
+
- Note any stories without ticket references
|
|
775
|
+
|
|
776
|
+
## Output
|
|
777
|
+
|
|
778
|
+
Display only — no file writes, no state changes. Pure read-only dashboard.
|
|
779
|
+
`,
|
|
780
|
+
},
|
|
781
|
+
// ── aped-c ──────────────────────────────────────────────
|
|
782
|
+
{
|
|
783
|
+
path: `${a}/aped-c/SKILL.md`,
|
|
784
|
+
content: `---
|
|
785
|
+
name: aped-c
|
|
786
|
+
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
|
+
disable-model-invocation: true
|
|
788
|
+
---
|
|
789
|
+
|
|
790
|
+
# APED Correct Course — Managed Pivot
|
|
791
|
+
|
|
792
|
+
Use when requirements change, priorities shift, or the current approach needs rethinking mid-pipeline.
|
|
793
|
+
|
|
794
|
+
## Setup
|
|
795
|
+
|
|
796
|
+
1. Read \`${a}/config.yaml\` — extract config
|
|
797
|
+
2. Read \`${o}/state.yaml\` — understand current pipeline state
|
|
798
|
+
3. Read existing artifacts: brief, PRD, epics, stories
|
|
799
|
+
|
|
800
|
+
## Impact Assessment
|
|
801
|
+
|
|
802
|
+
Ask the user:
|
|
803
|
+
1. **What changed?** — New requirement, removed feature, architectural pivot, priority shift
|
|
804
|
+
2. **Why?** — User feedback, market shift, technical limitation, stakeholder decision
|
|
805
|
+
|
|
806
|
+
Then analyze impact:
|
|
807
|
+
|
|
808
|
+
### Scope Change Matrix
|
|
809
|
+
|
|
810
|
+
| What changed | Artifacts affected | Action required |
|
|
811
|
+
|---|---|---|
|
|
812
|
+
| New feature added | PRD, Epics | Add FRs → create new stories |
|
|
813
|
+
| Feature removed | PRD, Epics | Remove FRs → archive stories |
|
|
814
|
+
| Architecture change | PRD NFRs, All stories | Update NFRs → review all Dev Notes |
|
|
815
|
+
| Priority reorder | Epics, Sprint | Reorder stories → update sprint |
|
|
816
|
+
| Complete pivot | Everything | Reset to /aped-a |
|
|
817
|
+
|
|
818
|
+
## Change Execution
|
|
819
|
+
|
|
820
|
+
### Minor change (new/removed feature)
|
|
821
|
+
1. Update PRD: add/remove FRs, update scope
|
|
822
|
+
2. Re-run validation: \`bash ${a}/aped-p/scripts/validate-prd.sh ${o}/prd.md\`
|
|
823
|
+
3. Update epics: add/archive affected stories
|
|
824
|
+
4. Re-run coverage: \`bash ${a}/aped-e/scripts/validate-coverage.sh ${o}/epics.md ${o}/prd.md\`
|
|
825
|
+
5. Update \`${o}/state.yaml\`: mark affected stories as \`backlog\`
|
|
826
|
+
|
|
827
|
+
### Major change (architecture/pivot)
|
|
828
|
+
1. Confirm with user: "This invalidates in-progress work. Proceed?"
|
|
829
|
+
2. Archive current artifacts to \`${o}/archive/{date}/\`
|
|
830
|
+
3. Update PRD or restart from \`/aped-a\`
|
|
831
|
+
4. Regenerate affected downstream artifacts
|
|
832
|
+
|
|
833
|
+
## Story Impact Report
|
|
834
|
+
|
|
835
|
+
For each in-progress or completed story:
|
|
836
|
+
- **Safe**: story not affected by change
|
|
837
|
+
- **Needs update**: story Dev Notes or ACs need modification
|
|
838
|
+
- **Invalidated**: story no longer relevant — archive it
|
|
839
|
+
|
|
840
|
+
## State Update
|
|
841
|
+
|
|
842
|
+
Update \`${o}/state.yaml\`:
|
|
843
|
+
- Reset affected stories to \`backlog\` or \`ready-for-dev\`
|
|
844
|
+
- If major change: reset \`current_phase\` to appropriate earlier phase
|
|
845
|
+
- Log the correction in pipeline phases:
|
|
846
|
+
\`\`\`yaml
|
|
847
|
+
corrections:
|
|
848
|
+
- date: "{date}"
|
|
849
|
+
type: "{minor|major}"
|
|
850
|
+
reason: "{user's reason}"
|
|
851
|
+
affected_stories: [...]
|
|
852
|
+
\`\`\`
|
|
853
|
+
|
|
854
|
+
## Guard Against Scope Creep
|
|
855
|
+
|
|
856
|
+
After applying changes, verify:
|
|
857
|
+
- Total FR count still within 10-80 range
|
|
858
|
+
- No epic became too large (>8 stories)
|
|
859
|
+
- No story became too large (>8 tasks)
|
|
860
|
+
- Changed stories still fit single-session size
|
|
861
|
+
`,
|
|
862
|
+
},
|
|
863
|
+
// ── aped-ctx ────────────────────────────────────────────
|
|
864
|
+
{
|
|
865
|
+
path: `${a}/aped-ctx/SKILL.md`,
|
|
866
|
+
content: `---
|
|
867
|
+
name: aped-ctx
|
|
868
|
+
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
|
|
870
|
+
---
|
|
871
|
+
|
|
872
|
+
# APED Context — Brownfield Project Analysis
|
|
873
|
+
|
|
874
|
+
Use on existing codebases to generate project context before running the APED pipeline. Essential for brownfield projects where you're adding features to existing code.
|
|
875
|
+
|
|
876
|
+
## Setup
|
|
877
|
+
|
|
878
|
+
1. Read \`${a}/config.yaml\` — extract config
|
|
879
|
+
2. Verify this is a brownfield project (existing code, not greenfield)
|
|
880
|
+
|
|
881
|
+
## Codebase Analysis
|
|
882
|
+
|
|
883
|
+
### Phase 1: Structure Discovery
|
|
884
|
+
|
|
885
|
+
Scan the project root:
|
|
886
|
+
- Detect language/framework from config files (package.json, Cargo.toml, go.mod, pyproject.toml, etc.)
|
|
887
|
+
- Map directory structure (max 3 levels deep)
|
|
888
|
+
- Identify entry points, main modules, config files
|
|
889
|
+
- Count: files, LOC, languages used
|
|
890
|
+
|
|
891
|
+
### Phase 2: Architecture Mapping
|
|
892
|
+
|
|
893
|
+
- Identify architectural pattern (MVC, hexagonal, microservices, monolith, etc.)
|
|
894
|
+
- Map data flow: entry point → processing → storage → response
|
|
895
|
+
- List external dependencies and integrations (APIs, databases, queues, caches)
|
|
896
|
+
- Identify test framework and coverage approach
|
|
897
|
+
|
|
898
|
+
### Phase 3: Convention Extraction
|
|
899
|
+
|
|
900
|
+
- Naming conventions (files, functions, variables, classes)
|
|
901
|
+
- Code organization patterns (feature-based, layer-based, domain-based)
|
|
902
|
+
- Error handling patterns
|
|
903
|
+
- Logging approach
|
|
904
|
+
- Config management (env vars, config files, secrets)
|
|
905
|
+
|
|
906
|
+
### Phase 4: Dependency Audit
|
|
907
|
+
|
|
908
|
+
- List production dependencies with versions
|
|
909
|
+
- Flag outdated or deprecated packages
|
|
910
|
+
- Identify security advisories (if available)
|
|
911
|
+
- Note lock file type (package-lock, yarn.lock, pnpm-lock, etc.)
|
|
912
|
+
|
|
913
|
+
## Output
|
|
914
|
+
|
|
915
|
+
Write project context to \`${o}/project-context.md\`:
|
|
916
|
+
|
|
917
|
+
\`\`\`markdown
|
|
918
|
+
# Project Context: {project_name}
|
|
919
|
+
|
|
920
|
+
## Tech Stack
|
|
921
|
+
- Language: {lang} {version}
|
|
922
|
+
- Framework: {framework} {version}
|
|
923
|
+
- Database: {db}
|
|
924
|
+
- Test Framework: {test_framework}
|
|
925
|
+
|
|
926
|
+
## Architecture
|
|
927
|
+
- Pattern: {pattern}
|
|
928
|
+
- Entry Point: {entry}
|
|
929
|
+
- Key Modules: {modules}
|
|
930
|
+
|
|
931
|
+
## Conventions
|
|
932
|
+
- File naming: {convention}
|
|
933
|
+
- Code style: {style}
|
|
934
|
+
- Error handling: {pattern}
|
|
935
|
+
|
|
936
|
+
## Dependencies
|
|
937
|
+
| Package | Version | Purpose |
|
|
938
|
+
|---------|---------|---------|
|
|
939
|
+
|
|
940
|
+
## Integration Points
|
|
941
|
+
- {service}: {purpose}
|
|
942
|
+
|
|
943
|
+
## Notes for Development
|
|
944
|
+
- {important context for new feature development}
|
|
945
|
+
\`\`\`
|
|
946
|
+
|
|
947
|
+
## State Update
|
|
948
|
+
|
|
949
|
+
Update \`${o}/state.yaml\`:
|
|
950
|
+
\`\`\`yaml
|
|
951
|
+
project_context:
|
|
952
|
+
generated: true
|
|
953
|
+
path: "${o}/project-context.md"
|
|
954
|
+
type: "brownfield"
|
|
955
|
+
\`\`\`
|
|
956
|
+
|
|
957
|
+
## Next Steps
|
|
958
|
+
|
|
959
|
+
Suggest:
|
|
960
|
+
- If no brief exists: run \`/aped-a\` with project context loaded
|
|
961
|
+
- If brief exists: context will inform \`/aped-p\` and \`/aped-d\` decisions
|
|
962
|
+
`,
|
|
963
|
+
},
|
|
964
|
+
// ── aped-qa ─────────────────────────────────────────────
|
|
965
|
+
{
|
|
966
|
+
path: `${a}/aped-qa/SKILL.md`,
|
|
967
|
+
content: `---
|
|
968
|
+
name: aped-qa
|
|
969
|
+
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.'
|
|
970
|
+
---
|
|
971
|
+
|
|
972
|
+
# APED QA — E2E & Integration Test Generation
|
|
973
|
+
|
|
974
|
+
Generate comprehensive end-to-end and integration tests for completed stories or epics. Complements the unit tests written during /aped-d TDD.
|
|
975
|
+
|
|
976
|
+
## Setup
|
|
977
|
+
|
|
978
|
+
1. Read \`${a}/config.yaml\` — extract config
|
|
979
|
+
2. Read \`${o}/state.yaml\` — find completed stories/epics
|
|
980
|
+
|
|
981
|
+
## Scope Selection
|
|
982
|
+
|
|
983
|
+
Ask the user:
|
|
984
|
+
1. **What to test?** — specific story, full epic, or all completed work
|
|
985
|
+
2. **Test type?** — E2E (user journeys), Integration (API/service), or Both
|
|
986
|
+
|
|
987
|
+
## Story/Epic Analysis
|
|
988
|
+
|
|
989
|
+
For the selected scope:
|
|
990
|
+
1. Read story files from \`${o}/stories/\`
|
|
991
|
+
2. Extract all Acceptance Criteria (Given/When/Then)
|
|
992
|
+
3. Map user journeys across stories (multi-step flows)
|
|
993
|
+
4. Identify integration points (APIs, databases, external services)
|
|
994
|
+
|
|
995
|
+
## Task Tracking
|
|
996
|
+
|
|
997
|
+
\`\`\`
|
|
998
|
+
TaskCreate: "Analyze stories and extract ACs"
|
|
999
|
+
TaskCreate: "Generate E2E tests"
|
|
1000
|
+
TaskCreate: "Generate integration tests"
|
|
1001
|
+
TaskCreate: "Run and verify all tests"
|
|
1002
|
+
TaskCreate: "Write QA report"
|
|
1003
|
+
\`\`\`
|
|
1004
|
+
|
|
1005
|
+
## Test Generation
|
|
1006
|
+
|
|
1007
|
+
Launch **2 Agent tool calls in parallel**:
|
|
1008
|
+
|
|
1009
|
+
### Agent 1: E2E Tests (\`subagent_type: "general-purpose"\`)
|
|
1010
|
+
|
|
1011
|
+
For each user journey that spans one or more stories:
|
|
1012
|
+
|
|
1013
|
+
1. Map the full flow: entry → steps → expected outcome
|
|
1014
|
+
2. Generate test using the project's test framework
|
|
1015
|
+
3. Each AC's Given/When/Then becomes a test step
|
|
1016
|
+
4. Include:
|
|
1017
|
+
- Happy path (main flow)
|
|
1018
|
+
- Error paths (invalid input, unauthorized, not found)
|
|
1019
|
+
- Edge cases (empty data, concurrent access, timeouts)
|
|
1020
|
+
|
|
1021
|
+
### Agent 2: Integration Tests (\`subagent_type: "general-purpose"\`)
|
|
1022
|
+
|
|
1023
|
+
For each integration point:
|
|
1024
|
+
|
|
1025
|
+
1. Test request/response contracts
|
|
1026
|
+
2. Test error handling (service down, timeout, malformed response)
|
|
1027
|
+
3. Test data consistency (DB state before/after)
|
|
1028
|
+
4. Test authentication/authorization boundaries
|
|
1029
|
+
|
|
1030
|
+
Once both agents return, update tasks to \`completed\`.
|
|
1031
|
+
|
|
1032
|
+
### Test Naming Convention
|
|
1033
|
+
|
|
1034
|
+
\`\`\`
|
|
1035
|
+
{test-type}/{epic-slug}/{story-slug}.test.{ext}
|
|
1036
|
+
\`\`\`
|
|
1037
|
+
|
|
1038
|
+
## Framework Detection
|
|
1039
|
+
|
|
1040
|
+
Read project config to auto-detect:
|
|
1041
|
+
- **Node.js**: Playwright, Cypress, or Puppeteer for E2E; Supertest for API
|
|
1042
|
+
- **Python**: Pytest + httpx for API; Playwright for E2E
|
|
1043
|
+
- **Go**: Go test + httptest for API
|
|
1044
|
+
- **Rust**: reqwest for API tests
|
|
1045
|
+
|
|
1046
|
+
Use \`bash ${a}/aped-d/scripts/run-tests.sh\` to verify tests pass.
|
|
1047
|
+
|
|
1048
|
+
## Test Coverage Report
|
|
1049
|
+
|
|
1050
|
+
After generation:
|
|
1051
|
+
- List ACs covered vs uncovered
|
|
1052
|
+
- List user journeys tested
|
|
1053
|
+
- List integration points tested
|
|
1054
|
+
- Flag any untestable ACs (and why)
|
|
1055
|
+
|
|
1056
|
+
## Output
|
|
1057
|
+
|
|
1058
|
+
1. Write tests to project test directory (detect convention)
|
|
1059
|
+
2. Write QA report to \`${o}/qa-report.md\`:
|
|
1060
|
+
- Stories tested
|
|
1061
|
+
- Tests generated (count by type)
|
|
1062
|
+
- Coverage gaps
|
|
1063
|
+
- Manual test suggestions (for things that can't be automated)
|
|
1064
|
+
|
|
1065
|
+
## No State Change
|
|
1066
|
+
|
|
1067
|
+
QA doesn't affect pipeline state — it's an additive quality layer.
|
|
1068
|
+
|
|
1069
|
+
## Next Steps
|
|
1070
|
+
|
|
1071
|
+
Suggest running \`/aped-s\` to view updated sprint status with QA coverage noted.
|
|
387
1072
|
`,
|
|
388
1073
|
},
|
|
389
1074
|
// ── aped-quick ────────────────────────────────────────────
|
|
@@ -391,7 +1076,7 @@ Update \`${o}/state.yaml\`. If more stories — chain to \`/aped-d\`. If all don
|
|
|
391
1076
|
path: `${a}/aped-quick/SKILL.md`,
|
|
392
1077
|
content: `---
|
|
393
1078
|
name: aped-quick
|
|
394
|
-
description: '
|
|
1079
|
+
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.'
|
|
395
1080
|
---
|
|
396
1081
|
|
|
397
1082
|
# APED Quick — Fast Track for Small Changes
|
|
@@ -462,7 +1147,8 @@ Read \`ticket_system\` and \`git_provider\` from config.
|
|
|
462
1147
|
path: `${a}/aped-all/SKILL.md`,
|
|
463
1148
|
content: `---
|
|
464
1149
|
name: aped-all
|
|
465
|
-
description: '
|
|
1150
|
+
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
|
+
disable-model-invocation: true
|
|
466
1152
|
---
|
|
467
1153
|
|
|
468
1154
|
# APED Pipeline — Full Orchestrator
|
|
@@ -477,13 +1163,28 @@ description: 'Run full APED pipeline from Analyze through Review. Use when user
|
|
|
477
1163
|
| No state / \`current_phase: "none"\` | Start from \`/aped-a\` |
|
|
478
1164
|
| Any phase \`in-progress\` | Re-invoke that phase (ask user: resume or restart?) |
|
|
479
1165
|
| analyze \`done\`, prd missing | Invoke \`/aped-p\` |
|
|
480
|
-
| prd \`done\`,
|
|
1166
|
+
| prd \`done\`, ux missing | Invoke \`/aped-ux\` (optional — ask user: design UX or skip to epics?) |
|
|
1167
|
+
| ux \`done\` or skipped, epics missing | Invoke \`/aped-e\` |
|
|
481
1168
|
| epics \`done\` | Loop: \`/aped-d\` — \`/aped-r\` until all stories \`done\` |
|
|
482
1169
|
| All stories \`done\` | Report pipeline complete |
|
|
483
1170
|
|
|
1171
|
+
## Task Tracking
|
|
1172
|
+
|
|
1173
|
+
Create a task per pipeline phase:
|
|
1174
|
+
\`\`\`
|
|
1175
|
+
TaskCreate: "Phase A — Analyze"
|
|
1176
|
+
TaskCreate: "Phase P — PRD"
|
|
1177
|
+
TaskCreate: "Phase UX — UX Design (optional)"
|
|
1178
|
+
TaskCreate: "Phase E — Epics"
|
|
1179
|
+
TaskCreate: "Phase D — Dev Sprint"
|
|
1180
|
+
TaskCreate: "Phase R — Review"
|
|
1181
|
+
\`\`\`
|
|
1182
|
+
|
|
1183
|
+
Update each to \`in_progress\` when invoking, \`completed\` when phase returns done.
|
|
1184
|
+
|
|
484
1185
|
## Execution
|
|
485
1186
|
|
|
486
|
-
Use the Skill tool to invoke each phase: aped-a, aped-p, aped-e, aped-d, aped-r.
|
|
1187
|
+
Use the Skill tool to invoke each phase: aped-a, aped-p, aped-ux (optional), aped-e, aped-d, aped-r.
|
|
487
1188
|
Each phase updates \`${o}/state.yaml\` and chains automatically.
|
|
488
1189
|
|
|
489
1190
|
## Interruption Handling
|