@datatamer.ai/agentdev 1.0.6 → 1.0.7

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.
@@ -47,6 +47,27 @@ Instead, all OpenSpec operations are INLINED in this skill:
47
47
  - Print errors immediately if they occur
48
48
  - NEVER run silently - the user needs to see what's happening
49
49
 
50
+ ## CRITICAL: Post Intermediate Progress Comments to GitHub
51
+
52
+ **In addition to printing progress, post intermediate step updates as GitHub issue comments.**
53
+
54
+ The user wants real-time visibility into what the workflow is doing. Post short progress comments at key intermediate steps — not just at the end of each phase.
55
+
56
+ **Use this helper pattern to post progress comments:**
57
+ ```bash
58
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 <step description>"
59
+ ```
60
+
61
+ **When to post intermediate comments:**
62
+ - Phase 2: When starting OpenSpec creation, when each artifact is created
63
+ - Phase 3: When starting implementation, when each task starts, when each task completes, when committing
64
+ - Phase 4: When starting local tests, when tests pass/fail
65
+ - Phase 5: When pushing to git, when merging to production, when waiting for CI, when deployment completes
66
+ - Phase 6: When starting production tests, when tests pass/fail
67
+ - Phase 7: Before moving to Done, refresh comments to check for new instructions
68
+
69
+ **Keep intermediate comments SHORT** (1-2 lines). The phase summary comments at the end of each phase remain as-is for detailed summaries.
70
+
50
71
  ## Check for New Comments Between Phases
51
72
 
52
73
  **Between every phase transition**, check if new comments have been posted on the ticket:
@@ -231,7 +252,12 @@ openspec status --change "<change-name>" --json
231
252
  ```
232
253
  Parse the JSON to get `applyRequires` (artifacts needed before implementation).
233
254
 
234
- 5. **Create artifacts in sequence:**
255
+ 5. **Post progress comment:**
256
+ ```bash
257
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 OpenSpec change \`<change-name>\` created. Building artifacts..."
258
+ ```
259
+
260
+ 6. **Create artifacts in sequence:**
235
261
 
236
262
  For each artifact in dependency order:
237
263
  ```bash
@@ -241,11 +267,12 @@ openspec instructions <artifact-id> --change "<change-name>" --json
241
267
  - Read the `template` from instructions
242
268
  - Read any dependency files for context
243
269
  - Create the artifact file following the template structure
270
+ - **Post progress comment:** `gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Created artifact: \`<artifact-id>\`"`
244
271
  - Print "✓ Created <artifact-id>"
245
272
 
246
273
  Continue until all `applyRequires` artifacts are complete.
247
274
 
248
- 6. **Comment on GitHub issue with OpenSpec status:**
275
+ 7. **Comment on GitHub issue with OpenSpec status:**
249
276
  ```bash
250
277
  gh issue comment <issue-number> -R data-tamer/<repo> --body "## 🔄 Phase 2: OpenSpec Created
251
278
 
@@ -290,16 +317,22 @@ This returns context files and task list.
290
317
 
291
318
  4. **Read context files** listed in `contextFiles` (proposal, specs, design, tasks).
292
319
 
293
- 5. **Implement tasks one by one:**
320
+ 5. **Post progress comment that implementation is starting:**
321
+ ```bash
322
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Starting implementation..."
323
+ ```
324
+
325
+ 6. **Implement tasks one by one:**
294
326
 
295
327
  For each pending task in tasks.md:
328
+ - **Post progress comment:** `gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Working on: <task description>"`
296
329
  - Print "Working on task: <task description>"
297
330
  - Make the code changes required
298
331
  - Keep changes minimal and focused
299
332
  - Mark task complete: `- [ ]` → `- [x]`
300
333
  - Print "✓ Task complete"
301
334
 
302
- 6. **Commit changes:**
335
+ 7. **Commit changes:**
303
336
  ```bash
304
337
  git add <changed-files>
305
338
  git commit -m "fix/feat: <description>
@@ -309,7 +342,7 @@ Fixes #<issue-number>
309
342
  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
310
343
  ```
311
344
 
312
- 7. **Comment on GitHub issue with implementation details:**
345
+ 8. **Comment on GitHub issue with implementation details:**
313
346
  ```bash
314
347
  gh issue comment <issue-number> -R data-tamer/<repo> --body "## 🔄 Phase 3: Implementation Complete
315
348
 
@@ -328,12 +361,17 @@ Starting local testing...
328
361
 
329
362
  ### Phase 4: Local Testing
330
363
 
331
- 1. Determine which services need restart:
364
+ 1. **Post progress comment:**
365
+ ```bash
366
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Starting local testing..."
367
+ ```
368
+
369
+ 2. Determine which services need restart:
332
370
  - `data-tamer-dashboard/` → Frontend (hot reload, NO restart needed)
333
371
  - `tamer_service/` → `kubectl rollout restart deployment/tamer-datasource-consumer-dev deployment/tamer-message-consumer-dev -n datatamer`
334
372
  - `consumer_service/` → `kubectl rollout restart deployment/consumer-service-dev -n datatamer`
335
373
 
336
- 2. **Run Playwright headless tests:**
374
+ 3. **Run Playwright headless tests:**
337
375
  ```bash
338
376
  cd /home/riccardo/Documents/apps/datatamer/app/auto-ticket-logs
339
377
  node playwright-test.js login # Test login works
@@ -341,9 +379,9 @@ node playwright-test.js slides # Test slides feature
341
379
  ```
342
380
  Screenshots are saved to `/tmp/auto-ticket-screenshots/`
343
381
 
344
- 3. If tests fail: Fix issues and re-test (do NOT move to production)
382
+ 4. If tests fail: Fix issues and re-test (do NOT move to production)
345
383
 
346
- 4. If tests pass: **Comment on GitHub issue:**
384
+ 5. If tests pass: **Comment on GitHub issue:**
347
385
  ```bash
348
386
  gh issue comment <issue-number> -R data-tamer/<repo> --body "## 🔄 Phase 4: Local Testing Passed
349
387
 
@@ -359,7 +397,12 @@ All local tests passed. Starting production deployment...
359
397
 
360
398
  ### Phase 5: Production Deployment
361
399
 
362
- 1. **Deploy using git workflow:**
400
+ 1. **Post progress comment:**
401
+ ```bash
402
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Starting production deployment..."
403
+ ```
404
+
405
+ 2. **Deploy using git workflow:**
363
406
  ```bash
364
407
  git push origin master
365
408
  git checkout production
@@ -368,17 +411,22 @@ git push origin production
368
411
  git checkout master
369
412
  ```
370
413
 
371
- 2. **Wait for GitHub Actions:**
414
+ 3. **Post progress comment:**
415
+ ```bash
416
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Code pushed to production branch. Waiting for CI..."
417
+ ```
418
+
419
+ 4. **Wait for GitHub Actions:**
372
420
  ```bash
373
421
  gh run watch -R data-tamer/<repo>
374
422
  ```
375
423
 
376
- 3. **Verify production pods:**
424
+ 5. **Verify production pods:**
377
425
  ```bash
378
426
  ssh root@153.92.127.95 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml && kubectl get pods -n datatamer | grep <service>'
379
427
  ```
380
428
 
381
- 4. **Comment on GitHub issue with deployment status:**
429
+ 6. **Comment on GitHub issue with deployment status:**
382
430
  ```bash
383
431
  gh issue comment <issue-number> -R data-tamer/<repo> --body "## 🔄 Phase 5: Production Deployed
384
432
 
@@ -406,25 +454,30 @@ gh api graphql -f query='query { node(id: "<item-id>") { ... on ProjectV2Item {
406
454
  ```
407
455
  Print "✓ Ticket #<number> moved to test (verified)"
408
456
 
409
- 2. **Run Playwright tests on production:**
457
+ 2. **Post progress comment:**
458
+ ```bash
459
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "🔄 Running production tests..."
460
+ ```
461
+
462
+ 3. **Run Playwright tests on production:**
410
463
  ```bash
411
464
  cd /home/riccardo/Documents/apps/datatamer/app/auto-ticket-logs
412
465
  node playwright-test.js login --production
413
466
  node playwright-test.js slides --production
414
467
  ```
415
468
 
416
- 3. **Take final screenshot of the feature working:**
469
+ 4. **Take final screenshot of the feature working:**
417
470
  - Use browser automation (Claude in Chrome MCP) to navigate to the relevant page on production
418
471
  - Take a screenshot showing the implemented feature
419
472
  - Save to `/tmp/auto-ticket-screenshots/final-<issue-number>.png`
420
473
 
421
- 4. **If production tests FAIL:**
474
+ 5. **If production tests FAIL:**
422
475
  - Comment on issue with failure details
423
476
  - Rollback if critical
424
477
  - Move ticket back to "Todo" (with verification)
425
478
  - Stop workflow
426
479
 
427
- 5. **If production tests PASS:**
480
+ 6. **If production tests PASS:**
428
481
  - **Comment on GitHub issue:**
429
482
  ```bash
430
483
  gh issue comment <issue-number> -R data-tamer/<repo> --body "## 🔄 Phase 6: Production Testing Passed
@@ -440,7 +493,13 @@ All production tests passed. Completing ticket...
440
493
 
441
494
  ### Phase 7: Completion
442
495
 
443
- 1. **Move ticket to "Done" and VERIFY:**
496
+ 1. **CRITICAL: Refresh comments before completing.** Read ALL comments one final time to check for new instructions:
497
+ ```bash
498
+ agentdev gh api rest 'repos/data-tamer/<repo>/issues/<issue-number>/comments' | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{JSON.parse(d).forEach(c=>console.log('---',c.user.login,c.created_at,'---\n'+c.body+'\n'))})"
499
+ ```
500
+ If any new non-bot comment contains instructions to stop, cancel, or change something — DO NOT move to Done. Instead, address the new instructions first.
501
+
502
+ 2. **Move ticket to "Done" and VERIFY:**
444
503
  ```bash
445
504
  # Move to Done
446
505
  gh project item-edit --id <item-id> --project-id PVT_kwDOCJIWbs4AnuSZ \
@@ -452,26 +511,48 @@ gh api graphql -f query='query { node(id: "<item-id>") { ... on ProjectV2Item {
452
511
  ```
453
512
  Print "✓ Ticket #<number> moved to Done (verified)"
454
513
 
455
- 2. **Archive OpenSpec change:**
514
+ 3. **Archive OpenSpec change:**
456
515
  ```bash
457
516
  openspec archive "<change-name>"
458
517
  ```
459
518
 
460
- 3. **Upload final screenshot to GitHub:**
519
+ 4. **Upload final screenshot to GitHub:**
461
520
  - Check if screenshot exists at `/tmp/auto-ticket-screenshots/final-<issue-number>.png`
462
- - If exists, upload to GitHub using the issue comment with image attachment:
521
+ - Upload to ImgBB via the agentdev server and include in comment:
463
522
  ```bash
464
- # Upload screenshot as asset and get URL
523
+ # Upload screenshot and get URL
465
524
  SCREENSHOT="/tmp/auto-ticket-screenshots/final-<issue-number>.png"
466
525
  if [ -f "$SCREENSHOT" ]; then
467
- # Create a gist or use GitHub's drag-drop equivalent via API
468
- # For now, reference the local screenshot in the comment
469
- gh issue comment <issue-number> -R data-tamer/<repo> --body "## Ticket Complete ✅
526
+ # Convert image to base64
527
+ BASE64_IMG=$(base64 -w 0 "$SCREENSHOT")
528
+
529
+ # Upload via agentdev server API (works for both local and production)
530
+ AGENTDEV_URL="${AGENTDEV_URL:-http://localhost:3847}"
531
+ IMAGE_URL=$(curl -s -X POST "$AGENTDEV_URL/api/upload-image" \
532
+ -H "Content-Type: application/json" \
533
+ -d "{\"base64\":\"$BASE64_IMG\",\"filename\":\"ticket-$issue-number-final.png\"}" \
534
+ | jq -r '.url')
535
+
536
+ if [ ! -z "$IMAGE_URL" ] && [ "$IMAGE_URL" != "null" ]; then
537
+ # Post comment with embedded screenshot
538
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "## Ticket Complete ✅
470
539
 
471
540
  ### Final Result Screenshot
472
- ![Final Result](https://app.datatamer.ai/screenshot-placeholder.png)
541
+ ![Final Result]($IMAGE_URL)
473
542
 
474
- *Screenshot saved locally at: \`$SCREENSHOT\`*
543
+ ### Summary
544
+ All phases passed:
545
+ - ✓ OpenSpec created
546
+ - ✓ Implementation complete
547
+ - ✓ Local tests passed
548
+ - ✓ Production deployed
549
+ - ✓ Production tests passed
550
+
551
+ ---
552
+ *Automated by Claude Code Auto-Ticket Workflow*"
553
+ else
554
+ echo "⚠️ Screenshot upload failed, posting comment without image"
555
+ gh issue comment <issue-number> -R data-tamer/<repo> --body "## Ticket Complete ✅
475
556
 
476
557
  ### Summary
477
558
  All phases passed:
@@ -481,17 +562,21 @@ All phases passed:
481
562
  - ✓ Production deployed
482
563
  - ✓ Production tests passed
483
564
 
565
+ *Screenshot saved locally at: \`$SCREENSHOT\`*
566
+
484
567
  ---
485
568
  *Automated by Claude Code Auto-Ticket Workflow*"
569
+ fi
486
570
  fi
487
571
  ```
488
572
 
489
- **Alternative: Attach screenshot directly using gh CLI:**
490
- - The `gh` CLI doesn't support direct image upload to comments
491
- - Instead, use the Read tool to view the screenshot and describe the result in the comment
492
- - Or upload to an image hosting service and include the URL
573
+ **How it works:**
574
+ - Screenshots are uploaded to ImgBB via the agentdev server's `/api/upload-image` endpoint
575
+ - The endpoint returns a permanent public URL that works in GitHub comments
576
+ - No authentication needed (uses server's ImgBB API key)
577
+ - Works for both local (`http://localhost:3847`) and production (`https://agentdev.datatamer.ai`)
493
578
 
494
- 4. **Add completion comment with screenshot description:**
579
+ 5. **Add completion comment with screenshot description:**
495
580
 
496
581
  If screenshot was taken, use the Read tool to view it and include a description of what it shows in the completion comment. The comment should describe:
497
582
  - What page/feature is shown
@@ -520,7 +605,7 @@ gh issue comment <issue-number> -R data-tamer/<repo> --body "## Ticket Complete
520
605
  *Automated by Claude Code Auto-Ticket Workflow*"
521
606
  ```
522
607
 
523
- 5. **Close the issue:**
608
+ 6. **Close the issue:**
524
609
  ```bash
525
610
  gh issue close <issue-number> -R data-tamer/<repo> --reason completed
526
611
  ```