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.
Files changed (148) hide show
  1. package/AGENTS.md +104 -0
  2. package/CLAUDE.md +112 -119
  3. package/README.md +43 -125
  4. package/benchmark/auto-resolve/BENCHMARK-DESIGN.md +272 -0
  5. package/benchmark/auto-resolve/README.md +114 -0
  6. package/benchmark/auto-resolve/RUBRIC.md +162 -0
  7. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/NOTES.md +30 -0
  8. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/expected.json +68 -0
  9. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/metadata.json +10 -0
  10. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/setup.sh +4 -0
  11. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/spec.md +45 -0
  12. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/task.txt +8 -0
  13. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/NOTES.md +54 -0
  14. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected-pair-plan-registry.json +170 -0
  15. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected.json +84 -0
  16. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/metadata.json +21 -0
  17. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-fail.json +214 -0
  18. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-pass.json +223 -0
  19. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/setup.sh +5 -0
  20. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/spec.md +56 -0
  21. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/task.txt +14 -0
  22. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/NOTES.md +28 -0
  23. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected-pair-plan-registry.json +162 -0
  24. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected.json +65 -0
  25. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/metadata.json +19 -0
  26. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/setup.sh +4 -0
  27. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/spec.md +56 -0
  28. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/task.txt +9 -0
  29. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/NOTES.md +40 -0
  30. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/expected.json +57 -0
  31. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/metadata.json +10 -0
  32. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/setup.sh +6 -0
  33. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/spec.md +49 -0
  34. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/task.txt +9 -0
  35. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/NOTES.md +38 -0
  36. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/expected.json +65 -0
  37. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/metadata.json +10 -0
  38. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/setup.sh +55 -0
  39. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/spec.md +49 -0
  40. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/task.txt +7 -0
  41. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/NOTES.md +38 -0
  42. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/expected.json +77 -0
  43. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/metadata.json +10 -0
  44. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/setup.sh +4 -0
  45. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/spec.md +49 -0
  46. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/task.txt +10 -0
  47. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/NOTES.md +50 -0
  48. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/expected.json +76 -0
  49. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/metadata.json +10 -0
  50. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/setup.sh +36 -0
  51. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/spec.md +46 -0
  52. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/task.txt +7 -0
  53. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/NOTES.md +50 -0
  54. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/expected.json +63 -0
  55. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/metadata.json +10 -0
  56. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/setup.sh +4 -0
  57. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/spec.md +48 -0
  58. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/task.txt +1 -0
  59. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/NOTES.md +93 -0
  60. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/expected.json +74 -0
  61. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/metadata.json +10 -0
  62. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/setup.sh +28 -0
  63. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/spec.md +62 -0
  64. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/task.txt +5 -0
  65. package/benchmark/auto-resolve/fixtures/SCHEMA.md +130 -0
  66. package/benchmark/auto-resolve/fixtures/test-repo/README.md +27 -0
  67. package/benchmark/auto-resolve/fixtures/test-repo/bin/cli.js +63 -0
  68. package/benchmark/auto-resolve/fixtures/test-repo/package-lock.json +823 -0
  69. package/benchmark/auto-resolve/fixtures/test-repo/package.json +22 -0
  70. package/benchmark/auto-resolve/fixtures/test-repo/playwright.config.js +17 -0
  71. package/benchmark/auto-resolve/fixtures/test-repo/server/index.js +37 -0
  72. package/benchmark/auto-resolve/fixtures/test-repo/tests/cli.test.js +25 -0
  73. package/benchmark/auto-resolve/fixtures/test-repo/tests/server.test.js +58 -0
  74. package/benchmark/auto-resolve/fixtures/test-repo/web/index.html +37 -0
  75. package/benchmark/auto-resolve/scripts/build-pair-eligible-manifest.py +174 -0
  76. package/benchmark/auto-resolve/scripts/check-f9-artifacts.py +256 -0
  77. package/benchmark/auto-resolve/scripts/compile-report.py +331 -0
  78. package/benchmark/auto-resolve/scripts/iter-0033c-compare.py +552 -0
  79. package/benchmark/auto-resolve/scripts/judge-opus-pass.sh +430 -0
  80. package/benchmark/auto-resolve/scripts/judge.sh +359 -0
  81. package/benchmark/auto-resolve/scripts/oracle-scope-tier-a.py +260 -0
  82. package/benchmark/auto-resolve/scripts/oracle-scope-tier-b.py +274 -0
  83. package/benchmark/auto-resolve/scripts/oracle-test-fidelity.py +328 -0
  84. package/benchmark/auto-resolve/scripts/pair-plan-idgen.py +401 -0
  85. package/benchmark/auto-resolve/scripts/pair-plan-lint.py +468 -0
  86. package/benchmark/auto-resolve/scripts/run-fixture.sh +691 -0
  87. package/benchmark/auto-resolve/scripts/run-iter-0033c.sh +234 -0
  88. package/benchmark/auto-resolve/scripts/run-suite.sh +214 -0
  89. package/benchmark/auto-resolve/scripts/ship-gate.py +222 -0
  90. package/bin/devlyn.js +129 -17
  91. package/config/skills/_shared/adapters/README.md +64 -0
  92. package/config/skills/_shared/adapters/gpt-5-5.md +29 -0
  93. package/config/skills/_shared/adapters/opus-4-7.md +29 -0
  94. package/config/skills/_shared/archive_run.py +130 -0
  95. package/config/skills/_shared/codex-config.md +54 -0
  96. package/config/skills/_shared/codex-monitored.sh +141 -0
  97. package/config/skills/_shared/engine-preflight.md +35 -0
  98. package/config/skills/_shared/expected.schema.json +93 -0
  99. package/config/skills/_shared/pair-plan-schema.md +298 -0
  100. package/config/skills/_shared/runtime-principles.md +110 -0
  101. package/config/skills/_shared/spec-verify-check.py +519 -0
  102. package/config/skills/devlyn:ideate/SKILL.md +99 -481
  103. package/config/skills/devlyn:ideate/references/elicitation.md +97 -0
  104. package/config/skills/devlyn:ideate/references/from-spec-mode.md +54 -0
  105. package/config/skills/devlyn:ideate/references/project-mode.md +76 -0
  106. package/config/skills/devlyn:ideate/references/spec-template.md +102 -0
  107. package/config/skills/devlyn:resolve/SKILL.md +172 -184
  108. package/config/skills/devlyn:resolve/references/free-form-mode.md +68 -0
  109. package/config/skills/devlyn:resolve/references/phases/build-gate.md +45 -0
  110. package/config/skills/devlyn:resolve/references/phases/cleanup.md +39 -0
  111. package/config/skills/devlyn:resolve/references/phases/implement.md +42 -0
  112. package/config/skills/devlyn:resolve/references/phases/plan.md +42 -0
  113. package/config/skills/devlyn:resolve/references/phases/verify.md +69 -0
  114. package/config/skills/devlyn:resolve/references/state-schema.md +106 -0
  115. package/{config/skills → optional-skills}/devlyn:design-system/SKILL.md +1 -0
  116. package/optional-skills/devlyn:reap/SKILL.md +105 -0
  117. package/optional-skills/devlyn:reap/scripts/reap.sh +129 -0
  118. package/optional-skills/devlyn:reap/scripts/scan.sh +116 -0
  119. package/{config/skills → optional-skills}/devlyn:team-design-ui/SKILL.md +5 -0
  120. package/package.json +16 -2
  121. package/scripts/lint-skills.sh +431 -0
  122. package/config/skills/devlyn:auto-resolve/SKILL.md +0 -602
  123. package/config/skills/devlyn:auto-resolve/references/build-gate.md +0 -116
  124. package/config/skills/devlyn:auto-resolve/references/engine-routing.md +0 -204
  125. package/config/skills/devlyn:browser-validate/SKILL.md +0 -164
  126. package/config/skills/devlyn:browser-validate/references/flow-testing.md +0 -118
  127. package/config/skills/devlyn:browser-validate/references/tier1-chrome.md +0 -137
  128. package/config/skills/devlyn:browser-validate/references/tier2-playwright.md +0 -195
  129. package/config/skills/devlyn:browser-validate/references/tier3-curl.md +0 -57
  130. package/config/skills/devlyn:clean/SKILL.md +0 -285
  131. package/config/skills/devlyn:design-ui/SKILL.md +0 -351
  132. package/config/skills/devlyn:discover-product/SKILL.md +0 -124
  133. package/config/skills/devlyn:evaluate/SKILL.md +0 -564
  134. package/config/skills/devlyn:feature-spec/SKILL.md +0 -630
  135. package/config/skills/devlyn:ideate/references/challenge-rubric.md +0 -122
  136. package/config/skills/devlyn:ideate/references/templates/item-spec.md +0 -90
  137. package/config/skills/devlyn:implement-ui/SKILL.md +0 -466
  138. package/config/skills/devlyn:preflight/SKILL.md +0 -370
  139. package/config/skills/devlyn:preflight/references/auditors/browser-auditor.md +0 -32
  140. package/config/skills/devlyn:preflight/references/auditors/code-auditor.md +0 -90
  141. package/config/skills/devlyn:preflight/references/auditors/docs-auditor.md +0 -38
  142. package/config/skills/devlyn:product-spec/SKILL.md +0 -603
  143. package/config/skills/devlyn:recommend-features/SKILL.md +0 -286
  144. package/config/skills/devlyn:review/SKILL.md +0 -161
  145. package/config/skills/devlyn:team-resolve/SKILL.md +0 -631
  146. package/config/skills/devlyn:team-review/SKILL.md +0 -493
  147. package/config/skills/devlyn:update-docs/SKILL.md +0 -463
  148. 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>