@vibedx/vibekit 0.9.0 → 0.10.0
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/package.json +3 -2
- package/vibekit-plugin/.claude-plugin/plugin.json +20 -0
- package/vibekit-plugin/README.md +57 -0
- package/vibekit-plugin/agents/reviewer.md +47 -0
- package/vibekit-plugin/agents/ticket-worker.md +47 -0
- package/vibekit-plugin/hooks/detect-vibe.sh +15 -0
- package/vibekit-plugin/hooks/hooks.json +17 -0
- package/vibekit-plugin/settings.json +9 -0
- package/vibekit-plugin/skills/ticket-writer/SKILL.md +80 -0
- package/vibekit-plugin/skills/vibekit-workflow/SKILL.md +319 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibedx/vibekit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "A powerful CLI tool for managing development tickets and project workflows",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"index.js",
|
|
9
9
|
"src/",
|
|
10
10
|
"assets/",
|
|
11
|
-
"skills/"
|
|
11
|
+
"skills/",
|
|
12
|
+
"vibekit-plugin/"
|
|
12
13
|
],
|
|
13
14
|
"bin": {
|
|
14
15
|
"vibe": "index.js"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vibekit",
|
|
3
|
+
"displayName": "VibeKit — Ticket-Driven Development",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "Structured ticket workflows, agent orchestration, and worktree isolation for AI-assisted development",
|
|
6
|
+
"author": "vibedx",
|
|
7
|
+
"repository": "https://github.com/vibedx/vibekit",
|
|
8
|
+
"homepage": "https://github.com/vibedx/vibekit",
|
|
9
|
+
"keywords": ["tickets", "workflow", "agents", "worktrees"],
|
|
10
|
+
"skills": [
|
|
11
|
+
"skills/vibekit-workflow",
|
|
12
|
+
"skills/ticket-writer"
|
|
13
|
+
],
|
|
14
|
+
"agents": [
|
|
15
|
+
"agents/ticket-worker.md",
|
|
16
|
+
"agents/reviewer.md"
|
|
17
|
+
],
|
|
18
|
+
"hooks": "hooks/hooks.json",
|
|
19
|
+
"settings": "settings.json"
|
|
20
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# VibeKit — Claude Code Plugin
|
|
2
|
+
|
|
3
|
+
Ticket-driven development workflows for Claude Code. Install once; every project with a `.vibe/` directory gets structured ticket workflows, agent orchestration, and worktree isolation.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/plugin install vibekit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or from the community marketplace browser in Claude Code.
|
|
12
|
+
|
|
13
|
+
## What's included
|
|
14
|
+
|
|
15
|
+
**Skills**
|
|
16
|
+
- `vibekit-workflow` — teaches Claude the full ticket-driven workflow (create → start → implement → close)
|
|
17
|
+
- `ticket-writer` — helps write well-structured tickets with actionable acceptance criteria
|
|
18
|
+
|
|
19
|
+
**Agents**
|
|
20
|
+
- `ticket-worker` — autonomous agent that reads a ticket, implements it, and closes it
|
|
21
|
+
- `reviewer` — reviews a completed ticket against its acceptance criteria
|
|
22
|
+
|
|
23
|
+
**Hooks**
|
|
24
|
+
- `SessionStart` — detects `.vibe/` directory and surfaces open ticket counts on session start
|
|
25
|
+
|
|
26
|
+
## Requirements
|
|
27
|
+
|
|
28
|
+
The VibeKit CLI is optional but recommended for full functionality:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g @vibedx/vibekit
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Without the CLI, skills and agents still work — you just won't get the `vibe` commands for branch management and ticket status updates.
|
|
35
|
+
|
|
36
|
+
## Quick start
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# In any project
|
|
40
|
+
vibe init # set up .vibe/ directory
|
|
41
|
+
vibe new "Add user auth" --priority high -n # create a ticket
|
|
42
|
+
vibe start TKT-001 # start working (creates branch)
|
|
43
|
+
# ... implement the work ...
|
|
44
|
+
vibe close TKT-001 # mark done
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Or let an agent do it:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
vibe start TKT-001 --agent # spawns Claude agent to work on the ticket autonomously
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Links
|
|
54
|
+
|
|
55
|
+
- [VibeKit repo](https://github.com/vibedx/vibekit)
|
|
56
|
+
- [npm package](https://www.npmjs.com/package/@vibedx/vibekit)
|
|
57
|
+
- [Claude Code plugin docs](https://code.claude.com/docs/en/discover-plugins)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewer
|
|
3
|
+
description: Reviews a completed VibeKit ticket against its acceptance criteria. Checks out the branch, reads the ticket, inspects the diff, and reports whether all criteria are met. Use after a ticket-worker agent has finished, or before merging a PR.
|
|
4
|
+
tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
You are a senior code reviewer. Your job is to verify that a VibeKit ticket's implementation matches its acceptance criteria — not to redesign it.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. **Read the ticket** — `cat .vibe/tickets/TKT-XXX-*.md`. Extract the acceptance criteria.
|
|
16
|
+
|
|
17
|
+
2. **Inspect the diff** — `git diff main...HEAD` (or the relevant base branch). Understand what changed.
|
|
18
|
+
|
|
19
|
+
3. **Check each criterion** — For every `- [ ]` item in the acceptance criteria, determine: is this met by the implementation? Be concrete — quote code or explain what's missing.
|
|
20
|
+
|
|
21
|
+
4. **Run tests if present** — `npm test` / `pytest` / whatever the project uses. A failing test suite is a blocking issue.
|
|
22
|
+
|
|
23
|
+
5. **Report** — Produce a structured review:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
## TKT-XXX Review
|
|
27
|
+
|
|
28
|
+
### ✅ Passing criteria
|
|
29
|
+
- [ ] Criterion 1 — met: <brief evidence>
|
|
30
|
+
- [ ] Criterion 2 — met: <brief evidence>
|
|
31
|
+
|
|
32
|
+
### ❌ Failing criteria
|
|
33
|
+
- [ ] Criterion 3 — NOT met: <what's missing and where>
|
|
34
|
+
|
|
35
|
+
### Code notes
|
|
36
|
+
<Optional: any non-blocking observations about code quality, style, or potential bugs>
|
|
37
|
+
|
|
38
|
+
### Verdict
|
|
39
|
+
APPROVED / NEEDS WORK
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Rules
|
|
43
|
+
|
|
44
|
+
- Judge against the ticket's criteria, not your personal preferences. If it meets criteria, approve it even if you'd have done it differently.
|
|
45
|
+
- Be specific about failures. "It doesn't work" is not useful. "The redirect on line 42 of auth.js still points to /dashboard instead of the original destination" is useful.
|
|
46
|
+
- Don't block on style issues. Note them, but don't fail the review for them.
|
|
47
|
+
- If acceptance criteria are too vague to verify, flag that in your review — it's a ticket quality issue, not an implementation issue.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ticket-worker
|
|
3
|
+
description: Works autonomously on a single VibeKit ticket. Reads the ticket, implements the work in a branch or worktree, commits with ticket references, and closes the ticket when done. Use this agent when you need to hand off a ticket for autonomous execution.
|
|
4
|
+
tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Read
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
You are a senior software engineer executing a VibeKit ticket. Your job is to read the ticket thoroughly, implement all acceptance criteria, and leave the codebase better than you found it.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
1. **Read the ticket** — `cat .vibe/tickets/TKT-XXX-*.md`. Understand what's needed and why before touching any code.
|
|
18
|
+
|
|
19
|
+
2. **Start the ticket** — `vibe start TKT-XXX`. This creates the feature branch and marks the ticket `in_progress`.
|
|
20
|
+
|
|
21
|
+
3. **Implement** — Work through the acceptance criteria systematically. Commit after each logical unit of work:
|
|
22
|
+
```bash
|
|
23
|
+
git commit -m "TKT-XXX: descriptive message about what this commit does"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
4. **Verify** — Check every acceptance criterion is met. Run tests if they exist. Don't close until all criteria pass.
|
|
27
|
+
|
|
28
|
+
5. **Close** — `vibe close TKT-XXX`. This marks the ticket `done`.
|
|
29
|
+
|
|
30
|
+
6. **Open a PR if requested** — `vibe pr` opens a GitHub PR with the ticket content as the description.
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- Read the full ticket before writing any code. Misunderstanding scope is the most common failure.
|
|
35
|
+
- Commit early and often with ticket references. Each commit message should start with `TKT-XXX:`.
|
|
36
|
+
- If you hit a blocker that requires a product decision, update the ticket with your finding and stop — don't guess.
|
|
37
|
+
- Do not add features beyond what the acceptance criteria require. Scope creep wastes time.
|
|
38
|
+
- Leave no commented-out code, no TODO comments, and no half-finished work in commits.
|
|
39
|
+
|
|
40
|
+
## On Ambiguity
|
|
41
|
+
|
|
42
|
+
If the ticket is unclear on a specific point, use best judgment for code-level decisions (naming, structure, patterns) but flag any product-level uncertainty in the ticket before closing:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Append a note to the ticket
|
|
46
|
+
echo "\n## Blockers\n- [ ] Need decision on X before this can be fully closed" >> .vibe/tickets/TKT-XXX-*.md
|
|
47
|
+
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# SessionStart hook — detect .vibe/ and emit context for Claude
|
|
3
|
+
|
|
4
|
+
if [ -d ".vibe" ]; then
|
|
5
|
+
echo "VibeKit project detected."
|
|
6
|
+
|
|
7
|
+
if command -v vibe &>/dev/null; then
|
|
8
|
+
OPEN=$(vibe list --status=open 2>/dev/null | wc -l | tr -d ' ')
|
|
9
|
+
IN_PROGRESS=$(vibe list --status=in_progress 2>/dev/null | wc -l | tr -d ' ')
|
|
10
|
+
echo "Tickets: ${IN_PROGRESS} in progress, ${OPEN} open."
|
|
11
|
+
echo "Use 'vibe list' to see tickets, 'vibe start TKT-XXX' to begin work."
|
|
12
|
+
else
|
|
13
|
+
echo "Install vibekit CLI: npm install -g @vibedx/vibekit"
|
|
14
|
+
fi
|
|
15
|
+
fi
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": [
|
|
3
|
+
{
|
|
4
|
+
"event": "SessionStart",
|
|
5
|
+
"description": "Detect .vibe/ directory and load ticket context",
|
|
6
|
+
"command": "bash hooks/detect-vibe.sh"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"event": "PostToolUse",
|
|
10
|
+
"matcher": {
|
|
11
|
+
"tool": "Bash",
|
|
12
|
+
"pattern": "git commit"
|
|
13
|
+
},
|
|
14
|
+
"description": "Remind agent to update ticket status after commits"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ticket-writer
|
|
3
|
+
description: Write well-structured VibeKit tickets. Use when the user asks to create a ticket, document a task, or break down a feature into trackable work items. Ensures tickets have clear descriptions, acceptance criteria, and implementation notes before any code is written.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# VibeKit Ticket Writer
|
|
8
|
+
|
|
9
|
+
Write tickets that are immediately actionable — no refinement needed. Every ticket should answer: what, why, and how to verify it's done.
|
|
10
|
+
|
|
11
|
+
## 🔴 RULE: Always use `-n` when creating tickets programmatically
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
vibe new "title" --assignee <username> --priority <level> -n
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The `-n` / `--no-interactive` flag skips the AI enhancement prompt, which would otherwise block automation.
|
|
18
|
+
|
|
19
|
+
## What Makes a Good Ticket
|
|
20
|
+
|
|
21
|
+
**Description** — What needs to be done and why. Include context the implementer needs. Two to five sentences is usually right.
|
|
22
|
+
|
|
23
|
+
**Acceptance Criteria** — Concrete, checkable conditions. Not "it works" but "clicking Submit saves the form and shows a success toast". Write these as `- [ ]` checkboxes.
|
|
24
|
+
|
|
25
|
+
**Implementation Notes** — File paths, API references, known constraints, or design decisions that save the implementer time.
|
|
26
|
+
|
|
27
|
+
## Template
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
vibe new "Clear action-oriented title" \
|
|
31
|
+
--assignee <username> \
|
|
32
|
+
--priority high \
|
|
33
|
+
--description "What needs to happen and why. Reference the relevant product area or user flow. Note any constraints or dependencies." \
|
|
34
|
+
--acceptance-criteria "- [ ] Specific, observable outcome 1
|
|
35
|
+
- [ ] Specific, observable outcome 2
|
|
36
|
+
- [ ] Edge case handled: <description>" \
|
|
37
|
+
-n
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Priority Guide
|
|
41
|
+
|
|
42
|
+
| Priority | Use when |
|
|
43
|
+
|----------|----------|
|
|
44
|
+
| `critical` | Blocking release, production incident |
|
|
45
|
+
| `high` | Current sprint, clear business need |
|
|
46
|
+
| `medium` | Planned work, next 1-2 sprints |
|
|
47
|
+
| `low` | Nice to have, backlog |
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Feature
|
|
53
|
+
vibe new "Add dark mode toggle to settings" \
|
|
54
|
+
--assignee alice \
|
|
55
|
+
--priority medium \
|
|
56
|
+
--description "Users want to reduce eye strain. Add a toggle in Settings > Appearance that persists the preference to localStorage and applies a 'dark' class to <html>." \
|
|
57
|
+
--acceptance-criteria "- [ ] Toggle appears in Settings > Appearance
|
|
58
|
+
- [ ] Preference persists across page reloads
|
|
59
|
+
- [ ] All components respect dark mode colors from design tokens
|
|
60
|
+
- [ ] Toggle is keyboard accessible" \
|
|
61
|
+
-n
|
|
62
|
+
|
|
63
|
+
# Bug fix
|
|
64
|
+
vibe new "Fix login redirect loop on expired session" \
|
|
65
|
+
--assignee bob \
|
|
66
|
+
--priority high \
|
|
67
|
+
--description "When a session expires mid-navigation, the auth middleware redirects to /login, which redirects back to the protected page, creating an infinite loop. Need to clear the redirect target when session is expired." \
|
|
68
|
+
--acceptance-criteria "- [ ] Expired session redirects to /login once (no loop)
|
|
69
|
+
- [ ] After login, user lands on the originally requested page
|
|
70
|
+
- [ ] Verified in Chrome, Firefox, Safari" \
|
|
71
|
+
-n
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## After Creating
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
vibe start TKT-XXX # creates branch, marks in_progress
|
|
78
|
+
# do the work
|
|
79
|
+
vibe close TKT-XXX # marks done
|
|
80
|
+
```
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vibekit
|
|
3
|
+
description: Ticket-driven development workflow for AI coding agents using VibeKit CLI. Use when the user asks to create a task, feature, bug fix, or ticket; mentions "vibe new", "vibe list", or vibekit commands; or wants structured, scoped work breakdown. Triggers on phrases like "add a ticket", "track this task", "break this down", or "start a new feature". Helps agents create focused tickets with clear acceptance criteria before writing code.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# VibeKit — Ticket-Driven Development
|
|
8
|
+
|
|
9
|
+
VibeKit is a CLI for managing development tickets and AI-assisted workflows. This skill teaches agents how to use vibekit properly — create tickets before coding, work through them systematically, and keep tickets as living documentation.
|
|
10
|
+
|
|
11
|
+
## 🔴 MANDATORY RULE: Always Create a Ticket First
|
|
12
|
+
|
|
13
|
+
**Before writing ANY code on a repo that has a `.vibe/` directory, you MUST create a vibekit ticket.** No exceptions for features, bug fixes, refactors, or multi-step tasks.
|
|
14
|
+
|
|
15
|
+
This is not a suggestion — it's the core workflow. If the user asks you to "add X", "fix Y", or "build Z", your first action should be:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
vibe new "descriptive title" --assignee <your-username> --priority <level> -n
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Then read the ticket, plan the work, and `vibe start TKT-XXX` before touching any code.
|
|
22
|
+
|
|
23
|
+
**Only skip the ticket for truly trivial changes**: typo fixes, single-line config tweaks, or answering a quick question.
|
|
24
|
+
|
|
25
|
+
## Why This Matters
|
|
26
|
+
|
|
27
|
+
Tickets break work into scoped, focused chunks that reduce AI drift and create documentation as a side effect. They also give humans a clear trail of what was done and why — critical for collaboration between humans and agents.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 1. Create a ticket
|
|
31
|
+
vibe new "Add user authentication" --assignee <username> --priority high -n
|
|
32
|
+
|
|
33
|
+
# 2. Start working (creates git branch feature/TKT-XXX-slug)
|
|
34
|
+
vibe start TKT-001
|
|
35
|
+
|
|
36
|
+
# 3. Implement the work, commit with ticket reference
|
|
37
|
+
git commit -m "TKT-001: add login endpoint"
|
|
38
|
+
|
|
39
|
+
# 4. Close when done
|
|
40
|
+
vibe close TKT-001
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install -g @vibedx/vibekit
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Then in any project:
|
|
50
|
+
```bash
|
|
51
|
+
vibe init # Creates .vibe/ directory with config, team, templates
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Core Commands
|
|
55
|
+
|
|
56
|
+
| Command | Purpose |
|
|
57
|
+
|---------|---------|
|
|
58
|
+
| `vibe init` | Initialize vibekit in a project |
|
|
59
|
+
| `vibe new "title"` | Create a ticket |
|
|
60
|
+
| `vibe list` | List all tickets |
|
|
61
|
+
| `vibe start <id>` | Start work (creates git branch) |
|
|
62
|
+
| `vibe start <id> --worktree` | Start work in a separate worktree |
|
|
63
|
+
| `vibe start <id> --agent` | Spawn a Claude agent to work on the ticket |
|
|
64
|
+
| `vibe start <id> <id2> -w --agent` | Spawn agents in parallel worktrees |
|
|
65
|
+
| `vibe status` | Show active worktrees and ticket progress |
|
|
66
|
+
| `vibe pr` | Open a GitHub PR from the current ticket branch |
|
|
67
|
+
| `vibe pr --all` | Open PRs for all worktree branches |
|
|
68
|
+
| `vibe close <id>` | Mark ticket done (cleans up worktree if any) |
|
|
69
|
+
| `vibe lint` | Validate ticket format |
|
|
70
|
+
| `vibe lint --fix` | Auto-fix missing sections |
|
|
71
|
+
| `vibe refine <id>` | AI-enhance ticket details |
|
|
72
|
+
| `vibe plan to-ticket <file>` | Convert a saved plan into tickets (AI) |
|
|
73
|
+
| `vibe swarm` | Spawn parallel agents across open tickets in worktrees |
|
|
74
|
+
| `vibe team` | Manage team members |
|
|
75
|
+
|
|
76
|
+
## Creating Tickets (for AI agents)
|
|
77
|
+
|
|
78
|
+
**Always use `-n` / `--no-interactive` when creating tickets programmatically.** This skips the AI enhancement prompt which would otherwise block automation.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
vibe new "Fix login redirect loop" --assignee alice --priority high -n
|
|
82
|
+
vibe new "Add dark mode" --assignee bob --author alice -n
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Useful flags
|
|
86
|
+
|
|
87
|
+
- `--priority low|medium|high|critical` (default: medium)
|
|
88
|
+
- `--status open|in_progress|review|done` (default: open)
|
|
89
|
+
- `--assignee <username>` — who works on it
|
|
90
|
+
- `--author <username>` — who created it
|
|
91
|
+
- `-d` / `--description "text"` — pre-fill the Description section
|
|
92
|
+
- `--acceptance-criteria "- [ ] criterion 1\n- [ ] criterion 2"` — pre-fill Acceptance Criteria
|
|
93
|
+
- `-n` / `--no-interactive` — skip AI enhancement prompt
|
|
94
|
+
|
|
95
|
+
**AI agents should always provide `--description` and `--acceptance-criteria` when creating tickets.** This ensures tickets are actionable immediately without needing `vibe refine`. Fill in as much detail as possible based on the task context.
|
|
96
|
+
|
|
97
|
+
## Ticket Structure
|
|
98
|
+
|
|
99
|
+
Tickets live in `.vibe/tickets/` as markdown files with YAML frontmatter:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
---
|
|
103
|
+
id: TKT-001
|
|
104
|
+
title: Add user authentication
|
|
105
|
+
slug: TKT-001-add-user-authentication
|
|
106
|
+
status: open
|
|
107
|
+
priority: high
|
|
108
|
+
assignee: "alice"
|
|
109
|
+
author: "bob"
|
|
110
|
+
created_at: 2026-04-11T10:00:00Z
|
|
111
|
+
updated_at: 2026-04-11T10:00:00Z
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Description
|
|
115
|
+
What needs to be done and why.
|
|
116
|
+
|
|
117
|
+
## Acceptance Criteria
|
|
118
|
+
- [ ] Concrete checkbox 1
|
|
119
|
+
- [ ] Concrete checkbox 2
|
|
120
|
+
|
|
121
|
+
## Implementation Notes
|
|
122
|
+
Technical details, file paths, API references.
|
|
123
|
+
|
|
124
|
+
## Testing & Test Cases
|
|
125
|
+
Brief test scenarios.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Filtering Tickets
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
vibe list # All tickets
|
|
132
|
+
vibe list --status=open # Only open
|
|
133
|
+
vibe list --assignee=alice # Only alice's tickets
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Team Management
|
|
137
|
+
|
|
138
|
+
Teams are stored in `.vibe/team.yml`. Assignee values in tickets should match team member IDs.
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
vibe team add alice --name "Alice" --github alice --slack U0ABC123 --role Engineer
|
|
142
|
+
vibe team # List members
|
|
143
|
+
vibe team show alice # Show one member
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## When to Use This Skill
|
|
147
|
+
|
|
148
|
+
Apply vibekit workflow when:
|
|
149
|
+
|
|
150
|
+
- User asks to "add a feature", "fix a bug", "implement X", "build Y"
|
|
151
|
+
- Task is non-trivial (more than a one-line fix)
|
|
152
|
+
- Work touches multiple files or requires planning
|
|
153
|
+
- User mentions `vibe`, tickets, tracking, or task management
|
|
154
|
+
- Working in a project that has a `.vibe/` directory
|
|
155
|
+
|
|
156
|
+
**Don't force tickets for trivial changes** — typo fixes, config tweaks, or single-line edits can skip the ticket workflow.
|
|
157
|
+
|
|
158
|
+
## Integration with Git
|
|
159
|
+
|
|
160
|
+
`vibe start TKT-001` automatically:
|
|
161
|
+
1. Creates branch `feature/TKT-001-<slug>` (or configured prefix)
|
|
162
|
+
2. Updates ticket status to `in_progress`
|
|
163
|
+
3. Switches to the new branch
|
|
164
|
+
|
|
165
|
+
`vibe close TKT-001`:
|
|
166
|
+
1. Updates ticket status to `done`
|
|
167
|
+
2. Leaves the branch for manual merge/PR
|
|
168
|
+
|
|
169
|
+
### Worktree Support (Parallel Development)
|
|
170
|
+
|
|
171
|
+
Use `--worktree` / `-w` to work on multiple tickets simultaneously without switching branches:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Start ticket in a dedicated worktree
|
|
175
|
+
vibe start TKT-002 --worktree
|
|
176
|
+
|
|
177
|
+
# The worktree is created at ~/.vibekit/worktrees/<repo>/<branch>/
|
|
178
|
+
# Your main working directory stays on its current branch
|
|
179
|
+
# cd into the worktree path to work on the ticket
|
|
180
|
+
|
|
181
|
+
# Close automatically removes the worktree
|
|
182
|
+
vibe close TKT-002
|
|
183
|
+
|
|
184
|
+
# If the worktree has uncommitted changes, use --force
|
|
185
|
+
vibe close TKT-002 --force
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
`vibe list` shows a 🌿 indicator next to tickets with active worktrees.
|
|
189
|
+
|
|
190
|
+
### Spawning Claude Agents
|
|
191
|
+
|
|
192
|
+
Use `--agent` to spawn a Claude Code agent that autonomously works on a ticket:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Single ticket — agent works in the current directory
|
|
196
|
+
vibe start TKT-003 --agent
|
|
197
|
+
|
|
198
|
+
# Multiple tickets — each gets its own worktree + agent
|
|
199
|
+
vibe start TKT-003 TKT-004 TKT-005 -w --agent
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Agents automatically:
|
|
203
|
+
- Read the ticket requirements and implement the work
|
|
204
|
+
- Commit changes with ticket references
|
|
205
|
+
- Mark the ticket as `done` when complete (or `in_progress` if further changes needed)
|
|
206
|
+
- Have full tool access (git, file I/O, CLI)
|
|
207
|
+
- Receive the vibekit skill context so they know how to use vibe commands
|
|
208
|
+
|
|
209
|
+
Agent timeout defaults to 15 minutes (900s). Configure in `.vibe/config.yml`:
|
|
210
|
+
|
|
211
|
+
```yaml
|
|
212
|
+
worktree:
|
|
213
|
+
agent:
|
|
214
|
+
timeout: 900 # seconds
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Opening Pull Requests
|
|
218
|
+
|
|
219
|
+
Use `vibe pr` to open GitHub PRs from ticket branches:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# PR for the current branch
|
|
223
|
+
vibe pr
|
|
224
|
+
|
|
225
|
+
# PRs for specific tickets
|
|
226
|
+
vibe pr TKT-003 TKT-004
|
|
227
|
+
|
|
228
|
+
# PRs for all worktree branches
|
|
229
|
+
vibe pr --all
|
|
230
|
+
|
|
231
|
+
# Draft PR
|
|
232
|
+
vibe pr --draft
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
PR title and body are auto-populated from ticket content. Ticket status is set to `review`.
|
|
236
|
+
|
|
237
|
+
### Plans → Tickets
|
|
238
|
+
|
|
239
|
+
When you (Claude) produce an implementation plan, save it to `.vibe/plans/` as a
|
|
240
|
+
markdown file, then turn it into tickets:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Preview the tickets vibekit would extract from a plan (no files written)
|
|
244
|
+
vibe plan to-ticket .vibe/plans/my-feature.md
|
|
245
|
+
|
|
246
|
+
# Create the tickets once the breakdown looks right
|
|
247
|
+
vibe plan to-ticket .vibe/plans/my-feature.md --auto
|
|
248
|
+
|
|
249
|
+
# Dry-run shows the extracted items without creating anything
|
|
250
|
+
vibe plan to-ticket .vibe/plans/my-feature.md --dry-run
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
The command sends the plan to Claude, which extracts discrete work items
|
|
254
|
+
(title, description, acceptance criteria, priority, estimate) and writes one
|
|
255
|
+
ticket per item to `.vibe/tickets/`. Default is preview-then-confirm: it shows
|
|
256
|
+
the breakdown and only writes files when you pass `--auto`. Chain it with
|
|
257
|
+
`vibe start TKT-XXX` to begin work.
|
|
258
|
+
|
|
259
|
+
### Swarming (Parallel Agents)
|
|
260
|
+
|
|
261
|
+
`vibe swarm` spins up multiple Claude agents at once, each in its own worktree,
|
|
262
|
+
to burn down a batch of tickets in parallel:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Swarm all open tickets (capped by config swarm.maxAgents, default 3)
|
|
266
|
+
vibe swarm
|
|
267
|
+
|
|
268
|
+
# Limit the number of concurrent agents
|
|
269
|
+
vibe swarm --count 5
|
|
270
|
+
|
|
271
|
+
# Only swarm tickets matching a filter (frontmatter key:value)
|
|
272
|
+
vibe swarm --filter priority:high
|
|
273
|
+
|
|
274
|
+
# Use a specific base branch for the worktrees
|
|
275
|
+
vibe swarm --base main
|
|
276
|
+
|
|
277
|
+
# Check on a running swarm
|
|
278
|
+
vibe swarm status
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Configure caps and timeout in `.vibe/config.yml`:
|
|
282
|
+
|
|
283
|
+
```yaml
|
|
284
|
+
swarm:
|
|
285
|
+
maxAgents: 3
|
|
286
|
+
timeout: 900 # seconds
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Monitoring Progress
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Show active worktrees and agent status
|
|
293
|
+
vibe status
|
|
294
|
+
|
|
295
|
+
# List in-progress tickets
|
|
296
|
+
vibe list --status=in_progress
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Automation Pattern
|
|
300
|
+
|
|
301
|
+
For bots and automated agents working through tickets:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# Find open tickets assigned to you
|
|
305
|
+
vibe list --assignee=mybotname --status=open
|
|
306
|
+
|
|
307
|
+
# For each ticket:
|
|
308
|
+
# 1. Read .vibe/tickets/TKT-XXX-*.md for full context
|
|
309
|
+
# 2. Do the work on branch feature/<ticket-id>-<slug>
|
|
310
|
+
# 3. Commit changes
|
|
311
|
+
# 4. Open PR: vibe pr
|
|
312
|
+
# 5. Close: vibe close TKT-XXX
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Links
|
|
316
|
+
|
|
317
|
+
- Repo: https://github.com/vibedx/vibekit
|
|
318
|
+
- npm: https://www.npmjs.com/package/@vibedx/vibekit
|
|
319
|
+
- Issues: https://github.com/vibedx/vibekit/issues
|