claude-plugin-viban 1.2.2 → 1.3.1

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.2",
3
+ "version": "1.3.1",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "author": {
6
6
  "name": "happy-nut"
package/README.md CHANGED
@@ -24,14 +24,14 @@ The most effective way to use viban is with **multiple terminal sessions**:
24
24
  │ Session 1 │ │ Session 2 │ │ Session 3 │
25
25
  │ │ │ │ │ │
26
26
  │ Product QA │ │ Issue Work │ │ viban TUI │
27
- │ + /viban:task │ │ + /viban:assign │ │ │
27
+ │ + /viban:add │ │ + /viban:assign │ │ │
28
28
  │ │ │ │ │ (always open) │
29
29
  │ Find bugs, │ │ Pick & resolve │ │ Monitor board │
30
30
  │ register issues │ │ issues │ │ in real-time │
31
31
  └───────────────────┘ └───────────────────┘ └───────────────────┘
32
32
  ```
33
33
 
34
- - **Session 1**: QA your product, find issues, run `/viban:task` to register them
34
+ - **Session 1**: QA your product, find issues, run `/viban:add` to register them
35
35
  - **Session 2**: Run `/viban:assign` to pick the next issue and resolve it
36
36
  - **Session 3**: Keep `viban` TUI open to monitor the board
37
37
 
@@ -39,7 +39,7 @@ This separation keeps your workflow clean and prevents context switching.
39
39
 
40
40
  ## Features
41
41
 
42
- - **3-Column Kanban Board**: `backlog` → `in_progress` → `review` → `done`
42
+ - **4-Column Kanban Board**: `backlog` → `in_progress` → `review` → `done`
43
43
  - **Priority Levels**: P0 (critical) to P3 (low priority)
44
44
  - **Type Tags**: bug, feat, chore, refactor
45
45
  - **TUI Navigation**: Interactive terminal UI with gum
@@ -118,12 +118,17 @@ viban # Launch TUI
118
118
 
119
119
  ```bash
120
120
  viban list # Display kanban board
121
- viban add "Title" "Description" P2 feat # Create new issue
121
+ viban add "Title" ["Desc"] [P0-P3] [type] [files...] # Create new issue
122
+ viban attach <id> <file1> [file2...] # Attach files to issue
123
+ viban priority <id> <P0-P3> # Set priority
122
124
  viban assign [session-id] # Assign top backlog issue
123
125
  viban review [id] # Move issue to review
124
- viban done <id> # Mark issue as done
126
+ viban done <id> # Complete & remove
127
+ viban edit <id> # Edit issue in editor
125
128
  viban get <id> # Get issue details (JSON)
126
129
  viban sync # Sync with external tracker
130
+ viban migrate # Migrate: extract type from title
131
+ viban update # Update to latest version
127
132
  viban help # Show help message
128
133
  ```
129
134
 
@@ -133,12 +138,18 @@ viban help # Show help message
133
138
  # Add a high-priority bug
134
139
  viban add "Fix login error" "Users cannot login after password reset" P1 bug
135
140
 
141
+ # Add an issue with file attachments
142
+ viban add "Refactor auth" "Simplify login flow" P2 refactor src/auth.ts src/login.ts
143
+
136
144
  # List all issues
137
145
  viban list
138
146
 
139
147
  # Assign first backlog issue to current session
140
148
  viban assign
141
149
 
150
+ # Change priority of issue #3
151
+ viban priority 3 P1
152
+
142
153
  # Mark issue #5 as done
143
154
  viban done 5
144
155
 
@@ -148,48 +159,55 @@ viban get 3
148
159
 
149
160
  ### Claude Code Integration
150
161
 
151
- viban provides commands for automated issue management in Claude Code:
152
-
153
- #### `/viban:assign` - Auto-resolve next issue
162
+ viban provides skills and commands for automated issue management in Claude Code:
154
163
 
155
- Automatically picks the highest priority backlog issue and executes the full resolution workflow:
156
-
157
- 1. Fetches top backlog issue
158
- 2. Assigns to current session
159
- 3. Analyzes and implements the fix
160
- 4. Marks as review/done upon completion
161
-
162
- **Use cases:**
163
- - Autonomous issue resolution
164
- - Parallel agent workflows
165
- - Pre-prioritized backlog processing
166
-
167
- #### `/viban:task` - Create structured issue
164
+ #### `/viban:add` - Register structured issue
168
165
 
169
166
  Analyzes a problem and creates a properly structured viban issue:
170
167
 
171
- 1. Prompts for problem description
172
- 2. Analyzes symptoms, root cause, expected behavior
173
- 3. Creates issue with proper title, description, priority, type
168
+ 1. Clarifies the problem if vague
169
+ 2. Infers priority and type from description
170
+ 3. Registers with proper title, description, priority, type
171
+ 4. Optionally enters plan mode to design a solution
174
172
 
175
173
  **Use cases:**
176
174
  - Bug reporting
177
175
  - Feature requests
178
176
  - Converting free-form descriptions to structured issues
179
177
 
180
- #### `/viban:sync` - Sync with external tracker
178
+ #### `/viban:assign` - Assign next backlog issue
179
+
180
+ Picks the highest priority backlog issue and assigns it to the current session:
181
+
182
+ 1. Assigns top backlog issue
183
+ 2. Evaluates description clarity
184
+ 3. If unclear, interviews user and enriches the issue description
185
+
186
+ This command is **assignment only** - it does not start implementation. Use your project's workflow (`.viban/workflow.md`) to define what happens next.
187
+
188
+ #### `/viban:parallel-assign` - Parallel resolution with worktrees
181
189
 
182
- Two-way sync between your viban board and an external issue tracker (currently GitHub Issues):
190
+ Resolves multiple backlog issues simultaneously using isolated git worktrees:
183
191
 
184
- 1. Checks sync configuration (or initializes on first run)
185
- 2. Shows a dry-run preview of changes
186
- 3. Asks for confirmation before syncing
187
- 4. Reports sync results
192
+ 1. Assigns N issues (default: 3, max: 5) and creates worktrees
193
+ 2. Spawns one opus agent per issue in its own worktree
194
+ 3. Each agent analyzes, implements, commits, and creates a PR
195
+ 4. Coordinator collects results, runs tests, and cleans up
188
196
 
189
197
  **Use cases:**
190
- - Importing GitHub Issues into your local board
191
- - Keeping remote issues in sync with local status changes
192
- - Team collaboration where some members use GitHub and others use viban
198
+ - Batch processing a backlog
199
+ - Parallel agent workflows with zero interference
200
+ - Rapid issue throughput
201
+
202
+ #### `/viban:setup` - Install & configure
203
+
204
+ Installs all dependencies and optionally configures a project workflow:
205
+
206
+ 1. Detects OS and installs missing dependencies (zsh, gum, jq)
207
+ 2. Installs/updates viban CLI via npm
208
+ 3. Auto-detects project conventions (build/test, commit style, branch naming)
209
+ 4. Interviews for workflow preferences (pipeline depth, issue numbering)
210
+ 5. Generates `.viban/workflow.md` for `/viban:assign` to follow
193
211
 
194
212
  ## External Tracker Sync
195
213
 
@@ -208,7 +226,7 @@ viban sync --dry-run
208
226
  viban sync
209
227
  ```
210
228
 
211
- > If using Claude Code, run `/viban:sync` for a guided experience with dry-run preview and confirmation.
229
+ > **Tip:** Use `viban sync --dry-run` first to preview changes before syncing.
212
230
 
213
231
  ### How It Works
214
232
 
@@ -290,8 +308,6 @@ backlog → in_progress → review → done
290
308
  | **feat** | New feature or enhancement |
291
309
  | **refactor** | Code restructuring |
292
310
  | **chore** | Maintenance tasks |
293
- | **docs** | Documentation updates |
294
- | **test** | Test additions/fixes |
295
311
 
296
312
  ## Data Structure
297
313
 
@@ -332,34 +348,47 @@ This prevents duplicate work and enables parallel agent workflows.
332
348
  ```
333
349
  claude-plugin-viban/
334
350
  ├── .claude-plugin/
335
- │ └── plugin.json # Plugin metadata
351
+ │ └── plugin.json # Plugin metadata
336
352
  ├── .github/
337
353
  │ └── workflows/
338
- │ ├── ci.yml # CI testing
339
- │ └── release.yml # NPM publishing
354
+ │ ├── ci.yml # CI testing
355
+ │ └── release.yml # NPM publishing
340
356
  ├── bin/
341
- │ └── viban # Main TUI/CLI script
342
- ├── docs/
343
- │ └── CLAUDE.md # Claude Code integration guide
357
+ │ └── viban # Main TUI/CLI script
344
358
  ├── commands/
345
- └── sync.md # /viban:sync command
359
+ ├── add.md # /viban:add command
360
+ │ ├── assign.md # /viban:assign command
361
+ │ ├── parallel-assign.md # /viban:parallel-assign command
362
+ │ └── setup.md # /viban:setup command
363
+ ├── docs/
364
+ │ ├── CLAUDE.md # Claude Code integration guide
365
+ │ └── release.md # Release workflow
346
366
  ├── scripts/
347
- │ ├── check-deps.sh # Dependency checker
348
- │ ├── sync.sh # Core sync engine (provider-agnostic)
367
+ │ ├── check-deps.sh # Dependency checker
368
+ │ ├── generate-release-notes.sh # Release notes generator
369
+ │ ├── sync.sh # Core sync engine (provider-agnostic)
370
+ │ ├── sync_create.sh # Sync initialization
349
371
  │ ├── providers/
350
- │ │ └── github.sh # GitHub Issues provider
351
- │ └── tui_coprocess.py # Persistent Python coprocess for TUI rendering
372
+ │ │ └── github.sh # GitHub Issues provider
373
+ │ └── tui_coprocess.py # Persistent Python coprocess for TUI rendering
352
374
  ├── skills/
353
- │ ├── assign/SKILL.md # /viban:assign skill
354
- │ ├── setup/SKILL.md # /viban:setup skill
355
- │ ├── sync/SKILL.md # /viban:sync skill
356
- │ └── task/SKILL.md # /viban:task skill
375
+ │ ├── add/SKILL.md # /viban:add skill
376
+ │ ├── assign/SKILL.md # /viban:assign skill
377
+ │ ├── parallel-assign/SKILL.md # /viban:parallel-assign skill
378
+ │ └── setup/SKILL.md # /viban:setup skill
357
379
  ├── tests/
358
- │ ├── run_all.zsh # Test runner
359
- └── test_sync.zsh # Sync engine tests
360
- ├── LICENSE # MIT License
361
- ├── package.json # NPM package config
362
- └── README.md # This file
380
+ │ ├── run_all.zsh # Test runner
381
+ ├── test_cmd_add.zsh # Add command tests
382
+ ├── test_coprocess.zsh # Python coprocess tests
383
+ ├── test_install.zsh # Installation tests
384
+ │ ├── test_layout.zsh # TUI layout tests
385
+ │ ├── test_pad_width.zsh # Unicode width tests
386
+ │ ├── test_sort_order.zsh # Sort order tests
387
+ │ ├── test_sync.zsh # Sync engine tests
388
+ │ └── test_sync_auto.zsh # Auto-sync tests
389
+ ├── LICENSE # MIT License
390
+ ├── package.json # NPM package config
391
+ └── README.md # This file
363
392
  ```
364
393
 
365
394
  ## Development
@@ -370,29 +399,16 @@ claude-plugin-viban/
370
399
  # Install dependencies
371
400
  brew install gum jq
372
401
 
373
- # Make executable
374
- chmod +x bin/viban scripts/check-deps.sh
375
-
376
- # Run tests
377
- ./bin/viban help
378
-
379
- # Test in a git repo
380
- cd /path/to/git/repo
381
- viban add "Test issue" "Test description" P2 feat
382
- viban list
402
+ # Run the full test suite (8 suites, 39 tests)
403
+ zsh tests/run_all.zsh
383
404
  ```
384
405
 
385
406
  ### Publishing
386
407
 
387
- ```bash
388
- # Update version in package.json
389
- npm version patch # or minor, major
408
+ See [docs/release.md](docs/release.md) for the full release workflow.
390
409
 
391
- # Create and push tag
392
- git tag v1.0.1
393
- git push origin v1.0.1
394
-
395
- # GitHub Actions will automatically publish to npm
410
+ ```bash
411
+ # GitHub Actions will automatically publish to npm on tag push
396
412
  ```
397
413
 
398
414
  ## Contributing
package/bin/viban CHANGED
@@ -906,7 +906,7 @@ draw_board() {
906
906
 
907
907
  draw_footer() {
908
908
  printf '\033[K\n'
909
- print_center "←→ Column │ ↑↓ Card │ Shift+↑↓ Reorder │ Shift+←→ Move │ Enter Edit │ ⌫ Del │ A Add │ Q Quit" "${A_DIM}"
909
+ print_center "←→ Column │ ↑↓ Card │ Shift+↑↓ Reorder │ Shift+←→ Move │ Enter Edit/PR │ ⌫ Del │ A Add │ Q Quit" "${A_DIM}"
910
910
  }
911
911
 
912
912
  read_key() {
@@ -1173,11 +1173,24 @@ level1_columns() {
1173
1173
  if (( cnt > 0 )); then
1174
1174
  local id=$(get_issue_id_at_index "$st" "$card" "$json_data")
1175
1175
  [[ -n "$id" ]] && {
1176
- printf '\033[?25h'
1177
- stty echo 2>/dev/null
1178
- edit_issue "$id"
1179
- stty -echo 2>/dev/null
1180
- printf '\033[?25l\033[2J\033[H'
1176
+ if [[ "$st" == "review" ]]; then
1177
+ # Open associated PR in browser
1178
+ local _branch="issue-${id}"
1179
+ local _ext_id=$(get_ext_id "$id")
1180
+ if [[ -n "$_ext_id" && "$_ext_id" != "null" ]]; then
1181
+ local _num="${_ext_id##*:}"
1182
+ gh pr view "$_num" --web 2>/dev/null || \
1183
+ gh pr list --head "$_branch" --web 2>/dev/null
1184
+ else
1185
+ gh pr list --head "$_branch" --web 2>/dev/null
1186
+ fi
1187
+ else
1188
+ printf '\033[?25h'
1189
+ stty echo 2>/dev/null
1190
+ edit_issue "$id"
1191
+ stty -echo 2>/dev/null
1192
+ printf '\033[?25l\033[2J\033[H'
1193
+ fi
1181
1194
  }
1182
1195
  fi
1183
1196
  ;;
package/commands/add.md CHANGED
@@ -64,12 +64,20 @@ Issue #{id} registered
64
64
 
65
65
  ## Step 6: Suggest Plan Mode
66
66
 
67
- **Skip** for trivial issues (typo, one-liner config, simple copy edit).
68
- **Recommend** for everything else. Use AskUserQuestion:
67
+ **Skip** unless the issue clearly needs upfront design. Most issues don't.
69
68
 
70
- - header: "Next step", question: "Want to start planning the solution now?"
69
+ Only suggest plan mode when:
70
+ - The issue spans multiple subsystems or requires architectural decisions
71
+ - The description is too vague to act on without investigation
72
+ - P0 issues where a wrong fix could make things worse
73
+
74
+ **Do NOT suggest** for: single-file fixes, straightforward bugs, feature additions with clear scope, chores, refactors with obvious targets.
75
+
76
+ When suggesting, use AskUserQuestion:
77
+
78
+ - header: "Next step", question: "This looks complex — want to plan before working on it?"
71
79
  - options:
72
- - "Plan now (Recommended)" — Enter plan mode to analyze and design a solution
80
+ - "Plan now" — Enter plan mode to analyze and design a solution
73
81
  - "Later" — Just register, work on it later
74
82
 
75
83
  **"Plan now"**: `EnterPlanMode` → after approval, save to `.viban/plans/{issue-id}.md`:
@@ -89,11 +97,14 @@ Report: `Plan saved to .viban/plans/{issue-id}.md — /viban:assign will auto-lo
89
97
 
90
98
  **"Later"**: end skill.
91
99
 
92
- > **Bias towards planning.** When in doubt, suggest plan mode.
100
+ > **Bias towards skipping.** When in doubt, just register and finish.
93
101
 
94
102
  ## Rules
95
103
 
104
+ - **NEVER edit, create, or modify any source code files** — this skill registers issues only
105
+ - **NEVER start implementation** — even after plan mode, just save the plan and stop
96
106
  - No codebase exploration — assignee does that in `/viban:assign`
97
- - No solution proposals — symptoms only
107
+ - No solution proposals in the issue — symptoms only
98
108
  - Check duplicates first: `viban list`
99
109
  - P0 is system-down only
110
+ - After Step 6 completes (plan saved or skipped), the skill is **done**. Do not continue.
@@ -1,217 +1,14 @@
1
1
  ---
2
- description: "Assign and resolve first backlog issue from viban board through to PR completion"
2
+ description: "Assign first backlog issue clarify if unclear, then finish"
3
3
  ---
4
4
 
5
- # /assign
5
+ Run `/viban:assign` to pick up the next backlog issue.
6
6
 
7
- First backlog issue → Resolve → PR completion
7
+ Usage: `/viban:assign`
8
8
 
9
- > **CLI only** (no direct viban.json access) | **No worktree** (branch in main repo)
9
+ What it does:
10
+ 1. Assigns the first backlog issue (by priority) to the current session
11
+ 2. If the issue description is unclear or lacks context, interviews you to gather missing information and updates the issue
12
+ 3. That's it — no implementation, no branch creation
10
13
 
11
- ---
12
-
13
- ## Phase 0: SETUP
14
-
15
- ### 0.1 Read Workflow (CRITICAL)
16
-
17
- Check in priority order — first match wins, follow it exactly:
18
-
19
- 1. `.viban/workflow.md` → `[ -f ".viban/workflow.md" ] && cat ".viban/workflow.md"`
20
- 2. CLAUDE.md (legacy, only if no workflow.md):
21
- ```bash
22
- for path in "./CLAUDE.md" "./.claude/CLAUDE.md" "../CLAUDE.md"; do
23
- [ -f "$path" ] && cat "$path"
24
- done
25
- ```
26
- Look for `Issue Resolution Workflow` or `Workflow` section.
27
- 3. Default workflow (Phase 1 below)
28
-
29
- ### 0.2 Git Setup & Assign
30
-
31
- ```bash
32
- # Check uncommitted changes → AskUserQuestion if dirty
33
- [ -n "$(git status --porcelain)" ] && echo "Warning: Uncommitted changes"
34
-
35
- git checkout main && git fetch origin main && git reset --hard origin/main
36
-
37
- ISSUE_ID=$(viban assign 2>&1 | tail -1)
38
- [[ -z "$ISSUE_ID" || "$ISSUE_ID" == "No backlog" ]] && echo "No issues in backlog" && exit 0
39
- ```
40
-
41
- ### 0.3 Detect Sync & Create Branch
42
-
43
- ```bash
44
- ISSUE_JSON=$(viban get $ISSUE_ID)
45
- EXT_ID=$(echo "$ISSUE_JSON" | jq -r '.external_id // ""')
46
- SYNC_ACTIVE=false; EXTERNAL_NUM=""
47
-
48
- if [ -n "$EXT_ID" ] && [ "$EXT_ID" != "null" ]; then
49
- SYNC_ACTIVE=true
50
- EXTERNAL_NUM="${EXT_ID##*:}" # "github:42" -> "42"
51
- TITLE=$(echo "$ISSUE_JSON" | jq -r '.title' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | head -c 40)
52
- git checkout -b "issue-${EXTERNAL_NUM}-${TITLE}"
53
- else
54
- git checkout -b issue-$ISSUE_ID
55
- fi
56
- ```
57
-
58
- ### 0.4 Load Plan (if available)
59
-
60
- ```bash
61
- [ -f ".viban/plans/${ISSUE_ID}.md" ] && cat ".viban/plans/${ISSUE_ID}.md"
62
- ```
63
-
64
- If plan exists: use as primary guide for Phase 1, skip redundant analysis, but verify plan is still current.
65
-
66
- ---
67
-
68
- ## Phase 1: ANALYZE & IMPLEMENT
69
-
70
- ```bash
71
- viban get $ISSUE_ID
72
- ```
73
-
74
- **With project workflow**: follow its exact steps.
75
- **Default** (no workflow): Understand → Locate → Analyze root cause → Implement minimal changes.
76
-
77
- ---
78
-
79
- ## Phase 2: VERIFY
80
-
81
- Manual verification — do NOT run build/test here (Phase 3).
82
-
83
- | Type | Tool |
84
- |------|------|
85
- | Web UI | Playwright MCP (`browser_navigate`, `browser_snapshot`, `browser_click`) |
86
- | API | WebFetch |
87
- | CLI | Bash |
88
- | Visual | Read (screenshot files) |
89
- | Browser | Chrome DevTools MCP |
90
-
91
- Steps: identify what proves the fix → execute → confirm behavior → document evidence.
92
-
93
- Examples:
94
- - Web feature: navigate to page, take snapshot, verify element exists
95
- - API fix: fetch endpoint, check response status and body
96
- - CLI change: run command, verify output format
97
- - UI bug: navigate, interact, confirm no error
98
-
99
- If verification fails: return to Phase 1.
100
-
101
- ---
102
-
103
- ## Phase 3: SHIP
104
-
105
- ### 3.1 Build & Test
106
-
107
- Run project's build/test commands. If fail: fix → return to Phase 2.
108
-
109
- ### 3.2 Rebase
110
-
111
- ```bash
112
- git fetch origin main && git rebase origin/main
113
- # On conflict: resolve -> git add -> git rebase --continue
114
- ```
115
-
116
- ### 3.3 Commit & Push
117
-
118
- ```bash
119
- BRANCH=$(git branch --show-current)
120
- git add -A
121
-
122
- # Sync mode: "Closes #NUM" | Default: "Resolves: viban-ID"
123
- if [ "$SYNC_ACTIVE" = true ]; then
124
- git commit -m "fix: issue title summary
125
-
126
- - Root cause: ...
127
- - Solution: ...
128
-
129
- Closes #$EXTERNAL_NUM"
130
- else
131
- git commit -m "fix: issue title summary
132
-
133
- - Root cause: ...
134
- - Solution: ...
135
-
136
- Resolves: #$ISSUE_ID"
137
- fi
138
-
139
- git push -u origin "$BRANCH"
140
- ```
141
-
142
- ### 3.4 Create PR
143
-
144
- ```bash
145
- EXISTING_PR=$(gh pr list --head "$BRANCH" --json number -q '.[0].number')
146
-
147
- if [ -z "$EXISTING_PR" ]; then
148
- if [ "$SYNC_ACTIVE" = true ]; then
149
- gh pr create --title "fix: title" \
150
- --body "## Changes
151
- - ...
152
-
153
- Closes #$EXTERNAL_NUM
154
-
155
- ## Verification
156
- - [ ] Manual verification completed
157
- - [ ] Build passing
158
- - [ ] Tests passing (if applicable)" --base main
159
- else
160
- gh pr create --title "fix: title" \
161
- --body "## Changes
162
- - ...
163
-
164
- ## Verification
165
- - [ ] Manual verification completed
166
- - [ ] Build passing
167
- - [ ] Tests passing (if applicable)" --base main
168
- fi
169
- fi
170
- ```
171
-
172
- ### 3.5 Move to Review
173
-
174
- ```bash
175
- viban review $ISSUE_ID
176
- ```
177
-
178
- ---
179
-
180
- ## Phase 4: HANDOFF
181
-
182
- ```
183
- Issue #$ISSUE_ID → review | PR: gh pr view --web
184
- Verification: manual + build + workflow followed
185
- After approval: delete issue from viban TUI
186
- ```
187
-
188
- ---
189
-
190
- ## Checklist
191
-
192
- ```
193
- [ ] Read .viban/workflow.md (or CLAUDE.md fallback) for project workflow
194
- [ ] Working on issue-$ISSUE_ID branch
195
- [ ] Implementation complete
196
- [ ] Manual verification passed (using appropriate tools)
197
- [ ] Build & tests passing
198
- [ ] Rebase complete
199
- [ ] PR created
200
- [ ] viban review executed
201
- ```
202
-
203
- ---
204
-
205
- ## CRITICAL: Status Transition Rule
206
-
207
- > **NEVER exit with issue still in `in_progress`.** Always run `viban review $ISSUE_ID` before exiting — whether completed or stopped early.
208
-
209
- ## CLI Reference
210
-
211
- | Command | Description |
212
- |---------|-------------|
213
- | `viban` | Open TUI |
214
- | `viban list` | Print board |
215
- | `viban assign [session]` | Assign issue |
216
- | `viban get <id>` | View issue |
217
- | `viban review <id>` | Move to review |
14
+ This command is for **assignment and clarification only**. Use other tools to start working on the assigned issue.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-plugin-viban",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "main": "bin/viban",
6
6
  "bin": {
@@ -65,12 +65,20 @@ Issue #{id} registered
65
65
 
66
66
  ## Step 6: Suggest Plan Mode
67
67
 
68
- **Skip** for trivial issues (typo, one-liner config, simple copy edit).
69
- **Recommend** for everything else. Use AskUserQuestion:
68
+ **Skip** unless the issue clearly needs upfront design. Most issues don't.
70
69
 
71
- - header: "Next step", question: "Want to start planning the solution now?"
70
+ Only suggest plan mode when:
71
+ - The issue spans multiple subsystems or requires architectural decisions
72
+ - The description is too vague to act on without investigation
73
+ - P0 issues where a wrong fix could make things worse
74
+
75
+ **Do NOT suggest** for: single-file fixes, straightforward bugs, feature additions with clear scope, chores, refactors with obvious targets.
76
+
77
+ When suggesting, use AskUserQuestion:
78
+
79
+ - header: "Next step", question: "This looks complex — want to plan before working on it?"
72
80
  - options:
73
- - "Plan now (Recommended)" — Enter plan mode to analyze and design a solution
81
+ - "Plan now" — Enter plan mode to analyze and design a solution
74
82
  - "Later" — Just register, work on it later
75
83
 
76
84
  **"Plan now"**: `EnterPlanMode` → after approval, save to `.viban/plans/{issue-id}.md`:
@@ -90,11 +98,14 @@ Report: `Plan saved to .viban/plans/{issue-id}.md — /viban:assign will auto-lo
90
98
 
91
99
  **"Later"**: end skill.
92
100
 
93
- > **Bias towards planning.** When in doubt, suggest plan mode.
101
+ > **Bias towards skipping.** When in doubt, just register and finish.
94
102
 
95
103
  ## Rules
96
104
 
105
+ - **NEVER edit, create, or modify any source code files** — this skill registers issues only
106
+ - **NEVER start implementation** — even after plan mode, just save the plan and stop
97
107
  - No codebase exploration — assignee does that in `/viban:assign`
98
- - No solution proposals — symptoms only
108
+ - No solution proposals in the issue — symptoms only
99
109
  - Check duplicates first: `viban list`
100
110
  - P0 is system-down only
111
+ - After Step 6 completes (plan saved or skipped), the skill is **done**. Do not continue.
@@ -1,21 +1,19 @@
1
1
  ---
2
2
  name: assign
3
- description: "Assign and resolve first backlog issue from viban board through to PR completion"
3
+ description: "Assign first backlog issue clarify if unclear, then finish"
4
4
  ---
5
5
 
6
6
  # /assign
7
7
 
8
- First backlog issue Resolve PR completion
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.**
9
9
 
10
- > **CLI only** (no direct viban.json access) | **No worktree** (branch in main repo)
10
+ > **CLI only** (no direct viban.json access)
11
11
 
12
12
  ---
13
13
 
14
- ## Phase 0: SETUP
14
+ ## Step 0: Read Workflow (CRITICAL)
15
15
 
16
- ### 0.1 Read Workflow (CRITICAL)
17
-
18
- Check in priority order — first match wins, follow it exactly:
16
+ Check in priority order — first match wins:
19
17
 
20
18
  1. `.viban/workflow.md` → `[ -f ".viban/workflow.md" ] && cat ".viban/workflow.md"`
21
19
  2. CLAUDE.md (legacy, only if no workflow.md):
@@ -25,193 +23,91 @@ for path in "./CLAUDE.md" "./.claude/CLAUDE.md" "../CLAUDE.md"; do
25
23
  done
26
24
  ```
27
25
  Look for `Issue Resolution Workflow` or `Workflow` section.
28
- 3. Default workflow (Phase 1 below)
29
26
 
30
- ### 0.2 Git Setup & Assign
27
+ If a workflow exists, follow its conventions for issue handling.
31
28
 
32
- ```bash
33
- # Check uncommitted changes → AskUserQuestion if dirty
34
- [ -n "$(git status --porcelain)" ] && echo "Warning: Uncommitted changes"
29
+ ---
35
30
 
36
- git checkout main && git fetch origin main && git reset --hard origin/main
31
+ ## Step 1: Assign
37
32
 
33
+ ```bash
38
34
  ISSUE_ID=$(viban assign 2>&1 | tail -1)
39
35
  [[ -z "$ISSUE_ID" || "$ISSUE_ID" == "No backlog" ]] && echo "No issues in backlog" && exit 0
40
36
  ```
41
37
 
42
- ### 0.3 Detect Sync & Create Branch
38
+ If backlog is empty: notify user and exit.
43
39
 
44
- ```bash
45
- ISSUE_JSON=$(viban get $ISSUE_ID)
46
- EXT_ID=$(echo "$ISSUE_JSON" | jq -r '.external_id // ""')
47
- SYNC_ACTIVE=false; EXTERNAL_NUM=""
48
-
49
- if [ -n "$EXT_ID" ] && [ "$EXT_ID" != "null" ]; then
50
- SYNC_ACTIVE=true
51
- EXTERNAL_NUM="${EXT_ID##*:}" # "github:42" -> "42"
52
- git checkout -b "issue-${EXTERNAL_NUM}"
53
- else
54
- git checkout -b issue-$ISSUE_ID
55
- fi
56
- ```
57
-
58
- ### 0.4 Load Plan (if available)
59
-
60
- ```bash
61
- [ -f ".viban/plans/${ISSUE_ID}.md" ] && cat ".viban/plans/${ISSUE_ID}.md"
62
- ```
63
-
64
- If plan exists: use as primary guide for Phase 1, skip redundant analysis, but verify plan is still current.
65
-
66
- ---
67
-
68
- ## Phase 1: ANALYZE & IMPLEMENT
40
+ ## Step 2: Read Issue
69
41
 
70
42
  ```bash
71
43
  viban get $ISSUE_ID
72
44
  ```
73
45
 
74
- **With project workflow**: follow its exact steps.
75
- **Default** (no workflow): Understand → Locate → Analyze root cause → Implement minimal changes.
76
-
77
- ---
78
-
79
- ## Phase 2: VERIFY
80
-
81
- Manual verification — do NOT run build/test here (Phase 3).
82
-
83
- | Type | Tool |
84
- |------|------|
85
- | Web UI | Playwright MCP (`browser_navigate`, `browser_snapshot`, `browser_click`) |
86
- | API | WebFetch |
87
- | CLI | Bash |
88
- | Visual | Read (screenshot files) |
89
- | Browser | Chrome DevTools MCP |
46
+ Display the issue title, description, priority, and type to the user.
90
47
 
91
- Steps: identify what proves the fix → execute → confirm behavior → document evidence.
48
+ ## Step 3: Evaluate Clarity
92
49
 
93
- Examples:
94
- - Web feature: navigate to page, take snapshot, verify element exists
95
- - API fix: fetch endpoint, check response status and body
96
- - CLI change: run command, verify output format
97
- - UI bug: navigate, interact, confirm no error
50
+ Assess whether the issue description provides enough context for someone to start working on it:
98
51
 
99
- If verification fails: return to Phase 1.
100
-
101
- ---
52
+ - **Clear**: the symptom, affected area, and expected behavior are all understandable
53
+ - **Unclear**: vague description, missing context, ambiguous scope, or multiple possible interpretations
102
54
 
103
- ## Phase 3: SHIP
55
+ ### If Clear
104
56
 
105
- ### 3.1 Build & Test
57
+ Report the assignment and finish:
106
58
 
107
- Run project's build/test commands. If fail: fix → return to Phase 2.
108
-
109
- ### 3.2 Rebase
110
-
111
- ```bash
112
- git fetch origin main && git rebase origin/main
113
- # On conflict: resolve -> git add -> git rebase --continue
114
59
  ```
60
+ Issue #{id} assigned
61
+ Title: {title}
62
+ Priority: {priority} | Type: {type}
63
+ Status: in_progress
115
64
 
116
- ### 3.3 Commit & Push
117
-
118
- ```bash
119
- BRANCH=$(git branch --show-current)
120
- git add -A
121
-
122
- # Sync mode: "Closes #NUM" | Default: "Resolves: viban-ID"
123
- if [ "$SYNC_ACTIVE" = true ]; then
124
- git commit -m "fix: issue title summary
125
-
126
- - Root cause: ...
127
- - Solution: ...
128
-
129
- Closes #$EXTERNAL_NUM"
130
- else
131
- git commit -m "fix: issue title summary
132
-
133
- - Root cause: ...
134
- - Solution: ...
135
-
136
- Resolves: #$ISSUE_ID"
137
- fi
138
-
139
- git push -u origin "$BRANCH"
65
+ Ready for work.
140
66
  ```
141
67
 
142
- ### 3.4 Create PR
68
+ ### If Unclear
143
69
 
144
- ```bash
145
- EXISTING_PR=$(gh pr list --head "$BRANCH" --json number -q '.[0].number')
146
-
147
- if [ -z "$EXISTING_PR" ]; then
148
- if [ "$SYNC_ACTIVE" = true ]; then
149
- gh pr create --title "fix: title" \
150
- --body "## Changes
151
- - ...
152
-
153
- Closes #$EXTERNAL_NUM
154
-
155
- ## Verification
156
- - [ ] Manual verification completed
157
- - [ ] Build passing
158
- - [ ] Tests passing (if applicable)" --base main
159
- else
160
- gh pr create --title "fix: title" \
161
- --body "## Changes
162
- - ...
163
-
164
- ## Verification
165
- - [ ] Manual verification completed
166
- - [ ] Build passing
167
- - [ ] Tests passing (if applicable)" --base main
168
- fi
169
- fi
170
- ```
70
+ Interview the user with AskUserQuestion to gather missing context. Ask about:
71
+ - What specifically is the problem? (symptom)
72
+ - Where does it happen? (location/trigger)
73
+ - What is the expected behavior?
74
+ - Any additional constraints or context?
171
75
 
172
- ### 3.5 Move to Review
76
+ After gathering answers, update the issue description:
173
77
 
174
78
  ```bash
175
- viban review $ISSUE_ID
176
- ```
177
-
178
- ---
79
+ cat > /tmp/viban-desc-update.md <<'VIBAN_EOF'
80
+ {original description}
179
81
 
180
- ## Phase 4: HANDOFF
82
+ ## Clarification
83
+ {gathered context from interview}
84
+ VIBAN_EOF
181
85
 
182
- ```
183
- Issue #$ISSUE_ID → review | PR: gh pr view --web
184
- Verification: manual + build + workflow followed
185
- After approval: delete issue from viban TUI
86
+ # Re-add the issue with enriched description (edit via TUI or recreate)
186
87
  ```
187
88
 
188
- ---
189
-
190
- ## Checklist
89
+ Then report:
191
90
 
192
91
  ```
193
- [ ] Read .viban/workflow.md (or CLAUDE.md fallback) for project workflow
194
- [ ] Working on issue-$ISSUE_ID branch
195
- [ ] Implementation complete
196
- [ ] Manual verification passed (using appropriate tools)
197
- [ ] Build & tests passing
198
- [ ] Rebase complete
199
- [ ] PR created
200
- [ ] viban review executed
92
+ Issue #{id} assigned and clarified
93
+ Title: {title}
94
+ Priority: {priority} | Type: {type}
95
+ Status: in_progress
96
+
97
+ Clarification added to issue description.
201
98
  ```
202
99
 
203
100
  ---
204
101
 
205
- ## CRITICAL: Status Transition Rule
102
+ ## CRITICAL
206
103
 
207
- > **NEVER exit with issue still in `in_progress`.** Always run `viban review $ISSUE_ID` before exiting — whether completed or stopped early.
104
+ > - This command **assigns only**. Do NOT create branches, write code, or start implementation.
105
+ > - Do NOT run `viban review` — the issue stays in `in_progress` for the next work session.
106
+ > - If the issue is clear, just report and finish immediately.
208
107
 
209
108
  ## CLI Reference
210
109
 
211
110
  | Command | Description |
212
111
  |---------|-------------|
213
- | `viban` | Open TUI |
214
- | `viban list` | Print board |
215
112
  | `viban assign [session]` | Assign issue |
216
113
  | `viban get <id>` | View issue |
217
- | `viban review <id>` | Move to review |
@@ -104,8 +104,9 @@ You are resolving viban issue #{ID} in an isolated git worktree.
104
104
  - Main repo: {REPO_ROOT}
105
105
  - ALL file operations must happen inside the worktree path
106
106
 
107
- ## Workflow
108
- {paste workflow.md content}
107
+ ## Workflow (Analyze + Implement + Verify only)
108
+ {paste workflow.md Phase 1 (Analyze), Phase 2 (Implement), and Phase 3 (Verify) sections ONLY}
109
+ {DO NOT include: Pipeline summary, GitHub Sync, Phase 4 (Build and Test), Phase 5 (Ship), Issue Management, Post-merge, or Additional Rules}
109
110
 
110
111
  ## Issue Details
111
112
  {paste viban get output}
@@ -152,6 +153,7 @@ You are one of {N} parallel agents working in isolated git worktrees.
152
153
 
153
154
  CRITICAL:
154
155
  - Always run `viban review {ID}` before finishing, even on errors.
156
+ - Do NOT run `viban done` — the coordinator handles post-merge cleanup.
155
157
  - Do NOT run the full test suite — the coordinator handles that.
156
158
  - Do NOT remove the worktree — the coordinator handles cleanup.
157
159
  ```
package/commands/sync.md DELETED
@@ -1,99 +0,0 @@
1
- ---
2
- description: "Sync viban board with external issue tracker (GitHub, Jira, etc.)"
3
- ---
4
-
5
- # /sync - External Issue Tracker Sync
6
-
7
- Sync the viban board with an external issue tracker. Currently supports GitHub Issues via `gh` CLI.
8
-
9
- > **Principle**: Show what will happen before doing it. Never sync without user confirmation.
10
-
11
- ## Input
12
-
13
- **User Input**: `$ARGUMENTS`
14
-
15
- ## Step 1: Check Sync Configuration
16
-
17
- ```bash
18
- # Check if sync is already configured
19
- if [ -f ".viban/sync.json" ]; then
20
- echo "Sync configured"
21
- viban sync --status
22
- else
23
- echo "Sync not configured"
24
- fi
25
- ```
26
-
27
- - If **not configured**, proceed to Step 2
28
- - If **configured**, skip to Step 3
29
-
30
- ## Step 2: Initialize Sync
31
-
32
- ```bash
33
- viban sync --init
34
- ```
35
-
36
- This will:
37
- - Auto-detect the provider from git remote (defaults to GitHub)
38
- - Check that `gh` CLI is installed and authenticated
39
- - Create required labels on the remote repo
40
- - Initialize `sync.json` metadata
41
-
42
- If initialization fails, report the error and suggest fixes (install `gh`, run `gh auth login`, etc.).
43
-
44
- ## Step 3: Preview Changes (Dry Run)
45
-
46
- ```bash
47
- viban sync --dry-run
48
- ```
49
-
50
- Show the user what will happen:
51
- - `<-` Issues to pull from remote
52
- - `->` Cards to push to remote
53
- - `==` Unchanged items
54
- - `!!` Conflicts (and resolution strategy)
55
-
56
- ## Step 4: Confirm and Sync
57
-
58
- Ask the user for confirmation using AskUserQuestion:
59
-
60
- - header: "Sync"
61
- - question: "Apply these sync changes?"
62
- - options:
63
- - "Yes, sync now"
64
- - "Sync and push new local cards too (--push-new)"
65
- - "Pull only (remote -> local)"
66
- - "Cancel"
67
- - multiSelect: false
68
-
69
- Based on the answer:
70
-
71
- ```bash
72
- # Yes, sync now
73
- viban sync
74
-
75
- # With push-new
76
- viban sync --push-new
77
-
78
- # Pull only
79
- viban sync --pull-only
80
- ```
81
-
82
- ## Step 5: Report Results
83
-
84
- Show the sync summary:
85
- ```
86
- Sync complete:
87
- Pulled: N new/updated cards from remote
88
- Pushed: N cards to remote
89
- Conflicts: N (resolved by: remote wins)
90
- Unchanged: N
91
- ```
92
-
93
- ## Notes
94
-
95
- - **First sync imports all open issues** as backlog cards with `github:N` external IDs
96
- - **Conflicts**: when both sides changed, remote wins by default (with warning)
97
- - **Closed issues**: remote closed issues move viban card to `review` status
98
- - **Done cards**: `viban done` then sync closes the remote issue
99
- - **New local cards** are NOT pushed unless `--push-new` is specified (local-first default)
@@ -1,100 +0,0 @@
1
- ---
2
- name: sync
3
- description: "Sync viban board with external issue tracker (GitHub, Jira, etc.)"
4
- ---
5
-
6
- # /sync - External Issue Tracker Sync
7
-
8
- Sync the viban board with an external issue tracker. Currently supports GitHub Issues via `gh` CLI.
9
-
10
- > **Principle**: Show what will happen before doing it. Never sync without user confirmation.
11
-
12
- ## Input
13
-
14
- **User Input**: `$ARGUMENTS`
15
-
16
- ## Step 1: Check Sync Configuration
17
-
18
- ```bash
19
- # Check if sync is already configured
20
- if [ -f ".viban/sync.json" ]; then
21
- echo "Sync configured"
22
- viban sync --status
23
- else
24
- echo "Sync not configured"
25
- fi
26
- ```
27
-
28
- - If **not configured**, proceed to Step 2
29
- - If **configured**, skip to Step 3
30
-
31
- ## Step 2: Initialize Sync
32
-
33
- ```bash
34
- viban sync --init
35
- ```
36
-
37
- This will:
38
- - Auto-detect the provider from git remote (defaults to GitHub)
39
- - Check that `gh` CLI is installed and authenticated
40
- - Create required labels on the remote repo
41
- - Initialize `sync.json` metadata
42
-
43
- If initialization fails, report the error and suggest fixes (install `gh`, run `gh auth login`, etc.).
44
-
45
- ## Step 3: Preview Changes (Dry Run)
46
-
47
- ```bash
48
- viban sync --dry-run
49
- ```
50
-
51
- Show the user what will happen:
52
- - `<-` Issues to pull from remote
53
- - `->` Cards to push to remote
54
- - `==` Unchanged items
55
- - `!!` Conflicts (and resolution strategy)
56
-
57
- ## Step 4: Confirm and Sync
58
-
59
- Ask the user for confirmation using AskUserQuestion:
60
-
61
- - header: "Sync"
62
- - question: "Apply these sync changes?"
63
- - options:
64
- - "Yes, sync now"
65
- - "Sync and push new local cards too (--push-new)"
66
- - "Pull only (remote -> local)"
67
- - "Cancel"
68
- - multiSelect: false
69
-
70
- Based on the answer:
71
-
72
- ```bash
73
- # Yes, sync now
74
- viban sync
75
-
76
- # With push-new
77
- viban sync --push-new
78
-
79
- # Pull only
80
- viban sync --pull-only
81
- ```
82
-
83
- ## Step 5: Report Results
84
-
85
- Show the sync summary:
86
- ```
87
- Sync complete:
88
- Pulled: N new/updated cards from remote
89
- Pushed: N cards to remote
90
- Conflicts: N (resolved by: remote wins)
91
- Unchanged: N
92
- ```
93
-
94
- ## Notes
95
-
96
- - **First sync imports all open issues** as backlog cards with `github:N` external IDs
97
- - **Conflicts**: when both sides changed, remote wins by default (with warning)
98
- - **Closed issues**: remote closed issues move viban card to `review` status
99
- - **Done cards**: `viban done` then sync closes the remote issue
100
- - **New local cards** are NOT pushed unless `--push-new` is specified (local-first default)