claude-plugin-viban 1.0.0 → 1.0.4
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 +0 -1
- package/README.md +59 -17
- package/commands/assign.md +181 -7
- package/commands/setup.md +140 -0
- package/{skills/todo/SKILL.md → commands/task.md} +3 -7
- package/install.sh +219 -0
- package/package.json +2 -2
- package/commands/todo.md +0 -15
- package/skills/assign/SKILL.md +0 -203
package/README.md
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
# viban
|
|
2
2
|
|
|
3
|
-
**Vi**sual Kan**ban** -
|
|
3
|
+
**Vi**sual Kan**ban** - A simple, lightweight local Kanban board for AI-human collaborative issue tracking.
|
|
4
4
|
|
|
5
5
|
[](https://github.com/happy-nut/claude-plugin-viban/actions/workflows/ci.yml)
|
|
6
|
-
[](https://www.npmjs.com/package/claude-plugin-viban)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|
|
|
9
|
+
## Why viban?
|
|
10
|
+
|
|
11
|
+
- **No Worktree Complexity** - Just a single JSON file. No git worktrees, no complex setup.
|
|
12
|
+
- **Lightweight & Fast** - Pure shell script with minimal dependencies. Starts instantly.
|
|
13
|
+
- **Local First** - Your issues stay in your repo. No external services or accounts needed.
|
|
14
|
+
- **AI-Native** - Built for Claude Code integration from the ground up.
|
|
15
|
+
|
|
16
|
+
## Recommended Workflow
|
|
17
|
+
|
|
18
|
+
The most effective way to use viban is with **multiple terminal sessions**:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
22
|
+
│ Session 1 │ │ Session 2 │ │ Session 3 │
|
|
23
|
+
│ │ │ │ │ │
|
|
24
|
+
│ Product QA │ │ Issue Work │ │ viban TUI │
|
|
25
|
+
│ + /task │ │ + /assign │ │ │
|
|
26
|
+
│ │ │ │ │ (always open) │
|
|
27
|
+
│ Find bugs, │ │ Pick & resolve │ │ Monitor board │
|
|
28
|
+
│ register issues│ │ issues │ │ in real-time │
|
|
29
|
+
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- **Session 1**: QA your product, find issues, run `/task` to register them
|
|
33
|
+
- **Session 2**: Run `/assign` to pick the next issue and resolve it
|
|
34
|
+
- **Session 3**: Keep `viban` TUI open to monitor the board
|
|
35
|
+
|
|
36
|
+
This separation keeps your workflow clean and prevents context switching.
|
|
37
|
+
|
|
9
38
|
## Features
|
|
10
39
|
|
|
11
40
|
- **3-Column Kanban Board**: `backlog` → `in_progress` → `review` → `done`
|
|
12
41
|
- **Priority Levels**: P0 (critical) to P3 (low priority)
|
|
13
|
-
- **Type Tags**: bug, feat, chore, refactor
|
|
42
|
+
- **Type Tags**: bug, feat, chore, refactor
|
|
14
43
|
- **TUI Navigation**: Interactive terminal UI with gum
|
|
15
44
|
- **Parallel Sessions**: Multiple Claude Code sessions can work simultaneously
|
|
16
45
|
- **Session Assignment**: Prevents duplicate work across parallel agents
|
|
17
|
-
- **Claude Code Integration**: Built-in
|
|
46
|
+
- **Claude Code Integration**: Built-in commands for automated issue resolution
|
|
18
47
|
|
|
19
48
|
## Requirements
|
|
20
49
|
|
|
@@ -24,7 +53,17 @@
|
|
|
24
53
|
|
|
25
54
|
## Installation
|
|
26
55
|
|
|
27
|
-
###
|
|
56
|
+
### One-liner (Recommended)
|
|
57
|
+
|
|
58
|
+
Installs all dependencies (zsh, gum, jq) and viban automatically:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
curl -fsSL https://raw.githubusercontent.com/happy-nut/claude-plugin-viban/main/install.sh | bash
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Via npm
|
|
65
|
+
|
|
66
|
+
If you already have zsh, gum, and jq installed:
|
|
28
67
|
|
|
29
68
|
```bash
|
|
30
69
|
npm install -g claude-plugin-viban
|
|
@@ -76,7 +115,7 @@ source ~/.zshrc
|
|
|
76
115
|
|
|
77
116
|
### Claude Code Plugin
|
|
78
117
|
|
|
79
|
-
To use viban
|
|
118
|
+
To use viban commands in Claude Code:
|
|
80
119
|
|
|
81
120
|
```bash
|
|
82
121
|
# Add as plugin marketplace
|
|
@@ -85,9 +124,12 @@ To use viban skills in Claude Code:
|
|
|
85
124
|
# Install the plugin
|
|
86
125
|
/plugin install viban
|
|
87
126
|
|
|
127
|
+
# Install dependencies (first time only)
|
|
128
|
+
/setup
|
|
129
|
+
|
|
88
130
|
# Now you can use:
|
|
89
|
-
/
|
|
90
|
-
/
|
|
131
|
+
/assign
|
|
132
|
+
/task
|
|
91
133
|
```
|
|
92
134
|
|
|
93
135
|
## Usage
|
|
@@ -146,9 +188,9 @@ viban get 3
|
|
|
146
188
|
|
|
147
189
|
### Claude Code Integration
|
|
148
190
|
|
|
149
|
-
viban provides
|
|
191
|
+
viban provides commands for automated issue management in Claude Code:
|
|
150
192
|
|
|
151
|
-
#### `/
|
|
193
|
+
#### `/assign` - Auto-resolve next issue
|
|
152
194
|
|
|
153
195
|
Automatically picks the highest priority backlog issue and executes the full resolution workflow:
|
|
154
196
|
|
|
@@ -162,7 +204,7 @@ Automatically picks the highest priority backlog issue and executes the full res
|
|
|
162
204
|
- Parallel agent workflows
|
|
163
205
|
- Pre-prioritized backlog processing
|
|
164
206
|
|
|
165
|
-
#### `/
|
|
207
|
+
#### `/task` - Create structured issue
|
|
166
208
|
|
|
167
209
|
Analyzes a problem and creates a properly structured viban issue:
|
|
168
210
|
|
|
@@ -268,7 +310,7 @@ Issues are stored in `viban.json`:
|
|
|
268
310
|
|
|
269
311
|
Multiple Claude Code sessions can work simultaneously:
|
|
270
312
|
|
|
271
|
-
1. Each session calls `/
|
|
313
|
+
1. Each session calls `/assign`
|
|
272
314
|
2. Session ID is recorded in `assigned_to` field
|
|
273
315
|
3. Other sessions skip already-assigned issues
|
|
274
316
|
4. Completion moves issue to `review` or `done`
|
|
@@ -287,14 +329,14 @@ claude-plugin-viban/
|
|
|
287
329
|
│ └── release.yml # NPM publishing
|
|
288
330
|
├── bin/
|
|
289
331
|
│ └── viban # Main TUI/CLI script
|
|
290
|
-
├── commands/ # Claude Code commands (deprecated)
|
|
291
332
|
├── docs/
|
|
292
333
|
│ └── CLAUDE.md # Claude Code integration guide
|
|
293
334
|
├── scripts/
|
|
294
335
|
│ └── check-deps.sh # Dependency checker
|
|
295
|
-
├──
|
|
296
|
-
│ ├── assign
|
|
297
|
-
│
|
|
336
|
+
├── commands/
|
|
337
|
+
│ ├── assign.md # /assign command
|
|
338
|
+
│ ├── setup.md # /setup command
|
|
339
|
+
│ └── task.md # /task command
|
|
298
340
|
├── LICENSE # MIT License
|
|
299
341
|
├── package.json # NPM package config
|
|
300
342
|
└── README.md # This file
|
|
@@ -356,6 +398,6 @@ MIT License - see [LICENSE](LICENSE) file for details.
|
|
|
356
398
|
|
|
357
399
|
## Links
|
|
358
400
|
|
|
359
|
-
- [npm package](https://www.npmjs.com/package
|
|
401
|
+
- [npm package](https://www.npmjs.com/package/claude-plugin-viban)
|
|
360
402
|
- [Documentation](https://github.com/happy-nut/claude-plugin-viban/tree/main/docs)
|
|
361
403
|
- [Issues](https://github.com/happy-nut/claude-plugin-viban/issues)
|
package/commands/assign.md
CHANGED
|
@@ -1,14 +1,188 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: assign
|
|
3
|
-
description: "Assign and resolve first backlog issue from viban board"
|
|
3
|
+
description: "Assign and resolve first backlog issue from viban board through to PR completion"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# /assign
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- Assign first backlog issue
|
|
10
|
-
- Analyze and resolve
|
|
11
|
-
- Create PR
|
|
12
|
-
- Move to review status
|
|
8
|
+
Workflow: First backlog issue → Resolve → PR completion
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
> **No direct `viban.json` access** — CLI only
|
|
11
|
+
> **No Worktree** — Work directly on branch in main repo
|
|
12
|
+
> **Workflow**: Read CLAUDE.md first, follow project workflow if exists
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Phase 0: CONTEXT & SETUP
|
|
17
|
+
|
|
18
|
+
### 0.1 Read Project Workflow (CRITICAL)
|
|
19
|
+
|
|
20
|
+
**Before any work, read the project's CLAUDE.md:**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Check for CLAUDE.md at common locations
|
|
24
|
+
for path in "./CLAUDE.md" "./.claude/CLAUDE.md" "../CLAUDE.md"; do
|
|
25
|
+
[ -f "$path" ] && cat "$path"
|
|
26
|
+
done
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Look for:**
|
|
30
|
+
- `Issue Resolution Workflow` section
|
|
31
|
+
- `Workflow` or `Development Process` section
|
|
32
|
+
- Specific steps like `ultrawork`, `code-simplifier`, `code-review`
|
|
33
|
+
- Testing requirements (`pytest`, manual verification, etc.)
|
|
34
|
+
|
|
35
|
+
**IMPORTANT:**
|
|
36
|
+
- If project has a defined workflow → **MUST follow it exactly**
|
|
37
|
+
- If no workflow found → Use default workflow (Phase 1 below)
|
|
38
|
+
|
|
39
|
+
### 0.2 Git Setup
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 1. Check for uncommitted changes
|
|
43
|
+
if [ -n "$(git status --porcelain)" ]; then
|
|
44
|
+
echo "Warning: Uncommitted changes detected"
|
|
45
|
+
# → Ask user whether to commit (use AskUserQuestion)
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# 2. Switch to main branch and sync
|
|
49
|
+
git checkout main
|
|
50
|
+
git fetch origin main
|
|
51
|
+
git reset --hard origin/main
|
|
52
|
+
|
|
53
|
+
# 3. Assign issue (state change only, no worktree)
|
|
54
|
+
ISSUE_ID=$(viban assign 2>&1 | tail -1)
|
|
55
|
+
if [ -z "$ISSUE_ID" ] || [ "$ISSUE_ID" = "No backlog" ]; then
|
|
56
|
+
echo "No issues in backlog"
|
|
57
|
+
exit 0
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# 4. Create new branch
|
|
61
|
+
git checkout -b viban-$ISSUE_ID
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**If backlog is empty**: Notify user and exit
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Phase 1: ANALYZE → VERIFY
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
viban get $ISSUE_ID
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### If Project Workflow Exists (from CLAUDE.md):
|
|
75
|
+
|
|
76
|
+
**Follow the project's exact steps.** Common patterns include:
|
|
77
|
+
|
|
78
|
+
1. Root cause analysis (5 Whys)
|
|
79
|
+
2. Context verification (ask if unclear)
|
|
80
|
+
3. Implementation & verification strategy
|
|
81
|
+
4. Code implementation (`/ultrawork` for 2+ files)
|
|
82
|
+
5. **Manual verification** (browser/API, NOT pytest)
|
|
83
|
+
6. Code simplification (`/code-simplifier`)
|
|
84
|
+
7. Code review (`/code-review`)
|
|
85
|
+
|
|
86
|
+
### Default Workflow (if no project workflow):
|
|
87
|
+
|
|
88
|
+
1. **Understand**: Read the issue, understand the problem
|
|
89
|
+
2. **Locate**: Find relevant code files
|
|
90
|
+
3. **Analyze**: Determine root cause
|
|
91
|
+
4. **Implement**: Make minimal, focused changes
|
|
92
|
+
5. **Verify**: Test the fix works (appropriate method for the project)
|
|
93
|
+
6. **Review**: Self-review changes for quality
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Phase 2: SHIP
|
|
98
|
+
|
|
99
|
+
### 2.1 Rebase
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git fetch origin main
|
|
103
|
+
git rebase origin/main
|
|
104
|
+
# On conflict: resolve → git add → git rebase --continue
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 2.2 Commit & Push
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git add -A
|
|
111
|
+
git commit -m "fix: issue title summary
|
|
112
|
+
|
|
113
|
+
- Root cause: ...
|
|
114
|
+
- Solution: ...
|
|
115
|
+
|
|
116
|
+
Resolves: viban-$ISSUE_ID"
|
|
117
|
+
|
|
118
|
+
git push -u origin viban-$ISSUE_ID
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 2.3 Create PR
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
EXISTING_PR=$(gh pr list --head viban-$ISSUE_ID --json number -q '.[0].number')
|
|
125
|
+
[ -z "$EXISTING_PR" ] && gh pr create \
|
|
126
|
+
--title "viban-$ISSUE_ID: title" \
|
|
127
|
+
--body "## Changes
|
|
128
|
+
- ...
|
|
129
|
+
|
|
130
|
+
## Testing
|
|
131
|
+
- [ ] Tests passing (if applicable)
|
|
132
|
+
- [ ] Manual verification (if applicable)" \
|
|
133
|
+
--base main
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 2.4 Issue → review
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
viban review $ISSUE_ID
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Phase 3: HANDOFF
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
148
|
+
Human Review Required
|
|
149
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
150
|
+
|
|
151
|
+
Issue #$ISSUE_ID → review status
|
|
152
|
+
|
|
153
|
+
PR: gh pr view viban-$ISSUE_ID --web
|
|
154
|
+
|
|
155
|
+
Verification complete:
|
|
156
|
+
- Project workflow followed
|
|
157
|
+
- Changes tested appropriately
|
|
158
|
+
- Code reviewed
|
|
159
|
+
|
|
160
|
+
After approval: Delete issue from viban TUI
|
|
161
|
+
|
|
162
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Checklist
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
[ ] Read CLAUDE.md for project workflow
|
|
171
|
+
[ ] Working on viban-$ISSUE_ID branch
|
|
172
|
+
[ ] Project workflow steps completed (or default if none)
|
|
173
|
+
[ ] Rebase complete
|
|
174
|
+
[ ] PR pushed
|
|
175
|
+
[ ] viban review executed
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## CLI Reference
|
|
181
|
+
|
|
182
|
+
| Command | Description |
|
|
183
|
+
|---------|-------------|
|
|
184
|
+
| `viban` | Open TUI |
|
|
185
|
+
| `viban list` | Print board |
|
|
186
|
+
| `viban assign [session]` | Assign issue |
|
|
187
|
+
| `viban get <id>` | View issue |
|
|
188
|
+
| `viban review <id>` | Move to review |
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
description: "Install viban dependencies (zsh, gum, jq) automatically"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /setup - Install Dependencies
|
|
7
|
+
|
|
8
|
+
Automatically install all viban dependencies based on the operating system.
|
|
9
|
+
|
|
10
|
+
## Execution Steps
|
|
11
|
+
|
|
12
|
+
### Step 1: Detect OS and Package Manager
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Detect OS
|
|
16
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
17
|
+
OS="macos"
|
|
18
|
+
PKG_MANAGER="brew"
|
|
19
|
+
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
20
|
+
OS="linux"
|
|
21
|
+
if command -v apt &> /dev/null; then
|
|
22
|
+
PKG_MANAGER="apt"
|
|
23
|
+
elif command -v dnf &> /dev/null; then
|
|
24
|
+
PKG_MANAGER="dnf"
|
|
25
|
+
elif command -v pacman &> /dev/null; then
|
|
26
|
+
PKG_MANAGER="pacman"
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Report detected OS and package manager to user.
|
|
32
|
+
|
|
33
|
+
### Step 2: Check Existing Dependencies
|
|
34
|
+
|
|
35
|
+
Check which dependencies are already installed:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
command -v zsh &> /dev/null && echo "✓ zsh" || echo "✗ zsh"
|
|
39
|
+
command -v gum &> /dev/null && echo "✓ gum" || echo "✗ gum"
|
|
40
|
+
command -v jq &> /dev/null && echo "✓ jq" || echo "✗ jq"
|
|
41
|
+
command -v viban &> /dev/null && echo "✓ viban" || echo "✗ viban"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Step 3: Install Missing Dependencies
|
|
45
|
+
|
|
46
|
+
For each missing dependency, run the appropriate install command:
|
|
47
|
+
|
|
48
|
+
#### macOS (Homebrew)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Install Homebrew if not present
|
|
52
|
+
if ! command -v brew &> /dev/null; then
|
|
53
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# Install dependencies
|
|
57
|
+
brew install zsh gum jq
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### Linux (apt - Debian/Ubuntu)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Install zsh and jq
|
|
64
|
+
sudo apt update
|
|
65
|
+
sudo apt install -y zsh jq
|
|
66
|
+
|
|
67
|
+
# Install gum (requires Charm repo)
|
|
68
|
+
sudo mkdir -p /etc/apt/keyrings
|
|
69
|
+
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
|
|
70
|
+
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
|
|
71
|
+
sudo apt update
|
|
72
|
+
sudo apt install -y gum
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### Linux (dnf - Fedora/RHEL)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
sudo dnf install -y zsh jq
|
|
79
|
+
|
|
80
|
+
# Install gum
|
|
81
|
+
echo '[charm]
|
|
82
|
+
name=Charm
|
|
83
|
+
baseurl=https://repo.charm.sh/yum/
|
|
84
|
+
enabled=1
|
|
85
|
+
gpgcheck=1
|
|
86
|
+
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
|
|
87
|
+
sudo dnf install -y gum
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### Linux (pacman - Arch)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
sudo pacman -S --noconfirm zsh jq gum
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Step 4: Install viban CLI
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npm install -g claude-plugin-viban
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Step 5: Verify Installation
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
viban help
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
If successful, show:
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
╭─────────────────────────────────────╮
|
|
112
|
+
│ viban setup complete! 🎉 │
|
|
113
|
+
╰─────────────────────────────────────╯
|
|
114
|
+
|
|
115
|
+
All dependencies installed:
|
|
116
|
+
✓ zsh
|
|
117
|
+
✓ gum
|
|
118
|
+
✓ jq
|
|
119
|
+
✓ viban
|
|
120
|
+
|
|
121
|
+
You can now use:
|
|
122
|
+
viban Open TUI board
|
|
123
|
+
viban add "task" Add a task
|
|
124
|
+
viban list List all tasks
|
|
125
|
+
/assign Auto-resolve next issue
|
|
126
|
+
/task Create structured issue
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Error Handling
|
|
130
|
+
|
|
131
|
+
- **Homebrew not found on macOS**: Prompt user to install Homebrew first
|
|
132
|
+
- **sudo required on Linux**: Inform user that admin privileges are needed
|
|
133
|
+
- **Package manager not found**: Show manual installation instructions
|
|
134
|
+
- **npm not found**: Install Node.js first
|
|
135
|
+
|
|
136
|
+
## Notes
|
|
137
|
+
|
|
138
|
+
- This command requires terminal access to run shell commands
|
|
139
|
+
- On Linux, sudo password may be required
|
|
140
|
+
- All commands are idempotent (safe to run multiple times)
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: "Analyze problem
|
|
4
|
-
category: development
|
|
5
|
-
complexity: medium
|
|
6
|
-
mcp-servers: []
|
|
7
|
-
personas: []
|
|
2
|
+
name: task
|
|
3
|
+
description: "Analyze problem and register as viban issue with evidence"
|
|
8
4
|
---
|
|
9
5
|
|
|
10
|
-
# /
|
|
6
|
+
# /task - Problem Analysis and Issue Registration
|
|
11
7
|
|
|
12
8
|
Analyze problem situation and register as viban issue with file locations and evidence.
|
|
13
9
|
|
package/install.sh
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# viban - One-liner installer
|
|
3
|
+
# Usage: curl -fsSL https://raw.githubusercontent.com/happy-nut/claude-plugin-viban/main/install.sh | bash
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
RED='\033[0;31m'
|
|
8
|
+
GREEN='\033[0;32m'
|
|
9
|
+
YELLOW='\033[0;33m'
|
|
10
|
+
BLUE='\033[0;34m'
|
|
11
|
+
BOLD='\033[1m'
|
|
12
|
+
NC='\033[0m'
|
|
13
|
+
|
|
14
|
+
echo ""
|
|
15
|
+
echo -e "${BOLD}${BLUE}╭─────────────────────────────────────╮${NC}"
|
|
16
|
+
echo -e "${BOLD}${BLUE}│ viban installer │${NC}"
|
|
17
|
+
echo -e "${BOLD}${BLUE}╰─────────────────────────────────────╯${NC}"
|
|
18
|
+
echo ""
|
|
19
|
+
|
|
20
|
+
# Detect OS
|
|
21
|
+
OS="unknown"
|
|
22
|
+
PKG_MANAGER=""
|
|
23
|
+
|
|
24
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
25
|
+
OS="macos"
|
|
26
|
+
if command -v brew &> /dev/null; then
|
|
27
|
+
PKG_MANAGER="brew"
|
|
28
|
+
else
|
|
29
|
+
echo -e "${RED}Error: Homebrew is required on macOS${NC}"
|
|
30
|
+
echo -e "Install it first: ${YELLOW}/bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"${NC}"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
34
|
+
OS="linux"
|
|
35
|
+
if command -v apt &> /dev/null; then
|
|
36
|
+
PKG_MANAGER="apt"
|
|
37
|
+
elif command -v dnf &> /dev/null; then
|
|
38
|
+
PKG_MANAGER="dnf"
|
|
39
|
+
elif command -v pacman &> /dev/null; then
|
|
40
|
+
PKG_MANAGER="pacman"
|
|
41
|
+
else
|
|
42
|
+
echo -e "${RED}Error: No supported package manager found (apt, dnf, pacman)${NC}"
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
else
|
|
46
|
+
echo -e "${RED}Error: Unsupported OS: $OSTYPE${NC}"
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo -e "${GREEN}✓${NC} Detected: $OS ($PKG_MANAGER)"
|
|
51
|
+
|
|
52
|
+
# Install system dependencies
|
|
53
|
+
install_pkg() {
|
|
54
|
+
local name="$1"
|
|
55
|
+
|
|
56
|
+
if command -v "$name" &> /dev/null; then
|
|
57
|
+
echo -e "${GREEN}✓${NC} $name already installed"
|
|
58
|
+
return 0
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
echo -e "${YELLOW}→${NC} Installing $name..."
|
|
62
|
+
|
|
63
|
+
case "$PKG_MANAGER" in
|
|
64
|
+
brew)
|
|
65
|
+
brew install "$name"
|
|
66
|
+
;;
|
|
67
|
+
apt)
|
|
68
|
+
sudo apt update -qq
|
|
69
|
+
sudo apt install -y "$name"
|
|
70
|
+
;;
|
|
71
|
+
dnf)
|
|
72
|
+
sudo dnf install -y "$name"
|
|
73
|
+
;;
|
|
74
|
+
pacman)
|
|
75
|
+
sudo pacman -S --noconfirm "$name"
|
|
76
|
+
;;
|
|
77
|
+
esac
|
|
78
|
+
|
|
79
|
+
echo -e "${GREEN}✓${NC} $name installed"
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
# Install gum (special case for Linux - needs Charm repo)
|
|
83
|
+
install_gum() {
|
|
84
|
+
if command -v gum &> /dev/null; then
|
|
85
|
+
echo -e "${GREEN}✓${NC} gum already installed"
|
|
86
|
+
return 0
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
echo -e "${YELLOW}→${NC} Installing gum..."
|
|
90
|
+
|
|
91
|
+
case "$PKG_MANAGER" in
|
|
92
|
+
brew)
|
|
93
|
+
brew install gum
|
|
94
|
+
;;
|
|
95
|
+
apt)
|
|
96
|
+
# Add Charm repository
|
|
97
|
+
sudo mkdir -p /etc/apt/keyrings
|
|
98
|
+
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg 2>/dev/null || true
|
|
99
|
+
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list > /dev/null
|
|
100
|
+
sudo apt update -qq
|
|
101
|
+
sudo apt install -y gum
|
|
102
|
+
;;
|
|
103
|
+
dnf)
|
|
104
|
+
echo '[charm]
|
|
105
|
+
name=Charm
|
|
106
|
+
baseurl=https://repo.charm.sh/yum/
|
|
107
|
+
enabled=1
|
|
108
|
+
gpgcheck=1
|
|
109
|
+
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo > /dev/null
|
|
110
|
+
sudo dnf install -y gum
|
|
111
|
+
;;
|
|
112
|
+
pacman)
|
|
113
|
+
sudo pacman -S --noconfirm gum
|
|
114
|
+
;;
|
|
115
|
+
esac
|
|
116
|
+
|
|
117
|
+
echo -e "${GREEN}✓${NC} gum installed"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
echo ""
|
|
121
|
+
echo -e "${BOLD}Installing dependencies...${NC}"
|
|
122
|
+
echo ""
|
|
123
|
+
|
|
124
|
+
# Install zsh (required for viban script)
|
|
125
|
+
install_pkg "zsh"
|
|
126
|
+
|
|
127
|
+
# Install jq
|
|
128
|
+
install_pkg "jq"
|
|
129
|
+
|
|
130
|
+
# Install gum
|
|
131
|
+
install_gum
|
|
132
|
+
|
|
133
|
+
# Check for npm
|
|
134
|
+
echo ""
|
|
135
|
+
if ! command -v npm &> /dev/null; then
|
|
136
|
+
echo -e "${YELLOW}→${NC} Installing Node.js..."
|
|
137
|
+
case "$PKG_MANAGER" in
|
|
138
|
+
brew)
|
|
139
|
+
brew install node
|
|
140
|
+
;;
|
|
141
|
+
apt)
|
|
142
|
+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
143
|
+
sudo apt install -y nodejs
|
|
144
|
+
;;
|
|
145
|
+
dnf)
|
|
146
|
+
sudo dnf install -y nodejs
|
|
147
|
+
;;
|
|
148
|
+
pacman)
|
|
149
|
+
sudo pacman -S --noconfirm nodejs npm
|
|
150
|
+
;;
|
|
151
|
+
esac
|
|
152
|
+
echo -e "${GREEN}✓${NC} Node.js installed"
|
|
153
|
+
else
|
|
154
|
+
echo -e "${GREEN}✓${NC} npm already installed"
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
# Install viban via npm
|
|
158
|
+
echo ""
|
|
159
|
+
echo -e "${BOLD}Installing viban...${NC}"
|
|
160
|
+
echo ""
|
|
161
|
+
|
|
162
|
+
npm install -g claude-plugin-viban
|
|
163
|
+
|
|
164
|
+
echo ""
|
|
165
|
+
echo -e "${GREEN}✓${NC} viban installed globally"
|
|
166
|
+
|
|
167
|
+
# Register Claude Code plugin
|
|
168
|
+
echo ""
|
|
169
|
+
echo -e "${BOLD}Registering Claude Code plugin...${NC}"
|
|
170
|
+
echo ""
|
|
171
|
+
|
|
172
|
+
CLAUDE_CONFIG_DIR="${HOME}/.claude"
|
|
173
|
+
CLAUDE_PLUGINS_FILE="${CLAUDE_CONFIG_DIR}/plugins.json"
|
|
174
|
+
|
|
175
|
+
mkdir -p "$CLAUDE_CONFIG_DIR"
|
|
176
|
+
|
|
177
|
+
# Get npm global prefix to find viban
|
|
178
|
+
NPM_PREFIX=$(npm prefix -g)
|
|
179
|
+
VIBAN_PLUGIN_DIR="${NPM_PREFIX}/lib/node_modules/claude-plugin-viban"
|
|
180
|
+
|
|
181
|
+
# Check if plugins.json exists
|
|
182
|
+
if [[ -f "$CLAUDE_PLUGINS_FILE" ]]; then
|
|
183
|
+
# Check if viban is already registered
|
|
184
|
+
if jq -e '.plugins[] | select(.name == "viban")' "$CLAUDE_PLUGINS_FILE" > /dev/null 2>&1; then
|
|
185
|
+
echo -e "${GREEN}✓${NC} Plugin already registered"
|
|
186
|
+
else
|
|
187
|
+
# Add viban to existing plugins
|
|
188
|
+
jq --arg path "$VIBAN_PLUGIN_DIR" '.plugins += [{"name": "viban", "path": $path}]' "$CLAUDE_PLUGINS_FILE" > "${CLAUDE_PLUGINS_FILE}.tmp"
|
|
189
|
+
mv "${CLAUDE_PLUGINS_FILE}.tmp" "$CLAUDE_PLUGINS_FILE"
|
|
190
|
+
echo -e "${GREEN}✓${NC} Plugin registered"
|
|
191
|
+
fi
|
|
192
|
+
else
|
|
193
|
+
# Create new plugins.json
|
|
194
|
+
cat > "$CLAUDE_PLUGINS_FILE" << EOF
|
|
195
|
+
{
|
|
196
|
+
"plugins": [
|
|
197
|
+
{
|
|
198
|
+
"name": "viban",
|
|
199
|
+
"path": "$VIBAN_PLUGIN_DIR"
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
EOF
|
|
204
|
+
echo -e "${GREEN}✓${NC} Plugin registered"
|
|
205
|
+
fi
|
|
206
|
+
|
|
207
|
+
echo ""
|
|
208
|
+
echo -e "${BOLD}${GREEN}╭─────────────────────────────────────╮${NC}"
|
|
209
|
+
echo -e "${BOLD}${GREEN}│ Installation complete! 🎉 │${NC}"
|
|
210
|
+
echo -e "${BOLD}${GREEN}╰─────────────────────────────────────╯${NC}"
|
|
211
|
+
echo ""
|
|
212
|
+
echo -e "Usage:"
|
|
213
|
+
echo -e " ${YELLOW}viban${NC} Open TUI board"
|
|
214
|
+
echo -e " ${YELLOW}viban add \"task\"${NC} Add a task"
|
|
215
|
+
echo -e " ${YELLOW}viban list${NC} List all tasks"
|
|
216
|
+
echo -e " ${YELLOW}viban help${NC} Show all commands"
|
|
217
|
+
echo ""
|
|
218
|
+
echo -e "In Claude Code, the plugin is now available."
|
|
219
|
+
echo ""
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-plugin-viban",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
|
|
5
5
|
"main": "bin/viban",
|
|
6
6
|
"bin": {
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"bin/",
|
|
11
11
|
"scripts/",
|
|
12
|
-
"skills/",
|
|
13
12
|
"commands/",
|
|
14
13
|
"docs/",
|
|
15
14
|
".claude-plugin/",
|
|
15
|
+
"install.sh",
|
|
16
16
|
"LICENSE",
|
|
17
17
|
"README.md"
|
|
18
18
|
],
|
package/commands/todo.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: todo
|
|
3
|
-
description: "Analyze problem and register as viban issue"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /todo
|
|
7
|
-
|
|
8
|
-
Invokes the `viban:todo` skill to:
|
|
9
|
-
- Analyze problem situation
|
|
10
|
-
- Search codebase for evidence
|
|
11
|
-
- Register issue with proper priority and type
|
|
12
|
-
|
|
13
|
-
Usage:
|
|
14
|
-
- `/todo` (will prompt for details)
|
|
15
|
-
- `/todo "Charts not showing on results page"`
|
package/skills/assign/SKILL.md
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: viban:assign
|
|
3
|
-
description: "Assign and resolve the first backlog issue from viban board through to PR completion. Reads project CLAUDE.md for workflow."
|
|
4
|
-
category: debugging
|
|
5
|
-
complexity: advanced
|
|
6
|
-
mcp-servers: [serena]
|
|
7
|
-
personas: []
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# /viban:assign
|
|
11
|
-
|
|
12
|
-
Workflow: First backlog issue → Resolve → PR completion
|
|
13
|
-
|
|
14
|
-
> **⛔ No direct `viban.json` access** — CLI only
|
|
15
|
-
> **🔴 No Worktree** — Work directly on branch in main repo
|
|
16
|
-
> **📋 Workflow**: Read CLAUDE.md first, follow project workflow if exists
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Phase 0: CONTEXT & SETUP
|
|
21
|
-
|
|
22
|
-
### 0.1 Read Project Workflow (CRITICAL)
|
|
23
|
-
|
|
24
|
-
**Before any work, read the project's CLAUDE.md:**
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
# Check for CLAUDE.md at common locations
|
|
28
|
-
for path in "./CLAUDE.md" "./.claude/CLAUDE.md" "../CLAUDE.md"; do
|
|
29
|
-
[ -f "$path" ] && cat "$path"
|
|
30
|
-
done
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**Look for:**
|
|
34
|
-
- `Issue Resolution Workflow` section
|
|
35
|
-
- `Workflow` or `Development Process` section
|
|
36
|
-
- Specific steps like `ultrawork`, `code-simplifier`, `code-review`
|
|
37
|
-
- Testing requirements (`pytest`, manual verification, etc.)
|
|
38
|
-
|
|
39
|
-
**IMPORTANT:**
|
|
40
|
-
- If project has a defined workflow → **MUST follow it exactly**
|
|
41
|
-
- If no workflow found → Use default workflow (Phase 1 below)
|
|
42
|
-
|
|
43
|
-
### 0.2 Git Setup
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# 1. Check for uncommitted changes
|
|
47
|
-
if [ -n "$(git status --porcelain)" ]; then
|
|
48
|
-
echo "⚠️ Uncommitted changes detected"
|
|
49
|
-
# → Ask user whether to commit (use AskUserQuestion)
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# 2. Switch to main branch and sync
|
|
53
|
-
git checkout main
|
|
54
|
-
git fetch origin main
|
|
55
|
-
git reset --hard origin/main
|
|
56
|
-
|
|
57
|
-
# 3. Assign issue (state change only, no worktree)
|
|
58
|
-
ISSUE_ID=$(viban assign 2>&1 | tail -1)
|
|
59
|
-
if [ -z "$ISSUE_ID" ] || [ "$ISSUE_ID" = "No backlog" ]; then
|
|
60
|
-
echo "⚠️ No issues in backlog"
|
|
61
|
-
exit 0
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
# 4. Create new branch
|
|
65
|
-
git checkout -b viban-$ISSUE_ID
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**If backlog is empty**: Notify user and exit
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Phase 1: ANALYZE → VERIFY
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
viban get $ISSUE_ID
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### If Project Workflow Exists (from CLAUDE.md):
|
|
79
|
-
|
|
80
|
-
**Follow the project's exact steps.** Common patterns include:
|
|
81
|
-
|
|
82
|
-
1. Root cause analysis (5 Whys)
|
|
83
|
-
2. Context verification (ask if unclear)
|
|
84
|
-
3. Implementation & verification strategy
|
|
85
|
-
4. Code implementation (`/ultrawork` for 2+ files)
|
|
86
|
-
5. **Manual verification** (browser/API, NOT pytest)
|
|
87
|
-
6. Code simplification (`/code-simplifier`)
|
|
88
|
-
7. Code review (`/code-review`)
|
|
89
|
-
|
|
90
|
-
### Default Workflow (if no project workflow):
|
|
91
|
-
|
|
92
|
-
1. **Understand**: Read the issue, understand the problem
|
|
93
|
-
2. **Locate**: Find relevant code files
|
|
94
|
-
3. **Analyze**: Determine root cause
|
|
95
|
-
4. **Implement**: Make minimal, focused changes
|
|
96
|
-
5. **Verify**: Test the fix works (appropriate method for the project)
|
|
97
|
-
6. **Review**: Self-review changes for quality
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Phase 2: SHIP
|
|
102
|
-
|
|
103
|
-
### 2.1 Rebase
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
git fetch origin main
|
|
107
|
-
git rebase origin/main
|
|
108
|
-
# On conflict: resolve → git add → git rebase --continue
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### 2.2 Commit & Push
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
git add -A
|
|
115
|
-
git commit -m "fix: issue title summary
|
|
116
|
-
|
|
117
|
-
- Root cause: ...
|
|
118
|
-
- Solution: ...
|
|
119
|
-
|
|
120
|
-
Resolves: viban-$ISSUE_ID"
|
|
121
|
-
|
|
122
|
-
git push -u origin viban-$ISSUE_ID
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### 2.3 Create PR
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
EXISTING_PR=$(gh pr list --head viban-$ISSUE_ID --json number -q '.[0].number')
|
|
129
|
-
[ -z "$EXISTING_PR" ] && gh pr create \
|
|
130
|
-
--title "viban-$ISSUE_ID: title" \
|
|
131
|
-
--body "## Changes
|
|
132
|
-
- ...
|
|
133
|
-
|
|
134
|
-
## Testing
|
|
135
|
-
- [ ] Tests passing (if applicable)
|
|
136
|
-
- [ ] Manual verification (if applicable)" \
|
|
137
|
-
--base main
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### 2.4 Issue → review
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
viban review $ISSUE_ID
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Phase 3: HANDOFF
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
152
|
-
📋 Human Review Required
|
|
153
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
154
|
-
|
|
155
|
-
Issue #$ISSUE_ID → review status
|
|
156
|
-
|
|
157
|
-
🔗 PR: gh pr view viban-$ISSUE_ID --web
|
|
158
|
-
|
|
159
|
-
✅ Verification complete:
|
|
160
|
-
- Project workflow followed
|
|
161
|
-
- Changes tested appropriately
|
|
162
|
-
- Code reviewed
|
|
163
|
-
|
|
164
|
-
📌 After approval: Delete issue from viban TUI
|
|
165
|
-
|
|
166
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Phase 4: REFLECT (if available)
|
|
172
|
-
|
|
173
|
-
> **Optional**: Run `/self-reflect` if project has this skill
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
/self-reflect
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## Checklist
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
[ ] Read CLAUDE.md for project workflow
|
|
185
|
-
[ ] Working on viban-$ISSUE_ID branch
|
|
186
|
-
[ ] Project workflow steps completed (or default if none)
|
|
187
|
-
[ ] Rebase complete
|
|
188
|
-
[ ] PR pushed
|
|
189
|
-
[ ] viban review executed
|
|
190
|
-
[ ] Self-reflection done (if available)
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## CLI Reference
|
|
196
|
-
|
|
197
|
-
| Command | Description |
|
|
198
|
-
|---------|-------------|
|
|
199
|
-
| `viban` | Open TUI |
|
|
200
|
-
| `viban list` | Print board |
|
|
201
|
-
| `viban assign [session]` | Assign issue |
|
|
202
|
-
| `viban get <id>` | View issue |
|
|
203
|
-
| `viban review <id>` | Move to review |
|