@hustle-together/api-dev-tools 3.12.1 → 3.12.3
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/api-dev-state.json +139 -4
- package/bin/cli.js +3 -3
- package/package.json +1 -1
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"endpoint": null,
|
|
5
5
|
"library": null,
|
|
6
6
|
"session_id": null,
|
|
7
|
-
"turn_count":
|
|
8
|
-
"last_turn_timestamp":
|
|
7
|
+
"turn_count": 2,
|
|
8
|
+
"last_turn_timestamp": "2025-12-27T23:20:53.482174",
|
|
9
9
|
"research_queries": [],
|
|
10
10
|
"prompt_detections": [
|
|
11
11
|
{
|
|
@@ -278,11 +278,129 @@
|
|
|
278
278
|
"confidence": "high"
|
|
279
279
|
},
|
|
280
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
|
|
281
395
|
}
|
|
282
396
|
],
|
|
283
397
|
"phases": {
|
|
284
398
|
"disambiguation": {
|
|
285
|
-
"status": "not_started"
|
|
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"
|
|
286
404
|
},
|
|
287
405
|
"scope": {
|
|
288
406
|
"status": "not_started"
|
|
@@ -291,7 +409,24 @@
|
|
|
291
409
|
"status": "not_started"
|
|
292
410
|
},
|
|
293
411
|
"interview": {
|
|
294
|
-
"status": "
|
|
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
|
|
295
430
|
},
|
|
296
431
|
"research_deep": {
|
|
297
432
|
"status": "not_started"
|
package/bin/cli.js
CHANGED
|
@@ -220,7 +220,7 @@ async function main() {
|
|
|
220
220
|
const targetDir = process.cwd();
|
|
221
221
|
const packageDir = path.dirname(__dirname);
|
|
222
222
|
const claudeDir = path.join(targetDir, ".claude");
|
|
223
|
-
const hooksDir = path.join(
|
|
223
|
+
const hooksDir = path.join(claudeDir, "hooks");
|
|
224
224
|
|
|
225
225
|
const totalSteps = 8;
|
|
226
226
|
let currentStep = 0;
|
|
@@ -308,7 +308,7 @@ async function main() {
|
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
logSuccess(`${hooksCopied} hooks installed to hooks/`);
|
|
311
|
+
logSuccess(`${hooksCopied} hooks installed to .claude/hooks/`);
|
|
312
312
|
logInfo("Includes: enforce-*, notify-*, track-token-usage.py");
|
|
313
313
|
|
|
314
314
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -533,7 +533,7 @@ ${c.red}════════════════════════
|
|
|
533
533
|
|
|
534
534
|
${c.bold}Installed:${c.reset}
|
|
535
535
|
● Commands .claude/commands/ (slash commands)
|
|
536
|
-
● Hooks hooks/
|
|
536
|
+
● Hooks .claude/hooks/ (enforcement)
|
|
537
537
|
● Subagents .claude/agents/ (parallel processing)
|
|
538
538
|
● Config .claude/ (settings, state, registry)
|
|
539
539
|
● Templates templates/ (.env.example)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hustle-together/api-dev-tools",
|
|
3
|
-
"version": "3.12.
|
|
3
|
+
"version": "3.12.3",
|
|
4
4
|
"description": "Interview-driven, research-first API development toolkit with 14-phase TDD workflow, enforcement hooks, and 23 Agent Skills for cross-platform AI agents",
|
|
5
5
|
"main": "bin/cli.js",
|
|
6
6
|
"bin": {
|