@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.
Files changed (96) hide show
  1. package/.claude/commands/hustle-build.md +259 -0
  2. package/.claude/commands/hustle-combine.md +1089 -0
  3. package/.claude/commands/hustle-ui-create-page.md +1078 -0
  4. package/.claude/commands/hustle-ui-create.md +1058 -0
  5. package/.claude/hooks/auto-answer.py +305 -0
  6. package/.claude/hooks/cache-research.py +337 -0
  7. package/.claude/hooks/check-api-routes.py +168 -0
  8. package/.claude/hooks/check-playwright-setup.py +103 -0
  9. package/.claude/hooks/check-storybook-setup.py +81 -0
  10. package/.claude/hooks/check-update.py +132 -0
  11. package/.claude/hooks/completion-promise-detector.py +293 -0
  12. package/.claude/hooks/context-capacity-warning.py +171 -0
  13. package/.claude/hooks/detect-interruption.py +165 -0
  14. package/.claude/hooks/docs-update-check.py +120 -0
  15. package/.claude/hooks/enforce-a11y-audit.py +202 -0
  16. package/.claude/hooks/enforce-brand-guide.py +241 -0
  17. package/.claude/hooks/enforce-component-type-confirm.py +97 -0
  18. package/.claude/hooks/enforce-dry-run.py +134 -0
  19. package/.claude/hooks/enforce-freshness.py +184 -0
  20. package/.claude/hooks/enforce-page-components.py +186 -0
  21. package/.claude/hooks/enforce-page-data-schema.py +155 -0
  22. package/.claude/hooks/enforce-questions-sourced.py +146 -0
  23. package/.claude/hooks/enforce-schema-from-interview.py +248 -0
  24. package/.claude/hooks/enforce-ui-disambiguation.py +108 -0
  25. package/.claude/hooks/enforce-ui-interview.py +130 -0
  26. package/.claude/hooks/generate-adr-options.py +282 -0
  27. package/.claude/hooks/generate-manifest-entry.py +1161 -0
  28. package/.claude/hooks/hook_utils.py +609 -0
  29. package/.claude/hooks/lib/__init__.py +1 -0
  30. package/.claude/hooks/lib/__pycache__/__init__.cpython-314.pyc +0 -0
  31. package/.claude/hooks/lib/__pycache__/greptile.cpython-314.pyc +0 -0
  32. package/.claude/hooks/lib/__pycache__/ntfy.cpython-314.pyc +0 -0
  33. package/.claude/hooks/lib/greptile.py +355 -0
  34. package/.claude/hooks/lib/ntfy.py +209 -0
  35. package/.claude/hooks/notify-input-needed.py +73 -0
  36. package/.claude/hooks/notify-phase-complete.py +90 -0
  37. package/.claude/hooks/ntfy-on-question.py +240 -0
  38. package/.claude/hooks/orchestrator-completion.py +313 -0
  39. package/.claude/hooks/orchestrator-handoff.py +267 -0
  40. package/.claude/hooks/orchestrator-session-startup.py +146 -0
  41. package/.claude/hooks/parallel-orchestrator.py +451 -0
  42. package/.claude/hooks/project-document-prompt.py +302 -0
  43. package/.claude/hooks/remote-question-proxy.py +284 -0
  44. package/.claude/hooks/remote-question-server.py +1224 -0
  45. package/.claude/hooks/run-code-review.py +393 -0
  46. package/.claude/hooks/run-visual-qa.py +338 -0
  47. package/.claude/hooks/session-logger.py +323 -0
  48. package/.claude/hooks/test-orchestrator-reground.py +248 -0
  49. package/.claude/hooks/track-scope-coverage.py +220 -0
  50. package/.claude/hooks/track-token-usage.py +121 -0
  51. package/.claude/hooks/update-adr-decision.py +236 -0
  52. package/.claude/hooks/update-api-showcase.py +161 -0
  53. package/.claude/hooks/update-registry.py +352 -0
  54. package/.claude/hooks/update-testing-checklist.py +195 -0
  55. package/.claude/hooks/update-ui-showcase.py +224 -0
  56. package/.claude/settings.local.json +7 -1
  57. package/.claude/test-auto-answer-bot.py +183 -0
  58. package/.claude/test-completion-detector.py +263 -0
  59. package/.claude/test-orchestrator-state.json +20 -0
  60. package/.claude/test-orchestrator.sh +271 -0
  61. package/.skills/api-create/SKILL.md +88 -3
  62. package/.skills/docs-sync/SKILL.md +260 -0
  63. package/.skills/hustle-build/SKILL.md +459 -0
  64. package/.skills/hustle-build-review/SKILL.md +518 -0
  65. package/CHANGELOG.md +87 -0
  66. package/README.md +86 -9
  67. package/bin/cli.js +1302 -88
  68. package/commands/hustle-api-create.md +22 -0
  69. package/commands/hustle-combine.md +81 -2
  70. package/commands/hustle-ui-create-page.md +84 -2
  71. package/commands/hustle-ui-create.md +82 -2
  72. package/hooks/auto-answer.py +228 -0
  73. package/hooks/check-update.py +132 -0
  74. package/hooks/ntfy-on-question.py +227 -0
  75. package/hooks/orchestrator-completion.py +313 -0
  76. package/hooks/orchestrator-handoff.py +189 -0
  77. package/hooks/orchestrator-session-startup.py +146 -0
  78. package/hooks/periodic-reground.py +230 -67
  79. package/hooks/update-api-showcase.py +13 -1
  80. package/hooks/update-ui-showcase.py +13 -1
  81. package/package.json +7 -3
  82. package/scripts/extract-schema-docs.cjs +322 -0
  83. package/templates/CLAUDE-SECTION.md +89 -64
  84. package/templates/api-showcase/_components/APIModal.tsx +100 -8
  85. package/templates/api-showcase/_components/APIShowcase.tsx +36 -4
  86. package/templates/api-showcase/_components/APITester.tsx +367 -58
  87. package/templates/docs/page.tsx +230 -0
  88. package/templates/hustle-build-defaults.json +84 -0
  89. package/templates/hustle-dev-dashboard/page.tsx +365 -0
  90. package/templates/playwright-report/page.tsx +258 -0
  91. package/templates/settings.json +88 -7
  92. package/templates/test-results/page.tsx +237 -0
  93. package/templates/typedoc.json +19 -0
  94. package/templates/ui-showcase/_components/UIShowcase.tsx +1 -1
  95. package/templates/ui-showcase/page.tsx +1 -1
  96. package/.claude/api-dev-state.json +0 -466
@@ -1,466 +0,0 @@
1
- {
2
- "version": "3.12.0",
3
- "created_at": null,
4
- "endpoint": null,
5
- "library": null,
6
- "session_id": null,
7
- "turn_count": 2,
8
- "last_turn_timestamp": "2025-12-27T23:20:53.482174",
9
- "research_queries": [],
10
- "prompt_detections": [
11
- {
12
- "timestamp": "2025-12-27T15:58:25.936482",
13
- "prompt_preview": "can you push 3.2.0 to npm please",
14
- "detection": {
15
- "detected": true,
16
- "terms": [
17
- "3.2.0"
18
- ],
19
- "patterns_matched": [
20
- "technical_term"
21
- ],
22
- "confidence": "high"
23
- },
24
- "injected": true
25
- },
26
- {
27
- "timestamp": "2025-12-27T16:07:06.370872",
28
- "prompt_preview": "3.11.1",
29
- "detection": {
30
- "detected": true,
31
- "terms": [
32
- "3.11.1"
33
- ],
34
- "patterns_matched": [
35
- "technical_term"
36
- ],
37
- "confidence": "high"
38
- },
39
- "injected": true
40
- },
41
- {
42
- "timestamp": "2025-12-27T17:51:34.506745",
43
- "prompt_preview": "npm notice 10.7kB templates/ui-showcase/_components/PreviewCard.tsx\nnpm notice 23.3kB templates/ui-s...",
44
- "detection": {
45
- "detected": true,
46
- "terms": [
47
- "install from a",
48
- "error",
49
- "api",
50
- "package",
51
- "url",
52
- "token",
53
- "install",
54
- "@hustle-together/api-dev-tools",
55
- "hustle-together-api",
56
- "3.11.1"
57
- ],
58
- "patterns_matched": [
59
- "always_research",
60
- "technical_term",
61
- "question_pattern"
62
- ],
63
- "confidence": "critical"
64
- },
65
- "injected": true
66
- },
67
- {
68
- "timestamp": "2025-12-27T22:31:26.336088",
69
- "prompt_preview": "1. CREATE PR\n - Go to GitHub: https://github.com/hustle-together/api-dev-tools\n - Create PR from...",
70
- "detection": {
71
- "detected": true,
72
- "terms": [
73
- "create pr",
74
- "update version (i can do this for you now)",
75
- "api",
76
- "package",
77
- "test",
78
- "publish",
79
- "@hustle-together/api-dev-tools",
80
- "1.0.0",
81
- "3.12.0",
82
- "package.json"
83
- ],
84
- "patterns_matched": [
85
- "always_research",
86
- "question_pattern",
87
- "technical_term"
88
- ],
89
- "confidence": "critical"
90
- },
91
- "injected": true
92
- },
93
- {
94
- "timestamp": "2025-12-27T22:32:03.480897",
95
- "prompt_preview": "File Purpose\nworkflow-demo.html (247KB) Main interactive workflow demo\nexecution-trace-COMPREH...",
96
- "detection": {
97
- "detected": true,
98
- "terms": [
99
- "write integration demo",
100
- "api",
101
- "interview-driven-api"
102
- ],
103
- "patterns_matched": [
104
- "question_pattern",
105
- "always_research",
106
- "technical_term"
107
- ],
108
- "confidence": "critical"
109
- },
110
- "injected": true
111
- },
112
- {
113
- "timestamp": "2025-12-27T22:35:36.217406",
114
- "prompt_preview": "> File Purpose\nworkflow-demo.html (247KB) Main interactive workflow demo\nexecution-trace-COMPR...",
115
- "detection": {
116
- "detected": true,
117
- "terms": [
118
- "write integration demo",
119
- "api",
120
- "view",
121
- "interview-driven-api"
122
- ],
123
- "patterns_matched": [
124
- "technical_term",
125
- "question_pattern",
126
- "always_research"
127
- ],
128
- "confidence": "critical"
129
- },
130
- "injected": true
131
- },
132
- {
133
- "timestamp": "2025-12-27T22:36:41.163781",
134
- "prompt_preview": "how do i merge it i am on the comment page ",
135
- "detection": {
136
- "detected": true,
137
- "terms": [
138
- "how do"
139
- ],
140
- "patterns_matched": [
141
- "always_research",
142
- "question_pattern"
143
- ],
144
- "confidence": "critical"
145
- },
146
- "injected": true
147
- },
148
- {
149
- "timestamp": "2025-12-27T22:40:21.674198",
150
- "prompt_preview": "ok i did it check the main now please",
151
- "detection": {
152
- "detected": false,
153
- "terms": [],
154
- "patterns_matched": [],
155
- "confidence": "none"
156
- },
157
- "injected": false
158
- },
159
- {
160
- "timestamp": "2025-12-27T22:43:21.172124",
161
- "prompt_preview": "wait was the github master updated witht he most current push?",
162
- "detection": {
163
- "detected": true,
164
- "terms": [],
165
- "patterns_matched": [],
166
- "confidence": "low"
167
- },
168
- "injected": true
169
- },
170
- {
171
- "timestamp": "2025-12-27T22:45:59.739199",
172
- "prompt_preview": "ok now update the npm package, make a skill for this as well based on my api-dev-tools and mcp if th...",
173
- "detection": {
174
- "detected": true,
175
- "terms": [
176
- "update the npm package, make a skill for this as w",
177
- "package",
178
- "api"
179
- ],
180
- "patterns_matched": [
181
- "always_research",
182
- "technical_term",
183
- "question_pattern"
184
- ],
185
- "confidence": "critical"
186
- },
187
- "injected": true
188
- },
189
- {
190
- "timestamp": "2025-12-27T22:49:36.519292",
191
- "prompt_preview": "/Users/alfonso/Documents/GitHub/api-dev-tools/demo/hustle-together/workflow-demo-backup-20251212-134...",
192
- "detection": {
193
- "detected": true,
194
- "terms": [
195
- "api",
196
- "0.0.1"
197
- ],
198
- "patterns_matched": [
199
- "always_research",
200
- "technical_term"
201
- ],
202
- "confidence": "critical"
203
- },
204
- "injected": true
205
- },
206
- {
207
- "timestamp": "2025-12-27T22:52:43.366799",
208
- "prompt_preview": "help me use that publish skill how do i get that code?",
209
- "detection": {
210
- "detected": true,
211
- "terms": [
212
- "how do",
213
- "publish"
214
- ],
215
- "patterns_matched": [
216
- "technical_term",
217
- "always_research",
218
- "question_pattern"
219
- ],
220
- "confidence": "critical"
221
- },
222
- "injected": true
223
- },
224
- {
225
- "timestamp": "2025-12-27T22:53:54.327491",
226
- "prompt_preview": "id rather use the terminal command to open the pafge",
227
- "detection": {
228
- "detected": true,
229
- "terms": [],
230
- "patterns_matched": [],
231
- "confidence": "low"
232
- },
233
- "injected": true
234
- },
235
- {
236
- "timestamp": "2025-12-27T22:58:35.375132",
237
- "prompt_preview": "No no, I use a secret key, so you just open my page for me, and I just gave it access by using my se...",
238
- "detection": {
239
- "detected": true,
240
- "terms": [
241
- "secret",
242
- "key"
243
- ],
244
- "patterns_matched": [
245
- "technical_term"
246
- ],
247
- "confidence": "high"
248
- },
249
- "injected": true
250
- },
251
- {
252
- "timestamp": "2025-12-27T22:59:14.000695",
253
- "prompt_preview": "No, that's dumb. Normally you just give me some commands that I run in terminal and they just work.N...",
254
- "detection": {
255
- "detected": true,
256
- "terms": [
257
- "publish"
258
- ],
259
- "patterns_matched": [
260
- "technical_term",
261
- "question_pattern"
262
- ],
263
- "confidence": "high"
264
- },
265
- "injected": true
266
- },
267
- {
268
- "timestamp": "2025-12-27T22:59:56.192298",
269
- "prompt_preview": " npm login run that and i will tap the security code access then you can run the publish command",
270
- "detection": {
271
- "detected": true,
272
- "terms": [
273
- "publish"
274
- ],
275
- "patterns_matched": [
276
- "technical_term"
277
- ],
278
- "confidence": "high"
279
- },
280
- "injected": true
281
- },
282
- {
283
- "timestamp": "2025-12-27T23:02:25.007015",
284
- "prompt_preview": "ok i pushed it already",
285
- "detection": {
286
- "detected": false,
287
- "terms": [],
288
- "patterns_matched": [],
289
- "confidence": "none"
290
- },
291
- "injected": false
292
- },
293
- {
294
- "timestamp": "2025-12-27T23:05:45.854012",
295
- "prompt_preview": "Yeah, let's create a new project with maybe a base Next.js application in it. We'll install the npm ...",
296
- "detection": {
297
- "detected": true,
298
- "terms": [
299
- "create a new project with maybe a base next.js app",
300
- "install the npm command for this, so that we can t",
301
- "test",
302
- "install",
303
- "next.js"
304
- ],
305
- "patterns_matched": [
306
- "technical_term",
307
- "question_pattern",
308
- "always_research"
309
- ],
310
- "confidence": "critical"
311
- },
312
- "injected": true
313
- },
314
- {
315
- "timestamp": "2025-12-27T23:10:02.864062",
316
- "prompt_preview": "alfonso@Alfonsos-MacBook-Pro test-api-dev-tools % /api-create brandfetch\nzsh: no such file or direct...",
317
- "detection": {
318
- "detected": true,
319
- "terms": [
320
- "create brandfetch",
321
- "api",
322
- "test",
323
- "test-api"
324
- ],
325
- "patterns_matched": [
326
- "always_research",
327
- "question_pattern",
328
- "technical_term"
329
- ],
330
- "confidence": "critical"
331
- },
332
- "injected": true
333
- },
334
- {
335
- "timestamp": "2025-12-27T23:12:38.166540",
336
- "prompt_preview": "\n A gift for you\n Your rate limits are 2x higher through 12/31. Enjoy the extra room to think!\n \u23bf...",
337
- "detection": {
338
- "detected": true,
339
- "terms": [
340
- "create brandfetch ",
341
- "error",
342
- "api",
343
- "test",
344
- "hook",
345
- "hustle-api",
346
- "test-api",
347
- "v2.0.76",
348
- "4.5"
349
- ],
350
- "patterns_matched": [
351
- "always_research",
352
- "technical_term",
353
- "question_pattern"
354
- ],
355
- "confidence": "critical"
356
- },
357
- "injected": true
358
- },
359
- {
360
- "timestamp": "2025-12-27T23:18:53.668391",
361
- "prompt_preview": "What? Did you change the commands to be API create instead of hustle?",
362
- "detection": {
363
- "detected": true,
364
- "terms": [
365
- "create instead of hustle?",
366
- "change the commands to be api create instead of hu",
367
- "api"
368
- ],
369
- "patterns_matched": [
370
- "question_pattern",
371
- "technical_term",
372
- "always_research"
373
- ],
374
- "confidence": "critical"
375
- },
376
- "injected": true
377
- },
378
- {
379
- "timestamp": "2025-12-27T23:19:32.990175",
380
- "prompt_preview": "what the fuck are you talking about we had four main commands the API create we had the API what the...",
381
- "detection": {
382
- "detected": true,
383
- "terms": [
384
- "create we had the api what the fuck are you talkin",
385
- "api"
386
- ],
387
- "patterns_matched": [
388
- "question_pattern",
389
- "technical_term",
390
- "always_research"
391
- ],
392
- "confidence": "critical"
393
- },
394
- "injected": true
395
- }
396
- ],
397
- "phases": {
398
- "disambiguation": {
399
- "status": "not_started",
400
- "user_question_asked": true,
401
- "last_user_response": "{}",
402
- "last_question_timestamp": "2025-12-27T23:20:53.482188",
403
- "last_question_type": "unknown"
404
- },
405
- "scope": {
406
- "status": "not_started"
407
- },
408
- "research_initial": {
409
- "status": "not_started"
410
- },
411
- "interview": {
412
- "status": "in_progress",
413
- "questions": [
414
- {
415
- "question": "",
416
- "timestamp": "2025-12-27T23:20:53.482182",
417
- "tool_used": true,
418
- "has_options": false,
419
- "options_count": 0,
420
- "options": [],
421
- "user_response": "{}",
422
- "selected_value": null
423
- }
424
- ],
425
- "user_question_count": 1,
426
- "decisions": {},
427
- "started_at": "2025-12-27T23:20:53.482185",
428
- "last_activity": "2025-12-27T23:20:53.482186",
429
- "user_question_asked": true
430
- },
431
- "research_deep": {
432
- "status": "not_started"
433
- },
434
- "schema_creation": {
435
- "status": "not_started"
436
- },
437
- "environment_check": {
438
- "status": "not_started"
439
- },
440
- "tdd_red": {
441
- "status": "not_started"
442
- },
443
- "tdd_green": {
444
- "status": "not_started"
445
- },
446
- "verify": {
447
- "status": "not_started"
448
- },
449
- "tdd_refactor": {
450
- "status": "not_started"
451
- },
452
- "documentation": {
453
- "status": "not_started"
454
- }
455
- },
456
- "verification": {
457
- "all_sources_fetched": false,
458
- "schema_matches_docs": false,
459
- "tests_cover_params": false,
460
- "all_tests_passing": false,
461
- "coverage_percent": null,
462
- "post_green_verification": false
463
- },
464
- "research_index": {},
465
- "reground_history": []
466
- }