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.
- package/.claude-plugin/plugin.json +1 -1
- package/bin/viban +2 -4
- package/commands/parallel-assign.md +9 -3
- package/commands/setup.md +1 -1
- package/docs/CLAUDE.md +3 -3
- package/package.json +1 -1
- package/skills/assign/SKILL.md +1 -2
- package/skills/parallel-assign/SKILL.md +8 -16
- package/skills/setup/SKILL.md +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 `
|
|
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
|
-
- 브랜치 네이밍: `
|
|
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
|
|
69
|
+
git checkout -b issue-{ISSUE_ID}
|
|
70
70
|
|
|
71
71
|
# 2. 작업 후 push
|
|
72
|
-
git push -u origin
|
|
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
package/skills/assign/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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/{
|
|
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/{
|
|
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/{
|
|
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
|
-
|
|
218
|
-
WT_DIR="$REPO_ROOT/.viban/worktrees/$
|
|
209
|
+
ID="${entry%%|*}"
|
|
210
|
+
WT_DIR="$REPO_ROOT/.viban/worktrees/$ID"
|
|
219
211
|
git worktree remove "$WT_DIR" --force
|
|
220
212
|
done
|
|
221
213
|
```
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -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 `
|
|
396
|
+
{AUTO_DETECTED from existing patterns, or `issue-{id}` as default}
|
|
397
397
|
|
|
398
398
|
### Pull Request
|
|
399
399
|
{FROM Q1:}
|