claude-plugin-viban 1.3.12 → 1.3.14
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/README.md +208 -311
- package/bin/viban +48 -1719
- package/commands/approve.md +15 -0
- package/commands/assign.md +3 -5
- package/commands/reject.md +16 -0
- package/commands/review.md +21 -0
- package/docs/CLAUDE.md +13 -10
- package/install.sh +14 -0
- package/package.json +1 -1
- package/scripts/_viban +117 -0
- package/scripts/providers/github.sh +8 -0
- package/scripts/sync.sh +118 -21
- package/scripts/sync_create.sh +1 -0
- package/skills/approve/SKILL.md +112 -0
- package/skills/assign/SKILL.md +32 -8
- package/skills/parallel-assign/SKILL.md +11 -16
- package/skills/reject/SKILL.md +82 -0
- package/skills/review/SKILL.md +148 -0
- package/skills/setup/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# viban
|
|
2
2
|
|
|
3
|
-
**Vi**sual Kan**ban**
|
|
3
|
+
**Vi**sual Kan**ban** — Issue tracking designed for AI agents.
|
|
4
4
|
|
|
5
5
|
[](https://github.com/happy-nut/claude-plugin-viban/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/claude-plugin-viban)
|
|
@@ -8,316 +8,279 @@
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **No Worktree Complexity** - Just a single JSON file. No git worktrees, no complex setup.
|
|
14
|
-
- **Lightweight & Fast** - Pure shell script with minimal dependencies. Starts instantly.
|
|
15
|
-
- **Local First** - Your issues stay in your repo. No external services or accounts needed.
|
|
16
|
-
- **AI-Native** - Built for Claude Code integration from the ground up.
|
|
11
|
+
Register bugs. Claude picks them up, resolves them, and creates PRs — while you keep finding the next issue.
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
```bash
|
|
14
|
+
# You find a bug and register it
|
|
15
|
+
/viban:add "Login fails after password reset"
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
# Claude assigns itself the top-priority issue and starts working
|
|
18
|
+
/viban:assign
|
|
23
19
|
|
|
20
|
+
# Or resolve 3 issues in parallel — each in its own git worktree
|
|
21
|
+
/viban:parallel-assign 3
|
|
24
22
|
```
|
|
25
|
-
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
|
|
26
|
-
│ Session 1 │ │ Session 2 │ │ Session 3 │
|
|
27
|
-
│ │ │ │ │ │
|
|
28
|
-
│ Product QA │ │ Issue Work │ │ viban TUI │
|
|
29
|
-
│ + /viban:add │ │ + /viban:assign │ │ │
|
|
30
|
-
│ │ │ │ │ (always open) │
|
|
31
|
-
│ Find bugs, │ │ Pick & resolve │ │ Monitor board │
|
|
32
|
-
│ register issues │ │ issues │ │ in real-time │
|
|
33
|
-
└───────────────────┘ └───────────────────┘ └───────────────────┘
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
- **Session 1**: QA your product, find issues, run `/viban:add` to register them
|
|
37
|
-
- **Session 2**: Run `/viban:assign` to pick the next issue and resolve it
|
|
38
|
-
- **Session 3**: Keep `viban` TUI open to monitor the board
|
|
39
23
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
## Features
|
|
43
|
-
|
|
44
|
-
- **4-Column Kanban Board**: `backlog` → `in_progress` → `review` → `done`
|
|
45
|
-
- **Priority Levels**: P0 (critical) to P3 (low priority)
|
|
46
|
-
- **Type Tags**: bug, feat, chore, refactor
|
|
47
|
-
- **TUI Navigation**: Interactive terminal UI with gum
|
|
48
|
-
- **Parallel Sessions**: Multiple Claude Code sessions can work simultaneously
|
|
49
|
-
- **Session Assignment**: Prevents duplicate work across parallel agents
|
|
50
|
-
- **Claude Code Integration**: Built-in commands for automated issue resolution
|
|
51
|
-
|
|
52
|
-
## Requirements
|
|
24
|
+
## Why viban?
|
|
53
25
|
|
|
54
|
-
|
|
55
|
-
- python3 (macOS/Linux built-in)
|
|
56
|
-
- [gum](https://github.com/charmbracelet/gum)
|
|
57
|
-
- [jq](https://jqlang.github.io/jq/)
|
|
58
|
-
- [gh](https://cli.github.com/) (optional, for GitHub Issues sync)
|
|
26
|
+
GitHub Issues, Linear, and Jira are built for humans coordinating with humans. viban is built for **humans coordinating with AI agents**.
|
|
59
27
|
|
|
60
|
-
|
|
28
|
+
| | Traditional trackers | viban |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| **Who resolves issues?** | Human developers | AI agents (Claude Code) |
|
|
31
|
+
| **Parallel work** | Manual branch management | Isolated worktrees, zero conflicts |
|
|
32
|
+
| **Where it lives** | External SaaS | Your repo (single JSON file) |
|
|
33
|
+
| **Setup** | Accounts, permissions, integrations | `npm install -g claude-plugin-viban` |
|
|
34
|
+
| **Context switching** | Browser ↔ terminal | Everything in terminal |
|
|
35
|
+
| **Already using GitHub Issues?** | — | Two-way sync included |
|
|
61
36
|
|
|
62
|
-
##
|
|
37
|
+
## Quick Start
|
|
63
38
|
|
|
64
39
|
### For Claude Code Users
|
|
65
40
|
|
|
66
41
|
```bash
|
|
67
|
-
/
|
|
68
|
-
/
|
|
69
|
-
/viban:setup # Installs all dependencies automatically
|
|
42
|
+
/install claude-plugin-viban
|
|
43
|
+
/viban:setup
|
|
70
44
|
```
|
|
71
45
|
|
|
72
46
|
### For Terminal Users
|
|
73
47
|
|
|
74
|
-
```bash
|
|
75
|
-
curl -fsSL https://raw.githubusercontent.com/happy-nut/claude-plugin-viban/main/install.sh | bash
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Or via npm (requires zsh, gum, jq pre-installed):
|
|
79
48
|
```bash
|
|
80
49
|
npm install -g claude-plugin-viban
|
|
81
50
|
```
|
|
82
51
|
|
|
83
|
-
|
|
84
|
-
<summary>Troubleshooting: viban command not found</summary>
|
|
85
|
-
|
|
86
|
-
Add npm global bin to your PATH:
|
|
87
|
-
```bash
|
|
88
|
-
# For zsh
|
|
89
|
-
echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.zshrc && source ~/.zshrc
|
|
90
|
-
|
|
91
|
-
# For bash
|
|
92
|
-
echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc && source ~/.bashrc
|
|
93
|
-
```
|
|
94
|
-
</details>
|
|
95
|
-
|
|
96
|
-
## Usage
|
|
97
|
-
|
|
98
|
-
### TUI (Interactive Mode)
|
|
52
|
+
Then start tracking:
|
|
99
53
|
|
|
100
54
|
```bash
|
|
101
|
-
viban
|
|
55
|
+
viban add "Fix login error" "Users cannot login after password reset" P1 bug
|
|
56
|
+
viban add "Add dark mode" P2 feat
|
|
57
|
+
viban # Open TUI board
|
|
102
58
|
```
|
|
103
59
|
|
|
104
|
-
|
|
60
|
+
## How It Works
|
|
105
61
|
|
|
106
|
-
|
|
107
|
-
|-------|--------|----------|
|
|
108
|
-
| 1 | Column List | ↑↓ select, Enter to enter |
|
|
109
|
-
| 2 | Card List | ↑↓ select, Enter for details, `a` to add |
|
|
110
|
-
| 3 | Card Details | Change status, delete |
|
|
62
|
+
### Sequential Mode
|
|
111
63
|
|
|
112
|
-
|
|
113
|
-
- Navigate between backlog, in_progress, review, done columns
|
|
114
|
-
- View issue cards with priority and type badges
|
|
115
|
-
- Create new issues with rich descriptions
|
|
116
|
-
- Move issues between statuses
|
|
117
|
-
- Delete issues
|
|
64
|
+
Run multiple terminal sessions — one for QA, one for resolution, one for monitoring:
|
|
118
65
|
|
|
119
|
-
|
|
66
|
+

|
|
120
67
|
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
viban assign
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
viban sync # Sync with external tracker
|
|
132
|
-
viban migrate # Migrate: extract type from title
|
|
133
|
-
viban update # Update to latest version
|
|
134
|
-
viban help # Show help message
|
|
68
|
+
```
|
|
69
|
+
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
|
|
70
|
+
│ Session 1 │ │ Session 2 │ │ Session 3 │
|
|
71
|
+
│ │ │ │ │ │
|
|
72
|
+
│ Product QA │ │ Issue Work │ │ viban TUI │
|
|
73
|
+
│ + /viban:add │ │ + /viban:assign │ │ │
|
|
74
|
+
│ │ │ │ │ (always open) │
|
|
75
|
+
│ Find bugs, │ │ Pick & resolve │ │ Monitor board │
|
|
76
|
+
│ register issues │ │ issues │ │ in real-time │
|
|
77
|
+
└───────────────────┘ └───────────────────┘ └───────────────────┘
|
|
135
78
|
```
|
|
136
79
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
# Add a high-priority bug
|
|
141
|
-
viban add "Fix login error" "Users cannot login after password reset" P1 bug
|
|
142
|
-
|
|
143
|
-
# Add an issue with file attachments
|
|
144
|
-
viban add "Refactor auth" "Simplify login flow" P2 refactor src/auth.ts src/login.ts
|
|
145
|
-
|
|
146
|
-
# List all issues
|
|
147
|
-
viban list
|
|
148
|
-
|
|
149
|
-
# Assign first backlog issue to current session
|
|
150
|
-
viban assign
|
|
151
|
-
|
|
152
|
-
# Change priority of issue #3
|
|
153
|
-
viban priority 3 P1
|
|
80
|
+
### Parallel Mode
|
|
154
81
|
|
|
155
|
-
|
|
156
|
-
viban done 5
|
|
82
|
+
Resolve multiple issues at once with `/viban:parallel-assign`:
|
|
157
83
|
|
|
158
|
-
|
|
159
|
-
|
|
84
|
+
```
|
|
85
|
+
┌───────────────────┐
|
|
86
|
+
│ Coordinator │ /viban:parallel-assign 3
|
|
87
|
+
│ │
|
|
88
|
+
│ Assigns issues, │──┬──────────────────────────────────────┐
|
|
89
|
+
│ creates worktrees│ │ │
|
|
90
|
+
│ collects results │ ▼ ▼ ▼
|
|
91
|
+
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
92
|
+
│ │ │ Agent 1 │ │ Agent 2 │ │ Agent 3 │
|
|
93
|
+
│ │ │ wt/#12 │ │ wt/#13 │ │ wt/#14 │
|
|
94
|
+
│ │ │ Analyze │ │ Analyze │ │ Analyze │
|
|
95
|
+
│ │ │ Implement│ │ Implement│ │ Implement│
|
|
96
|
+
│ │ │ Commit │ │ Commit │ │ Commit │
|
|
97
|
+
│ Push, create PRs │ └──────────┘ └──────────┘ └──────────┘
|
|
98
|
+
│ Run tests, report│
|
|
99
|
+
└───────────────────┘
|
|
160
100
|
```
|
|
161
101
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
102
|
+
- Each agent works in an isolated git worktree (`.viban/worktrees/{ID}`)
|
|
103
|
+
- Zero interference between agents — no merge conflicts
|
|
104
|
+
- Coordinator pushes branches, creates PRs, and runs tests after all agents finish
|
|
165
105
|
|
|
166
|
-
|
|
106
|
+
## Claude Code Skills
|
|
167
107
|
|
|
168
|
-
|
|
108
|
+
These are the core AI-agent commands. Each one is a Claude Code slash command.
|
|
169
109
|
|
|
170
|
-
|
|
171
|
-
2. Infers priority and type from description
|
|
172
|
-
3. Registers with proper title, description, priority, type
|
|
173
|
-
4. Optionally enters plan mode to design a solution
|
|
110
|
+
### `/viban:add` — Register an issue
|
|
174
111
|
|
|
175
|
-
|
|
176
|
-
- Bug reporting
|
|
177
|
-
- Feature requests
|
|
178
|
-
- Converting free-form descriptions to structured issues
|
|
112
|
+
Analyzes your description and creates a structured issue with proper priority, type, and description.
|
|
179
113
|
|
|
180
|
-
|
|
114
|
+
```
|
|
115
|
+
/viban:add "Search is broken on mobile"
|
|
116
|
+
→ Infers: P1 bug, enriches description, registers to backlog
|
|
117
|
+
```
|
|
181
118
|
|
|
182
|
-
|
|
119
|
+
### `/viban:assign` — Assign and resolve
|
|
183
120
|
|
|
184
|
-
|
|
185
|
-
2. Evaluates description clarity
|
|
186
|
-
3. If unclear, interviews user and enriches the issue description
|
|
121
|
+
Picks the highest-priority unblocked backlog issue, assigns it, and follows your project's workflow to resolve it.
|
|
187
122
|
|
|
188
|
-
|
|
123
|
+
```
|
|
124
|
+
/viban:assign
|
|
125
|
+
→ Picks #7 (P0 bug), analyzes code, implements fix, creates PR
|
|
126
|
+
```
|
|
189
127
|
|
|
190
|
-
|
|
128
|
+
### `/viban:parallel-assign` — Parallel resolution
|
|
191
129
|
|
|
192
|
-
|
|
130
|
+
Assigns N issues (default 3, max 5) and spawns one agent per issue in isolated git worktrees.
|
|
193
131
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
132
|
+
```
|
|
133
|
+
/viban:parallel-assign 3
|
|
134
|
+
→ Assigns #8, #9, #10 — three agents work simultaneously
|
|
135
|
+
→ Each commits on its own branch, coordinator creates PRs
|
|
136
|
+
```
|
|
198
137
|
|
|
199
|
-
|
|
200
|
-
- Batch processing a backlog
|
|
201
|
-
- Parallel agent workflows with zero interference
|
|
202
|
-
- Rapid issue throughput
|
|
138
|
+
### `/viban:setup` — Install and configure
|
|
203
139
|
|
|
204
|
-
|
|
140
|
+
Installs dependencies, detects your project conventions, and generates a workflow file.
|
|
205
141
|
|
|
206
|
-
|
|
142
|
+
## TUI
|
|
207
143
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
4. Interviews for workflow preferences (pipeline depth, issue numbering)
|
|
212
|
-
5. Generates `.viban/workflow.md` for `/viban:assign` to follow
|
|
144
|
+
```bash
|
|
145
|
+
viban # Launch interactive board
|
|
146
|
+
```
|
|
213
147
|
|
|
214
|
-
|
|
148
|
+
3-column Kanban board (backlog → in_progress → review). Completed issues move to history.
|
|
215
149
|
|
|
216
|
-
|
|
150
|
+
| Level | Screen | Controls |
|
|
151
|
+
|-------|--------|----------|
|
|
152
|
+
| 1 | Column List | ↑↓ select, Enter to enter |
|
|
153
|
+
| 2 | Card List | ↑↓ select, Enter for details, `a` to add |
|
|
154
|
+
| 3 | Card Details | Change status, delete |
|
|
217
155
|
|
|
218
|
-
|
|
156
|
+
## CLI Reference
|
|
219
157
|
|
|
220
158
|
```bash
|
|
221
|
-
#
|
|
222
|
-
viban
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
viban
|
|
226
|
-
|
|
227
|
-
#
|
|
228
|
-
|
|
159
|
+
# Board
|
|
160
|
+
viban list # Show board
|
|
161
|
+
viban list --status backlog --priority P0,P1 # Filter
|
|
162
|
+
viban list --type bug --search "auth" # Search
|
|
163
|
+
viban history # Completed issues
|
|
164
|
+
viban stats # Throughput metrics
|
|
165
|
+
viban export [md|html] # Export board
|
|
166
|
+
|
|
167
|
+
# Issues
|
|
168
|
+
viban add "Title" ["Desc"] [P0-P3] [type] [--parent <id>]
|
|
169
|
+
viban edit <id> # Edit in editor
|
|
170
|
+
viban get <id> # JSON details
|
|
171
|
+
viban priority <id> <P0-P3>
|
|
172
|
+
viban comment <id> "msg"
|
|
173
|
+
viban attach <id> <file1> [file2...]
|
|
174
|
+
|
|
175
|
+
# Workflow
|
|
176
|
+
viban assign # Assign top backlog
|
|
177
|
+
viban review [id] # → review
|
|
178
|
+
viban move <id> <status> # → any status
|
|
179
|
+
viban done <id> [--purge] [--dry-run] # → done
|
|
180
|
+
|
|
181
|
+
# Dependencies
|
|
182
|
+
viban link <id> blocks <id>
|
|
183
|
+
viban unlink <id> blocks <id> [--dry-run]
|
|
184
|
+
|
|
185
|
+
# Maintenance
|
|
186
|
+
viban sync # GitHub sync
|
|
187
|
+
viban backup / viban restore [file]
|
|
188
|
+
viban changelog [range]
|
|
189
|
+
viban update
|
|
229
190
|
```
|
|
230
191
|
|
|
231
|
-
>
|
|
192
|
+
<details>
|
|
193
|
+
<summary><strong>GitHub Issues Sync</strong></summary>
|
|
232
194
|
|
|
233
|
-
|
|
195
|
+
Two-way sync with GitHub Issues. Comments, dependencies, and sub-tasks are synced.
|
|
234
196
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
197
|
+
```bash
|
|
198
|
+
viban sync --init # Initialize (auto-detects from git remote)
|
|
199
|
+
viban sync --dry-run # Preview changes
|
|
200
|
+
viban sync # Pull + push
|
|
201
|
+
viban sync --push-new # Push local-only issues to GitHub
|
|
202
|
+
```
|
|
239
203
|
|
|
240
|
-
|
|
204
|
+
**Status mapping:**
|
|
241
205
|
|
|
242
|
-
| viban
|
|
243
|
-
|
|
206
|
+
| viban | GitHub |
|
|
207
|
+
|-------|--------|
|
|
244
208
|
| `backlog` | *(no label)* |
|
|
245
209
|
| `in_progress` | `in-progress` |
|
|
246
210
|
| `review` | `review` |
|
|
247
211
|
| `done` | *(issue closed)* |
|
|
248
212
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
- [gh CLI](https://cli.github.com/) installed and authenticated (`gh auth login`)
|
|
252
|
-
- Repository must have a GitHub remote
|
|
253
|
-
|
|
254
|
-
## Configuration
|
|
255
|
-
|
|
256
|
-
### Data Location (viban.json)
|
|
213
|
+
Requires [gh CLI](https://cli.github.com/) authenticated with `gh auth login`.
|
|
257
214
|
|
|
258
|
-
|
|
215
|
+
</details>
|
|
259
216
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
| 1 | `$VIBAN_DATA_DIR` | Explicit override via environment variable |
|
|
263
|
-
| 2 | `.viban/` | Default (all projects) |
|
|
217
|
+
<details>
|
|
218
|
+
<summary><strong>Issue Templates</strong></summary>
|
|
264
219
|
|
|
265
|
-
|
|
220
|
+
Create `.viban/templates.json` to define defaults per issue type:
|
|
266
221
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"bug": {
|
|
225
|
+
"priority": "P1",
|
|
226
|
+
"description": "## Bug Report\n\n**Steps to reproduce:**\n\n**Expected:**\n\n**Actual:**"
|
|
227
|
+
},
|
|
228
|
+
"feat": {
|
|
229
|
+
"priority": "P2",
|
|
230
|
+
"description": "## Feature\n\n**User story:**\n\n**Acceptance criteria:**"
|
|
231
|
+
}
|
|
232
|
+
}
|
|
273
233
|
```
|
|
274
234
|
|
|
275
|
-
|
|
276
|
-
```bash
|
|
277
|
-
export VIBAN_DATA_DIR="/path/to/shared/data"
|
|
278
|
-
viban list # Uses /path/to/shared/data/viban.json
|
|
279
|
-
```
|
|
235
|
+
Unset fields are filled from the template when the type matches.
|
|
280
236
|
|
|
281
|
-
|
|
237
|
+
</details>
|
|
282
238
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
- Creates `viban.json` with empty issue list
|
|
286
|
-
- No manual setup required
|
|
239
|
+
<details>
|
|
240
|
+
<summary><strong>Configuration</strong></summary>
|
|
287
241
|
|
|
288
|
-
###
|
|
242
|
+
### Data Location
|
|
289
243
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
244
|
+
| Priority | Location | When |
|
|
245
|
+
|----------|----------|------|
|
|
246
|
+
| 1 | `$VIBAN_DATA_DIR` | Explicit override |
|
|
247
|
+
| 2 | `.viban/` | Default |
|
|
248
|
+
|
|
249
|
+
Auto-migrates from legacy `.git/` location.
|
|
295
250
|
|
|
296
251
|
### Priority Levels
|
|
297
252
|
|
|
298
253
|
| Priority | Description |
|
|
299
254
|
|----------|-------------|
|
|
300
|
-
| **P0** | Critical
|
|
301
|
-
| **P1** | High
|
|
302
|
-
| **P2** | Medium
|
|
303
|
-
| **P3** | Low
|
|
255
|
+
| **P0** | Critical — blocks all work |
|
|
256
|
+
| **P1** | High — must do soon |
|
|
257
|
+
| **P2** | Medium — normal priority |
|
|
258
|
+
| **P3** | Low — nice to have |
|
|
304
259
|
|
|
305
260
|
### Type Tags
|
|
306
261
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
262
|
+
`bug` · `feat` · `refactor` · `chore`
|
|
263
|
+
|
|
264
|
+
### Status Flow
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
backlog → in_progress → review → done
|
|
268
|
+
↑ ↑ │
|
|
269
|
+
└───────────┴───────────┘
|
|
270
|
+
(viban move)
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
</details>
|
|
313
274
|
|
|
314
|
-
|
|
275
|
+
<details>
|
|
276
|
+
<summary><strong>Data Structure</strong></summary>
|
|
315
277
|
|
|
316
|
-
Issues are stored in
|
|
278
|
+
Issues are stored in `.viban/viban.json`:
|
|
317
279
|
|
|
318
280
|
```json
|
|
319
281
|
{
|
|
320
|
-
"version":
|
|
282
|
+
"version": 2,
|
|
283
|
+
"next_id": 4,
|
|
321
284
|
"issues": [
|
|
322
285
|
{
|
|
323
286
|
"id": 1,
|
|
@@ -327,115 +290,49 @@ Issues are stored in `viban.json`:
|
|
|
327
290
|
"priority": "P1",
|
|
328
291
|
"type": "bug",
|
|
329
292
|
"assigned_to": "session-abc123",
|
|
330
|
-
"
|
|
331
|
-
"
|
|
293
|
+
"parent_id": null,
|
|
294
|
+
"blocked_by": [3],
|
|
295
|
+
"comments": [
|
|
296
|
+
{"text": "Root cause found", "created_at": "2026-01-23T14:00:00Z"}
|
|
297
|
+
],
|
|
298
|
+
"attachments": [],
|
|
299
|
+
"created_at": "2026-01-23T10:00:00Z",
|
|
300
|
+
"updated_at": "2026-01-23T14:30:00Z"
|
|
332
301
|
}
|
|
333
302
|
]
|
|
334
303
|
}
|
|
335
304
|
```
|
|
336
305
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
Multiple Claude Code sessions can work simultaneously:
|
|
340
|
-
|
|
341
|
-
1. Each session calls `/viban:assign`
|
|
342
|
-
2. Session ID is recorded in `assigned_to` field
|
|
343
|
-
3. Other sessions skip already-assigned issues
|
|
344
|
-
4. Completion moves issue to `review` or `done`
|
|
345
|
-
|
|
346
|
-
This prevents duplicate work and enables parallel agent workflows.
|
|
306
|
+
</details>
|
|
347
307
|
|
|
348
|
-
##
|
|
308
|
+
## Requirements
|
|
349
309
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
│ └── workflows/
|
|
356
|
-
│ ├── ci.yml # CI testing
|
|
357
|
-
│ └── release.yml # NPM publishing
|
|
358
|
-
├── bin/
|
|
359
|
-
│ └── viban # Main TUI/CLI script
|
|
360
|
-
├── commands/
|
|
361
|
-
│ ├── add.md # /viban:add command
|
|
362
|
-
│ ├── assign.md # /viban:assign command
|
|
363
|
-
│ ├── parallel-assign.md # /viban:parallel-assign command
|
|
364
|
-
│ └── setup.md # /viban:setup command
|
|
365
|
-
├── docs/
|
|
366
|
-
│ ├── CLAUDE.md # Claude Code integration guide
|
|
367
|
-
│ └── release.md # Release workflow
|
|
368
|
-
├── scripts/
|
|
369
|
-
│ ├── check-deps.sh # Dependency checker
|
|
370
|
-
│ ├── generate-release-notes.sh # Release notes generator
|
|
371
|
-
│ ├── sync.sh # Core sync engine (provider-agnostic)
|
|
372
|
-
│ ├── sync_create.sh # Sync initialization
|
|
373
|
-
│ ├── providers/
|
|
374
|
-
│ │ └── github.sh # GitHub Issues provider
|
|
375
|
-
│ └── tui_coprocess.py # Persistent Python coprocess for TUI rendering
|
|
376
|
-
├── skills/
|
|
377
|
-
│ ├── add/SKILL.md # /viban:add skill
|
|
378
|
-
│ ├── assign/SKILL.md # /viban:assign skill
|
|
379
|
-
│ ├── parallel-assign/SKILL.md # /viban:parallel-assign skill
|
|
380
|
-
│ └── setup/SKILL.md # /viban:setup skill
|
|
381
|
-
├── tests/
|
|
382
|
-
│ ├── run_all.zsh # Test runner
|
|
383
|
-
│ ├── test_cmd_add.zsh # Add command tests
|
|
384
|
-
│ ├── test_coprocess.zsh # Python coprocess tests
|
|
385
|
-
│ ├── test_install.zsh # Installation tests
|
|
386
|
-
│ ├── test_layout.zsh # TUI layout tests
|
|
387
|
-
│ ├── test_pad_width.zsh # Unicode width tests
|
|
388
|
-
│ ├── test_sort_order.zsh # Sort order tests
|
|
389
|
-
│ ├── test_sync.zsh # Sync engine tests
|
|
390
|
-
│ └── test_sync_auto.zsh # Auto-sync tests
|
|
391
|
-
├── LICENSE # MIT License
|
|
392
|
-
├── package.json # NPM package config
|
|
393
|
-
└── README.md # This file
|
|
394
|
-
```
|
|
310
|
+
- zsh
|
|
311
|
+
- python3 (macOS/Linux built-in)
|
|
312
|
+
- [gum](https://github.com/charmbracelet/gum)
|
|
313
|
+
- [jq](https://jqlang.github.io/jq/)
|
|
314
|
+
- [gh](https://cli.github.com/) (optional, for GitHub sync)
|
|
395
315
|
|
|
396
316
|
## Development
|
|
397
317
|
|
|
398
|
-
### Running Tests
|
|
399
|
-
|
|
400
318
|
```bash
|
|
401
|
-
# Install dependencies
|
|
402
319
|
brew install gum jq
|
|
403
|
-
|
|
404
|
-
# Run the full test suite (8 suites, 39 tests)
|
|
405
|
-
zsh tests/run_all.zsh
|
|
320
|
+
zsh tests/run_all.zsh # 19 suites, 212 tests
|
|
406
321
|
```
|
|
407
322
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
See [docs/release.md](docs/release.md) for the full release workflow.
|
|
411
|
-
|
|
412
|
-
```bash
|
|
413
|
-
# GitHub Actions will automatically publish to npm on tag push
|
|
414
|
-
```
|
|
323
|
+
See [docs/release.md](docs/release.md) for publishing.
|
|
415
324
|
|
|
416
325
|
## Contributing
|
|
417
326
|
|
|
418
|
-
Contributions are welcome! Please:
|
|
419
|
-
|
|
420
327
|
1. Fork the repository
|
|
421
|
-
2. Create a feature branch
|
|
422
|
-
3. Commit your changes
|
|
423
|
-
4.
|
|
424
|
-
5. Open a Pull Request
|
|
328
|
+
2. Create a feature branch
|
|
329
|
+
3. Commit your changes
|
|
330
|
+
4. Open a Pull Request
|
|
425
331
|
|
|
426
332
|
## License
|
|
427
333
|
|
|
428
|
-
MIT
|
|
429
|
-
|
|
430
|
-
## Author
|
|
431
|
-
|
|
432
|
-
**happy-nut**
|
|
433
|
-
|
|
434
|
-
- GitHub: [@happy-nut](https://github.com/happy-nut)
|
|
435
|
-
- Repository: [claude-plugin-viban](https://github.com/happy-nut/claude-plugin-viban)
|
|
334
|
+
MIT — see [LICENSE](LICENSE).
|
|
436
335
|
|
|
437
336
|
## Links
|
|
438
337
|
|
|
439
|
-
- [npm
|
|
440
|
-
- [Documentation](https://github.com/happy-nut/claude-plugin-viban/tree/main/docs)
|
|
441
|
-
- [Issues](https://github.com/happy-nut/claude-plugin-viban/issues)
|
|
338
|
+
- [npm](https://www.npmjs.com/package/claude-plugin-viban) · [Issues](https://github.com/happy-nut/claude-plugin-viban/issues) · [Docs](https://github.com/happy-nut/claude-plugin-viban/tree/main/docs)
|