claude-plugin-viban 1.0.24 → 1.0.26

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/README.md CHANGED
@@ -50,89 +50,44 @@ This separation keeps your workflow clean and prevents context switching.
50
50
  ## Requirements
51
51
 
52
52
  - zsh
53
- - [gum](https://github.com/charmbracelet/gum) - `brew install gum`
54
- - [jq](https://jqlang.github.io/jq/) - `brew install jq`
53
+ - [gum](https://github.com/charmbracelet/gum)
54
+ - [jq](https://jqlang.github.io/jq/)
55
55
 
56
- ## Installation
57
-
58
- ### One-liner (Recommended)
59
-
60
- Installs all dependencies (zsh, gum, jq) and viban automatically:
61
-
62
- ```bash
63
- curl -fsSL https://raw.githubusercontent.com/happy-nut/claude-plugin-viban/main/install.sh | bash
64
- ```
65
-
66
- ### Via npm
56
+ > **Tip:** If using Claude Code, run `/viban:setup` to install all dependencies automatically.
67
57
 
68
- If you already have zsh, gum, and jq installed:
69
-
70
- ```bash
71
- npm install -g claude-plugin-viban
72
- ```
58
+ ## Installation
73
59
 
74
- After installation, `viban` command is automatically available in your terminal.
60
+ ### For Claude Code Users
75
61
 
76
- **Verify installation:**
77
62
  ```bash
78
- viban help
63
+ /plugin marketplace add https://github.com/happy-nut/claude-plugin-viban
64
+ /plugin install viban
65
+ /viban:setup # Installs all dependencies automatically
79
66
  ```
80
67
 
81
- ### Shell Setup (if viban command not found)
82
-
83
- If `viban` is not found after npm install, add npm global bin to your PATH:
68
+ ### For Terminal Users
84
69
 
85
- **For zsh (macOS default):**
86
70
  ```bash
87
- # Add to ~/.zshrc
88
- export PATH="$PATH:$(npm config get prefix)/bin"
89
-
90
- # Reload
91
- source ~/.zshrc
92
- ```
93
-
94
- **For bash:**
95
- ```bash
96
- # Add to ~/.bashrc
97
- export PATH="$PATH:$(npm config get prefix)/bin"
98
-
99
- # Reload
100
- source ~/.bashrc
71
+ curl -fsSL https://raw.githubusercontent.com/happy-nut/claude-plugin-viban/main/install.sh | bash
101
72
  ```
102
73
 
103
- ### Manual Installation
104
-
74
+ Or via npm (requires zsh, gum, jq pre-installed):
105
75
  ```bash
106
- git clone https://github.com/happy-nut/claude-plugin-viban.git
107
- cd claude-plugin-viban
108
- chmod +x bin/viban scripts/check-deps.sh
109
-
110
- # Option 1: Symlink to /usr/local/bin
111
- ln -s "$(pwd)/bin/viban" /usr/local/bin/viban
112
-
113
- # Option 2: Add to PATH
114
- echo 'export PATH="$PATH:'$(pwd)'/bin"' >> ~/.zshrc
115
- source ~/.zshrc
76
+ npm install -g claude-plugin-viban
116
77
  ```
117
78
 
118
- ### Claude Code Plugin
119
-
120
- To use viban commands in Claude Code:
79
+ <details>
80
+ <summary>Troubleshooting: viban command not found</summary>
121
81
 
82
+ Add npm global bin to your PATH:
122
83
  ```bash
123
- # Add as plugin marketplace
124
- /plugin marketplace add https://github.com/happy-nut/claude-plugin-viban
125
-
126
- # Install the plugin
127
- /plugin install viban
128
-
129
- # Install dependencies (first time only)
130
- /viban:setup
84
+ # For zsh
85
+ echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.zshrc && source ~/.zshrc
131
86
 
132
- # Now you can use:
133
- /viban:assign
134
- /viban:task
87
+ # For bash
88
+ echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc && source ~/.bashrc
135
89
  ```
90
+ </details>
136
91
 
137
92
  ## Usage
138
93
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-plugin-viban",
3
- "version": "1.0.24",
3
+ "version": "1.0.26",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "main": "bin/viban",
6
6
  "bin": {
@@ -0,0 +1,86 @@
1
+ #!/bin/bash
2
+ # Generate release notes from conventional commits
3
+ # Usage: ./generate-release-notes.sh [previous_tag] [current_tag]
4
+
5
+ set -e
6
+
7
+ PREVIOUS_TAG="${1:-$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")}"
8
+ CURRENT_TAG="${2:-$(git describe --tags --abbrev=0 HEAD 2>/dev/null || echo "HEAD")}"
9
+
10
+ # If no previous tag, get all commits
11
+ if [[ -z "$PREVIOUS_TAG" ]]; then
12
+ COMMIT_RANGE="$CURRENT_TAG"
13
+ else
14
+ COMMIT_RANGE="${PREVIOUS_TAG}..${CURRENT_TAG}"
15
+ fi
16
+
17
+ # Arrays for categorized commits
18
+ declare -a FEATURES=()
19
+ declare -a FIXES=()
20
+ declare -a DOCS=()
21
+ declare -a CHORES=()
22
+ declare -a OTHERS=()
23
+
24
+ # Parse commits
25
+ while IFS= read -r line; do
26
+ [[ -z "$line" ]] && continue
27
+
28
+ # Extract commit message (remove hash prefix if present)
29
+ msg="$line"
30
+
31
+ # Categorize by conventional commit prefix
32
+ if [[ "$msg" =~ ^feat(\(.+\))?:\ (.+)$ ]]; then
33
+ FEATURES+=("${BASH_REMATCH[2]}")
34
+ elif [[ "$msg" =~ ^fix(\(.+\))?:\ (.+)$ ]]; then
35
+ FIXES+=("${BASH_REMATCH[2]}")
36
+ elif [[ "$msg" =~ ^docs(\(.+\))?:\ (.+)$ ]]; then
37
+ DOCS+=("${BASH_REMATCH[2]}")
38
+ elif [[ "$msg" =~ ^chore(\(.+\))?:\ (.+)$ ]]; then
39
+ CHORES+=("${BASH_REMATCH[2]}")
40
+ elif [[ "$msg" =~ ^(ci|test|refactor|perf|style|build)(\(.+\))?:\ (.+)$ ]]; then
41
+ CHORES+=("${BASH_REMATCH[3]}")
42
+ else
43
+ # Skip release commits and merge commits
44
+ if [[ ! "$msg" =~ ^(Merge|release|chore:\ release) ]]; then
45
+ OTHERS+=("$msg")
46
+ fi
47
+ fi
48
+ done < <(git log --pretty=format:"%s" "$COMMIT_RANGE" 2>/dev/null)
49
+
50
+ # Generate release notes
51
+ generate_section() {
52
+ local title="$1"
53
+ shift
54
+ local items=("$@")
55
+
56
+ if [[ ${#items[@]} -gt 0 ]]; then
57
+ echo "## $title"
58
+ echo ""
59
+ for item in "${items[@]}"; do
60
+ # Capitalize first letter
61
+ item="$(echo "${item:0:1}" | tr '[:lower:]' '[:upper:]')${item:1}"
62
+ echo "- $item"
63
+ done
64
+ echo ""
65
+ fi
66
+ }
67
+
68
+ # Output release notes
69
+ if [[ -n "$PREVIOUS_TAG" ]]; then
70
+ echo "# What's Changed"
71
+ echo ""
72
+ fi
73
+
74
+ generate_section "Features" "${FEATURES[@]}"
75
+ generate_section "Bug Fixes" "${FIXES[@]}"
76
+ generate_section "Documentation" "${DOCS[@]}"
77
+ generate_section "Maintenance" "${CHORES[@]}"
78
+ generate_section "Other Changes" "${OTHERS[@]}"
79
+
80
+ # Add full changelog link
81
+ if [[ -n "$PREVIOUS_TAG" ]]; then
82
+ REPO_URL=$(git remote get-url origin 2>/dev/null | sed 's/\.git$//' | sed 's/git@github.com:/https:\/\/github.com\//')
83
+ if [[ -n "$REPO_URL" ]]; then
84
+ echo "**Full Changelog**: ${REPO_URL}/compare/${PREVIOUS_TAG}...${CURRENT_TAG}"
85
+ fi
86
+ fi
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: task
3
3
  description: "Analyze problem and register as viban issue with evidence"
4
+ enter_plan_mode: true
4
5
  ---
5
6
 
6
7
  # /task - Problem Analysis and Issue Registration
@@ -10,22 +11,67 @@ Analyze problem situation and register as viban issue with file locations and ev
10
11
  > **Core Principle**: Focus on **symptoms and problem definition**, not solutions.
11
12
  > Solutions are decided by the assignee after understanding full context.
12
13
 
13
- ## Input Verification
14
+ ## Interview Phase (Required)
14
15
 
15
- **User Input**: `$ARGUMENTS`
16
+ **Always start with an interview** to gather complete context before exploring code.
16
17
 
17
- If input is empty or unclear:
18
- 1. Use AskUserQuestion to ask about the problem
19
- 2. Proceed after receiving response
18
+ ### Interview Questions
19
+
20
+ Use AskUserQuestion to ask these questions (can combine related ones):
21
+
22
+ **1. Problem Identification**
23
+ ```
24
+ What problem are you experiencing?
25
+
26
+ - Error message or unexpected behavior
27
+ - What feature/page is affected
28
+ - When did it start happening
29
+ ```
30
+
31
+ **2. Reproduction Context**
32
+ ```
33
+ How can this be reproduced?
34
+
35
+ - Step-by-step actions
36
+ - Environment (local/staging/production)
37
+ - Frequency (always/sometimes/once)
38
+ ```
39
+
40
+ **3. Expected vs Actual**
41
+ ```
42
+ What should happen vs what actually happens?
43
+
44
+ - Expected behavior
45
+ - Actual result
46
+ - Any error messages or logs
47
+ ```
48
+
49
+ **4. Additional Context** (optional, ask if needed)
50
+ ```
51
+ Any additional context?
52
+
53
+ - Recent changes that might be related
54
+ - Workarounds tried
55
+ - Related issues or features
56
+ ```
57
+
58
+ ### Interview Strategy
59
+
60
+ - Ask 1-2 questions at a time using AskUserQuestion
61
+ - Provide options when possible for faster responses
62
+ - Stop interviewing when you have enough to:
63
+ 1. Search for relevant code
64
+ 2. Determine priority and type
65
+ 3. Write clear symptoms
20
66
 
21
67
  ## Execution Steps
22
68
 
23
- ### Step 1: Problem Identification
69
+ ### Step 1: Problem Identification (from interview)
24
70
 
25
- Analyze the problem described by user:
26
- 1. **Identify symptoms**: Clearly define what the problem is
27
- 2. **Extract keywords**: Error messages, feature names, module names, etc.
28
- 3. **Determine priority**:
71
+ From the interview responses, extract:
72
+ 1. **Symptoms**: Clearly define what the problem is
73
+ 2. **Keywords**: Error messages, feature names, module names
74
+ 3. **Priority**:
29
75
  | Condition | Priority |
30
76
  |-----------|----------|
31
77
  | System down, data loss | P0 |
@@ -135,47 +181,43 @@ Next steps:
135
181
  - `viban start {id}` to start working
136
182
  ```
137
183
 
138
- ## When Input is Missing
184
+ ## Example Interview Flow
139
185
 
140
- Use AskUserQuestion with these prompts:
186
+ **User runs**: `/viban:task`
141
187
 
188
+ **Agent**: (AskUserQuestion)
142
189
  ```
143
- What problem should be registered as an issue?
144
-
145
- Please include:
146
- 1. What is the problem? (error message, unexpected behavior, etc.)
147
- 2. Where does it occur? (page, API, feature, etc.)
148
- 3. How to reproduce? (step-by-step)
190
+ What problem are you experiencing?
191
+
192
+ Options:
193
+ - Something is broken/erroring
194
+ - Feature not working as expected
195
+ - Performance issue
196
+ - Need new feature/improvement
197
+ - Other
149
198
  ```
150
199
 
151
- ## Example
152
-
153
- **Input**: "Charts not showing on backtest results page"
200
+ **User selects**: "Something is broken/erroring"
154
201
 
155
- **Analysis Process**:
156
- 1. Keywords: backtest, results, chart
157
- 2. Code exploration:
158
- ```bash
159
- grep -r "chart" . --include="*.tsx" --include="*.ts"
160
- ```
161
- 3. Related file found: `src/pages/backtest/results.tsx`
162
- 4. Check chart rendering logic
163
-
164
- **Registration Command**:
165
- ```bash
166
- viban add "Backtest results chart not displayed" "$'## Symptoms\n...'" P1 bug
202
+ **Agent**: (AskUserQuestion)
167
203
  ```
204
+ Please describe the error:
168
205
 
169
- **Registered Issue**:
170
- ```
171
- Title: Backtest results chart not displayed
172
- Priority: P1
173
- Type: bug
174
- Location: src/pages/backtest/results.tsx
206
+ 1. What action triggers it?
207
+ 2. What error message do you see?
208
+ 3. Which page/feature is affected?
175
209
  ```
176
210
 
211
+ **User responds**: "When I click the chart on backtest results, nothing happens. Console shows 'Cannot read property of undefined'"
212
+
213
+ **Agent**: Now has enough context to:
214
+ 1. Search for chart-related code in backtest
215
+ 2. Look for the specific error pattern
216
+ 3. Register issue with proper details
217
+
177
218
  ## Important Notes
178
219
 
220
+ - **Interview First**: Always gather context before code exploration
179
221
  - **Location Required**: Do not register without file path
180
222
  - **Evidence Required**: Do not register based on guesses without code exploration
181
223
  - **Avoid Solutions**: Do not write specific solutions (assignee decides)