@hustle-together/api-dev-tools 3.12.3 → 3.12.16
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/.claude/commands/hustle-build.md +259 -0
- package/.claude/commands/hustle-combine.md +1089 -0
- package/.claude/commands/hustle-ui-create-page.md +1078 -0
- package/.claude/commands/hustle-ui-create.md +1058 -0
- package/.claude/hooks/auto-answer.py +305 -0
- package/.claude/hooks/cache-research.py +337 -0
- package/.claude/hooks/check-api-routes.py +168 -0
- package/.claude/hooks/check-playwright-setup.py +103 -0
- package/.claude/hooks/check-storybook-setup.py +81 -0
- package/.claude/hooks/check-update.py +132 -0
- package/.claude/hooks/completion-promise-detector.py +293 -0
- package/.claude/hooks/context-capacity-warning.py +171 -0
- package/.claude/hooks/detect-interruption.py +165 -0
- package/.claude/hooks/docs-update-check.py +120 -0
- package/.claude/hooks/enforce-a11y-audit.py +202 -0
- package/.claude/hooks/enforce-brand-guide.py +241 -0
- package/.claude/hooks/enforce-component-type-confirm.py +97 -0
- package/.claude/hooks/enforce-dry-run.py +134 -0
- package/.claude/hooks/enforce-freshness.py +184 -0
- package/.claude/hooks/enforce-page-components.py +186 -0
- package/.claude/hooks/enforce-page-data-schema.py +155 -0
- package/.claude/hooks/enforce-questions-sourced.py +146 -0
- package/.claude/hooks/enforce-schema-from-interview.py +248 -0
- package/.claude/hooks/enforce-ui-disambiguation.py +108 -0
- package/.claude/hooks/enforce-ui-interview.py +130 -0
- package/.claude/hooks/generate-adr-options.py +282 -0
- package/.claude/hooks/generate-manifest-entry.py +1161 -0
- package/.claude/hooks/hook_utils.py +609 -0
- package/.claude/hooks/lib/__init__.py +1 -0
- package/.claude/hooks/lib/__pycache__/__init__.cpython-314.pyc +0 -0
- package/.claude/hooks/lib/__pycache__/greptile.cpython-314.pyc +0 -0
- package/.claude/hooks/lib/__pycache__/ntfy.cpython-314.pyc +0 -0
- package/.claude/hooks/lib/greptile.py +355 -0
- package/.claude/hooks/lib/ntfy.py +209 -0
- package/.claude/hooks/notify-input-needed.py +73 -0
- package/.claude/hooks/notify-phase-complete.py +90 -0
- package/.claude/hooks/ntfy-on-question.py +240 -0
- package/.claude/hooks/orchestrator-completion.py +313 -0
- package/.claude/hooks/orchestrator-handoff.py +267 -0
- package/.claude/hooks/orchestrator-session-startup.py +146 -0
- package/.claude/hooks/parallel-orchestrator.py +451 -0
- package/.claude/hooks/project-document-prompt.py +302 -0
- package/.claude/hooks/remote-question-proxy.py +284 -0
- package/.claude/hooks/remote-question-server.py +1224 -0
- package/.claude/hooks/run-code-review.py +393 -0
- package/.claude/hooks/run-visual-qa.py +338 -0
- package/.claude/hooks/session-logger.py +323 -0
- package/.claude/hooks/test-orchestrator-reground.py +248 -0
- package/.claude/hooks/track-scope-coverage.py +220 -0
- package/.claude/hooks/track-token-usage.py +121 -0
- package/.claude/hooks/update-adr-decision.py +236 -0
- package/.claude/hooks/update-api-showcase.py +161 -0
- package/.claude/hooks/update-registry.py +352 -0
- package/.claude/hooks/update-testing-checklist.py +195 -0
- package/.claude/hooks/update-ui-showcase.py +224 -0
- package/.claude/settings.local.json +7 -1
- package/.claude/test-auto-answer-bot.py +183 -0
- package/.claude/test-completion-detector.py +263 -0
- package/.claude/test-orchestrator-state.json +20 -0
- package/.claude/test-orchestrator.sh +271 -0
- package/.skills/api-create/SKILL.md +88 -3
- package/.skills/docs-sync/SKILL.md +260 -0
- package/.skills/hustle-build/SKILL.md +459 -0
- package/.skills/hustle-build-review/SKILL.md +518 -0
- package/CHANGELOG.md +87 -0
- package/README.md +86 -9
- package/bin/cli.js +1302 -88
- package/commands/hustle-api-create.md +22 -0
- package/commands/hustle-combine.md +81 -2
- package/commands/hustle-ui-create-page.md +84 -2
- package/commands/hustle-ui-create.md +82 -2
- package/hooks/auto-answer.py +228 -0
- package/hooks/check-update.py +132 -0
- package/hooks/ntfy-on-question.py +227 -0
- package/hooks/orchestrator-completion.py +313 -0
- package/hooks/orchestrator-handoff.py +189 -0
- package/hooks/orchestrator-session-startup.py +146 -0
- package/hooks/periodic-reground.py +230 -67
- package/hooks/update-api-showcase.py +13 -1
- package/hooks/update-ui-showcase.py +13 -1
- package/package.json +7 -3
- package/scripts/extract-schema-docs.cjs +322 -0
- package/templates/CLAUDE-SECTION.md +89 -64
- package/templates/api-showcase/_components/APIModal.tsx +100 -8
- package/templates/api-showcase/_components/APIShowcase.tsx +36 -4
- package/templates/api-showcase/_components/APITester.tsx +367 -58
- package/templates/docs/page.tsx +230 -0
- package/templates/hustle-build-defaults.json +84 -0
- package/templates/hustle-dev-dashboard/page.tsx +365 -0
- package/templates/playwright-report/page.tsx +258 -0
- package/templates/settings.json +88 -7
- package/templates/test-results/page.tsx +237 -0
- package/templates/typedoc.json +19 -0
- package/templates/ui-showcase/_components/UIShowcase.tsx +1 -1
- package/templates/ui-showcase/page.tsx +1 -1
- package/.claude/api-dev-state.json +0 -466
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hustle-build-review
|
|
3
|
+
description: Review auto-build results, decisions, and logs. Analyze what happened during a /hustle-build execution.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Requires Claude Code with hooks configured
|
|
6
|
+
metadata:
|
|
7
|
+
version: "4.0.0"
|
|
8
|
+
category: "review"
|
|
9
|
+
tags: ["review", "audit", "analysis", "auto-mode"]
|
|
10
|
+
author: "Hustle Together"
|
|
11
|
+
allowed-tools: Read Glob Grep WebFetch AskUserQuestion TodoWrite
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Hustle Build Review - Auto-Build Analysis
|
|
15
|
+
|
|
16
|
+
Review and analyze the results of a `/hustle-build` execution. Essential for understanding what decisions were made in auto-mode and identifying areas for improvement.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/hustle-build-review [build-id]
|
|
22
|
+
/hustle-build-review --latest
|
|
23
|
+
/hustle-build-review --list
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Arguments
|
|
27
|
+
|
|
28
|
+
- `$ARGUMENTS` - Build ID to review (e.g., `build-2025-12-28-dashboard`)
|
|
29
|
+
- `--latest` - Review the most recent build
|
|
30
|
+
- `--list` - List all available build logs
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Phase 1: Load Build Data
|
|
35
|
+
|
|
36
|
+
### 1.1 Find Build Log
|
|
37
|
+
|
|
38
|
+
If `--list`:
|
|
39
|
+
```bash
|
|
40
|
+
ls -la .claude/workflow-logs/build-*.json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Display table:
|
|
44
|
+
```
|
|
45
|
+
Available Builds:
|
|
46
|
+
| Build ID | Date | Status | Elements |
|
|
47
|
+
|-----------------------------|------------|----------|----------|
|
|
48
|
+
| build-2025-12-28-dashboard | 2025-12-28 | complete | 8 |
|
|
49
|
+
| build-2025-12-27-checkout | 2025-12-27 | complete | 5 |
|
|
50
|
+
| build-2025-12-26-auth | 2025-12-26 | failed | 3 |
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If `--latest`:
|
|
54
|
+
- Find most recent `build-*.json` file
|
|
55
|
+
- Load that build ID
|
|
56
|
+
|
|
57
|
+
### 1.2 Load Files
|
|
58
|
+
|
|
59
|
+
Load from `.claude/`:
|
|
60
|
+
- `hustle-build-state.json` - Orchestration state
|
|
61
|
+
- `workflow-logs/[build-id].json` - Detailed log
|
|
62
|
+
- `registry.json` - Created elements
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Phase 2: Executive Summary
|
|
67
|
+
|
|
68
|
+
Present high-level overview:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
BUILD REVIEW: [Build ID]
|
|
72
|
+
============================================================
|
|
73
|
+
|
|
74
|
+
Status: [complete/failed/interrupted]
|
|
75
|
+
Duration: [X minutes]
|
|
76
|
+
Mode: [interactive/auto]
|
|
77
|
+
|
|
78
|
+
CREATED:
|
|
79
|
+
APIs: X new + Y combined
|
|
80
|
+
Components: X new
|
|
81
|
+
Pages: X new
|
|
82
|
+
|
|
83
|
+
TESTS:
|
|
84
|
+
Total: X tests
|
|
85
|
+
Passed: X (XX%)
|
|
86
|
+
Failed: X
|
|
87
|
+
|
|
88
|
+
DECISIONS:
|
|
89
|
+
Total Questions: X
|
|
90
|
+
Auto-Answered: X (if auto mode)
|
|
91
|
+
User-Answered: X
|
|
92
|
+
|
|
93
|
+
============================================================
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Phase 3: Decision Audit
|
|
99
|
+
|
|
100
|
+
### 3.1 Orchestrator Decisions
|
|
101
|
+
|
|
102
|
+
Show high-level decisions from orchestrator interview:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
ORCHESTRATOR DECISIONS
|
|
106
|
+
----------------------
|
|
107
|
+
|
|
108
|
+
Q1: Authentication
|
|
109
|
+
Answer: Protected (requires login)
|
|
110
|
+
Source: [user | auto-comprehensive | default]
|
|
111
|
+
Applied: All 8 elements
|
|
112
|
+
|
|
113
|
+
Q2: Error Handling
|
|
114
|
+
Answer: Partial success
|
|
115
|
+
Source: [user | auto-comprehensive | default]
|
|
116
|
+
Applied: Combined API, individual APIs
|
|
117
|
+
|
|
118
|
+
Q3: Brand Guide
|
|
119
|
+
Answer: Yes, use BRAND_GUIDE.md
|
|
120
|
+
Source: [user | auto-comprehensive | default]
|
|
121
|
+
Applied: All components, page
|
|
122
|
+
|
|
123
|
+
Q4: Testing Level
|
|
124
|
+
Answer: Full TDD (all 14 phases)
|
|
125
|
+
Source: [user | auto-comprehensive | default]
|
|
126
|
+
Applied: All elements
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 3.2 Per-Element Decisions
|
|
130
|
+
|
|
131
|
+
For each element, show workflow-specific decisions:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
ELEMENT: user-stats (API)
|
|
135
|
+
-------------------------
|
|
136
|
+
|
|
137
|
+
Interview Questions:
|
|
138
|
+
Q: "Which stats to include?"
|
|
139
|
+
Answer: Comprehensive (all available)
|
|
140
|
+
Source: auto-comprehensive
|
|
141
|
+
Reason: "Selected most comprehensive option"
|
|
142
|
+
|
|
143
|
+
Q: "Rate limiting?"
|
|
144
|
+
Answer: Yes, 100 req/min
|
|
145
|
+
Source: default (hustle-build-defaults.json)
|
|
146
|
+
|
|
147
|
+
Q: "Caching strategy?"
|
|
148
|
+
Answer: Individual (per-endpoint)
|
|
149
|
+
Source: shared_decisions (orchestrator)
|
|
150
|
+
|
|
151
|
+
Would you have answered differently? [View code to adjust]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 3.3 Decision Summary Table
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
DECISION SUMMARY
|
|
158
|
+
----------------
|
|
159
|
+
|
|
160
|
+
| Element | Questions | Auto | User | Default | Shared |
|
|
161
|
+
|--------------|-----------|------|------|---------|--------|
|
|
162
|
+
| user-stats | 3 | 1 | 0 | 1 | 1 |
|
|
163
|
+
| chart-data | 3 | 2 | 0 | 0 | 1 |
|
|
164
|
+
| StatCard | 4 | 3 | 0 | 0 | 1 |
|
|
165
|
+
| Dashboard | 2 | 1 | 0 | 0 | 1 |
|
|
166
|
+
| TOTAL | 12 | 7 | 0 | 1 | 4 |
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Phase 4: Workflow Analysis
|
|
172
|
+
|
|
173
|
+
### 4.1 Execution Timeline
|
|
174
|
+
|
|
175
|
+
Show how workflows executed:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
EXECUTION TIMELINE
|
|
179
|
+
------------------
|
|
180
|
+
|
|
181
|
+
10:00:00 BUILD START
|
|
182
|
+
10:00:15 Orchestrator interview complete (4 questions)
|
|
183
|
+
|
|
184
|
+
TIER 1 (APIs - parallel eligible):
|
|
185
|
+
10:00:30 [api] user-stats START
|
|
186
|
+
10:08:45 [api] user-stats COMPLETE (8m 15s, 4 tests)
|
|
187
|
+
10:08:50 [api] chart-data START
|
|
188
|
+
10:17:22 [api] chart-data COMPLETE (8m 32s, 4 tests)
|
|
189
|
+
10:17:25 [api] dashboard-metrics START
|
|
190
|
+
10:25:40 [api] dashboard-metrics COMPLETE (8m 15s, 4 tests)
|
|
191
|
+
|
|
192
|
+
TIER 2 (Combined API):
|
|
193
|
+
10:25:45 [combined] dashboard-data START
|
|
194
|
+
10:38:20 [combined] dashboard-data COMPLETE (12m 35s, 8 tests)
|
|
195
|
+
|
|
196
|
+
TIER 3 (Components):
|
|
197
|
+
10:38:25 [component] StatCard START
|
|
198
|
+
10:50:10 [component] StatCard COMPLETE (11m 45s, 5 tests)
|
|
199
|
+
10:50:15 [component] ChartWidget START
|
|
200
|
+
11:02:30 [component] ChartWidget COMPLETE (12m 15s, 5 tests)
|
|
201
|
+
|
|
202
|
+
TIER 4 (Page):
|
|
203
|
+
11:02:35 [page] Dashboard START
|
|
204
|
+
11:22:50 [page] Dashboard COMPLETE (20m 15s, 17 tests)
|
|
205
|
+
|
|
206
|
+
11:23:00 Cross-workflow wiring
|
|
207
|
+
11:25:00 Final verification (47 tests)
|
|
208
|
+
11:26:30 Documentation rollup
|
|
209
|
+
|
|
210
|
+
11:27:00 BUILD COMPLETE
|
|
211
|
+
|
|
212
|
+
Total Duration: 87 minutes
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 4.2 Per-Element Details
|
|
216
|
+
|
|
217
|
+
For each element, show:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
ELEMENT DETAIL: user-stats (API)
|
|
221
|
+
================================
|
|
222
|
+
|
|
223
|
+
Phases Completed: 14/14
|
|
224
|
+
Duration: 8m 15s
|
|
225
|
+
Tests: 4 passed, 0 failed
|
|
226
|
+
|
|
227
|
+
Files Created:
|
|
228
|
+
- src/app/api/v2/user-stats/route.ts
|
|
229
|
+
- src/lib/schemas/user-stats.schema.ts
|
|
230
|
+
- src/app/api/v2/user-stats/__tests__/route.test.ts
|
|
231
|
+
|
|
232
|
+
Registry Entry:
|
|
233
|
+
{
|
|
234
|
+
"name": "user-stats",
|
|
235
|
+
"type": "api",
|
|
236
|
+
"path": "/api/v2/user-stats",
|
|
237
|
+
"schema": "src/lib/schemas/user-stats.schema.ts",
|
|
238
|
+
"exportedTypes": ["UserStatsResponse", "UserStatsParams"]
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
Research Sources:
|
|
242
|
+
- Context7: /supabase/supabase (user stats patterns)
|
|
243
|
+
- WebSearch: "user statistics API best practices 2025"
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Phase 5: Issues & Resolutions
|
|
249
|
+
|
|
250
|
+
### 5.1 Issues Encountered
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
ISSUES ENCOUNTERED
|
|
254
|
+
------------------
|
|
255
|
+
|
|
256
|
+
Issue #1:
|
|
257
|
+
Workflow: chart-data
|
|
258
|
+
Phase: TDD Green (Phase 9)
|
|
259
|
+
Problem: Test failed on first attempt
|
|
260
|
+
Error: "TypeError: chartType is not defined"
|
|
261
|
+
|
|
262
|
+
Resolution: Retried, passed on attempt 2
|
|
263
|
+
Auto-fix: Yes (retry logic)
|
|
264
|
+
|
|
265
|
+
Code diff:
|
|
266
|
+
- const type = chartType;
|
|
267
|
+
+ const type = params.chartType ?? 'line';
|
|
268
|
+
|
|
269
|
+
Issue #2:
|
|
270
|
+
Workflow: Dashboard (page)
|
|
271
|
+
Phase: Verification (Phase 10)
|
|
272
|
+
Problem: Missing loading state
|
|
273
|
+
|
|
274
|
+
Resolution: Added Suspense boundary
|
|
275
|
+
Auto-fix: Yes (verification loop)
|
|
276
|
+
|
|
277
|
+
Code added:
|
|
278
|
+
+ <Suspense fallback={<DashboardSkeleton />}>
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### 5.2 Unresolved Issues
|
|
282
|
+
|
|
283
|
+
If any:
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
UNRESOLVED ISSUES
|
|
287
|
+
-----------------
|
|
288
|
+
|
|
289
|
+
Issue #1:
|
|
290
|
+
Workflow: ChartWidget
|
|
291
|
+
Phase: Code Review (Phase 11)
|
|
292
|
+
Problem: "Consider adding aria-label for accessibility"
|
|
293
|
+
Status: Logged for future improvement
|
|
294
|
+
|
|
295
|
+
Recommended action:
|
|
296
|
+
Edit src/components/ChartWidget/ChartWidget.tsx
|
|
297
|
+
Add: aria-label={`${chartType} chart showing ${dataLabel}`}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Phase 6: Test Results
|
|
303
|
+
|
|
304
|
+
### 6.1 Test Summary
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
TEST RESULTS
|
|
308
|
+
------------
|
|
309
|
+
|
|
310
|
+
Unit Tests:
|
|
311
|
+
src/app/api/v2/user-stats/__tests__/route.test.ts 4/4 PASS
|
|
312
|
+
src/app/api/v2/chart-data/__tests__/route.test.ts 4/4 PASS
|
|
313
|
+
src/app/api/v2/dashboard-data/__tests__/route.test.ts 8/8 PASS
|
|
314
|
+
src/components/StatCard/__tests__/StatCard.test.ts 5/5 PASS
|
|
315
|
+
src/components/ChartWidget/__tests__/ChartWidget.test.ts 5/5 PASS
|
|
316
|
+
|
|
317
|
+
E2E Tests:
|
|
318
|
+
e2e/dashboard.spec.ts 12/12 PASS
|
|
319
|
+
|
|
320
|
+
Integration Tests:
|
|
321
|
+
src/app/dashboard/__tests__/page.test.ts 9/9 PASS
|
|
322
|
+
|
|
323
|
+
TOTAL: 47/47 tests passing (100%)
|
|
324
|
+
Coverage: 94%
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 6.2 Coverage Breakdown
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
COVERAGE BY ELEMENT
|
|
331
|
+
-------------------
|
|
332
|
+
|
|
333
|
+
| Element | Statements | Branches | Functions | Lines |
|
|
334
|
+
|------------------|------------|----------|-----------|-------|
|
|
335
|
+
| user-stats | 98% | 95% | 100% | 98% |
|
|
336
|
+
| chart-data | 96% | 92% | 100% | 96% |
|
|
337
|
+
| dashboard-data | 94% | 90% | 100% | 94% |
|
|
338
|
+
| StatCard | 100% | 100% | 100% | 100% |
|
|
339
|
+
| ChartWidget | 92% | 88% | 100% | 92% |
|
|
340
|
+
| Dashboard page | 89% | 85% | 100% | 89% |
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Phase 7: Registry Impact
|
|
346
|
+
|
|
347
|
+
### 7.1 Elements Added
|
|
348
|
+
|
|
349
|
+
```
|
|
350
|
+
REGISTRY ADDITIONS
|
|
351
|
+
------------------
|
|
352
|
+
|
|
353
|
+
APIs (3 new):
|
|
354
|
+
apis.user-stats
|
|
355
|
+
apis.chart-data
|
|
356
|
+
apis.dashboard-metrics
|
|
357
|
+
|
|
358
|
+
Combined APIs (1 new):
|
|
359
|
+
combined.dashboard-data
|
|
360
|
+
Sources: [user-stats, chart-data, dashboard-metrics]
|
|
361
|
+
|
|
362
|
+
Components (2 new):
|
|
363
|
+
components.StatCard
|
|
364
|
+
components.ChartWidget
|
|
365
|
+
|
|
366
|
+
Pages (1 new):
|
|
367
|
+
pages.Dashboard
|
|
368
|
+
Route: /dashboard
|
|
369
|
+
Components: [StatCard, ChartWidget]
|
|
370
|
+
Data: dashboard-data
|
|
371
|
+
|
|
372
|
+
Type Exports (8 new):
|
|
373
|
+
UserStatsResponse, UserStatsParams
|
|
374
|
+
ChartDataResponse, ChartDataParams
|
|
375
|
+
DashboardMetricsResponse
|
|
376
|
+
DashboardDataResponse
|
|
377
|
+
StatCardProps
|
|
378
|
+
ChartWidgetProps
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### 7.2 Relationships
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
DEPENDENCY GRAPH
|
|
385
|
+
----------------
|
|
386
|
+
|
|
387
|
+
dashboard-data (combined)
|
|
388
|
+
├── user-stats (api)
|
|
389
|
+
├── chart-data (api)
|
|
390
|
+
└── dashboard-metrics (api)
|
|
391
|
+
|
|
392
|
+
Dashboard (page)
|
|
393
|
+
├── StatCard (component)
|
|
394
|
+
│ └── uses: UserStatsResponse
|
|
395
|
+
├── ChartWidget (component)
|
|
396
|
+
│ └── uses: ChartDataResponse
|
|
397
|
+
└── fetches: dashboard-data
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## Phase 8: Recommendations
|
|
403
|
+
|
|
404
|
+
Based on the build analysis:
|
|
405
|
+
|
|
406
|
+
### 8.1 Auto-Mode Tuning
|
|
407
|
+
|
|
408
|
+
If decisions seem suboptimal:
|
|
409
|
+
|
|
410
|
+
```
|
|
411
|
+
RECOMMENDED DEFAULT CHANGES
|
|
412
|
+
---------------------------
|
|
413
|
+
|
|
414
|
+
Based on this build, consider updating .claude/hustle-build-defaults.json:
|
|
415
|
+
|
|
416
|
+
{
|
|
417
|
+
"component": {
|
|
418
|
+
- "all_variants": true,
|
|
419
|
+
+ "all_variants": false, // Only 2 variants used in practice
|
|
420
|
+
|
|
421
|
+
- "animations": true,
|
|
422
|
+
+ "animations": false, // Animations not used in dashboard
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### 8.2 Future Improvements
|
|
428
|
+
|
|
429
|
+
```
|
|
430
|
+
SUGGESTED IMPROVEMENTS
|
|
431
|
+
----------------------
|
|
432
|
+
|
|
433
|
+
1. StatCard could benefit from skeleton loading state
|
|
434
|
+
File: src/components/StatCard/StatCard.tsx
|
|
435
|
+
|
|
436
|
+
2. ChartWidget accessibility could be improved
|
|
437
|
+
Add: aria-label, role="img"
|
|
438
|
+
|
|
439
|
+
3. Dashboard page could use error boundary
|
|
440
|
+
Currently: No error boundary
|
|
441
|
+
Suggested: Add ErrorBoundary component
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Phase 9: Actions
|
|
447
|
+
|
|
448
|
+
Offer next steps:
|
|
449
|
+
|
|
450
|
+
```
|
|
451
|
+
AVAILABLE ACTIONS
|
|
452
|
+
-----------------
|
|
453
|
+
|
|
454
|
+
1. View specific element details:
|
|
455
|
+
/hustle-build-review [build-id] --element user-stats
|
|
456
|
+
|
|
457
|
+
2. Re-run with different decisions:
|
|
458
|
+
/hustle-build --resume [build-id] --interactive
|
|
459
|
+
|
|
460
|
+
3. Apply recommended improvements:
|
|
461
|
+
/hustle-build-improve [build-id]
|
|
462
|
+
|
|
463
|
+
4. Export review as markdown:
|
|
464
|
+
/hustle-build-review [build-id] --export
|
|
465
|
+
|
|
466
|
+
5. Compare with previous build:
|
|
467
|
+
/hustle-build-review --compare [build-id-1] [build-id-2]
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
Ask user:
|
|
471
|
+
```
|
|
472
|
+
What would you like to do?
|
|
473
|
+
- View more details on a specific element
|
|
474
|
+
- Apply recommended changes
|
|
475
|
+
- Export this review
|
|
476
|
+
- Return to development
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Output Format
|
|
482
|
+
|
|
483
|
+
Final summary displayed:
|
|
484
|
+
|
|
485
|
+
```
|
|
486
|
+
============================================================
|
|
487
|
+
BUILD REVIEW COMPLETE: [build-id]
|
|
488
|
+
============================================================
|
|
489
|
+
|
|
490
|
+
Key Metrics:
|
|
491
|
+
- 8 elements created
|
|
492
|
+
- 47 tests passing (100%)
|
|
493
|
+
- 94% code coverage
|
|
494
|
+
- 87 minute build time
|
|
495
|
+
|
|
496
|
+
Decision Quality:
|
|
497
|
+
- 7/12 questions auto-answered
|
|
498
|
+
- 1 issue auto-resolved
|
|
499
|
+
- 0 unresolved issues
|
|
500
|
+
|
|
501
|
+
Recommendations:
|
|
502
|
+
- 2 optional improvements identified
|
|
503
|
+
- 1 default setting could be tuned
|
|
504
|
+
|
|
505
|
+
Review exported to: docs/reviews/[build-id].md
|
|
506
|
+
============================================================
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
511
|
+
## Integration with Other Skills
|
|
512
|
+
|
|
513
|
+
This skill integrates with:
|
|
514
|
+
|
|
515
|
+
- `/hustle-build --resume [id]` - Resume interrupted build
|
|
516
|
+
- `/api-create-review [id]` - Review single API workflow
|
|
517
|
+
- `/hustle-ui-create-review [id]` - Review single component workflow
|
|
518
|
+
- `/commit` - Commit after review approval
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,93 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [3.12.12] - 2025-12-28
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Dashboard Page Templates** - All dashboard links now work (no more 404s)
|
|
10
|
+
- `/docs` - TypeDoc documentation viewer with generation instructions
|
|
11
|
+
- `/test-results` - Vitest results page with test commands reference
|
|
12
|
+
- `/playwright-report` - E2E test report viewer with Playwright commands
|
|
13
|
+
|
|
14
|
+
- **Interactive Query Parameter Builder** - Enhanced API testing UX
|
|
15
|
+
- Checkbox toggle to include/exclude each parameter in query string
|
|
16
|
+
- Type-aware inline editors:
|
|
17
|
+
- Dropdown `<select>` for enum types (order_by, color, orientation)
|
|
18
|
+
- Number inputs with min/max validation for numeric types
|
|
19
|
+
- Text inputs with placeholder examples for strings
|
|
20
|
+
- Auto-updates query string as you check params and edit values
|
|
21
|
+
- Required params locked on (can't uncheck)
|
|
22
|
+
- Example preset buttons still work as quick templates
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **ParameterDocs component** renamed to `InteractiveParamBuilder` for GET requests
|
|
27
|
+
- Query params now sync bidirectionally between builder and input field
|
|
28
|
+
|
|
29
|
+
### Documentation
|
|
30
|
+
|
|
31
|
+
- **[docs/HOOKS.md](./docs/HOOKS.md)** - Complete hook reference (45+ hooks)
|
|
32
|
+
- **[docs/SKILLS.md](./docs/SKILLS.md)** - All slash commands with usage examples
|
|
33
|
+
- **[docs/AGENTS.md](./docs/AGENTS.md)** - Specialized subagent reference
|
|
34
|
+
- **[docs/PLUGIN_ARCHITECTURE.md](./docs/PLUGIN_ARCHITECTURE.md)** - How the plugin system works
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## [3.12.11] - 2025-12-28
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- **Hustle Dev Dashboard** (`/hustle-dev-dashboard`) - Central hub page template
|
|
43
|
+
- Links to API Showcase, UI Showcase, Storybook, TypeDoc, Test Results
|
|
44
|
+
- Shows registry stats (APIs, Combined, Components, Pages)
|
|
45
|
+
- Quick Commands section with common pnpm commands
|
|
46
|
+
- Brand-themed design matching Hustle Together style
|
|
47
|
+
|
|
48
|
+
- **End-of-Workflow Summaries** - All 4 main commands now show completion summaries
|
|
49
|
+
- `/hustle-api-create` - Shows API quick links and next steps
|
|
50
|
+
- `/hustle-combine` - Shows combined API info and dashboard link
|
|
51
|
+
- `/hustle-ui-create` - Shows component preview links and Storybook
|
|
52
|
+
- `/hustle-ui-create-page` - Shows page URL and E2E test commands
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- **API Modal UX Improvements** - Better testing experience
|
|
57
|
+
- Modal widened from `max-w-5xl` to `max-w-7xl` for more content space
|
|
58
|
+
- "Send Request" button moved to footer (alongside View Tests/Copy Schema)
|
|
59
|
+
- Reduces scrolling when testing APIs
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## [3.12.10] - 2025-12-28
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- **TypeDoc Integration** - Generate API documentation from TSDoc comments
|
|
68
|
+
- `pnpm typedoc` script to generate Markdown docs
|
|
69
|
+
- `pnpm typedoc:watch` for development mode
|
|
70
|
+
- `templates/typedoc.json` configuration template
|
|
71
|
+
- Runs during Phase 13 (Documentation)
|
|
72
|
+
|
|
73
|
+
- **API Showcase Example Requests** - Pre-built, runnable examples in the testing UI
|
|
74
|
+
- Example selector UI with clickable buttons
|
|
75
|
+
- Auto-fills query parameters when clicked
|
|
76
|
+
- "Copy curl" button for each example
|
|
77
|
+
- Examples auto-generated from Zod schema parameters
|
|
78
|
+
|
|
79
|
+
- **Enhanced extract-schema-docs.cjs** - Generates working examples from schemas
|
|
80
|
+
- Detects required params, enums, and defaults
|
|
81
|
+
- Builds query strings and curl commands
|
|
82
|
+
- Outputs `examples` section for registry.json
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
|
|
86
|
+
- **APIModal 404 errors** - Fixed endpoint path building for action-based APIs
|
|
87
|
+
- Action-based APIs now use query params (`/api/v2/unsplash?action=search`)
|
|
88
|
+
- No longer incorrectly builds sub-paths (`/api/v2/unsplash/search`)
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
5
92
|
## [1.0.1] - 2025-12-28
|
|
6
93
|
|
|
7
94
|
### Fixed
|