@champpaba/claude-agent-kit 2.1.4 → 2.1.6

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/CLAUDE.md CHANGED
@@ -402,16 +402,21 @@ Prompt "Update PROJECT_STATUS.yml?" when detecting these patterns:
402
402
 
403
403
  | Event Detected | What to Update |
404
404
  |----------------|----------------|
405
- | After `/openspec:archive` completes | Add to `completed_changes` |
405
+ | After `/openspec:archive` completes | Add to `completed_changes` + check Non-Goals for `pending_followups` |
406
406
  | User says "waiting for...", "need X from...", "blocked by..." | Add to `blockers` |
407
407
  | User mentions blocker resolved | Remove from `blockers` |
408
408
  | Infrastructure change (deploy, tunnel, DB migration) | Update `infrastructure` |
409
409
  | User discusses priority shift | Update `next_priorities` |
410
- | `/csetup {change-id}` started | Update `current_focus.active_change` |
410
+ | `/csetup {change-id}` started | Update `current_focus` + **check `pending_followups` for related items** |
411
411
  | **Future features/ideas:** "อยากให้มี...", "want to add...", "later we should...", "in the future..." | Add to `future_ideas` |
412
412
  | **Technical debt:** "ต้องแก้...", "should refactor...", "tech debt...", "needs cleanup..." | Add to `technical_debt` |
413
413
  | **Decisions made:** "ตัดสินใจว่า...", "we decided...", "going with...", "chose X over Y" | Add to `decisions` |
414
414
  | **Learnings/notes:** "พบว่า...", "discovered...", "note:...", "important:..." | Add to `notes` |
415
+ | **Problems found (by Claude):** "⚠️ ปัญหาที่พบ", "ไม่มี X", "missing X", "not configured" | Add to `technical_debt` or `blockers` |
416
+ | **Config gaps:** "ไม่ได้ตั้งค่า...", "need to configure...", "should add to CI/CD" | Add to `technical_debt` |
417
+ | **Sync issues:** "DB not synced", "schema mismatch", "local vs production differs" | Add to `blockers` + `infrastructure` |
418
+ | **Non-Goal needs follow-up:** design.md has "Non-Goal: X (separate proposal)" | Add to `pending_followups` when archiving |
419
+ | **Pending resolved:** User creates proposal for pending item | Remove from `pending_followups` |
415
420
 
416
421
  ### Update Protocol
417
422
 
@@ -453,6 +458,49 @@ User: "ตัดสินใจใช้ Drizzle แทน Prisma แล้ว
453
458
  Claude: "Add to PROJECT_STATUS.yml decisions?
454
459
  - decision: Use Drizzle over Prisma
455
460
  - reason: Better type safety"
461
+
462
+ # Problem found by Claude during analysis
463
+ Claude: "⚠️ ปัญหาที่พบ: ไม่มี migration step ใน CI/CD!"
464
+ Claude: "Add to PROJECT_STATUS.yml?
465
+ technical_debt:
466
+ - item: Add DB migration to CI/CD
467
+ - reason: Schema not synced between local and VPS
468
+ - priority: high"
469
+
470
+ # Config gap discovered
471
+ Claude: "Local DB กับ VPS schema ไม่ sync กัน"
472
+ Claude: "Add to PROJECT_STATUS.yml?
473
+ blockers:
474
+ - id: db-schema-sync
475
+ - description: Local and VPS DB schemas out of sync
476
+ infrastructure.database:
477
+ - status: degraded
478
+ - notes: Schema mismatch, need migration"
479
+
480
+ # Archive with Non-Goals that need follow-up
481
+ Claude: "Archiving add-infrastructure-cicd..."
482
+ Claude: *reads design.md, finds Non-Goals: "Database migrations (separate proposal)"*
483
+ Claude: "Add to PROJECT_STATUS.yml pending_followups?
484
+ - item: Database migration strategy
485
+ - from_change: add-infrastructure-cicd
486
+ - reason: Non-Goal marked 'separate proposal'
487
+ - affects: ['any change with DB schema']"
488
+
489
+ # /csetup checks pending_followups (Medium aggressiveness)
490
+ User: "/csetup add-auth-system"
491
+ Claude: *reads PROJECT_STATUS.yml pending_followups*
492
+ Claude: "⚠️ Found related pending follow-up:
493
+ - 'Database migration strategy' (from add-infrastructure-cicd)
494
+ - Affects: 'any change with DB schema'
495
+
496
+ This change adds DB tables. The migration strategy hasn't been addressed yet.
497
+
498
+ Options:
499
+ 1. Continue anyway (risk: schema sync issues)
500
+ 2. Address migration first (create proposal)
501
+ 3. Add migration step to this change's scope
502
+
503
+ Which approach?"
456
504
  ```
457
505
 
458
506
  ---
@@ -83,6 +83,50 @@ if (fileExists(projectStatusPath)) {
83
83
  }
84
84
  }
85
85
 
86
+ // Check pending follow-ups that might affect this change (v2.1.6)
87
+ if (projectStatus.pending_followups?.length > 0) {
88
+ const proposalPath = `openspec/changes/${changeId}/proposal.md`
89
+ const proposal = fileExists(proposalPath) ? Read(proposalPath).toLowerCase() : ''
90
+
91
+ const relatedPending = projectStatus.pending_followups.filter(p => {
92
+ const affects = p.affects || []
93
+ return affects.some(pattern => {
94
+ const patternLower = pattern.toLowerCase()
95
+ return changeId.toLowerCase().includes(patternLower) ||
96
+ proposal.includes(patternLower) ||
97
+ (patternLower.includes('db') && proposal.includes('table')) ||
98
+ (patternLower.includes('schema') && proposal.includes('model')) ||
99
+ (patternLower.includes('migration') && proposal.includes('database'))
100
+ })
101
+ })
102
+
103
+ if (relatedPending.length > 0) {
104
+ output(`\n ⚠️ Found related pending follow-ups:`)
105
+ relatedPending.forEach(p => {
106
+ output(` - "${p.item}" (from ${p.from_change})`)
107
+ output(` Reason: ${p.reason}`)
108
+ if (p.affects) output(` Affects: ${p.affects.join(', ')}`)
109
+ })
110
+
111
+ output(`\n This change may be affected by unresolved follow-ups.`)
112
+ output(` Options:`)
113
+ output(` 1. Continue anyway (risk: issues like schema sync)`)
114
+ output(` 2. Address follow-up first (create separate proposal)`)
115
+ output(` 3. Include follow-up in this change's scope`)
116
+
117
+ const choice = await askUser(`\n How to proceed? (1/2/3)`)
118
+
119
+ if (choice === '2') {
120
+ output(`\n ❌ Setup paused. Create proposal for pending follow-up first.`)
121
+ return
122
+ } else if (choice === '3') {
123
+ output(`\n ℹ️ Remember to include follow-up items in tasks.md`)
124
+ } else {
125
+ output(`\n ⚠️ Continuing with caution. Monitor for related issues.`)
126
+ }
127
+ }
128
+ }
129
+
86
130
  // Check stale status
87
131
  const lastUpdated = new Date(projectStatus.last_updated)
88
132
  const daysSinceUpdate = Math.floor((Date.now() - lastUpdated) / (1000 * 60 * 60 * 24))
@@ -71,6 +71,26 @@ blockers: []
71
71
  # description: "Waiting for Stripe test API key from finance team"
72
72
  # blocks: [payment-integration]
73
73
 
74
+ # -------------------------------------------------------------------
75
+ # PENDING FOLLOW-UPS
76
+ # Non-Goals from archived changes that need separate proposals
77
+ # Captured when: archiving a change with Non-Goals marked "separate proposal"
78
+ # Claude will warn during /csetup if new change relates to pending items
79
+ # -------------------------------------------------------------------
80
+ pending_followups: []
81
+ # Example:
82
+ # - item: "Database migration strategy"
83
+ # from_change: "add-infrastructure-cicd"
84
+ # reason: "Non-Goal: Database migrations (แยก proposal)"
85
+ # affects: ["any change with DB schema changes"]
86
+ # date: "2025-11-30"
87
+ #
88
+ # - item: "API rate limiting"
89
+ # from_change: "add-auth-system"
90
+ # reason: "Non-Goal: Rate limiting (phase 2)"
91
+ # affects: ["public API endpoints"]
92
+ # date: "2025-12-01"
93
+
74
94
  # -------------------------------------------------------------------
75
95
  # NEXT PRIORITIES
76
96
  # What should be worked on next (with reasoning)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@champpaba/claude-agent-kit",
3
- "version": "2.1.4",
3
+ "version": "2.1.6",
4
4
  "description": "Universal multi-agent template for Claude Code - AI-assisted development with specialized agents",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {