@hustle-together/api-dev-tools 3.2.0 → 3.5.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 (45) hide show
  1. package/README.md +712 -377
  2. package/commands/api-create.md +300 -149
  3. package/demo/hustle-together/blog/gemini-vs-claude-widgets.html +1 -1
  4. package/demo/hustle-together/blog/interview-driven-api-development.html +1 -1
  5. package/demo/hustle-together/blog/tdd-for-ai.html +1 -1
  6. package/demo/hustle-together/index.html +2 -2
  7. package/demo/workflow-demo-v3.5-backup.html +5008 -0
  8. package/demo/workflow-demo.html +5137 -3805
  9. package/hooks/enforce-deep-research.py +6 -1
  10. package/hooks/enforce-disambiguation.py +7 -1
  11. package/hooks/enforce-documentation.py +6 -1
  12. package/hooks/enforce-environment.py +5 -1
  13. package/hooks/enforce-interview.py +5 -1
  14. package/hooks/enforce-refactor.py +3 -1
  15. package/hooks/enforce-schema.py +0 -0
  16. package/hooks/enforce-scope.py +5 -1
  17. package/hooks/enforce-tdd-red.py +5 -1
  18. package/hooks/enforce-verify.py +0 -0
  19. package/hooks/track-tool-use.py +167 -0
  20. package/hooks/verify-implementation.py +0 -0
  21. package/package.json +1 -1
  22. package/templates/api-dev-state.json +24 -0
  23. package/demo/audio/audio-sync.js +0 -295
  24. package/demo/audio/generate-all-narrations.js +0 -581
  25. package/demo/audio/generate-narration.js +0 -486
  26. package/demo/audio/generate-voice-previews.js +0 -140
  27. package/demo/audio/narration-adam-timing.json +0 -4675
  28. package/demo/audio/narration-adam.mp3 +0 -0
  29. package/demo/audio/narration-creature-timing.json +0 -4675
  30. package/demo/audio/narration-creature.mp3 +0 -0
  31. package/demo/audio/narration-gaming-timing.json +0 -4675
  32. package/demo/audio/narration-gaming.mp3 +0 -0
  33. package/demo/audio/narration-hope-timing.json +0 -4675
  34. package/demo/audio/narration-hope.mp3 +0 -0
  35. package/demo/audio/narration-mark-timing.json +0 -4675
  36. package/demo/audio/narration-mark.mp3 +0 -0
  37. package/demo/audio/narration-timing.json +0 -3614
  38. package/demo/audio/narration-timing.sample.json +0 -48
  39. package/demo/audio/narration.mp3 +0 -0
  40. package/demo/audio/previews/manifest.json +0 -30
  41. package/demo/audio/previews/preview-creature.mp3 +0 -0
  42. package/demo/audio/previews/preview-gaming.mp3 +0 -0
  43. package/demo/audio/previews/preview-hope.mp3 +0 -0
  44. package/demo/audio/previews/preview-mark.mp3 +0 -0
  45. package/demo/audio/voices-manifest.json +0 -50
@@ -1,48 +0,0 @@
1
- {
2
- "generated": "2025-12-08T00:00:00.000Z",
3
- "duration": 300,
4
- "wordCount": 850,
5
- "sections": [
6
- { "id": "intro", "timestamp": 0 },
7
- { "id": "problems", "timestamp": 35 },
8
- { "id": "solution", "timestamp": 95 },
9
- { "id": "workflow", "timestamp": 140 },
10
- { "id": "installation", "timestamp": 220 },
11
- { "id": "credits", "timestamp": 260 },
12
- { "id": "outro", "timestamp": 285 }
13
- ],
14
- "highlights": [
15
- { "selector": "#hustleBrand", "section": "intro", "timestamp": 2 },
16
- { "selector": "[data-phase='research']", "section": "intro", "timestamp": 8 },
17
- { "selector": "[data-phase='interview']", "section": "intro", "timestamp": 14 },
18
- { "selector": "[data-phase='test']", "section": "intro", "timestamp": 20 },
19
- { "selector": "[data-phase='code']", "section": "intro", "timestamp": 26 },
20
- { "selector": "[data-phase='docs']", "section": "intro", "timestamp": 32 },
21
- { "selector": "#problems h2", "section": "problems", "timestamp": 36 },
22
- { "selector": ".gap-item:nth-child(1)", "section": "problems", "timestamp": 42 },
23
- { "selector": ".gap-item:nth-child(2)", "section": "problems", "timestamp": 54 },
24
- { "selector": ".gap-item:nth-child(3)", "section": "problems", "timestamp": 66 },
25
- { "selector": ".gap-item:nth-child(4)", "section": "problems", "timestamp": 78 },
26
- { "selector": ".gap-item:nth-child(5)", "section": "problems", "timestamp": 88 },
27
- { "selector": "#solution h2", "section": "solution", "timestamp": 96 },
28
- { "selector": ".hook-box:nth-child(1)", "section": "solution", "timestamp": 104 },
29
- { "selector": ".hook-box:nth-child(2)", "section": "solution", "timestamp": 118 },
30
- { "selector": ".hook-box:nth-child(3)", "section": "solution", "timestamp": 130 },
31
- { "selector": "#workflow h2", "section": "workflow", "timestamp": 141 },
32
- { "selector": ".workflow-phase:nth-child(1)", "section": "workflow", "timestamp": 148 },
33
- { "selector": ".workflow-phase:nth-child(2)", "section": "workflow", "timestamp": 155 },
34
- { "selector": ".workflow-phase:nth-child(3)", "section": "workflow", "timestamp": 162 },
35
- { "selector": ".workflow-phase:nth-child(4)", "section": "workflow", "timestamp": 172 },
36
- { "selector": ".workflow-phase:nth-child(5)", "section": "workflow", "timestamp": 180 },
37
- { "selector": ".workflow-phase:nth-child(6)", "section": "workflow", "timestamp": 188 },
38
- { "selector": ".workflow-phase:nth-child(7)", "section": "workflow", "timestamp": 196 },
39
- { "selector": ".workflow-phase:nth-child(8)", "section": "workflow", "timestamp": 204 },
40
- { "selector": ".workflow-phase:nth-child(9)", "section": "workflow", "timestamp": 211 },
41
- { "selector": ".workflow-phase:nth-child(10)", "section": "workflow", "timestamp": 218 },
42
- { "selector": "#installation h2", "section": "installation", "timestamp": 221 },
43
- { "selector": ".install-command", "section": "installation", "timestamp": 228 },
44
- { "selector": "#credits h2", "section": "credits", "timestamp": 261 },
45
- { "selector": "#intro", "section": "outro", "timestamp": 286 }
46
- ],
47
- "words": []
48
- }
Binary file
@@ -1,30 +0,0 @@
1
- {
2
- "generated": "2025-12-08T06:50:32.727Z",
3
- "text": "Welcome to Hustle API Dev Tools. Build APIs the right way. Research first. Interview second. Test before code. Document everything.",
4
- "voices": [
5
- {
6
- "voice": "Mark",
7
- "id": "UgBBYS2sOqTuMpoF3BR0",
8
- "file": "preview-mark.mp3",
9
- "size": 164302
10
- },
11
- {
12
- "voice": "Hope",
13
- "id": "tnSpp4vdxKPjI9w0GnoV",
14
- "file": "preview-hope.mp3",
15
- "size": 135881
16
- },
17
- {
18
- "voice": "Creature",
19
- "id": "Z7RrOqZFTyLpIlzCgfsp",
20
- "file": "preview-creature.mp3",
21
- "size": 288018
22
- },
23
- {
24
- "voice": "Gaming",
25
- "id": "YOq2y2Up4RgXP2HyXjE5",
26
- "file": "preview-gaming.mp3",
27
- "size": 329814
28
- }
29
- ]
30
- }
@@ -1,50 +0,0 @@
1
- {
2
- "generated": "2025-12-09T04:43:32.000Z",
3
- "voices": [
4
- {
5
- "voice": "Adam",
6
- "name": "adam",
7
- "audioFile": "narration-adam.mp3",
8
- "timingFile": "narration-adam-timing.json",
9
- "duration": 507.543,
10
- "wordCount": 875,
11
- "audioSize": 8121409
12
- },
13
- {
14
- "voice": "Mark",
15
- "name": "mark",
16
- "audioFile": "narration-mark.mp3",
17
- "timingFile": "narration-mark-timing.json",
18
- "duration": 440.671,
19
- "wordCount": 875,
20
- "audioSize": 7051434
21
- },
22
- {
23
- "voice": "Hope",
24
- "name": "hope",
25
- "audioFile": "narration-hope.mp3",
26
- "timingFile": "narration-hope-timing.json",
27
- "duration": 407.181,
28
- "wordCount": 875,
29
- "audioSize": 6515610
30
- },
31
- {
32
- "voice": "Creature",
33
- "name": "creature",
34
- "audioFile": "narration-creature.mp3",
35
- "timingFile": "narration-creature-timing.json",
36
- "duration": 620.62,
37
- "wordCount": 875,
38
- "audioSize": 9930755
39
- },
40
- {
41
- "voice": "Gaming",
42
- "name": "gaming",
43
- "audioFile": "narration-gaming.mp3",
44
- "timingFile": "narration-gaming-timing.json",
45
- "duration": 845.811,
46
- "wordCount": 875,
47
- "audioSize": 13533563
48
- }
49
- ]
50
- }