aped-method 1.0.0 → 1.6.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 +322 -67
- package/src/templates/commands.js +66 -6
- package/src/templates/config.js +38 -1
- package/src/templates/guardrail.js +11 -3
- package/src/templates/references.js +85 -0
- package/src/templates/skills.js +760 -39
|
@@ -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,77 @@ 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 specifications from PRD — screen flows, wireframes, component inventory. Use when user says "design UX", "create wireframes", "UX spec", "aped ux", or invokes /aped-ux. Runs between PRD and Epics phases.'
|
|
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
|
|
102
|
+
`,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
path: `${c.commandsDir}/aped-quick.md`,
|
|
106
|
+
content: `---
|
|
107
|
+
name: aped-quick
|
|
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.'
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-quick/SKILL.md
|
|
52
112
|
`,
|
|
53
113
|
},
|
|
54
114
|
{
|
|
55
115
|
path: `${c.commandsDir}/aped-all.md`,
|
|
56
116
|
content: `---
|
|
57
117
|
name: aped-all
|
|
58
|
-
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.'
|
|
59
119
|
---
|
|
60
120
|
|
|
61
121
|
Read and follow the SKILL.md at $PROJECT_ROOT/${a}/aped-all/SKILL.md
|
package/src/templates/config.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export function configFiles(c) {
|
|
2
2
|
const a = c.apedDir;
|
|
3
3
|
const o = c.outputDir;
|
|
4
|
+
const ts = c.ticketSystem || 'none';
|
|
5
|
+
const gp = c.gitProvider || 'github';
|
|
6
|
+
const ver = c.cliVersion || '0.0.0';
|
|
4
7
|
return [
|
|
5
8
|
{
|
|
6
9
|
path: `${a}/config.yaml`,
|
|
@@ -11,10 +14,15 @@ communication_language: ${c.communicationLang}
|
|
|
11
14
|
document_output_language: ${c.documentLang}
|
|
12
15
|
aped_path: ${a}
|
|
13
16
|
output_path: ${o}
|
|
17
|
+
aped_version: ${ver}
|
|
18
|
+
|
|
19
|
+
# Integrations
|
|
20
|
+
ticket_system: ${ts}
|
|
21
|
+
git_provider: ${gp}
|
|
14
22
|
`,
|
|
15
23
|
},
|
|
16
24
|
{
|
|
17
|
-
path: `${
|
|
25
|
+
path: `${o}/state.yaml`,
|
|
18
26
|
content: `# APED Pipeline State
|
|
19
27
|
pipeline:
|
|
20
28
|
current_phase: "none"
|
|
@@ -224,6 +232,35 @@ sprint:
|
|
|
224
232
|
### Completion Notes
|
|
225
233
|
|
|
226
234
|
### File List
|
|
235
|
+
`,
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
path: `${a}/templates/quick-spec.md`,
|
|
239
|
+
content: `# Quick Spec: {{title}}
|
|
240
|
+
|
|
241
|
+
**Date:** {{date}}
|
|
242
|
+
**Author:** {{user_name}}
|
|
243
|
+
**Type:** {{fix|feature|refactor}}
|
|
244
|
+
|
|
245
|
+
## What
|
|
246
|
+
|
|
247
|
+
<!-- 1-2 sentences: what needs to change -->
|
|
248
|
+
|
|
249
|
+
## Why
|
|
250
|
+
|
|
251
|
+
<!-- 1 sentence: why this change matters now -->
|
|
252
|
+
|
|
253
|
+
## Acceptance Criteria
|
|
254
|
+
|
|
255
|
+
- [ ] {{criterion}}
|
|
256
|
+
|
|
257
|
+
## Files to Change
|
|
258
|
+
|
|
259
|
+
- {{file_path}} — {{what to change}}
|
|
260
|
+
|
|
261
|
+
## Test Plan
|
|
262
|
+
|
|
263
|
+
- {{test description}}
|
|
227
264
|
`,
|
|
228
265
|
},
|
|
229
266
|
];
|
|
@@ -13,7 +13,7 @@ export function guardrail(c) {
|
|
|
13
13
|
set -euo pipefail
|
|
14
14
|
|
|
15
15
|
PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
16
|
-
STATE_FILE="$PROJECT_ROOT/${
|
|
16
|
+
STATE_FILE="$PROJECT_ROOT/${o}/state.yaml"
|
|
17
17
|
CONFIG_FILE="$PROJECT_ROOT/${a}/config.yaml"
|
|
18
18
|
OUTPUT_DIR="$PROJECT_ROOT/${o}"
|
|
19
19
|
|
|
@@ -56,6 +56,9 @@ WANTS_CODE=false
|
|
|
56
56
|
[[ "$PROMPT_LOWER" =~ (aped-d|/aped-d|dev|implement|code|build|create.*component|create.*service) ]] && WANTS_DEV=true
|
|
57
57
|
[[ "$PROMPT_LOWER" =~ (aped-r|/aped-r|review|audit) ]] && WANTS_REVIEW=true
|
|
58
58
|
[[ "$PROMPT_LOWER" =~ (aped-all|/aped-all|full.pipeline|start.from.scratch) ]] && WANTS_ALL=true
|
|
59
|
+
WANTS_QUICK=false
|
|
60
|
+
|
|
61
|
+
[[ "$PROMPT_LOWER" =~ (aped-quick|/aped-quick|quick.fix|quick.feature|hotfix) ]] && WANTS_QUICK=true
|
|
59
62
|
[[ "$PROMPT_LOWER" =~ (code|implement|write.*function|create.*file|add.*feature|fix.*bug|refactor) ]] && WANTS_CODE=true
|
|
60
63
|
|
|
61
64
|
# ── Check artifact existence ──
|
|
@@ -70,8 +73,8 @@ HAS_EPICS=false
|
|
|
70
73
|
# ── Phase-aware guardrail logic ──
|
|
71
74
|
WARNINGS=()
|
|
72
75
|
|
|
73
|
-
# Phase transition map: none → analyze → prd → epics → dev ↔ review → done
|
|
74
|
-
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"
|
|
75
78
|
|
|
76
79
|
phase_index() {
|
|
77
80
|
local i=0
|
|
@@ -84,6 +87,11 @@ phase_index() {
|
|
|
84
87
|
|
|
85
88
|
CURRENT_IDX=$(phase_index "$CURRENT_PHASE")
|
|
86
89
|
|
|
90
|
+
# Rule 0: Quick mode bypasses pipeline checks
|
|
91
|
+
if [[ "$WANTS_QUICK" == "true" ]]; then
|
|
92
|
+
exit 0
|
|
93
|
+
fi
|
|
94
|
+
|
|
87
95
|
# Rule 1: Trying to code without epics/stories
|
|
88
96
|
if [[ "$WANTS_CODE" == "true" || "$WANTS_DEV" == "true" ]] && [[ "$CURRENT_PHASE" != "dev" && "$CURRENT_PHASE" != "review" ]]; then
|
|
89
97
|
if [[ "$HAS_EPICS" == "false" ]]; then
|
|
@@ -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
|
+
`;
|