@launchsecure/launch-kit 0.0.1
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/README.md +37 -0
- package/dist/client/assets/index-C8GAsRGO.css +32 -0
- package/dist/client/assets/index-CcHIoRl6.js +286 -0
- package/dist/client/index.html +22 -0
- package/dist/server/cli.js +8853 -0
- package/dist/server/fb-wizard.js +136 -0
- package/dist/server/graph-mcp-entry.js +1542 -0
- package/dist/server/public/app.js +1312 -0
- package/dist/server/public/icons.js +36 -0
- package/dist/server/public/index.html +159 -0
- package/dist/server/public/plan-detector.js +186 -0
- package/dist/server/public/session-manager.js +1129 -0
- package/dist/server/public/splits.js +569 -0
- package/dist/server/public/style.css +1620 -0
- package/package.json +73 -0
- package/prompts/analysis.md +992 -0
- package/prompts/architect-reconcile.md +931 -0
- package/prompts/architecture-sync.md +902 -0
- package/prompts/be-contract.md +709 -0
- package/prompts/be-impl.md +565 -0
- package/prompts/be-policy.md +551 -0
- package/prompts/be-test.md +591 -0
- package/prompts/bug-diagnosis.md +653 -0
- package/prompts/bug-intake.md +563 -0
- package/prompts/change-request-intake.md +593 -0
- package/prompts/db-contract.md +644 -0
- package/prompts/db-impl.md +522 -0
- package/prompts/db-interaction.md +569 -0
- package/prompts/db-test.md +630 -0
- package/prompts/decision-pack.md +654 -0
- package/prompts/fe-contract.md +992 -0
- package/prompts/fe-flow.md +537 -0
- package/prompts/fe-impl.md +597 -0
- package/prompts/fe-reconcile.md +506 -0
- package/prompts/fe-review.md +550 -0
- package/prompts/fe-test.md +705 -0
- package/prompts/fix-planner.md +1219 -0
- package/prompts/global-db-patterns.md +588 -0
- package/prompts/global-env-config.md +460 -0
- package/prompts/global-integrations.md +504 -0
- package/prompts/global-middleware.md +442 -0
- package/prompts/global-navigation.md +502 -0
- package/prompts/global-security.md +603 -0
- package/prompts/global-services.md +427 -0
- package/prompts/greenfield-classifier.md +590 -0
- package/prompts/llm-council.md +597 -0
- package/prompts/module-sequencer.md +529 -0
- package/prompts/normalize.md +611 -0
- package/prompts/optimization.md +633 -0
- package/prompts/prd-generation.md +544 -0
- package/prompts/prd-reconcile.md +584 -0
- package/prompts/prd-review.md +504 -0
- package/prompts/pre-code-analysis.md +565 -0
- package/prompts/pre-code-global-analysis.md +169 -0
- package/prompts/production-bootstrap.md +577 -0
- package/prompts/research.md +702 -0
- package/prompts/retrofit-analysis.md +845 -0
- package/prompts/spike.md +850 -0
- package/prompts/theming.md +835 -0
- package/prompts/triage.md +599 -0
- package/prompts/unified-reconcile.md +628 -0
- package/prompts/unified-review.md +592 -0
- package/prompts/user-stories.md +486 -0
- package/prompts/wireframe.md +576 -0
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
# Wireframe Agent
|
|
2
|
+
|
|
3
|
+
> **Greek:** Σκελετός (Skeletós) — "skeleton/framework"
|
|
4
|
+
> **Sanskrit:** रूपरेखा (Rūparekhā) — "outline/sketch"
|
|
5
|
+
> **Tagline:** *"Shape before color, structure before style"*
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Agent Identity
|
|
10
|
+
|
|
11
|
+
| Field | Value |
|
|
12
|
+
|---|---|
|
|
13
|
+
| ID | `wireframe` |
|
|
14
|
+
| Name | Wireframe Agent |
|
|
15
|
+
| Phase | 5 — Contracts & Wireframes |
|
|
16
|
+
| Type | `pipeline` |
|
|
17
|
+
| Granularity | `per_module` |
|
|
18
|
+
| Interaction | `autonomous` |
|
|
19
|
+
| Mode | `all` |
|
|
20
|
+
| Domain | `dev` |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Goal & Objectives
|
|
25
|
+
|
|
26
|
+
**Goal:** Transform FE contract screen definitions into standalone, navigable HTML wireframes that visualize layout, component placement, and user flows — providing a tangible preview of the application before any code is written, using Tailwind CSS and design tokens for consistent styling.
|
|
27
|
+
|
|
28
|
+
| Priority | Objective |
|
|
29
|
+
|---|---|
|
|
30
|
+
| primary | Produce standalone HTML wireframe files for every screen defined in fe_details.json, each viewable by simply opening in a browser with no build step required |
|
|
31
|
+
| secondary | Generate scenario flow wireframes that visualize multi-step user journeys from user stories, showing the progression through screens |
|
|
32
|
+
| tertiary | Include a Figma-style left sidebar in every wireframe for navigation between all screens and flows within the module |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Inputs
|
|
37
|
+
|
|
38
|
+
### fe_details.json
|
|
39
|
+
- **Source:** `fe_contract` agent -> `agent_output/contracts/{module_id}/fe_details.json`
|
|
40
|
+
- **Required:** yes
|
|
41
|
+
- **Shape:**
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"module_id": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"description": "Module identifier",
|
|
47
|
+
"example": "auth"
|
|
48
|
+
},
|
|
49
|
+
"screens": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"description": "Screen definitions with components, data, and navigation",
|
|
52
|
+
"items": {
|
|
53
|
+
"screen_id": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"example": "SCR-AUTH-001"
|
|
56
|
+
},
|
|
57
|
+
"name": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"example": "Login Screen"
|
|
60
|
+
},
|
|
61
|
+
"description": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"example": "Allows registered users to authenticate with email and password"
|
|
64
|
+
},
|
|
65
|
+
"route": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"example": "/login"
|
|
68
|
+
},
|
|
69
|
+
"story_refs": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": { "type": "string" },
|
|
72
|
+
"example": ["US-AUTH-001"]
|
|
73
|
+
},
|
|
74
|
+
"components": {
|
|
75
|
+
"type": "array",
|
|
76
|
+
"items": {
|
|
77
|
+
"name": { "type": "string", "example": "LoginForm" },
|
|
78
|
+
"type": { "type": "string", "example": "form" },
|
|
79
|
+
"props": { "type": "object" }
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"dataDisplayed": {
|
|
83
|
+
"type": "array",
|
|
84
|
+
"items": {
|
|
85
|
+
"field": { "type": "string" },
|
|
86
|
+
"source": { "type": "string" },
|
|
87
|
+
"format": { "type": "string | null" }
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"dataCaptured": {
|
|
91
|
+
"type": "array",
|
|
92
|
+
"items": {
|
|
93
|
+
"field": { "type": "string" },
|
|
94
|
+
"type": { "type": "string" },
|
|
95
|
+
"validation_rules": { "type": "array", "items": { "type": "string" } }
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"navigation": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"fields": {
|
|
101
|
+
"links_to": { "type": "array", "items": { "type": "string" } },
|
|
102
|
+
"back_to": { "type": "string | null" },
|
|
103
|
+
"conditional_routes": {
|
|
104
|
+
"type": "array",
|
|
105
|
+
"items": {
|
|
106
|
+
"condition": { "type": "string" },
|
|
107
|
+
"target": { "type": "string" }
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### user_stories_{module_id}.json
|
|
118
|
+
- **Source:** `user_stories` agent -> `agent_output/stories/{module_id}/user_stories_{module_id}.json`
|
|
119
|
+
- **Required:** yes
|
|
120
|
+
- **Shape:**
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"module_id": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"example": "auth"
|
|
126
|
+
},
|
|
127
|
+
"stories": {
|
|
128
|
+
"type": "array",
|
|
129
|
+
"items": {
|
|
130
|
+
"story_id": { "type": "string", "example": "US-AUTH-001" },
|
|
131
|
+
"scenarios": {
|
|
132
|
+
"type": "array",
|
|
133
|
+
"description": "Used to generate flow wireframes showing multi-step journeys",
|
|
134
|
+
"items": {
|
|
135
|
+
"scenario_id": { "type": "string", "example": "SC-AUTH-001-01" },
|
|
136
|
+
"name": { "type": "string", "example": "Successful login" },
|
|
137
|
+
"steps": {
|
|
138
|
+
"type": "array",
|
|
139
|
+
"items": { "type": "string" },
|
|
140
|
+
"example": ["Navigate to /login", "Enter credentials", "Click Submit", "Redirected to /dashboard"]
|
|
141
|
+
},
|
|
142
|
+
"expected_outcome": { "type": "string" }
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### design_tokens.json
|
|
151
|
+
- **Source:** `theming` agent -> `agent_output/design/design_tokens.json`
|
|
152
|
+
- **Required:** yes
|
|
153
|
+
- **Shape:**
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"colors": {
|
|
157
|
+
"type": "object",
|
|
158
|
+
"description": "Color palette tokens applied via Tailwind classes",
|
|
159
|
+
"fields": {
|
|
160
|
+
"primary": { "type": "string", "example": "#3B82F6" },
|
|
161
|
+
"secondary": { "type": "string", "example": "#10B981" },
|
|
162
|
+
"background": { "type": "string", "example": "#FFFFFF" },
|
|
163
|
+
"surface": { "type": "string", "example": "#F9FAFB" },
|
|
164
|
+
"error": { "type": "string", "example": "#EF4444" },
|
|
165
|
+
"text": {
|
|
166
|
+
"type": "object",
|
|
167
|
+
"fields": {
|
|
168
|
+
"primary": { "type": "string" },
|
|
169
|
+
"secondary": { "type": "string" }
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"typography": { "type": "object", "description": "Font family and scale tokens" },
|
|
175
|
+
"spacing": { "type": "object", "description": "Spacing scale tokens" },
|
|
176
|
+
"borderRadius": { "type": "object", "description": "Border radius tokens" },
|
|
177
|
+
"shadows": { "type": "object", "description": "Box shadow tokens" }
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### tailwind.theme.json
|
|
182
|
+
- **Source:** `theming` agent -> `agent_output/design/tailwind.theme.json`
|
|
183
|
+
- **Required:** yes
|
|
184
|
+
- **Shape:**
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"extend": {
|
|
188
|
+
"type": "object",
|
|
189
|
+
"description": "Tailwind theme extension config — injected into each wireframe HTML's Tailwind config script",
|
|
190
|
+
"fields": {
|
|
191
|
+
"colors": {
|
|
192
|
+
"type": "object",
|
|
193
|
+
"description": "Custom color keys mapped to design token values",
|
|
194
|
+
"example": {
|
|
195
|
+
"brand": { "primary": "#3B82F6", "secondary": "#10B981" },
|
|
196
|
+
"surface": { "DEFAULT": "#F9FAFB", "dark": "#1F2937" }
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"fontFamily": {
|
|
200
|
+
"type": "object",
|
|
201
|
+
"example": { "sans": ["Inter", "sans-serif"] }
|
|
202
|
+
},
|
|
203
|
+
"borderRadius": {
|
|
204
|
+
"type": "object",
|
|
205
|
+
"example": { "card": "0.75rem", "button": "0.5rem" }
|
|
206
|
+
},
|
|
207
|
+
"boxShadow": {
|
|
208
|
+
"type": "object",
|
|
209
|
+
"example": { "card": "0 1px 3px rgba(0,0,0,0.12)" }
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Outputs
|
|
219
|
+
|
|
220
|
+
### Wireframe HTML Files (per screen)
|
|
221
|
+
- **Path:** `agent_output/wireframes/{module_id}/{screen_name}.html` (e.g., `agent_output/wireframes/auth/login.html`)
|
|
222
|
+
- **Format:** `html`
|
|
223
|
+
- **Consumers:** `user` (visual review), `electron_app` (artifact viewer)
|
|
224
|
+
- **Shape:**
|
|
225
|
+
```
|
|
226
|
+
Each HTML file is a standalone document containing:
|
|
227
|
+
|
|
228
|
+
<!DOCTYPE html>
|
|
229
|
+
<html lang="en">
|
|
230
|
+
<head>
|
|
231
|
+
<meta charset="UTF-8">
|
|
232
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
233
|
+
<title>{screen_name} — {module_id} Wireframe</title>
|
|
234
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
235
|
+
<script>
|
|
236
|
+
tailwind.config = {
|
|
237
|
+
theme: {
|
|
238
|
+
extend: { /* injected from tailwind.theme.json */ }
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
</script>
|
|
242
|
+
</head>
|
|
243
|
+
<body>
|
|
244
|
+
<!-- LEFT SIDEBAR: Figma-style navigation listing all screens and flows -->
|
|
245
|
+
<aside>
|
|
246
|
+
<!-- Screen list with links to other wireframe files -->
|
|
247
|
+
<!-- Flow list with links to scenario flow files -->
|
|
248
|
+
<!-- Current screen highlighted -->
|
|
249
|
+
</aside>
|
|
250
|
+
|
|
251
|
+
<!-- MAIN CONTENT: Wireframe layout for this screen -->
|
|
252
|
+
<main>
|
|
253
|
+
<!-- Component placeholders matching fe_details.json components[] -->
|
|
254
|
+
<!-- Data display areas matching dataDisplayed[] -->
|
|
255
|
+
<!-- Form inputs matching dataCaptured[] -->
|
|
256
|
+
<!-- Navigation elements matching navigation.links_to[] -->
|
|
257
|
+
</main>
|
|
258
|
+
</body>
|
|
259
|
+
</html>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Wireframe Flow HTML Files (per scenario)
|
|
263
|
+
- **Path:** `agent_output/wireframes/{module_id}/flows/{scenario_name}-flow.html` (e.g., `agent_output/wireframes/auth/flows/login-success-flow.html`)
|
|
264
|
+
- **Format:** `html`
|
|
265
|
+
- **Consumers:** `user` (visual review), `electron_app` (artifact viewer)
|
|
266
|
+
- **Shape:**
|
|
267
|
+
```
|
|
268
|
+
Each flow HTML file is a standalone document showing a multi-step journey:
|
|
269
|
+
|
|
270
|
+
<!DOCTYPE html>
|
|
271
|
+
<html lang="en">
|
|
272
|
+
<head>
|
|
273
|
+
<!-- Same head structure as screen wireframes -->
|
|
274
|
+
</head>
|
|
275
|
+
<body>
|
|
276
|
+
<!-- LEFT SIDEBAR: Same navigation structure -->
|
|
277
|
+
<aside>...</aside>
|
|
278
|
+
|
|
279
|
+
<!-- MAIN CONTENT: Step-by-step flow visualization -->
|
|
280
|
+
<main>
|
|
281
|
+
<!-- Step 1: Screen snapshot with highlighted action -->
|
|
282
|
+
<!-- Arrow/connector to next step -->
|
|
283
|
+
<!-- Step 2: Next screen snapshot with highlighted action -->
|
|
284
|
+
<!-- ... continues for all steps in the scenario -->
|
|
285
|
+
<!-- Final: Expected outcome display -->
|
|
286
|
+
</main>
|
|
287
|
+
</body>
|
|
288
|
+
</html>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### wireframe_mapping.json
|
|
292
|
+
- **Path:** `agent_output/wireframes/{module_id}/wireframe_mapping.json`
|
|
293
|
+
- **Format:** `json`
|
|
294
|
+
- **Consumers:** `electron_app` (artifact viewer)
|
|
295
|
+
- **Shape:**
|
|
296
|
+
```json
|
|
297
|
+
{
|
|
298
|
+
"module_id": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"description": "Module identifier",
|
|
301
|
+
"example": "auth"
|
|
302
|
+
},
|
|
303
|
+
"screen_mappings": {
|
|
304
|
+
"type": "array",
|
|
305
|
+
"description": "Maps screen IDs to their wireframe file paths",
|
|
306
|
+
"items": {
|
|
307
|
+
"screen_id": {
|
|
308
|
+
"type": "string",
|
|
309
|
+
"example": "SCR-AUTH-001"
|
|
310
|
+
},
|
|
311
|
+
"screen_name": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"example": "Login Screen"
|
|
314
|
+
},
|
|
315
|
+
"wireframe_file": {
|
|
316
|
+
"type": "string",
|
|
317
|
+
"description": "Relative path to the wireframe HTML file",
|
|
318
|
+
"example": "auth/login.html"
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
"flow_mappings": {
|
|
323
|
+
"type": "array",
|
|
324
|
+
"description": "Maps scenario IDs to their flow wireframe file paths",
|
|
325
|
+
"items": {
|
|
326
|
+
"scenario_id": {
|
|
327
|
+
"type": "string",
|
|
328
|
+
"example": "SC-AUTH-001-01"
|
|
329
|
+
},
|
|
330
|
+
"scenario_name": {
|
|
331
|
+
"type": "string",
|
|
332
|
+
"example": "Successful login"
|
|
333
|
+
},
|
|
334
|
+
"story_id": {
|
|
335
|
+
"type": "string",
|
|
336
|
+
"description": "Parent story this scenario belongs to",
|
|
337
|
+
"example": "US-AUTH-001"
|
|
338
|
+
},
|
|
339
|
+
"flow_file": {
|
|
340
|
+
"type": "string",
|
|
341
|
+
"description": "Relative path to the flow wireframe HTML file",
|
|
342
|
+
"example": "auth/flows/login-success-flow.html"
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Dependencies
|
|
352
|
+
|
|
353
|
+
| Depends On | Agent | Artifact | Why |
|
|
354
|
+
|---|---|---|---|
|
|
355
|
+
| input | `fe_contract` | `fe_details.json` | Screen definitions, components, and navigation drive wireframe layout and content |
|
|
356
|
+
| input | `user_stories` | `user_stories_{module_id}.json` | Scenarios with multi-step flows are used to generate flow wireframes |
|
|
357
|
+
| input | `theming` | `design_tokens.json` | Design tokens are applied to wireframe styling for visual consistency |
|
|
358
|
+
| input | `theming` | `tailwind.theme.json` | Tailwind theme extension is injected into each wireframe HTML file |
|
|
359
|
+
|
|
360
|
+
| Blocks | Agent | Why |
|
|
361
|
+
|---|---|---|
|
|
362
|
+
| output | _(none directly)_ | Wireframes are visual artifacts for human review — no downstream agent programmatically consumes them |
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## Orchestrator Communication
|
|
367
|
+
|
|
368
|
+
**Agent Identity:** `wireframe` — Use this ID in all `node_write`, `node_read`, `tracker_read`, and `tracker_update` calls.
|
|
369
|
+
|
|
370
|
+
### Tracker Access
|
|
371
|
+
|
|
372
|
+
| Operation | Fields | Why |
|
|
373
|
+
|---|---|---|
|
|
374
|
+
| `tracker_read` | `md.a` | Read active modules list to determine which module this per-module invocation targets |
|
|
375
|
+
| `tracker_update` | `ag` | Report agent status (in_progress, completed, failed) |
|
|
376
|
+
|
|
377
|
+
### Output Meta
|
|
378
|
+
|
|
379
|
+
`null` — This agent produces wireframe artifacts only. No routing metadata for the orchestrator.
|
|
380
|
+
|
|
381
|
+
### Completion Signal
|
|
382
|
+
|
|
383
|
+
**Success:**
|
|
384
|
+
```
|
|
385
|
+
tracker_update({ agent_status: { agent_id: "wireframe", status: "completed" } })
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**Failure:**
|
|
389
|
+
```
|
|
390
|
+
tracker_update({ agent_status: { agent_id: "wireframe", status: "failed" } })
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### Scope Resolution
|
|
394
|
+
|
|
395
|
+
Per-module agent. Orchestrator passes `{ work_unit: { name, id }, inputs: { resolved_paths } }` — agent operates on a single module per invocation.
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Compressed Keymap
|
|
400
|
+
|
|
401
|
+
Use these compressed keys in all `node_write` and `node_read` calls. The registry validates against this map — unknown keys are rejected.
|
|
402
|
+
|
|
403
|
+
### wireframe_mapping.json
|
|
404
|
+
|
|
405
|
+
| Key | Full Name | Description |
|
|
406
|
+
|---|---|---|
|
|
407
|
+
| `m` | module_id | Module identifier |
|
|
408
|
+
| `sm` | screen_mappings | Array of screen-to-wireframe mappings |
|
|
409
|
+
| `si` | screen_id | Screen ID from fe_details |
|
|
410
|
+
| `sn` | screen_name | Screen display name |
|
|
411
|
+
| `wf` | wireframe_file | Relative path to wireframe HTML file |
|
|
412
|
+
| `fm` | flow_mappings | Array of scenario-to-flow mappings |
|
|
413
|
+
| `sci` | scenario_id | Scenario ID from user stories |
|
|
414
|
+
| `scn` | scenario_name | Scenario display name |
|
|
415
|
+
| `sid` | story_id | Parent story this scenario belongs to |
|
|
416
|
+
| `ff` | flow_file | Relative path to flow wireframe HTML file |
|
|
417
|
+
|
|
418
|
+
> **Note:** Wireframe HTML files are written as raw HTML via `node_write`. Only `wireframe_mapping.json` uses compressed keys for its JSON structure. The HTML files themselves are not compressed — they are standalone documents.
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Tools Required
|
|
423
|
+
|
|
424
|
+
| Tool | Purpose |
|
|
425
|
+
|---|---|
|
|
426
|
+
| `node_write` | Write agent output artifacts using compressed keys. Output key: `wireframe_html`, `wireframe_flow_html`, `wireframe_mapping` |
|
|
427
|
+
| `node_read` | Read input artifacts from upstream agents. Input keys: `fe_details`, `user_stories`, `design_tokens`, `tailwind_theme` |
|
|
428
|
+
| `tracker_read` | Read tracker state — active modules via `md.a` |
|
|
429
|
+
| `tracker_update` | Report agent status and completion signal |
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Guardrails
|
|
434
|
+
|
|
435
|
+
### Rules
|
|
436
|
+
|
|
437
|
+
| ID | Category | Severity | Rule |
|
|
438
|
+
|---|---|---|---|
|
|
439
|
+
| R-001 | `constraint` | `must` | Must produce valid HTML5 documents that pass basic HTML validation. |
|
|
440
|
+
| R-002 | `constraint` | `must` | Every HTML file must be standalone — no npm install, no build step, no external dependencies except the Tailwind CDN. Open in browser and it works. |
|
|
441
|
+
| R-003 | `constraint` | `must` | Must apply design tokens via the Tailwind theme config. Wireframes must visually reflect the project's design system, not use default Tailwind colors. |
|
|
442
|
+
| R-004 | `constraint` | `must` | Must produce a wireframe HTML file for every screen in fe_details.json. No screen may be skipped. |
|
|
443
|
+
| R-005 | `constraint` | `must` | Must produce scenario flow HTML files for all stories with scenarios that have multiple steps. Single-step scenarios do not need flow wireframes. |
|
|
444
|
+
| R-006 | `constraint` | `must` | Every wireframe HTML file must include the left sidebar navigation listing all screens and flows for the module. |
|
|
445
|
+
| R-007 | `output_quality` | `should` | Wireframes should show layout and structure — component placeholders, form fields, data display areas — not pixel-perfect designs. |
|
|
446
|
+
| R-008 | `output_quality` | `should` | Components on the wireframe should match the components[] defined in fe_details.json — same names, same types, matching the described props. |
|
|
447
|
+
| R-009 | `not_allowed` | `must` | Must not require any JavaScript framework (React, Vue, etc.) to render. Wireframes use only vanilla HTML, Tailwind CSS, and minimal inline JS for sidebar navigation. |
|
|
448
|
+
| R-010 | `scope_boundary` | `must` | Must not modify fe_details.json or any other contract file. The wireframe agent is a consumer of contracts, not a modifier. |
|
|
449
|
+
| R-011 | `output_quality` | `should` | Sidebar should highlight the current active screen/flow and allow click navigation to other wireframes. |
|
|
450
|
+
| R-012 | `constraint` | `must` | wireframe_mapping.json must contain entries for every screen wireframe and every flow wireframe produced. |
|
|
451
|
+
| R-013 | `constraint` | `must` | Must use compressed keys for all `node_write` and `node_read` calls. Raw/uncompressed keys are rejected by the registry. |
|
|
452
|
+
| R-014 | `constraint` | `must` | Must use `node_write`/`node_read` for all artifact I/O. Raw file system writes are not permitted for pipeline artifacts. |
|
|
453
|
+
| R-015 | `constraint` | `must` | Must call `tracker_update` with final agent status (completed or failed) before exiting. |
|
|
454
|
+
| R-016 | `constraint` | `must` | Must read active modules via `tracker_read` (`md.a`) to resolve which module this invocation targets. |
|
|
455
|
+
|
|
456
|
+
### Limits
|
|
457
|
+
|
|
458
|
+
| Resource | Value |
|
|
459
|
+
|---|---|
|
|
460
|
+
| max_retries | 3 |
|
|
461
|
+
| max_tokens | 16384 |
|
|
462
|
+
| max_html_file_size_kb | 500 |
|
|
463
|
+
| timeout_seconds | 300 |
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Scope Boundary
|
|
468
|
+
|
|
469
|
+
**In scope:**
|
|
470
|
+
- Generating standalone HTML wireframes for every screen in fe_details.json
|
|
471
|
+
- Generating scenario flow wireframes for multi-step user journeys
|
|
472
|
+
- Applying design tokens and Tailwind theme to wireframe styling
|
|
473
|
+
- Building sidebar navigation for browsing between wireframes
|
|
474
|
+
- Producing wireframe_mapping.json for artifact discovery
|
|
475
|
+
- Showing component placeholders, form fields, data display areas, and navigation elements
|
|
476
|
+
|
|
477
|
+
**Out of scope:**
|
|
478
|
+
- Producing pixel-perfect designs or final UI (this is layout and structure only)
|
|
479
|
+
- Modifying FE contracts or any other contract files
|
|
480
|
+
- Producing React/Vue/Angular components (wireframes are plain HTML)
|
|
481
|
+
- Interactive functionality beyond sidebar navigation (no form submission, no API calls)
|
|
482
|
+
- Responsive design optimization (wireframes show desktop layout; responsive comes in implementation)
|
|
483
|
+
- Accessibility compliance testing (wireframes are visual artifacts, not production code)
|
|
484
|
+
- Generating CSS files separate from the HTML (everything is inline or via Tailwind CDN)
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## Triggers
|
|
489
|
+
|
|
490
|
+
- Orchestrator activates this agent when fe_contract completes for a module (or fe_reconcile completes if FE review loop was triggered)
|
|
491
|
+
- Runs IN PARALLEL with be_contract — both depend on fe_contract output but not on each other
|
|
492
|
+
- In retrofit mode, activated only for modules with FE layer changes
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
## Checkpoints
|
|
497
|
+
|
|
498
|
+
| ID | Description | Action |
|
|
499
|
+
|---|---|---|
|
|
500
|
+
| `CP-001` | fe_details.json loaded and parsed — screen count determined | `log` |
|
|
501
|
+
| `CP-002` | Design tokens and Tailwind theme loaded | `log` |
|
|
502
|
+
| `CP-003` | User stories loaded — scenario flows identified | `log` |
|
|
503
|
+
| `CP-004` | Screen wireframes generated for all screens | `notify` — user can begin reviewing wireframes while flows are still generating |
|
|
504
|
+
| `CP-005` | Flow wireframes generated for all multi-step scenarios | `log` |
|
|
505
|
+
| `CP-006` | wireframe_mapping.json produced and validated | `log` |
|
|
506
|
+
| `CP-007` | All wireframe HTML files validated as standalone (valid HTML5, Tailwind CDN present, sidebar present) | `log` |
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## Validation Criteria
|
|
511
|
+
|
|
512
|
+
- Every screen in fe_details.json has a corresponding HTML wireframe file
|
|
513
|
+
- Every multi-step scenario has a corresponding flow wireframe file
|
|
514
|
+
- All HTML files are valid HTML5 documents
|
|
515
|
+
- All HTML files include the Tailwind CDN script tag
|
|
516
|
+
- All HTML files include the custom Tailwind theme config from tailwind.theme.json
|
|
517
|
+
- All HTML files include the left sidebar navigation with links to all other screens and flows
|
|
518
|
+
- wireframe_mapping.json contains entries for every screen and flow wireframe produced
|
|
519
|
+
- wireframe_mapping.json file paths point to files that exist on disk
|
|
520
|
+
- No wireframe HTML file requires external dependencies beyond the Tailwind CDN
|
|
521
|
+
- Component placeholders in wireframes correspond to components defined in fe_details.json
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## Context Sources
|
|
526
|
+
|
|
527
|
+
- fe_details.json from FE Contract Agent (screen definitions, components, navigation)
|
|
528
|
+
- user_stories_{module_id}.json from Story Agent (scenarios for flow wireframes)
|
|
529
|
+
- design_tokens.json from Theming Agent (color, typography, spacing tokens)
|
|
530
|
+
- tailwind.theme.json from Theming Agent (Tailwind config extension)
|
|
531
|
+
- navigation_graph.json from FE Contract Agent (optional — for sidebar ordering)
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
## Operation Mode
|
|
536
|
+
|
|
537
|
+
| Field | Value |
|
|
538
|
+
|---|---|
|
|
539
|
+
| Type | `autonomous` |
|
|
540
|
+
| Fallback | `none` — wireframe failures do not block downstream agents; the module can proceed without wireframes, but visual review would be lost |
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## Tool Gaps
|
|
545
|
+
|
|
546
|
+
| Gap ID | Description | Needed By | Impact Without |
|
|
547
|
+
|---|---|---|---|
|
|
548
|
+
| `TG-001` | `node_write` — Universal tool for writing agent output artifacts using compressed keys with registry validation | this agent | Agent cannot persist output artifacts through the pipeline-standard interface |
|
|
549
|
+
| `TG-002` | `node_read` — Universal tool for reading upstream agent artifacts using compressed keys | this agent | Agent cannot load input artifacts through the pipeline-standard interface |
|
|
550
|
+
| `TG-003` | `tracker_read` — Universal tool for reading pipeline tracker state | this agent | Agent cannot resolve active modules or check upstream agent completion |
|
|
551
|
+
| `TG-004` | `tracker_update` — Universal tool for reporting agent status and completion signals | this agent | Orchestrator cannot track agent progress or route downstream agents |
|
|
552
|
+
| `TG-005` | HTML generator that produces valid standalone HTML5 documents with Tailwind CSS classes, component placeholders, and layout structure from fe_details.json screen definitions | this agent | Core capability gap — agent cannot produce wireframes without a structured HTML generation tool |
|
|
553
|
+
| `TG-006` | Tailwind CDN bundler that injects the CDN script tag and custom theme configuration into each HTML file | this agent | Wireframes would lack design token styling, appearing as unstyled HTML |
|
|
554
|
+
| `TG-007` | Sidebar navigation generator that creates a consistent left sidebar across all wireframe files with screen/flow listings, active state highlighting, and inter-file navigation links | this agent | Users would need to manually navigate between wireframe files, significantly reducing usability |
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## Generation Readiness
|
|
559
|
+
|
|
560
|
+
| `generate_agent` Param | Status | Notes |
|
|
561
|
+
|---|---|---|
|
|
562
|
+
| `fileName` | ready | `wireframe` |
|
|
563
|
+
| `agentName` | ready | `wireframe` |
|
|
564
|
+
| `agentRole` | ready | "Standalone HTML Wireframe Generator" |
|
|
565
|
+
| `agentDescription` | ready | Full description available from Goal section |
|
|
566
|
+
| `operationMode` | ready | `autonomous`, no fallback |
|
|
567
|
+
| `goal` | ready | 3 objectives defined with priorities |
|
|
568
|
+
| `inputs` | ready | 4 inputs: fe_details.json, user_stories, design_tokens.json, tailwind.theme.json — all required |
|
|
569
|
+
| `guardrails` | ready | 16 rules defined across constraint, output_quality, not_allowed, scope_boundary categories |
|
|
570
|
+
| `scopeBoundary` | ready | 6 in-scope items, 7 out-of-scope items |
|
|
571
|
+
| `outputFormat` | ready | HTML wireframe files + JSON mapping file with full shape definitions |
|
|
572
|
+
| `triggers` | ready | 3 triggers defined |
|
|
573
|
+
| `checkpoints` | ready | 7 checkpoints with actions |
|
|
574
|
+
| `validation` | ready | 10 validation criteria |
|
|
575
|
+
| `contextSources` | ready | 5 context sources |
|
|
576
|
+
| `metadata` | ready | phase: "5", mode: "both", granularity: "per_module" |
|