devlyn-cli 1.14.0 → 2.0.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/AGENTS.md +104 -0
- package/CLAUDE.md +112 -119
- package/README.md +43 -125
- package/benchmark/auto-resolve/BENCHMARK-DESIGN.md +272 -0
- package/benchmark/auto-resolve/README.md +114 -0
- package/benchmark/auto-resolve/RUBRIC.md +162 -0
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/NOTES.md +30 -0
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/expected.json +68 -0
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/setup.sh +4 -0
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/spec.md +45 -0
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/task.txt +8 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/NOTES.md +54 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected-pair-plan-registry.json +170 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected.json +84 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/metadata.json +21 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-fail.json +214 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-pass.json +223 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/setup.sh +5 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/spec.md +56 -0
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/task.txt +14 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/NOTES.md +28 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected-pair-plan-registry.json +162 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected.json +65 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/metadata.json +19 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/setup.sh +4 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/spec.md +56 -0
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/task.txt +9 -0
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/NOTES.md +40 -0
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/expected.json +57 -0
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/setup.sh +6 -0
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/spec.md +49 -0
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/task.txt +9 -0
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/NOTES.md +38 -0
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/expected.json +65 -0
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/setup.sh +55 -0
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/spec.md +49 -0
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/task.txt +7 -0
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/NOTES.md +38 -0
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/expected.json +77 -0
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/setup.sh +4 -0
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/spec.md +49 -0
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/task.txt +10 -0
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/NOTES.md +50 -0
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/expected.json +76 -0
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/setup.sh +36 -0
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/spec.md +46 -0
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/task.txt +7 -0
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/NOTES.md +50 -0
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/expected.json +63 -0
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/setup.sh +4 -0
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/spec.md +48 -0
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/task.txt +1 -0
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/NOTES.md +93 -0
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/expected.json +74 -0
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/metadata.json +10 -0
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/setup.sh +28 -0
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/spec.md +62 -0
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/task.txt +5 -0
- package/benchmark/auto-resolve/fixtures/SCHEMA.md +130 -0
- package/benchmark/auto-resolve/fixtures/test-repo/README.md +27 -0
- package/benchmark/auto-resolve/fixtures/test-repo/bin/cli.js +63 -0
- package/benchmark/auto-resolve/fixtures/test-repo/package-lock.json +823 -0
- package/benchmark/auto-resolve/fixtures/test-repo/package.json +22 -0
- package/benchmark/auto-resolve/fixtures/test-repo/playwright.config.js +17 -0
- package/benchmark/auto-resolve/fixtures/test-repo/server/index.js +37 -0
- package/benchmark/auto-resolve/fixtures/test-repo/tests/cli.test.js +25 -0
- package/benchmark/auto-resolve/fixtures/test-repo/tests/server.test.js +58 -0
- package/benchmark/auto-resolve/fixtures/test-repo/web/index.html +37 -0
- package/benchmark/auto-resolve/scripts/build-pair-eligible-manifest.py +174 -0
- package/benchmark/auto-resolve/scripts/check-f9-artifacts.py +256 -0
- package/benchmark/auto-resolve/scripts/compile-report.py +331 -0
- package/benchmark/auto-resolve/scripts/iter-0033c-compare.py +552 -0
- package/benchmark/auto-resolve/scripts/judge-opus-pass.sh +430 -0
- package/benchmark/auto-resolve/scripts/judge.sh +359 -0
- package/benchmark/auto-resolve/scripts/oracle-scope-tier-a.py +260 -0
- package/benchmark/auto-resolve/scripts/oracle-scope-tier-b.py +274 -0
- package/benchmark/auto-resolve/scripts/oracle-test-fidelity.py +328 -0
- package/benchmark/auto-resolve/scripts/pair-plan-idgen.py +401 -0
- package/benchmark/auto-resolve/scripts/pair-plan-lint.py +468 -0
- package/benchmark/auto-resolve/scripts/run-fixture.sh +691 -0
- package/benchmark/auto-resolve/scripts/run-iter-0033c.sh +234 -0
- package/benchmark/auto-resolve/scripts/run-suite.sh +214 -0
- package/benchmark/auto-resolve/scripts/ship-gate.py +222 -0
- package/bin/devlyn.js +129 -17
- package/config/skills/_shared/adapters/README.md +64 -0
- package/config/skills/_shared/adapters/gpt-5-5.md +29 -0
- package/config/skills/_shared/adapters/opus-4-7.md +29 -0
- package/config/skills/_shared/archive_run.py +130 -0
- package/config/skills/_shared/codex-config.md +54 -0
- package/config/skills/_shared/codex-monitored.sh +141 -0
- package/config/skills/_shared/engine-preflight.md +35 -0
- package/config/skills/_shared/expected.schema.json +93 -0
- package/config/skills/_shared/pair-plan-schema.md +298 -0
- package/config/skills/_shared/runtime-principles.md +110 -0
- package/config/skills/_shared/spec-verify-check.py +519 -0
- package/config/skills/devlyn:ideate/SKILL.md +99 -481
- package/config/skills/devlyn:ideate/references/elicitation.md +97 -0
- package/config/skills/devlyn:ideate/references/from-spec-mode.md +54 -0
- package/config/skills/devlyn:ideate/references/project-mode.md +76 -0
- package/config/skills/devlyn:ideate/references/spec-template.md +102 -0
- package/config/skills/devlyn:resolve/SKILL.md +172 -184
- package/config/skills/devlyn:resolve/references/free-form-mode.md +68 -0
- package/config/skills/devlyn:resolve/references/phases/build-gate.md +45 -0
- package/config/skills/devlyn:resolve/references/phases/cleanup.md +39 -0
- package/config/skills/devlyn:resolve/references/phases/implement.md +42 -0
- package/config/skills/devlyn:resolve/references/phases/plan.md +42 -0
- package/config/skills/devlyn:resolve/references/phases/verify.md +69 -0
- package/config/skills/devlyn:resolve/references/state-schema.md +106 -0
- package/{config/skills → optional-skills}/devlyn:design-system/SKILL.md +1 -0
- package/optional-skills/devlyn:reap/SKILL.md +105 -0
- package/optional-skills/devlyn:reap/scripts/reap.sh +129 -0
- package/optional-skills/devlyn:reap/scripts/scan.sh +116 -0
- package/{config/skills → optional-skills}/devlyn:team-design-ui/SKILL.md +5 -0
- package/package.json +16 -2
- package/scripts/lint-skills.sh +431 -0
- package/config/skills/devlyn:auto-resolve/SKILL.md +0 -602
- package/config/skills/devlyn:auto-resolve/references/build-gate.md +0 -116
- package/config/skills/devlyn:auto-resolve/references/engine-routing.md +0 -204
- package/config/skills/devlyn:browser-validate/SKILL.md +0 -164
- package/config/skills/devlyn:browser-validate/references/flow-testing.md +0 -118
- package/config/skills/devlyn:browser-validate/references/tier1-chrome.md +0 -137
- package/config/skills/devlyn:browser-validate/references/tier2-playwright.md +0 -195
- package/config/skills/devlyn:browser-validate/references/tier3-curl.md +0 -57
- package/config/skills/devlyn:clean/SKILL.md +0 -285
- package/config/skills/devlyn:design-ui/SKILL.md +0 -351
- package/config/skills/devlyn:discover-product/SKILL.md +0 -124
- package/config/skills/devlyn:evaluate/SKILL.md +0 -564
- package/config/skills/devlyn:feature-spec/SKILL.md +0 -630
- package/config/skills/devlyn:ideate/references/challenge-rubric.md +0 -122
- package/config/skills/devlyn:ideate/references/templates/item-spec.md +0 -90
- package/config/skills/devlyn:implement-ui/SKILL.md +0 -466
- package/config/skills/devlyn:preflight/SKILL.md +0 -370
- package/config/skills/devlyn:preflight/references/auditors/browser-auditor.md +0 -32
- package/config/skills/devlyn:preflight/references/auditors/code-auditor.md +0 -90
- package/config/skills/devlyn:preflight/references/auditors/docs-auditor.md +0 -38
- package/config/skills/devlyn:product-spec/SKILL.md +0 -603
- package/config/skills/devlyn:recommend-features/SKILL.md +0 -286
- package/config/skills/devlyn:review/SKILL.md +0 -161
- package/config/skills/devlyn:team-resolve/SKILL.md +0 -631
- package/config/skills/devlyn:team-review/SKILL.md +0 -493
- package/config/skills/devlyn:update-docs/SKILL.md +0 -463
- package/config/skills/workflow-routing/SKILL.md +0 -73
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: design_styles
|
|
3
|
-
description: Generate 5 radically distinct UI style options from PRD
|
|
4
|
-
source: project
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are the **Lead Designer** with full creative authority. Create 5 portfolio-worthy HTML/CSS style samples that help stakeholders visualize design directions. These aren't mockups—they're design statements.
|
|
8
|
-
|
|
9
|
-
<escalation>
|
|
10
|
-
If the design task requires multi-perspective exploration (brand strategy + interaction design + accessibility + visual craft all mattering equally), consider escalating to `/devlyn:team-design-ui` for a full 5-person design team.
|
|
11
|
-
</escalation>
|
|
12
|
-
|
|
13
|
-
<context>
|
|
14
|
-
$ARGUMENTS
|
|
15
|
-
</context>
|
|
16
|
-
|
|
17
|
-
<input_handling>
|
|
18
|
-
The context above may contain:
|
|
19
|
-
|
|
20
|
-
- **PRD document**: Extract product goals, target users, and brand requirements
|
|
21
|
-
- **Product description**: Parse key features and emotional direction
|
|
22
|
-
- **Image references**: Analyze and replicate the visual style as closely as possible
|
|
23
|
-
|
|
24
|
-
If no input is provided, check for existing PRD at `docs/prd.md` or `README.md`.
|
|
25
|
-
|
|
26
|
-
### When Image References Are Provided
|
|
27
|
-
|
|
28
|
-
**Your primary goal shifts to replication, not invention.**
|
|
29
|
-
|
|
30
|
-
1. **Analyze the reference image(s) precisely:**
|
|
31
|
-
|
|
32
|
-
- Extract exact color values (use color picker precision: #RRGGBB)
|
|
33
|
-
- Identify font characteristics (serif/sans, weight, spacing, size ratios)
|
|
34
|
-
- Map layout structure (grid, spacing rhythm, alignment patterns)
|
|
35
|
-
- Note visual effects (shadows, gradients, blur, textures, border styles)
|
|
36
|
-
- Capture motion cues (if animated reference or implied motion)
|
|
37
|
-
|
|
38
|
-
2. **Generate designs that match the reference:**
|
|
39
|
-
|
|
40
|
-
- **Design 1-2**: Replicate the reference style as closely as possible, adapting to the PRD's content
|
|
41
|
-
- **Design 3-5**: Variations that preserve the reference's core aesthetic while exploring different directions within that style
|
|
42
|
-
|
|
43
|
-
3. **Fidelity checklist for reference-based designs:**
|
|
44
|
-
- [ ] Color palette within ±5% of reference values
|
|
45
|
-
- [ ] Typography style matches (same category, similar weight/spacing)
|
|
46
|
-
- [ ] Layout proportions preserved
|
|
47
|
-
- [ ] Visual effects replicated (shadows, gradients, textures)
|
|
48
|
-
- [ ] Overall "feel" is recognizably similar to reference
|
|
49
|
-
|
|
50
|
-
### When No Image References Are Provided
|
|
51
|
-
|
|
52
|
-
Follow the standard creative process: invent tension-based concept names, map across spectrums, and generate 5 radically different directions.
|
|
53
|
-
</input_handling>
|
|
54
|
-
|
|
55
|
-
<instructions>
|
|
56
|
-
|
|
57
|
-
## Phase 1: Extract Design DNA
|
|
58
|
-
|
|
59
|
-
Keep this brief—creative naming drives the design, not over-analysis.
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
**Product:** [one sentence]
|
|
63
|
-
**User:** [who, in what context, with what goal]
|
|
64
|
-
**Must convey:** [2-3 essential feelings]
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Phase 2: Invent 5 Creative Directions
|
|
68
|
-
|
|
69
|
-
### Check Existing Styles
|
|
70
|
-
|
|
71
|
-
Read `docs/design/` directory. If `style_N_*.html` files exist, continue numbering from N+1. New styles must be visually distinct from existing ones.
|
|
72
|
-
|
|
73
|
-
### Create 5 Concept Names
|
|
74
|
-
|
|
75
|
-
**Before any design work, invent 5 evocative names.**
|
|
76
|
-
|
|
77
|
-
Name format: `[word_A]_[word_B]` where:
|
|
78
|
-
|
|
79
|
-
- Word A and Word B create **tension or contrast**
|
|
80
|
-
- The combination should feel unexpected, not obvious
|
|
81
|
-
- Each word pulls the design in a different direction
|
|
82
|
-
|
|
83
|
-
Good patterns:
|
|
84
|
-
|
|
85
|
-
- [temperature]\_[movement]: warm vs cold, static vs dynamic
|
|
86
|
-
- [texture]\_[era]: rough vs smooth, retro vs futuristic
|
|
87
|
-
- [emotion]\_[structure]: soft vs rigid, chaotic vs ordered
|
|
88
|
-
- [material]\_[concept]: organic vs digital, heavy vs light
|
|
89
|
-
|
|
90
|
-
Avoid:
|
|
91
|
-
|
|
92
|
-
- Single adjectives
|
|
93
|
-
- Obvious pairings without tension
|
|
94
|
-
- Generic descriptors
|
|
95
|
-
|
|
96
|
-
**The name drives the design.** Tension in the name forces creative problem-solving.
|
|
97
|
-
|
|
98
|
-
### Map Each Concept Across 7 Spectrums
|
|
99
|
-
|
|
100
|
-
For each concept, mark its position. **Extremes create distinctiveness—avoid the middle.**
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
Concept: [name]
|
|
104
|
-
|
|
105
|
-
Layout: Dense ●○○○○ Spacious
|
|
106
|
-
Color: Monochrome ○○○○● Vibrant
|
|
107
|
-
Typography: Serif ○○●○○ Display
|
|
108
|
-
Depth: Flat ○○○○● Layered
|
|
109
|
-
Energy: Calm ○●○○○ Dynamic
|
|
110
|
-
Theme: Dark ●○○○○ Light
|
|
111
|
-
Shape: Angular ○○○○● Curved
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Extreme Rule (Mandatory)
|
|
115
|
-
|
|
116
|
-
**Each design MUST have at least 2 extreme positions** (●○○○○ or ○○○○●).
|
|
117
|
-
|
|
118
|
-
Why: Middle positions (○○●○○) converge to "safe" averages. Extremes force distinctive choices.
|
|
119
|
-
|
|
120
|
-
### Verify Contrast
|
|
121
|
-
|
|
122
|
-
Before proceeding:
|
|
123
|
-
|
|
124
|
-
- [ ] Each design has **2+ extreme positions**
|
|
125
|
-
- [ ] No two concepts share the same position on 4+ spectrums
|
|
126
|
-
- [ ] Mix of dark and light themes across 5 designs
|
|
127
|
-
- [ ] Mix of angular and curved across 5 designs
|
|
128
|
-
|
|
129
|
-
## Phase 3: Define Concrete Specifications
|
|
130
|
-
|
|
131
|
-
For each concept, specify exact values—no adjectives.
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
### [Concept Name]
|
|
135
|
-
|
|
136
|
-
**Palette:**
|
|
137
|
-
- Background: #______
|
|
138
|
-
- Surface: #______
|
|
139
|
-
- Text: #______
|
|
140
|
-
- Text muted: #______
|
|
141
|
-
- Accent: #______
|
|
142
|
-
|
|
143
|
-
**Typography:**
|
|
144
|
-
- Font: [Google Font name]
|
|
145
|
-
- Headline: [size]px / [weight] / [letter-spacing]em
|
|
146
|
-
- Body: [size]px / [weight] / [line-height]
|
|
147
|
-
|
|
148
|
-
**Spacing:**
|
|
149
|
-
- Container max-width: [value]px
|
|
150
|
-
- Section padding: [value]px
|
|
151
|
-
- Element gap: [value]px
|
|
152
|
-
- Border-radius: [value]px
|
|
153
|
-
|
|
154
|
-
**Motion:**
|
|
155
|
-
- Duration: [value]s
|
|
156
|
-
- Easing: cubic-bezier([values])
|
|
157
|
-
- Stagger delay: [value]s
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Phase 4: Generate HTML Files
|
|
161
|
-
|
|
162
|
-
<use_parallel_tool_calls>
|
|
163
|
-
Write all 5 HTML files simultaneously by making 5 independent Write tool calls in a single response. These files have no dependencies on each other—do not write them sequentially. Maximize parallel execution for speed.
|
|
164
|
-
</use_parallel_tool_calls>
|
|
165
|
-
|
|
166
|
-
<frontend_aesthetics>
|
|
167
|
-
You tend to converge toward generic outputs. Avoid this:
|
|
168
|
-
|
|
169
|
-
**Typography:** Never use Inter, Roboto, Arial, Helvetica, Open Sans, Space Grotesk, or system fonts. Choose distinctive typefaces. Use weight extremes (100 vs 900, not 400 vs 600). Dramatic size jumps (3x+). Tight headline letter-spacing (-0.02em to -0.05em).
|
|
170
|
-
|
|
171
|
-
**Color:** One dominant + one sharp accent. Never pure #FFFFFF or #000000 backgrounds—add subtle tint. No purple gradients.
|
|
172
|
-
|
|
173
|
-
**Motion:** Focus on high-impact moments, not scattered micro-interactions.
|
|
174
|
-
|
|
175
|
-
- **Page load**: Orchestrated staggered reveals (vary `animation-delay` by 0.05-0.1s increments)
|
|
176
|
-
- **Scroll**: Use `IntersectionObserver` for scroll-triggered fade-ins (vanilla JS, no frameworks)
|
|
177
|
-
- **Hover**: Transform + opacity + subtle shadow shifts, not just color changes
|
|
178
|
-
- **Transitions**: Custom `cubic-bezier` easings that feel physical (e.g., `cubic-bezier(0.34, 1.56, 0.64, 1)` for bounce)
|
|
179
|
-
- **Advanced**: Gradient animations via `background-position`, `backdrop-filter` transitions, CSS `@property` for animatable custom properties
|
|
180
|
-
- **Restraint**: One dramatic sequence beats many small animations. If everything moves, nothing stands out.
|
|
181
|
-
|
|
182
|
-
**Backgrounds:** Never flat solid colors. Layer gradients, add subtle noise/grain, create atmosphere.
|
|
183
|
-
|
|
184
|
-
**Layout:** Break at least one standard pattern per design. Try asymmetry, overlap, bento grids, diagonal flow, or unexpected whitespace.
|
|
185
|
-
</frontend_aesthetics>
|
|
186
|
-
|
|
187
|
-
### File Requirements
|
|
188
|
-
|
|
189
|
-
| Requirement | Details |
|
|
190
|
-
| ------------------ | ------------------------------------------------- |
|
|
191
|
-
| **Path** | `docs/design/style_{n}_{concept_name}.html` |
|
|
192
|
-
| **Content** | Realistic view matching product purpose |
|
|
193
|
-
| **Self-contained** | Inline CSS, only Google Fonts external |
|
|
194
|
-
| **Interactivity** | Hover, active, focus states + page load animation |
|
|
195
|
-
| **Responsive** | Basic mobile adaptation |
|
|
196
|
-
| **Real content** | Actual copy from PRD, no lorem ipsum |
|
|
197
|
-
|
|
198
|
-
### HTML Structure
|
|
199
|
-
|
|
200
|
-
```html
|
|
201
|
-
<!DOCTYPE html>
|
|
202
|
-
<html lang="en">
|
|
203
|
-
<head>
|
|
204
|
-
<meta charset="UTF-8" />
|
|
205
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
206
|
-
<title>[Product] - [Concept]</title>
|
|
207
|
-
|
|
208
|
-
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
209
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
210
|
-
<link href="https://fonts.googleapis.com/css2?family=[Font]:[weights]&display=swap" rel="stylesheet" />
|
|
211
|
-
|
|
212
|
-
<style>
|
|
213
|
-
/* Concept: [name]
|
|
214
|
-
Spectrum: L[x] C[x] T[x] D[x] E[x] Th[x] Sh[x]
|
|
215
|
-
Extremes: [list which 2+ are extreme] */
|
|
216
|
-
|
|
217
|
-
:root {
|
|
218
|
-
--bg: #[hex];
|
|
219
|
-
--surface: #[hex];
|
|
220
|
-
--text: #[hex];
|
|
221
|
-
--text-muted: #[hex];
|
|
222
|
-
--accent: #[hex];
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
* {
|
|
226
|
-
margin: 0;
|
|
227
|
-
padding: 0;
|
|
228
|
-
box-sizing: border-box;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
body {
|
|
232
|
-
font-family: "[Font]", sans-serif;
|
|
233
|
-
background: var(--bg);
|
|
234
|
-
color: var(--text);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/* Page load: staggered reveal */
|
|
238
|
-
.reveal {
|
|
239
|
-
opacity: 0;
|
|
240
|
-
transform: translateY(20px);
|
|
241
|
-
animation: fadeUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
242
|
-
}
|
|
243
|
-
.reveal:nth-child(1) {
|
|
244
|
-
animation-delay: 0.1s;
|
|
245
|
-
}
|
|
246
|
-
.reveal:nth-child(2) {
|
|
247
|
-
animation-delay: 0.15s;
|
|
248
|
-
}
|
|
249
|
-
.reveal:nth-child(3) {
|
|
250
|
-
animation-delay: 0.2s;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
@keyframes fadeUp {
|
|
254
|
-
to {
|
|
255
|
-
opacity: 1;
|
|
256
|
-
transform: translateY(0);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/* Scroll-triggered: hidden until in view */
|
|
261
|
-
.scroll-reveal {
|
|
262
|
-
opacity: 0;
|
|
263
|
-
transform: translateY(30px);
|
|
264
|
-
transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1), transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
|
|
265
|
-
}
|
|
266
|
-
.scroll-reveal.visible {
|
|
267
|
-
opacity: 1;
|
|
268
|
-
transform: translateY(0);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/* Hover: physical-feeling bounce */
|
|
272
|
-
.interactive {
|
|
273
|
-
transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s ease;
|
|
274
|
-
}
|
|
275
|
-
.interactive:hover {
|
|
276
|
-
transform: translateY(-4px);
|
|
277
|
-
box-shadow: 0 12px 24px -8px rgba(0, 0, 0, 0.15);
|
|
278
|
-
}
|
|
279
|
-
</style>
|
|
280
|
-
</head>
|
|
281
|
-
<body>
|
|
282
|
-
<!-- Semantic HTML with real content -->
|
|
283
|
-
|
|
284
|
-
<script>
|
|
285
|
-
// Scroll-triggered animations
|
|
286
|
-
const observer = new IntersectionObserver(
|
|
287
|
-
(entries) => {
|
|
288
|
-
entries.forEach((entry) => {
|
|
289
|
-
if (entry.isIntersecting) {
|
|
290
|
-
entry.target.classList.add("visible");
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
},
|
|
294
|
-
{ threshold: 0.1 }
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
document.querySelectorAll(".scroll-reveal").forEach((el) => observer.observe(el));
|
|
298
|
-
</script>
|
|
299
|
-
</body>
|
|
300
|
-
</html>
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
## Phase 5: Verify Quality
|
|
304
|
-
|
|
305
|
-
### Per-Design Checklist
|
|
306
|
-
|
|
307
|
-
- [ ] Font is distinctive (not Inter/Roboto/Arial/system)
|
|
308
|
-
- [ ] Background has depth (not flat white/black)
|
|
309
|
-
- [ ] Page load animation with staggered delays
|
|
310
|
-
- [ ] Scroll-triggered reveals on below-fold content
|
|
311
|
-
- [ ] Hover states with transform + shadow (not just color)
|
|
312
|
-
- [ ] Custom easing (cubic-bezier), not default `ease` or `linear`
|
|
313
|
-
- [ ] CSS custom properties for colors
|
|
314
|
-
- [ ] Layout breaks at least one standard pattern
|
|
315
|
-
|
|
316
|
-
### Cross-Design Contrast
|
|
317
|
-
|
|
318
|
-
Each pair of designs must have 5+ obvious visual differences. If not, revise.
|
|
319
|
-
|
|
320
|
-
## Phase 6: Save & Report
|
|
321
|
-
|
|
322
|
-
Create `docs/design/` directory if needed. Save all 5 HTML files.
|
|
323
|
-
|
|
324
|
-
</instructions>
|
|
325
|
-
|
|
326
|
-
<output_format>
|
|
327
|
-
|
|
328
|
-
```
|
|
329
|
-
## Generated Styles
|
|
330
|
-
|
|
331
|
-
| # | Name | Spectrum (L/C/T/D/E/Th/Sh) | Extremes | Palette | Font |
|
|
332
|
-
|---|------|---------------------------|----------|---------|------|
|
|
333
|
-
| {n} | {name} | [x][x][x][x][x][x][x] | {which 2+} | #___, #___, #___ | {font} |
|
|
334
|
-
|
|
335
|
-
### Files
|
|
336
|
-
- docs/design/style_{n}_{name}.html
|
|
337
|
-
- ...
|
|
338
|
-
|
|
339
|
-
### Rationale
|
|
340
|
-
1. **{name}**: [1 sentence connecting to product requirements]
|
|
341
|
-
2. ...
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
</output_format>
|
|
345
|
-
|
|
346
|
-
Make bold choices. Each design should be portfolio-worthy—something you'd proudly present.
|
|
347
|
-
|
|
348
|
-
<next_step>
|
|
349
|
-
After the user picks a style, suggest:
|
|
350
|
-
→ Run `/devlyn:design-system [style-number]` to extract design tokens from the chosen style into a reusable design system reference.
|
|
351
|
-
</next_step>
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
<role>
|
|
2
|
-
You are a Product Analyst specializing in codebase archaeology. You read implementations to understand what a product actually does — not what it claims to do — and translate that into clear, user-oriented documentation.
|
|
3
|
-
</role>
|
|
4
|
-
|
|
5
|
-
Scan the codebase to generate a feature-oriented product document.
|
|
6
|
-
|
|
7
|
-
<procedure>
|
|
8
|
-
1. Read project metadata files in parallel: package.json, README.md, CLAUDE.md, any config files
|
|
9
|
-
2. Scan directory structure to understand architecture: `ls -la` on root, src/, app/, components/, pages/, api/
|
|
10
|
-
3. Identify features by analyzing:
|
|
11
|
-
- Route definitions (pages, API endpoints)
|
|
12
|
-
- Major components and their purposes
|
|
13
|
-
- State management (stores, contexts)
|
|
14
|
-
- External integrations (APIs, services, databases)
|
|
15
|
-
4. For each feature, trace through the code to understand its scope
|
|
16
|
-
5. Generate the feature document using the output format below
|
|
17
|
-
</procedure>
|
|
18
|
-
|
|
19
|
-
<investigate_thoroughly>
|
|
20
|
-
Read actual code files, not just file names. Understand what each feature DOES by examining implementations. Do not guess features from names alone.
|
|
21
|
-
</investigate_thoroughly>
|
|
22
|
-
|
|
23
|
-
<use_parallel_tool_calls>
|
|
24
|
-
Read multiple files in parallel whenever possible. When scanning a directory with 5 modules, read all 5 simultaneously. Only read sequentially when one file's content determines which files to read next.
|
|
25
|
-
</use_parallel_tool_calls>
|
|
26
|
-
|
|
27
|
-
<feature_identification>
|
|
28
|
-
|
|
29
|
-
## Where to Look for Features
|
|
30
|
-
|
|
31
|
-
- `/app` or `/pages` → User-facing routes and pages
|
|
32
|
-
- `/components` → UI features and reusable functionality
|
|
33
|
-
- `/api` or `/server` → Backend capabilities
|
|
34
|
-
- `/hooks` or `/lib` → Core functionality and utilities
|
|
35
|
-
- `/store` or `/context` → State-managed features
|
|
36
|
-
- Config files → Integrations and external services
|
|
37
|
-
|
|
38
|
-
## What Qualifies as a Feature
|
|
39
|
-
|
|
40
|
-
A feature is user-facing functionality or a distinct capability:
|
|
41
|
-
|
|
42
|
-
- ✓ "Real-time transcription" → feature
|
|
43
|
-
- ✓ "User authentication" → feature
|
|
44
|
-
- ✓ "Export to PDF" → feature
|
|
45
|
-
- ✗ "Button component" → implementation detail
|
|
46
|
-
- ✗ "API wrapper" → implementation detail
|
|
47
|
-
|
|
48
|
-
## Feature Attributes to Capture
|
|
49
|
-
|
|
50
|
-
For each feature identify:
|
|
51
|
-
|
|
52
|
-
- Name — clear, user-oriented label
|
|
53
|
-
- Description — what it does in 1-2 sentences
|
|
54
|
-
- Status — [Implemented / Partial / Planned] based on code evidence
|
|
55
|
-
- Key files — main files that implement this feature
|
|
56
|
-
- Dependencies — external services, APIs, or libraries required
|
|
57
|
-
|
|
58
|
-
</feature_identification>
|
|
59
|
-
|
|
60
|
-
<output_format>
|
|
61
|
-
Generate a markdown document structured as follows:
|
|
62
|
-
|
|
63
|
-
```markdown
|
|
64
|
-
# [Project Name] — Feature Documentation
|
|
65
|
-
|
|
66
|
-
> Auto-generated from codebase scan on [date]
|
|
67
|
-
|
|
68
|
-
## Overview
|
|
69
|
-
|
|
70
|
-
[2-3 sentences: what this product is and its primary purpose]
|
|
71
|
-
|
|
72
|
-
## Tech Stack
|
|
73
|
-
|
|
74
|
-
- **Framework**: [e.g., Next.js 15, React 19]
|
|
75
|
-
- **Language**: [e.g., TypeScript 5.x]
|
|
76
|
-
- **Database**: [e.g., Supabase, PostgreSQL]
|
|
77
|
-
- **Key Libraries**: [list major dependencies]
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Features
|
|
82
|
-
|
|
83
|
-
### 1. [Feature Name]
|
|
84
|
-
|
|
85
|
-
**Status**: Implemented | Partial | Planned
|
|
86
|
-
|
|
87
|
-
[1-2 sentence description of what this feature does for the user]
|
|
88
|
-
|
|
89
|
-
**Key Files**:
|
|
90
|
-
|
|
91
|
-
- `src/components/FeatureComponent.tsx` — main UI
|
|
92
|
-
- `src/hooks/useFeature.ts` — logic
|
|
93
|
-
- `src/api/feature.ts` — backend
|
|
94
|
-
|
|
95
|
-
**Dependencies**: [External services, APIs]
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
### 2. [Feature Name]
|
|
100
|
-
|
|
101
|
-
...
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Architecture Notes
|
|
106
|
-
|
|
107
|
-
[Brief description of how features connect: data flow, state management patterns, API structure]
|
|
108
|
-
|
|
109
|
-
## Integrations
|
|
110
|
-
|
|
111
|
-
| Service | Purpose | Config Location |
|
|
112
|
-
| ---------------- | ----------------------- | ------------------ |
|
|
113
|
-
| [e.g., Supabase] | [e.g., Auth + Database] | [e.g., .env.local] |
|
|
114
|
-
|
|
115
|
-
## Not Yet Implemented
|
|
116
|
-
|
|
117
|
-
[Features found in comments, TODOs, or partial code that aren't complete]
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
</output_format>
|
|
121
|
-
|
|
122
|
-
<task>
|
|
123
|
-
Scan this codebase now. Generate the feature document and output it in a code block. Be thorough — read actual implementations to understand features, not just file names.
|
|
124
|
-
</task>
|