claude-plugin-viban 1.3.3 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/bin/viban +25 -13
- package/commands/add.md +25 -39
- package/commands/assign.md +2 -0
- package/docs/CLAUDE.md +2 -1
- package/package.json +1 -1
- package/skills/add/SKILL.md +23 -39
- package/skills/assign/SKILL.md +4 -3
- package/skills/setup/SKILL.md +10 -10
package/bin/viban
CHANGED
|
@@ -1526,13 +1526,17 @@ cmd_review() {
|
|
|
1526
1526
|
|
|
1527
1527
|
cmd_done() {
|
|
1528
1528
|
init_json
|
|
1529
|
-
[[ -z "$1" ]] && { echo "Usage: viban done <id>"; exit 1; }
|
|
1529
|
+
[[ -z "$1" ]] && { echo "Usage: viban done <id> [--remove]"; exit 1; }
|
|
1530
|
+
local id="$1"
|
|
1531
|
+
local remove=false
|
|
1532
|
+
[[ "$2" == "--remove" ]] && remove=true
|
|
1533
|
+
|
|
1530
1534
|
# Cleanup worktree if exists
|
|
1531
1535
|
local repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
1532
|
-
local wt_dir="$VIBAN_DATA_DIR/worktrees/$
|
|
1536
|
+
local wt_dir="$VIBAN_DATA_DIR/worktrees/$id"
|
|
1533
1537
|
|
|
1534
|
-
local branch="issue-$
|
|
1535
|
-
local _ext_id=$(get_ext_id "$
|
|
1538
|
+
local branch="issue-$id"
|
|
1539
|
+
local _ext_id=$(get_ext_id "$id")
|
|
1536
1540
|
if [[ -n "$_ext_id" && "$_ext_id" != "null" ]]; then
|
|
1537
1541
|
local _issue_num="${_ext_id##*:}"
|
|
1538
1542
|
if git -C "$repo_root" rev-parse --verify "issue-${_issue_num}" &>/dev/null 2>&1; then
|
|
@@ -1545,14 +1549,22 @@ cmd_done() {
|
|
|
1545
1549
|
git -C "$repo_root" branch -D "$branch" 2>/dev/null
|
|
1546
1550
|
echo "✓ worktree removed"
|
|
1547
1551
|
fi
|
|
1548
|
-
# Remove task (handle both string and number ID)
|
|
1549
|
-
jq --argjson id "$1" 'del(.issues[]|select((.id|tonumber)==$id))' "$VIBAN_JSON" > "$VIBAN_JSON.tmp" && \
|
|
1550
|
-
mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
|
|
1551
1552
|
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1553
|
+
if $remove; then
|
|
1554
|
+
# Delete card (old behavior)
|
|
1555
|
+
jq --argjson id "$id" 'del(.issues[]|select((.id|tonumber)==$id))' \
|
|
1556
|
+
"$VIBAN_JSON" > "$VIBAN_JSON.tmp" && mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
|
|
1557
|
+
printf '\033]1;\007'
|
|
1558
|
+
echo "✓ $(display_id "$id" "$(get_ext_id "$id")") completed & removed"
|
|
1559
|
+
else
|
|
1560
|
+
# Move to done status (non-destructive default)
|
|
1561
|
+
local now=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
1562
|
+
jq --argjson id "$id" --arg now "$now" \
|
|
1563
|
+
'(.issues[]|select((.id|tonumber)==$id)) |= . + {status:"done",assigned_to:null,updated_at:$now}' \
|
|
1564
|
+
"$VIBAN_JSON" > "$VIBAN_JSON.tmp" && mv "$VIBAN_JSON.tmp" "$VIBAN_JSON"
|
|
1565
|
+
printf '\033]1;\007'
|
|
1566
|
+
echo "✓ $(display_id "$id" "$(get_ext_id "$id")") → done"
|
|
1567
|
+
fi
|
|
1556
1568
|
}
|
|
1557
1569
|
|
|
1558
1570
|
cmd_get() { init_json; jq --argjson id "$1" '.issues[]|select((.id|tonumber)==$id)' "$VIBAN_JSON"; }
|
|
@@ -1673,7 +1685,7 @@ main() {
|
|
|
1673
1685
|
attach) shift; cmd_attach "$@";;
|
|
1674
1686
|
assign) cmd_assign "$2";;
|
|
1675
1687
|
review) cmd_review "$2";;
|
|
1676
|
-
done) cmd_done "$2";;
|
|
1688
|
+
done) cmd_done "$2" "$3";;
|
|
1677
1689
|
get) cmd_get "$2";;
|
|
1678
1690
|
edit) [[ -z "$2" ]] && { echo "Usage: viban edit <id>"; exit 1; }; edit_issue "$2";;
|
|
1679
1691
|
priority) cmd_priority "$2" "$3";;
|
|
@@ -1706,7 +1718,7 @@ main() {
|
|
|
1706
1718
|
echo " viban priority <id> <P0-P3> Set priority"
|
|
1707
1719
|
echo " viban assign Assign first backlog (by priority)"
|
|
1708
1720
|
echo " viban review → Human Review"
|
|
1709
|
-
echo " viban done <id> Complete
|
|
1721
|
+
echo " viban done <id> [--remove] Complete (--remove to delete)"
|
|
1710
1722
|
echo " viban edit <id> Edit task in editor"
|
|
1711
1723
|
echo " viban get <id> Get task details (JSON)"
|
|
1712
1724
|
echo " viban migrate Migrate: extract type from title"
|
package/commands/add.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
description: "Register a problem as a viban issue"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
+
> Tip: Run `/clear` before `/viban:add` for a clean context.
|
|
6
|
+
|
|
5
7
|
# /add - Register Issue
|
|
6
8
|
|
|
7
9
|
Register a problem as a viban issue. No codebase exploration, no solutions — symptoms only.
|
|
@@ -40,17 +42,20 @@ Infer from description. Don't ask unless truly ambiguous.
|
|
|
40
42
|
## Step 4: Register
|
|
41
43
|
|
|
42
44
|
```bash
|
|
43
|
-
|
|
45
|
+
mkdir -p .viban/tmp
|
|
46
|
+
cat > .viban/tmp/desc.md <<'VIBAN_EOF'
|
|
44
47
|
## Symptoms
|
|
45
48
|
{one-sentence symptom}
|
|
46
49
|
{additional context, if any}
|
|
47
50
|
VIBAN_EOF
|
|
48
51
|
|
|
49
52
|
# Auto numbering (default)
|
|
50
|
-
viban add "{title}" --desc-file /tmp/
|
|
53
|
+
viban add "{title}" --desc-file .viban/tmp/desc.md --priority {priority} --type {type}
|
|
54
|
+
rm -f .viban/tmp/desc.md
|
|
51
55
|
|
|
52
56
|
# Manual numbering (when workflow specifies)
|
|
53
|
-
viban add "{title}" --desc-file /tmp/
|
|
57
|
+
viban add "{title}" --desc-file .viban/tmp/desc.md --priority {priority} --type {type} --ext-id "{external_id}"
|
|
58
|
+
rm -f .viban/tmp/desc.md
|
|
54
59
|
```
|
|
55
60
|
|
|
56
61
|
Use `<<'VIBAN_EOF'` (quoted) to prevent shell interpretation.
|
|
@@ -64,49 +69,30 @@ Issue #{id} registered
|
|
|
64
69
|
Status: backlog
|
|
65
70
|
```
|
|
66
71
|
|
|
67
|
-
## Step 6:
|
|
68
|
-
|
|
69
|
-
**Skip** unless the issue clearly needs upfront design. Most issues don't.
|
|
70
|
-
|
|
71
|
-
Only suggest plan mode when:
|
|
72
|
-
- The issue spans multiple subsystems or requires architectural decisions
|
|
73
|
-
- The description is too vague to act on without investigation
|
|
74
|
-
- P0 issues where a wrong fix could make things worse
|
|
75
|
-
|
|
76
|
-
**Do NOT suggest** for: single-file fixes, straightforward bugs, feature additions with clear scope, chores, refactors with obvious targets.
|
|
72
|
+
## Step 6: Done
|
|
77
73
|
|
|
78
|
-
|
|
74
|
+
Report the registered issue and **stop immediately**. Do not suggest next steps, do not offer to plan, do not continue.
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
- options:
|
|
82
|
-
- "Plan now" — Enter plan mode to analyze and design a solution
|
|
83
|
-
- "Later" — Just register, work on it later
|
|
76
|
+
> **This skill ends here. No exceptions.**
|
|
84
77
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
mkdir -p .viban/plans
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
```markdown
|
|
92
|
-
# Plan: {issue title}
|
|
93
|
-
> Issue #{id} | {priority} | {type} | Created: {timestamp}
|
|
94
|
-
|
|
95
|
-
{full plan content}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Report: `Plan saved to .viban/plans/{issue-id}.md — /viban:assign will auto-load it.`
|
|
78
|
+
## Rules
|
|
99
79
|
|
|
100
|
-
|
|
80
|
+
### READ-ONLY MODE — This skill must NOT modify any files.
|
|
101
81
|
|
|
102
|
-
|
|
82
|
+
**Allowed tools (whitelist — everything else is FORBIDDEN):**
|
|
83
|
+
- `Bash`: ONLY for `mkdir -p .viban/tmp`, `viban add`, `viban list`, `cat .viban/workflow.md`, `rm -f .viban/tmp/desc.md`
|
|
84
|
+
- `Write`: ONLY for `.viban/tmp/desc.md` (temp file for `--desc-file`)
|
|
85
|
+
- `AskUserQuestion`: for clarification
|
|
86
|
+
- `Read`: for reading `.viban/workflow.md`
|
|
103
87
|
|
|
104
|
-
|
|
88
|
+
**FORBIDDEN tools and actions:**
|
|
89
|
+
- `Edit`: NEVER use. No file modifications of any kind.
|
|
90
|
+
- `Write` to any path outside `/tmp/viban-*.md` and `.viban/plans/`: FORBIDDEN.
|
|
91
|
+
- `Bash` for anything other than `viban` CLI and `cat`/`mkdir` above: FORBIDDEN.
|
|
92
|
+
- No `git` commands. No source code reads. No codebase exploration.
|
|
105
93
|
|
|
106
|
-
|
|
107
|
-
- **NEVER
|
|
108
|
-
- **NEVER start implementation** — even after plan mode, just save the plan and stop
|
|
109
|
-
- No codebase exploration — assignee does that in `/viban:assign`
|
|
94
|
+
### Additional rules:
|
|
95
|
+
- **NEVER read or write `viban.json` directly** — always use `viban` CLI commands
|
|
110
96
|
- No solution proposals in the issue — symptoms only
|
|
111
97
|
- Check duplicates first: `viban list`
|
|
112
98
|
- P0 is system-down only
|
package/commands/assign.md
CHANGED
package/docs/CLAUDE.md
CHANGED
|
@@ -278,7 +278,8 @@ viban list # Display kanban board
|
|
|
278
278
|
viban add "Title" "Desc" P2 feat # Create issue
|
|
279
279
|
viban assign [session] # Assign top backlog issue
|
|
280
280
|
viban review [id] # Move issue to review
|
|
281
|
-
viban done <id> # Mark issue as done
|
|
281
|
+
viban done <id> # Mark issue as done (card stays on board)
|
|
282
|
+
viban done <id> --remove # Delete card permanently
|
|
282
283
|
viban get <id> # Get issue details (JSON)
|
|
283
284
|
viban help # Show help
|
|
284
285
|
```
|
package/package.json
CHANGED
package/skills/add/SKILL.md
CHANGED
|
@@ -41,17 +41,20 @@ Infer from description. Don't ask unless truly ambiguous.
|
|
|
41
41
|
## Step 4: Register
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
|
|
44
|
+
mkdir -p .viban/tmp
|
|
45
|
+
cat > .viban/tmp/desc.md <<'VIBAN_EOF'
|
|
45
46
|
## Symptoms
|
|
46
47
|
{one-sentence symptom}
|
|
47
48
|
{additional context, if any}
|
|
48
49
|
VIBAN_EOF
|
|
49
50
|
|
|
50
51
|
# Auto numbering (default)
|
|
51
|
-
viban add "{title}" --desc-file /tmp/
|
|
52
|
+
viban add "{title}" --desc-file .viban/tmp/desc.md --priority {priority} --type {type}
|
|
53
|
+
rm -f .viban/tmp/desc.md
|
|
52
54
|
|
|
53
55
|
# Manual numbering (when workflow specifies)
|
|
54
|
-
viban add "{title}" --desc-file /tmp/
|
|
56
|
+
viban add "{title}" --desc-file .viban/tmp/desc.md --priority {priority} --type {type} --ext-id "{external_id}"
|
|
57
|
+
rm -f .viban/tmp/desc.md
|
|
55
58
|
```
|
|
56
59
|
|
|
57
60
|
Use `<<'VIBAN_EOF'` (quoted) to prevent shell interpretation.
|
|
@@ -65,49 +68,30 @@ Issue #{id} registered
|
|
|
65
68
|
Status: backlog
|
|
66
69
|
```
|
|
67
70
|
|
|
68
|
-
## Step 6:
|
|
71
|
+
## Step 6: Done
|
|
69
72
|
|
|
70
|
-
|
|
73
|
+
Report the registered issue and **stop immediately**. Do not suggest next steps, do not offer to plan, do not continue.
|
|
71
74
|
|
|
72
|
-
|
|
73
|
-
- The issue spans multiple subsystems or requires architectural decisions
|
|
74
|
-
- The description is too vague to act on without investigation
|
|
75
|
-
- P0 issues where a wrong fix could make things worse
|
|
75
|
+
> **This skill ends here. No exceptions.**
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
When suggesting, use AskUserQuestion:
|
|
80
|
-
|
|
81
|
-
- header: "Next step", question: "This looks complex — want to plan before working on it?"
|
|
82
|
-
- options:
|
|
83
|
-
- "Plan now" — Enter plan mode to analyze and design a solution
|
|
84
|
-
- "Later" — Just register, work on it later
|
|
85
|
-
|
|
86
|
-
**"Plan now"**: `EnterPlanMode` → after approval, save to `.viban/plans/{issue-id}.md`:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
mkdir -p .viban/plans
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
```markdown
|
|
93
|
-
# Plan: {issue title}
|
|
94
|
-
> Issue #{id} | {priority} | {type} | Created: {timestamp}
|
|
95
|
-
|
|
96
|
-
{full plan content}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Report: `Plan saved to .viban/plans/{issue-id}.md — /viban:assign will auto-load it.`
|
|
77
|
+
## Rules
|
|
100
78
|
|
|
101
|
-
|
|
79
|
+
### READ-ONLY MODE — This skill must NOT modify any files.
|
|
102
80
|
|
|
103
|
-
|
|
81
|
+
**Allowed tools (whitelist — everything else is FORBIDDEN):**
|
|
82
|
+
- `Bash`: ONLY for `mkdir -p .viban/tmp`, `viban add`, `viban list`, `cat .viban/workflow.md`, `rm -f .viban/tmp/desc.md`
|
|
83
|
+
- `Write`: ONLY for `.viban/tmp/desc.md` (temp file for `--desc-file`)
|
|
84
|
+
- `AskUserQuestion`: for clarification
|
|
85
|
+
- `Read`: for reading `.viban/workflow.md`
|
|
104
86
|
|
|
105
|
-
|
|
87
|
+
**FORBIDDEN tools and actions:**
|
|
88
|
+
- `Edit`: NEVER use. No file modifications of any kind.
|
|
89
|
+
- `Write` to any path outside `/tmp/viban-*.md` and `.viban/plans/`: FORBIDDEN.
|
|
90
|
+
- `Bash` for anything other than `viban` CLI and `cat`/`mkdir` above: FORBIDDEN.
|
|
91
|
+
- No `git` commands. No source code reads. No codebase exploration.
|
|
106
92
|
|
|
107
|
-
|
|
108
|
-
- **NEVER
|
|
109
|
-
- **NEVER start implementation** — even after plan mode, just save the plan and stop
|
|
110
|
-
- No codebase exploration — assignee does that in `/viban:assign`
|
|
93
|
+
### Additional rules:
|
|
94
|
+
- **NEVER read or write `viban.json` directly** — always use `viban` CLI commands
|
|
111
95
|
- No solution proposals in the issue — symptoms only
|
|
112
96
|
- Check duplicates first: `viban list`
|
|
113
97
|
- P0 is system-down only
|
package/skills/assign/SKILL.md
CHANGED
|
@@ -101,9 +101,7 @@ Clarification added to issue description.
|
|
|
101
101
|
|
|
102
102
|
## CRITICAL
|
|
103
103
|
|
|
104
|
-
> - **NEVER read or write `viban.json` directly** — always use `viban` CLI commands (`viban assign`, `viban get`, `viban list`, etc.)
|
|
105
|
-
> - **FORBIDDEN: `viban done`** — this DELETES the card permanently. NEVER run it.
|
|
106
|
-
> - **FORBIDDEN: `viban review`** — the issue stays in `in_progress` for the next work session.
|
|
104
|
+
> - **NEVER read or write `viban.json` directly** — always use `viban` CLI commands (`viban assign`, `viban get`, `viban list`, `viban done`, etc.)
|
|
107
105
|
> - This command **assigns only**. Do NOT create branches, write code, or start implementation.
|
|
108
106
|
> - If the issue is clear, just report and finish immediately.
|
|
109
107
|
|
|
@@ -113,3 +111,6 @@ Clarification added to issue description.
|
|
|
113
111
|
|---------|-------------|
|
|
114
112
|
| `viban assign [session]` | Assign issue |
|
|
115
113
|
| `viban get <id>` | View issue |
|
|
114
|
+
| `viban done <id>` | Mark as done (non-destructive) |
|
|
115
|
+
| `viban done <id> --remove` | Delete card permanently |
|
|
116
|
+
| `viban review [id]` | Move to review |
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -211,15 +211,15 @@ Ask only what the agent **cannot infer on its own**. One AskUserQuestion call, 3
|
|
|
211
211
|
- "Stop before commit — I'll review the code first (review in terminal/IDE)"
|
|
212
212
|
- multiSelect: false
|
|
213
213
|
|
|
214
|
-
**Q2. Issue
|
|
215
|
-
- header: "
|
|
216
|
-
- question: "
|
|
214
|
+
**Q2. Issue Tracker Sync**
|
|
215
|
+
- header: "Sync"
|
|
216
|
+
- question: "Sync issues with an external tracker (GitHub Issues, Jira, Linear, etc.)?"
|
|
217
217
|
- options:
|
|
218
|
-
- "
|
|
219
|
-
- "
|
|
220
|
-
- "
|
|
218
|
+
- "Yes — set up two-way sync (issues imported from provider)"
|
|
219
|
+
- "No — auto-number locally (#1, #2, #3...)"
|
|
220
|
+
- "No — but use manual external IDs (e.g. PROJ-42)"
|
|
221
221
|
- multiSelect: false
|
|
222
|
-
- If user selects "
|
|
222
|
+
- If user selects "Yes", run `viban sync` to initialize sync after workflow setup completes.
|
|
223
223
|
|
|
224
224
|
**Q3. Extra Rules**
|
|
225
225
|
|
|
@@ -302,12 +302,12 @@ Combine **auto-detected values** (Step 7) with **interview answers** (Step 8) to
|
|
|
302
302
|
| Value | Source | Example |
|
|
303
303
|
|-------|--------|---------|
|
|
304
304
|
| Pipeline | Q1 | "Full auto" or "Stop before PR" |
|
|
305
|
-
| Issue
|
|
305
|
+
| Issue tracker sync | Q2 | "Yes (sync)" or "No (auto)" or "No (manual IDs)" |
|
|
306
306
|
| Extra rules | Q3 | User-typed rules or "None" |
|
|
307
307
|
|
|
308
308
|
**Workflow generation principles:**
|
|
309
309
|
- **Q1 (Pipeline) determines the entire automation structure** — which phases run automatically, where to stop, and whether to create PRs. "Full auto" = no stops + auto PR. "Stop before PR" = auto commit + user creates PR. "Stop before commit" = implement only + user reviews.
|
|
310
|
-
- **Q2 (Issue
|
|
310
|
+
- **Q2 (Issue tracker sync) determines how issues are managed.** "Yes" = run `viban sync` after setup to import/sync issues from external tracker (GitHub, Jira, Linear, etc.), IDs come from provider. "No — auto-number" = viban auto-assigns `#1`, `#2`. "No — manual IDs" = agent asks for an external ID each time and passes `--ext-id` to `viban add`. When manual, commits/PRs reference the external ID instead of `#N`.
|
|
311
311
|
- **Q3 (Extra rules) is appended verbatim to the Additional Rules section.** If user mentions conventions, evidence, CHANGELOG, language, etc., incorporate into the relevant phase.
|
|
312
312
|
- **Commit/PR conventions are auto-detected from git history** (Step 7.2). If the user overrides via Q3, use the user's preference instead.
|
|
313
313
|
- **Everything else uses smart defaults.** Analysis depth, implementation approach, quality gates, verification methods, issue numbering, post-merge — all auto-determined by the agent or set to sensible defaults.
|
|
@@ -413,7 +413,7 @@ If build/test fails: fix errors, return to Phase 3.
|
|
|
413
413
|
|
|
414
414
|
## Issue Management
|
|
415
415
|
|
|
416
|
-
- Issue
|
|
416
|
+
- Issue tracking: {FROM Q2: "Yes" = synced with external tracker via `viban sync`, "No — auto-number" = auto-increment (viban default), "No — manual IDs" = ask for external ID via `--ext-id` flag}
|
|
417
417
|
- Test evidence: include test output in PR body
|
|
418
418
|
- Post-merge: auto-close issue (`viban done {id}`), delete branch
|
|
419
419
|
|