claude-plugin-viban 1.0.35 → 1.0.36
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 +3 -1
- package/commands/setup.md +9 -5
- package/docs/CLAUDE.md +68 -0
- package/install.sh +3 -0
- package/package.json +1 -1
- package/scripts/check-deps.sh +1 -0
- package/skills/setup/SKILL.md +9 -5
- package/skills/release/SKILL.md +0 -100
- /package/{commands → docs}/release.md +0 -0
package/README.md
CHANGED
|
@@ -50,6 +50,7 @@ This separation keeps your workflow clean and prevents context switching.
|
|
|
50
50
|
## Requirements
|
|
51
51
|
|
|
52
52
|
- zsh
|
|
53
|
+
- python3 (macOS/Linux built-in)
|
|
53
54
|
- [gum](https://github.com/charmbracelet/gum)
|
|
54
55
|
- [jq](https://jqlang.github.io/jq/)
|
|
55
56
|
|
|
@@ -289,7 +290,8 @@ claude-plugin-viban/
|
|
|
289
290
|
├── docs/
|
|
290
291
|
│ └── CLAUDE.md # Claude Code integration guide
|
|
291
292
|
├── scripts/
|
|
292
|
-
│
|
|
293
|
+
│ ├── check-deps.sh # Dependency checker
|
|
294
|
+
│ └── tui_coprocess.py # Persistent Python coprocess for TUI rendering
|
|
293
295
|
├── skills/
|
|
294
296
|
│ ├── assign/SKILL.md # /viban:assign skill
|
|
295
297
|
│ ├── setup/SKILL.md # /viban:setup skill
|
package/commands/setup.md
CHANGED
|
@@ -35,9 +35,10 @@ Check which dependencies are already installed:
|
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
command -v zsh &> /dev/null && echo "✓ zsh" || echo "✗ zsh"
|
|
38
|
+
command -v python3 &> /dev/null && echo "✓ python3" || echo "✗ python3"
|
|
38
39
|
command -v gum &> /dev/null && echo "✓ gum" || echo "✗ gum"
|
|
39
40
|
command -v jq &> /dev/null && echo "✓ jq" || echo "✗ jq"
|
|
40
|
-
command -v viban &> /dev/null && echo "✓ viban" || echo "✗ viban"
|
|
41
|
+
command -v viban &> /dev/null && echo "✓ viban ($(viban --version 2>/dev/null || echo 'not installed'))" || echo "✗ viban"
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
### Step 3: Install Missing Dependencies
|
|
@@ -92,12 +93,14 @@ sudo dnf install -y gum
|
|
|
92
93
|
sudo pacman -S --noconfirm zsh jq gum
|
|
93
94
|
```
|
|
94
95
|
|
|
95
|
-
### Step 4: Install viban CLI
|
|
96
|
+
### Step 4: Install or Update viban CLI
|
|
96
97
|
|
|
97
98
|
```bash
|
|
98
|
-
npm install -g claude-plugin-viban
|
|
99
|
+
npm install -g claude-plugin-viban@latest
|
|
99
100
|
```
|
|
100
101
|
|
|
102
|
+
This installs viban if not present, or updates to the latest version if already installed.
|
|
103
|
+
|
|
101
104
|
### Step 5: Verify Installation
|
|
102
105
|
|
|
103
106
|
```bash
|
|
@@ -113,6 +116,7 @@ If successful, show:
|
|
|
113
116
|
|
|
114
117
|
All dependencies installed:
|
|
115
118
|
✓ zsh
|
|
119
|
+
✓ python3
|
|
116
120
|
✓ gum
|
|
117
121
|
✓ jq
|
|
118
122
|
✓ viban
|
|
@@ -121,8 +125,8 @@ You can now use:
|
|
|
121
125
|
viban Open TUI board
|
|
122
126
|
viban add "task" Add a task
|
|
123
127
|
viban list List all tasks
|
|
124
|
-
/assign
|
|
125
|
-
/
|
|
128
|
+
/viban:assign Auto-resolve next issue
|
|
129
|
+
/viban:add Create structured issue
|
|
126
130
|
```
|
|
127
131
|
|
|
128
132
|
### Step 6: Workflow Setup Introduction
|
package/docs/CLAUDE.md
CHANGED
|
@@ -29,6 +29,16 @@ EOF
|
|
|
29
29
|
- 스피너 있을 때/없을 때 둘 다 확인
|
|
30
30
|
- 한글 포함 제목 truncation
|
|
31
31
|
|
|
32
|
+
## Dependency Management
|
|
33
|
+
|
|
34
|
+
**새 런타임 의존성 추가 시 4곳 모두 업데이트 필수:**
|
|
35
|
+
- `README.md` (Requirements 섹션)
|
|
36
|
+
- `scripts/check-deps.sh` (check_dep 호출)
|
|
37
|
+
- `install.sh` (install_pkg 호출)
|
|
38
|
+
- `skills/setup/SKILL.md` (체크 목록 + 완료 메시지)
|
|
39
|
+
|
|
40
|
+
릴리스 전 누락 여부 확인할 것.
|
|
41
|
+
|
|
32
42
|
## Release Rules
|
|
33
43
|
|
|
34
44
|
**릴리즈는 사용자가 명시적으로 요청할 때만 수행한다.**
|
|
@@ -106,6 +116,64 @@ local title=$(printf '%s' "$issue" | jq -r '.title')
|
|
|
106
116
|
|
|
107
117
|
Violating this rule causes jq parse errors on issues with newlines/tabs in description.
|
|
108
118
|
|
|
119
|
+
### Coprocess Pattern (FIFO-based)
|
|
120
|
+
|
|
121
|
+
**zsh `coproc` 사용 금지** - `read -sk1` 키 입력과 충돌. 대신 FIFO + fd 사용.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# BAD: coproc interferes with read -sk1
|
|
125
|
+
coproc python3 script.py
|
|
126
|
+
echo "cmd" >&p
|
|
127
|
+
read -r result <&p
|
|
128
|
+
|
|
129
|
+
# GOOD: explicit FIFOs with file descriptors
|
|
130
|
+
mkfifo "$_in_fifo" "$_out_fifo"
|
|
131
|
+
python3 script.py < "$_in_fifo" > "$_out_fifo" &
|
|
132
|
+
exec 7>"$_in_fifo" 8<"$_out_fifo"
|
|
133
|
+
echo "cmd" >&7
|
|
134
|
+
read -r result <&8
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Variable Declaration in Loops
|
|
138
|
+
|
|
139
|
+
**`local` 을 루프 안에서 재선언하면 현재 값이 stdout으로 출력됨**
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# BAD: 2회차부터 _bc의 값이 stdout에 찍힘
|
|
143
|
+
while ...; do
|
|
144
|
+
local _cc=${#_title} _bc
|
|
145
|
+
done
|
|
146
|
+
|
|
147
|
+
# GOOD: 루프 밖에서 선언, 안에서 할당만
|
|
148
|
+
local _cc _bc
|
|
149
|
+
while ...; do
|
|
150
|
+
_cc=${#_title}
|
|
151
|
+
done
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### EXIT Trap in Subshells
|
|
155
|
+
|
|
156
|
+
**`$(...)` 서브셸에서 EXIT trap 이 발동됨** - cleanup 함수에 가드 필요
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
cleanup() {
|
|
160
|
+
[[ ${ZSH_SUBSHELL:-0} -gt 0 ]] && return
|
|
161
|
+
# ... actual cleanup
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Parameter Flag Syntax
|
|
166
|
+
|
|
167
|
+
**`${(@f)var}` 에서 `$` 접두사 불필요**
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# BAD: bad substitution error
|
|
171
|
+
${(@f)$_COPROC_RESULT}
|
|
172
|
+
|
|
173
|
+
# GOOD
|
|
174
|
+
${(@f)_COPROC_RESULT}
|
|
175
|
+
```
|
|
176
|
+
|
|
109
177
|
### Locale Handling (zsh-specific)
|
|
110
178
|
|
|
111
179
|
**`LC_ALL=C var=val` persists in zsh (unlike bash)**
|
package/install.sh
CHANGED
package/package.json
CHANGED
package/scripts/check-deps.sh
CHANGED
package/skills/setup/SKILL.md
CHANGED
|
@@ -36,9 +36,10 @@ Check which dependencies are already installed:
|
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
command -v zsh &> /dev/null && echo "✓ zsh" || echo "✗ zsh"
|
|
39
|
+
command -v python3 &> /dev/null && echo "✓ python3" || echo "✗ python3"
|
|
39
40
|
command -v gum &> /dev/null && echo "✓ gum" || echo "✗ gum"
|
|
40
41
|
command -v jq &> /dev/null && echo "✓ jq" || echo "✗ jq"
|
|
41
|
-
command -v viban &> /dev/null && echo "✓ viban" || echo "✗ viban"
|
|
42
|
+
command -v viban &> /dev/null && echo "✓ viban ($(viban --version 2>/dev/null || echo 'not installed'))" || echo "✗ viban"
|
|
42
43
|
```
|
|
43
44
|
|
|
44
45
|
### Step 3: Install Missing Dependencies
|
|
@@ -93,12 +94,14 @@ sudo dnf install -y gum
|
|
|
93
94
|
sudo pacman -S --noconfirm zsh jq gum
|
|
94
95
|
```
|
|
95
96
|
|
|
96
|
-
### Step 4: Install viban CLI
|
|
97
|
+
### Step 4: Install or Update viban CLI
|
|
97
98
|
|
|
98
99
|
```bash
|
|
99
|
-
npm install -g claude-plugin-viban
|
|
100
|
+
npm install -g claude-plugin-viban@latest
|
|
100
101
|
```
|
|
101
102
|
|
|
103
|
+
This installs viban if not present, or updates to the latest version if already installed.
|
|
104
|
+
|
|
102
105
|
### Step 5: Verify Installation
|
|
103
106
|
|
|
104
107
|
```bash
|
|
@@ -114,6 +117,7 @@ If successful, show:
|
|
|
114
117
|
|
|
115
118
|
All dependencies installed:
|
|
116
119
|
✓ zsh
|
|
120
|
+
✓ python3
|
|
117
121
|
✓ gum
|
|
118
122
|
✓ jq
|
|
119
123
|
✓ viban
|
|
@@ -122,8 +126,8 @@ You can now use:
|
|
|
122
126
|
viban Open TUI board
|
|
123
127
|
viban add "task" Add a task
|
|
124
128
|
viban list List all tasks
|
|
125
|
-
/assign
|
|
126
|
-
/
|
|
129
|
+
/viban:assign Auto-resolve next issue
|
|
130
|
+
/viban:add Create structured issue
|
|
127
131
|
```
|
|
128
132
|
|
|
129
133
|
### Step 6: Workflow Setup Introduction
|
package/skills/release/SKILL.md
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: release
|
|
3
|
-
description: "Bump version, commit, tag, and push to trigger npm publish"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /release - Release a new version
|
|
7
|
-
|
|
8
|
-
Bump the package version, commit, tag, and push to trigger the automated npm publish workflow.
|
|
9
|
-
|
|
10
|
-
## Execution Steps
|
|
11
|
-
|
|
12
|
-
### Step 1: Pre-flight checks
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
# Ensure on main branch
|
|
16
|
-
git branch --show-current # must be "main"
|
|
17
|
-
|
|
18
|
-
# Ensure working tree is clean (no uncommitted changes)
|
|
19
|
-
git status --porcelain
|
|
20
|
-
|
|
21
|
-
# Ensure up to date with remote
|
|
22
|
-
git fetch origin main
|
|
23
|
-
git diff origin/main --stat
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
If not on main, working tree is dirty, or behind remote: **stop and inform user**.
|
|
27
|
-
|
|
28
|
-
### Step 2: Determine version bump
|
|
29
|
-
|
|
30
|
-
Read current version from `package.json`:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
grep '"version"' package.json
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Ask user with AskUserQuestion:
|
|
37
|
-
- header: "Version"
|
|
38
|
-
- question: "Current version is {current}. What kind of bump?"
|
|
39
|
-
- options:
|
|
40
|
-
- "patch" (x.y.Z) - bug fixes, small changes
|
|
41
|
-
- "minor" (x.Y.0) - new features, backward compatible
|
|
42
|
-
- "major" (X.0.0) - breaking changes
|
|
43
|
-
- multiSelect: false
|
|
44
|
-
|
|
45
|
-
Calculate the new version based on selection.
|
|
46
|
-
|
|
47
|
-
### Step 3: Show changelog preview
|
|
48
|
-
|
|
49
|
-
Show commits since last tag:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
git log $(git describe --tags --abbrev=0)..HEAD --oneline
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Display to user for confirmation before proceeding.
|
|
56
|
-
|
|
57
|
-
### Step 4: Run tests
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
zsh tests/run_all.zsh
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
If tests fail: **stop and inform user**. Do not release with failing tests.
|
|
64
|
-
|
|
65
|
-
### Step 5: Bump version and release
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Update package.json version
|
|
69
|
-
# (use jq or sed to update the version field)
|
|
70
|
-
|
|
71
|
-
# Commit
|
|
72
|
-
git add package.json
|
|
73
|
-
git commit -m "{new_version}"
|
|
74
|
-
|
|
75
|
-
# Tag
|
|
76
|
-
git tag v{new_version}
|
|
77
|
-
|
|
78
|
-
# Push with tags
|
|
79
|
-
git push origin main --tags
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Step 6: Confirm
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
╭──────────────────────────────────────╮
|
|
86
|
-
│ Released v{new_version}! │
|
|
87
|
-
╰──────────────────────────────────────╯
|
|
88
|
-
|
|
89
|
-
- npm publish: triggered via GitHub Actions
|
|
90
|
-
- GitHub Release: auto-generated with release notes
|
|
91
|
-
|
|
92
|
-
Check: https://github.com/happy-nut/claude-plugin-viban/actions
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Error Handling
|
|
96
|
-
|
|
97
|
-
- **Not on main**: "Switch to main branch first"
|
|
98
|
-
- **Dirty working tree**: "Commit or stash changes first"
|
|
99
|
-
- **Tests failing**: "Fix failing tests before release"
|
|
100
|
-
- **Push failed**: "Check remote access and try again"
|
|
File without changes
|