claude-plugin-viban 1.2.1 → 1.2.2

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.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "author": {
6
6
  "name": "happy-nut"
package/bin/viban CHANGED
@@ -1047,8 +1047,7 @@ delete_issue() {
1047
1047
  local repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
1048
1048
  local wt_dir="$VIBAN_DATA_DIR/worktrees/$id"
1049
1049
 
1050
- # Determine branch name: prefer issue-{num} when external_id present
1051
- local branch="viban-$id"
1050
+ local branch="issue-$id"
1052
1051
  local _ext_id=$(get_ext_id "$id")
1053
1052
  if [[ -n "$_ext_id" && "$_ext_id" != "null" ]]; then
1054
1053
  local _issue_num="${_ext_id##*:}"
@@ -1519,8 +1518,7 @@ cmd_done() {
1519
1518
  local repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
1520
1519
  local wt_dir="$VIBAN_DATA_DIR/worktrees/$1"
1521
1520
 
1522
- # Determine branch name: prefer issue-{num} when external_id present
1523
- local branch="viban-$1"
1521
+ local branch="issue-$1"
1524
1522
  local _ext_id=$(get_ext_id "$1")
1525
1523
  if [[ -n "$_ext_id" && "$_ext_id" != "null" ]]; then
1526
1524
  local _issue_num="${_ext_id##*:}"
@@ -1,15 +1,21 @@
1
1
  ---
2
- description: "Assign and resolve multiple independent backlog issues in parallel using git worktrees and coordinated agents"
2
+ description: "Assign and resolve multiple independent backlog issues in parallel each agent works in its own isolated git worktree"
3
3
  ---
4
4
 
5
5
  Run `/viban:parallel-assign` to process multiple backlog issues simultaneously.
6
6
 
7
+ Each issue is resolved in a **separate git worktree**, so agents never interfere with each other's work. Worktrees are automatically cleaned up after PRs are created.
8
+
7
9
  Usage: `/viban:parallel-assign [count]`
8
10
 
9
11
  - `count`: Number of issues to process in parallel (default: 3, max: 5)
10
12
 
11
13
  Examples:
12
- - `/viban:parallel-assign` — resolve up to 3 backlog issues in parallel
14
+ - `/viban:parallel-assign` — resolve up to 3 backlog issues in parallel (each in its own worktree)
13
15
  - `/viban:parallel-assign 5` — resolve up to 5 backlog issues in parallel
14
16
 
15
- Each issue gets its own opus agent working in an isolated git worktree. After all agents finish, PRs are created, local branches are preserved, and worktrees are cleaned up.
17
+ How it works:
18
+ 1. Assigns N backlog issues and creates isolated git worktrees (`.viban/worktrees/{id}`)
19
+ 2. Spawns one opus agent per issue — each agent works exclusively in its own worktree
20
+ 3. Agents analyze, implement, commit, push, and create PRs independently
21
+ 4. Coordinator collects results, runs tests, and cleans up worktrees
package/commands/setup.md CHANGED
@@ -370,7 +370,7 @@ If build/test fails: fix errors, return to Phase 3.
370
370
  {AUTO_DETECTED from git history — infer format from existing commits. If Q3 overrides, use that instead.}
371
371
 
372
372
  ### Branch Convention
373
- {AUTO_DETECTED from existing patterns, or `viban-{id}` as default}
373
+ {AUTO_DETECTED from existing patterns, or `issue-{id}` as default}
374
374
 
375
375
  ### Pull Request
376
376
  {FROM Q1:}
package/docs/CLAUDE.md CHANGED
@@ -60,16 +60,16 @@ EOF
60
60
  ### 🔴 Worktree 사용 금지
61
61
  - **main repo에서 feature branch로 직접 작업**
62
62
  - worktree 생성/사용 금지 (사용자 명시적 요청)
63
- - 브랜치 네이밍: `viban-{ISSUE_ID}` (예: `viban-78`)
63
+ - 브랜치 네이밍: `issue-{ISSUE_ID}` (예: `issue-78`)
64
64
 
65
65
  ### Branch-Based Workflow
66
66
  ```bash
67
67
  # 1. main에서 분기
68
68
  git checkout main && git pull
69
- git checkout -b viban-{ISSUE_ID}
69
+ git checkout -b issue-{ISSUE_ID}
70
70
 
71
71
  # 2. 작업 후 push
72
- git push -u origin viban-{ISSUE_ID}
72
+ git push -u origin issue-{ISSUE_ID}
73
73
 
74
74
  # 3. PR 생성
75
75
  gh pr create --title "..." --body "..."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-plugin-viban",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "main": "bin/viban",
6
6
  "bin": {
@@ -49,8 +49,7 @@ SYNC_ACTIVE=false; EXTERNAL_NUM=""
49
49
  if [ -n "$EXT_ID" ] && [ "$EXT_ID" != "null" ]; then
50
50
  SYNC_ACTIVE=true
51
51
  EXTERNAL_NUM="${EXT_ID##*:}" # "github:42" -> "42"
52
- TITLE=$(echo "$ISSUE_JSON" | jq -r '.title' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | head -c 40)
53
- git checkout -b "issue-${EXTERNAL_NUM}-${TITLE}"
52
+ git checkout -b "issue-${EXTERNAL_NUM}"
54
53
  else
55
54
  git checkout -b issue-$ISSUE_ID
56
55
  fi
@@ -55,16 +55,7 @@ for i in $(seq 1 $N); do
55
55
  ID=$(viban assign "$SESSION" 2>&1 | tail -1)
56
56
  [[ -z "$ID" || "$ID" == "No backlog" ]] && break
57
57
 
58
- # Determine branch name (same logic as /viban:assign Phase 0.3)
59
- ISSUE_JSON=$(viban get "$ID")
60
- EXT_ID=$(echo "$ISSUE_JSON" | jq -r '.external_id // ""')
61
- if [ -n "$EXT_ID" ] && [ "$EXT_ID" != "null" ]; then
62
- EXTERNAL_NUM="${EXT_ID##*:}"
63
- TITLE=$(echo "$ISSUE_JSON" | jq -r '.title' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | head -c 40)
64
- BRANCH="issue-${EXTERNAL_NUM}-${TITLE}"
65
- else
66
- BRANCH="issue-${ID}"
67
- fi
58
+ BRANCH="issue-${ID}"
68
59
 
69
60
  ISSUES+=("${ID}|${BRANCH}")
70
61
  done
@@ -83,7 +74,8 @@ mkdir -p "$REPO_ROOT/.viban/worktrees"
83
74
  for entry in "${ISSUES[@]}"; do
84
75
  ID="${entry%%|*}"
85
76
  BRANCH="${entry##*|}"
86
- WT_DIR="$REPO_ROOT/.viban/worktrees/$BRANCH"
77
+ # Use issue ID as worktree dir name (matches cmd_done cleanup at .viban/worktrees/{ID})
78
+ WT_DIR="$REPO_ROOT/.viban/worktrees/$ID"
87
79
 
88
80
  git worktree add -b "$BRANCH" "$WT_DIR" origin/main
89
81
  done
@@ -107,7 +99,7 @@ Spawn one **opus** agent per issue using `Task` tool. All agents launch in a sin
107
99
  You are resolving viban issue #{ID} in an isolated git worktree.
108
100
 
109
101
  ## Environment
110
- - Worktree path: {REPO_ROOT}/.viban/worktrees/{BRANCH}
102
+ - Worktree path: {REPO_ROOT}/.viban/worktrees/{ID}
111
103
  - Branch: {BRANCH}
112
104
  - Main repo: {REPO_ROOT}
113
105
  - ALL file operations must happen inside the worktree path
@@ -125,7 +117,7 @@ You are resolving viban issue #{ID} in an isolated git worktree.
125
117
 
126
118
  You are one of {N} parallel agents working in isolated git worktrees.
127
119
 
128
- 1. Work ONLY inside your worktree: {REPO_ROOT}/.viban/worktrees/{BRANCH}
120
+ 1. Work ONLY inside your worktree: {REPO_ROOT}/.viban/worktrees/{ID}
129
121
  - cd to the worktree before any work
130
122
  - All reads, edits, and writes must target files under this path
131
123
 
@@ -136,7 +128,7 @@ You are one of {N} parallel agents working in isolated git worktrees.
136
128
 
137
129
  3. After implementation, commit on your branch:
138
130
  ```bash
139
- cd {REPO_ROOT}/.viban/worktrees/{BRANCH}
131
+ cd {REPO_ROOT}/.viban/worktrees/{ID}
140
132
  git add <specific files>
141
133
  git commit -m "type: description
142
134
 
@@ -214,8 +206,8 @@ PRs have been created — worktrees are no longer needed:
214
206
 
215
207
  ```bash
216
208
  for entry in "${ISSUES[@]}"; do
217
- BRANCH="${entry##*|}"
218
- WT_DIR="$REPO_ROOT/.viban/worktrees/$BRANCH"
209
+ ID="${entry%%|*}"
210
+ WT_DIR="$REPO_ROOT/.viban/worktrees/$ID"
219
211
  git worktree remove "$WT_DIR" --force
220
212
  done
221
213
  ```
@@ -393,7 +393,7 @@ If build/test fails: fix errors, return to Phase 3.
393
393
  {AUTO_DETECTED from git history — infer format from existing commits. If Q3 overrides, use that instead.}
394
394
 
395
395
  ### Branch Convention
396
- {AUTO_DETECTED from existing patterns, or `viban-{id}` as default}
396
+ {AUTO_DETECTED from existing patterns, or `issue-{id}` as default}
397
397
 
398
398
  ### Pull Request
399
399
  {FROM Q1:}