claude-plugin-viban 1.3.4 → 1.3.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viban",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "author": {
6
6
  "name": "happy-nut"
package/bin/viban CHANGED
@@ -1526,13 +1526,17 @@ cmd_review() {
1526
1526
 
1527
1527
  cmd_done() {
1528
1528
  init_json
1529
- [[ -z "$1" ]] && { echo "Usage: viban done <id>"; exit 1; }
1529
+ [[ -z "$1" ]] && { echo "Usage: viban done <id> [--remove]"; exit 1; }
1530
+ local id="$1"
1531
+ local remove=false
1532
+ [[ "$2" == "--remove" ]] && remove=true
1533
+
1530
1534
  # Cleanup worktree if exists
1531
1535
  local repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
1532
- local wt_dir="$VIBAN_DATA_DIR/worktrees/$1"
1536
+ local wt_dir="$VIBAN_DATA_DIR/worktrees/$id"
1533
1537
 
1534
- local branch="issue-$1"
1535
- local _ext_id=$(get_ext_id "$1")
1538
+ local branch="issue-$id"
1539
+ local _ext_id=$(get_ext_id "$id")
1536
1540
  if [[ -n "$_ext_id" && "$_ext_id" != "null" ]]; then
1537
1541
  local _issue_num="${_ext_id##*:}"
1538
1542
  if git -C "$repo_root" rev-parse --verify "issue-${_issue_num}" &>/dev/null 2>&1; then
@@ -1545,14 +1549,22 @@ cmd_done() {
1545
1549
  git -C "$repo_root" branch -D "$branch" 2>/dev/null
1546
1550
  echo "✓ worktree removed"
1547
1551
  fi
1548
- # Remove task (handle both string and number ID)
1549
- jq --argjson id "$1" 'del(.issues[]|select((.id|tonumber)==$id))' "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && \
1550
- mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
1551
1552
 
1552
- # Clear iTerm2 session name
1553
- printf '\033]1;\007'
1554
-
1555
- echo "$(display_id "$1" "$(get_ext_id "$1")") completed & removed"
1553
+ if $remove; then
1554
+ # Delete card (old behavior)
1555
+ jq --argjson id "$id" 'del(.issues[]|select((.id|tonumber)==$id))' \
1556
+ "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
1557
+ printf '\033]1;\007'
1558
+ echo "✓ $(display_id "$id" "$(get_ext_id "$id")") completed & removed"
1559
+ else
1560
+ # Move to done status (non-destructive default)
1561
+ local now=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
1562
+ jq --argjson id "$id" --arg now "$now" \
1563
+ '(.issues[]|select((.id|tonumber)==$id)) |= . + {status:"done",assigned_to:null,updated_at:$now}' \
1564
+ "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
1565
+ printf '\033]1;\007'
1566
+ echo "✓ $(display_id "$id" "$(get_ext_id "$id")") → done"
1567
+ fi
1556
1568
  }
1557
1569
 
1558
1570
  cmd_get() { init_json; jq --argjson id "$1" '.issues[]|select((.id|tonumber)==$id)' "$VIBAN_JSON"; }
@@ -1673,7 +1685,7 @@ main() {
1673
1685
  attach) shift; cmd_attach "$@";;
1674
1686
  assign) cmd_assign "$2";;
1675
1687
  review) cmd_review "$2";;
1676
- done) cmd_done "$2";;
1688
+ done) cmd_done "$2" "$3";;
1677
1689
  get) cmd_get "$2";;
1678
1690
  edit) [[ -z "$2" ]] && { echo "Usage: viban edit <id>"; exit 1; }; edit_issue "$2";;
1679
1691
  priority) cmd_priority "$2" "$3";;
@@ -1706,7 +1718,7 @@ main() {
1706
1718
  echo " viban priority <id> <P0-P3> Set priority"
1707
1719
  echo " viban assign Assign first backlog (by priority)"
1708
1720
  echo " viban review → Human Review"
1709
- echo " viban done <id> Complete & remove"
1721
+ echo " viban done <id> [--remove] Complete (--remove to delete)"
1710
1722
  echo " viban edit <id> Edit task in editor"
1711
1723
  echo " viban get <id> Get task details (JSON)"
1712
1724
  echo " viban migrate Migrate: extract type from title"
package/docs/CLAUDE.md CHANGED
@@ -278,7 +278,8 @@ viban list # Display kanban board
278
278
  viban add "Title" "Desc" P2 feat # Create issue
279
279
  viban assign [session] # Assign top backlog issue
280
280
  viban review [id] # Move issue to review
281
- viban done <id> # Mark issue as done
281
+ viban done <id> # Mark issue as done (card stays on board)
282
+ viban done <id> --remove # Delete card permanently
282
283
  viban get <id> # Get issue details (JSON)
283
284
  viban help # Show help
284
285
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-plugin-viban",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "main": "bin/viban",
6
6
  "bin": {
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: assign
3
- description: "Assign first backlog issue clarify if unclear, then finish"
3
+ description: "Assign first backlog issue and resolve it through to review"
4
4
  ---
5
5
 
6
6
  # /assign
7
7
 
8
- Assign the first backlog issue. If the description is unclear or lacks context, interview the user and enrich the issue. **Do NOT start implementation.**
8
+ Assign the first backlog issue and execute the full resolution workflow. If the description is unclear, interview the user first.
9
9
 
10
10
  > **CLI only** (no direct viban.json access)
11
11
 
@@ -24,7 +24,7 @@ done
24
24
  ```
25
25
  Look for `Issue Resolution Workflow` or `Workflow` section.
26
26
 
27
- If a workflow exists, follow its conventions for issue handling.
27
+ If a workflow exists, **follow it exactly** — its pipeline, conventions, and stop points override the defaults below.
28
28
 
29
29
  ---
30
30
 
@@ -47,24 +47,11 @@ Display the issue title, description, priority, and type to the user.
47
47
 
48
48
  ## Step 3: Evaluate Clarity
49
49
 
50
- Assess whether the issue description provides enough context for someone to start working on it:
50
+ Assess whether the issue description provides enough context to start working:
51
51
 
52
52
  - **Clear**: the symptom, affected area, and expected behavior are all understandable
53
53
  - **Unclear**: vague description, missing context, ambiguous scope, or multiple possible interpretations
54
54
 
55
- ### If Clear
56
-
57
- Report the assignment and finish:
58
-
59
- ```
60
- Issue #{id} assigned
61
- Title: {title}
62
- Priority: {priority} | Type: {type}
63
- Status: in_progress
64
-
65
- Ready for work.
66
- ```
67
-
68
55
  ### If Unclear
69
56
 
70
57
  Interview the user with AskUserQuestion to gather missing context. Ask about:
@@ -86,26 +73,50 @@ VIBAN_EOF
86
73
  # Re-add the issue with enriched description (edit via TUI or recreate)
87
74
  ```
88
75
 
89
- Then report:
76
+ ## Step 4: Execute Workflow
77
+
78
+ Follow the workflow from Step 0. If no workflow was found, use this default pipeline:
79
+
80
+ ### 4.1 Analyze
81
+ - Explore the codebase to understand the issue
82
+ - Identify root cause and scope of change
83
+
84
+ ### 4.2 Implement
85
+ - Create a branch: `git checkout -b issue-{ISSUE_ID}`
86
+ - Make the fix/feature changes
87
+ - Write or update tests as appropriate
90
88
 
89
+ ### 4.3 Verify
90
+ - Run build and tests to confirm the fix works
91
+ - Verify no regressions
92
+
93
+ ### 4.4 Ship
94
+ - Commit with conventional message referencing the issue
95
+ - Push and create a PR
96
+
97
+ ## Step 5: Move to Review
98
+
99
+ After shipping (or at the workflow's stop point):
100
+
101
+ ```bash
102
+ viban review $ISSUE_ID
91
103
  ```
92
- Issue #{id} assigned and clarified
93
- Title: {title}
94
- Priority: {priority} | Type: {type}
95
- Status: in_progress
96
104
 
97
- Clarification added to issue description.
105
+ Report completion:
106
+
107
+ ```
108
+ Issue #{id} resolved → review
109
+ Title: {title}
110
+ PR: {pr_url}
98
111
  ```
99
112
 
100
113
  ---
101
114
 
102
115
  ## CRITICAL
103
116
 
104
- > - **NEVER read or write `viban.json` directly** — always use `viban` CLI commands (`viban assign`, `viban get`, `viban list`, etc.)
105
- > - **FORBIDDEN: `viban done`** this DELETES the card permanently. NEVER run it.
106
- > - **FORBIDDEN: `viban review`** — the issue stays in `in_progress` for the next work session.
107
- > - This command **assigns only**. Do NOT create branches, write code, or start implementation.
108
- > - If the issue is clear, just report and finish immediately.
117
+ > - **NEVER read or write `viban.json` directly** — always use `viban` CLI commands (`viban assign`, `viban get`, `viban list`, `viban done`, etc.)
118
+ > - Always end with `viban review` (or `viban done` if the workflow specifies it).
119
+ > - Respect workflow stop points if the workflow says "stop before PR", stop there.
109
120
 
110
121
  ## CLI Reference
111
122
 
@@ -113,3 +124,6 @@ Clarification added to issue description.
113
124
  |---------|-------------|
114
125
  | `viban assign [session]` | Assign issue |
115
126
  | `viban get <id>` | View issue |
127
+ | `viban done <id>` | Mark as done (non-destructive) |
128
+ | `viban done <id> --remove` | Delete card permanently |
129
+ | `viban review [id]` | Move to review |
@@ -211,15 +211,15 @@ Ask only what the agent **cannot infer on its own**. One AskUserQuestion call, 3
211
211
  - "Stop before commit — I'll review the code first (review in terminal/IDE)"
212
212
  - multiSelect: false
213
213
 
214
- **Q2. Issue Numbering**
215
- - header: "Issue ID"
216
- - question: "How should issues be numbered when using `/viban:add`?"
214
+ **Q2. Issue Tracker Sync**
215
+ - header: "Sync"
216
+ - question: "Sync issues with an external tracker (GitHub Issues, Jira, Linear, etc.)?"
217
217
  - options:
218
- - "Autoviban auto-assigns #1, #2, #3..."
219
- - "Sync with provider use `/viban:sync` to import from GitHub, Jira, Linear, etc."
220
- - "Manualask for an external ID each time (e.g. PROJ-42, JIRA-123)"
218
+ - "Yesset up two-way sync (issues imported from provider)"
219
+ - "Noauto-number locally (#1, #2, #3...)"
220
+ - "Nobut use manual external IDs (e.g. PROJ-42)"
221
221
  - multiSelect: false
222
- - If user selects "Sync with provider", run `/viban:sync` to initialize sync after workflow setup completes.
222
+ - If user selects "Yes", run `viban sync` to initialize sync after workflow setup completes.
223
223
 
224
224
  **Q3. Extra Rules**
225
225
 
@@ -302,12 +302,12 @@ Combine **auto-detected values** (Step 7) with **interview answers** (Step 8) to
302
302
  | Value | Source | Example |
303
303
  |-------|--------|---------|
304
304
  | Pipeline | Q1 | "Full auto" or "Stop before PR" |
305
- | Issue numbering | Q2 | "Auto" or "Manual" |
305
+ | Issue tracker sync | Q2 | "Yes (sync)" or "No (auto)" or "No (manual IDs)" |
306
306
  | Extra rules | Q3 | User-typed rules or "None" |
307
307
 
308
308
  **Workflow generation principles:**
309
309
  - **Q1 (Pipeline) determines the entire automation structure** — which phases run automatically, where to stop, and whether to create PRs. "Full auto" = no stops + auto PR. "Stop before PR" = auto commit + user creates PR. "Stop before commit" = implement only + user reviews.
310
- - **Q2 (Issue numbering) determines how `/viban:add` handles IDs.** "Auto" = viban auto-assigns `#1`, `#2`. "Sync with provider" = use `/viban:sync` to import/sync issues from GitHub, Jira, Linear, etc. "Manual" = agent asks for an external ID each time and passes `--ext-id` to `viban add`. When manual, commits/PRs reference the external ID instead of `#N`.
310
+ - **Q2 (Issue tracker sync) determines how issues are managed.** "Yes" = run `viban sync` after setup to import/sync issues from external tracker (GitHub, Jira, Linear, etc.), IDs come from provider. "No — auto-number" = viban auto-assigns `#1`, `#2`. "No — manual IDs" = agent asks for an external ID each time and passes `--ext-id` to `viban add`. When manual, commits/PRs reference the external ID instead of `#N`.
311
311
  - **Q3 (Extra rules) is appended verbatim to the Additional Rules section.** If user mentions conventions, evidence, CHANGELOG, language, etc., incorporate into the relevant phase.
312
312
  - **Commit/PR conventions are auto-detected from git history** (Step 7.2). If the user overrides via Q3, use the user's preference instead.
313
313
  - **Everything else uses smart defaults.** Analysis depth, implementation approach, quality gates, verification methods, issue numbering, post-merge — all auto-determined by the agent or set to sensible defaults.
@@ -413,7 +413,7 @@ If build/test fails: fix errors, return to Phase 3.
413
413
 
414
414
  ## Issue Management
415
415
 
416
- - Issue numbering: {FROM Q2: "Auto" = auto-increment (viban default), "Sync with provider" = use `/viban:sync` for external tracker integration, "Manual" = ask for external ID via `--ext-id` flag}
416
+ - Issue tracking: {FROM Q2: "Yes" = synced with external tracker via `viban sync`, "No auto-number" = auto-increment (viban default), "No manual IDs" = ask for external ID via `--ext-id` flag}
417
417
  - Test evidence: include test output in PR body
418
418
  - Post-merge: auto-close issue (`viban done {id}`), delete branch
419
419