@vibedx/vibekit 0.7.0 ā 0.8.2
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 +44 -0
- package/package.json +1 -1
- package/skills/vibekit/SKILL.md +65 -3
- package/src/commands/start/index.js +15 -2
package/README.md
CHANGED
|
@@ -106,6 +106,9 @@ vibe list
|
|
|
106
106
|
vibe list --status=open
|
|
107
107
|
vibe list --assignee=alice
|
|
108
108
|
|
|
109
|
+
# Check active worktrees and ticket progress
|
|
110
|
+
vibe status
|
|
111
|
+
|
|
109
112
|
# Close/complete a ticket
|
|
110
113
|
vibe close TKT-001
|
|
111
114
|
|
|
@@ -116,6 +119,10 @@ vibe start TKT-001 --base main --update-status
|
|
|
116
119
|
# Start in a separate worktree (parallel work without switching branches)
|
|
117
120
|
vibe start TKT-001 --worktree
|
|
118
121
|
vibe start TKT-001 -w
|
|
122
|
+
|
|
123
|
+
# Spawn a Claude agent to work on a ticket automatically
|
|
124
|
+
vibe start TKT-001 --agent # Single ticket, current directory
|
|
125
|
+
vibe start TKT-001 TKT-002 -w --agent # Multiple tickets in worktrees with agents
|
|
119
126
|
```
|
|
120
127
|
|
|
121
128
|
### š„ Team Management
|
|
@@ -260,6 +267,43 @@ $ vibe close TKT-005
|
|
|
260
267
|
ā
Closed TKT-005
|
|
261
268
|
```
|
|
262
269
|
|
|
270
|
+
### Autonomous Development with Claude Agents
|
|
271
|
+
```bash
|
|
272
|
+
# Spawn a Claude agent to work on a single ticket
|
|
273
|
+
$ vibe start TKT-006 --agent
|
|
274
|
+
š¤ Starting Claude agent for TKT-006...
|
|
275
|
+
ā±ļø Agent timeout: 15 minutes (configurable in .vibe/config.yml)
|
|
276
|
+
⨠Agent has full tool access (git, file I/O, CLI)
|
|
277
|
+
|
|
278
|
+
# Agent automatically:
|
|
279
|
+
⢠Creates the branch and updates ticket to in_progress
|
|
280
|
+
⢠Reads ticket requirements and implements the work
|
|
281
|
+
⢠Commits changes with clear commit messages
|
|
282
|
+
⢠Marks ticket as done when complete (or in_progress if changes needed)
|
|
283
|
+
|
|
284
|
+
# Work on multiple tickets with agents in parallel worktrees
|
|
285
|
+
$ vibe start TKT-006 TKT-007 TKT-008 -w --agent
|
|
286
|
+
šæ Creating 3 worktrees with Claude agents...
|
|
287
|
+
š¤ Agent 1 working on TKT-006
|
|
288
|
+
š¤ Agent 2 working on TKT-007
|
|
289
|
+
š¤ Agent 3 working on TKT-008
|
|
290
|
+
|
|
291
|
+
# Monitor progress
|
|
292
|
+
$ vibe status
|
|
293
|
+
Active Worktrees:
|
|
294
|
+
šæ feature/TKT-006-... (TKT-006: in_progress) š¤ Agent running...
|
|
295
|
+
šæ feature/TKT-007-... (TKT-007: in_progress) š¤ Agent running...
|
|
296
|
+
šæ feature/TKT-008-... (TKT-008: in_progress) š¤ Agent running...
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Agent Configuration
|
|
300
|
+
```yaml
|
|
301
|
+
# In .vibe/config.yml
|
|
302
|
+
worktree:
|
|
303
|
+
agent:
|
|
304
|
+
timeout: 900 # 15 minutes (seconds), increase for complex work
|
|
305
|
+
```
|
|
306
|
+
|
|
263
307
|
### Quality Control with Lint
|
|
264
308
|
```bash
|
|
265
309
|
# Check all tickets for formatting issues
|
package/package.json
CHANGED
package/skills/vibekit/SKILL.md
CHANGED
|
@@ -60,6 +60,11 @@ vibe init # Creates .vibe/ directory with config, team, templates
|
|
|
60
60
|
| `vibe list` | List all tickets |
|
|
61
61
|
| `vibe start <id>` | Start work (creates git branch) |
|
|
62
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 |
|
|
63
68
|
| `vibe close <id>` | Mark ticket done (cleans up worktree if any) |
|
|
64
69
|
| `vibe lint` | Validate ticket format |
|
|
65
70
|
| `vibe lint --fix` | Auto-fix missing sections |
|
|
@@ -176,6 +181,63 @@ vibe close TKT-002 --force
|
|
|
176
181
|
|
|
177
182
|
`vibe list` shows a šæ indicator next to tickets with active worktrees.
|
|
178
183
|
|
|
184
|
+
### Spawning Claude Agents
|
|
185
|
+
|
|
186
|
+
Use `--agent` to spawn a Claude Code agent that autonomously works on a ticket:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Single ticket ā agent works in the current directory
|
|
190
|
+
vibe start TKT-003 --agent
|
|
191
|
+
|
|
192
|
+
# Multiple tickets ā each gets its own worktree + agent
|
|
193
|
+
vibe start TKT-003 TKT-004 TKT-005 -w --agent
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Agents automatically:
|
|
197
|
+
- Read the ticket requirements and implement the work
|
|
198
|
+
- Commit changes with ticket references
|
|
199
|
+
- Mark the ticket as `done` when complete (or `in_progress` if further changes needed)
|
|
200
|
+
- Have full tool access (git, file I/O, CLI)
|
|
201
|
+
- Receive the vibekit skill context so they know how to use vibe commands
|
|
202
|
+
|
|
203
|
+
Agent timeout defaults to 15 minutes (900s). Configure in `.vibe/config.yml`:
|
|
204
|
+
|
|
205
|
+
```yaml
|
|
206
|
+
worktree:
|
|
207
|
+
agent:
|
|
208
|
+
timeout: 900 # seconds
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Opening Pull Requests
|
|
212
|
+
|
|
213
|
+
Use `vibe pr` to open GitHub PRs from ticket branches:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# PR for the current branch
|
|
217
|
+
vibe pr
|
|
218
|
+
|
|
219
|
+
# PRs for specific tickets
|
|
220
|
+
vibe pr TKT-003 TKT-004
|
|
221
|
+
|
|
222
|
+
# PRs for all worktree branches
|
|
223
|
+
vibe pr --all
|
|
224
|
+
|
|
225
|
+
# Draft PR
|
|
226
|
+
vibe pr --draft
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
PR title and body are auto-populated from ticket content. Ticket status is set to `review`.
|
|
230
|
+
|
|
231
|
+
### Monitoring Progress
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Show active worktrees and agent status
|
|
235
|
+
vibe status
|
|
236
|
+
|
|
237
|
+
# List in-progress tickets
|
|
238
|
+
vibe list --status=in_progress
|
|
239
|
+
```
|
|
240
|
+
|
|
179
241
|
## Automation Pattern
|
|
180
242
|
|
|
181
243
|
For bots and automated agents working through tickets:
|
|
@@ -186,10 +248,10 @@ vibe list --assignee=mybotname --status=open
|
|
|
186
248
|
|
|
187
249
|
# For each ticket:
|
|
188
250
|
# 1. Read .vibe/tickets/TKT-XXX-*.md for full context
|
|
189
|
-
# 2. Do the work on branch
|
|
251
|
+
# 2. Do the work on branch feature/<ticket-id>-<slug>
|
|
190
252
|
# 3. Commit changes
|
|
191
|
-
# 4.
|
|
192
|
-
# 5.
|
|
253
|
+
# 4. Open PR: vibe pr
|
|
254
|
+
# 5. Close: vibe close TKT-XXX
|
|
193
255
|
```
|
|
194
256
|
|
|
195
257
|
## Links
|
|
@@ -3,6 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import yaml from 'js-yaml';
|
|
4
4
|
import { execSync, spawn } from 'child_process';
|
|
5
5
|
import { getTicketsDir, getConfig, createSlug } from '../../utils/index.js';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
6
7
|
import {
|
|
7
8
|
isGitRepository,
|
|
8
9
|
getCurrentBranch,
|
|
@@ -19,6 +20,16 @@ import {
|
|
|
19
20
|
getDefaultBaseBranch
|
|
20
21
|
} from '../../utils/git.js';
|
|
21
22
|
|
|
23
|
+
function loadSkillContext() {
|
|
24
|
+
try {
|
|
25
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
26
|
+
const skillPath = path.join(__dirname, '..', '..', '..', 'skills', 'vibekit', 'SKILL.md');
|
|
27
|
+
return fs.readFileSync(skillPath, 'utf-8');
|
|
28
|
+
} catch {
|
|
29
|
+
return '';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
22
33
|
function parseTicketIds(args) {
|
|
23
34
|
const ids = [];
|
|
24
35
|
const flags = {};
|
|
@@ -266,12 +277,13 @@ function startCommand(args) {
|
|
|
266
277
|
|
|
267
278
|
if (spawnAgent) {
|
|
268
279
|
const agentTimeout = config.worktree?.agent?.timeout || 900;
|
|
280
|
+
const skillContext = loadSkillContext();
|
|
269
281
|
console.log('\nš¤ Spawning Claude agents...\n');
|
|
270
282
|
for (const info of worktreeInfos) {
|
|
271
283
|
const ticketContent = fs.readFileSync(info.ticket.filePath, 'utf-8');
|
|
272
284
|
const prompt = flags.prompt
|
|
273
285
|
? flags.prompt
|
|
274
|
-
: `You are working on ticket ${info.ticket.frontmatter.id}: ${info.title}\n\nHere is the full ticket:\n\n${ticketContent}\n\nImplement the ticket requirements. Follow the acceptance criteria. Commit your work when done. Update the ticket status to done when complete
|
|
286
|
+
: `You are working on ticket ${info.ticket.frontmatter.id}: ${info.title}\n\nHere is the full ticket:\n\n${ticketContent}\n\nImplement the ticket requirements. Follow the acceptance criteria. Commit your work when done. Update the ticket status to done when complete.${skillContext ? `\n\n--- VibeKit Skill Reference ---\n${skillContext}` : ''}`;
|
|
275
287
|
|
|
276
288
|
try {
|
|
277
289
|
const agentProcess = spawn('claude', ['-p', prompt, '--timeout', String(agentTimeout * 1000)], {
|
|
@@ -322,10 +334,11 @@ function startCommand(args) {
|
|
|
322
334
|
if (spawnAgent) {
|
|
323
335
|
const ticket = tickets[0];
|
|
324
336
|
const agentTimeout = config.worktree?.agent?.timeout || 900;
|
|
337
|
+
const skillContext = loadSkillContext();
|
|
325
338
|
const ticketContent = fs.readFileSync(ticket.filePath, 'utf-8');
|
|
326
339
|
const prompt = flags.prompt
|
|
327
340
|
? flags.prompt
|
|
328
|
-
: `You are working on ticket ${ticket.frontmatter.id}: ${ticket.frontmatter.title}\n\nHere is the full ticket:\n\n${ticketContent}\n\nImplement the ticket requirements. Follow the acceptance criteria. Commit your work when done. Update the ticket status to done when complete
|
|
341
|
+
: `You are working on ticket ${ticket.frontmatter.id}: ${ticket.frontmatter.title}\n\nHere is the full ticket:\n\n${ticketContent}\n\nImplement the ticket requirements. Follow the acceptance criteria. Commit your work when done. Update the ticket status to done when complete.${skillContext ? `\n\n--- VibeKit Skill Reference ---\n${skillContext}` : ''}`;
|
|
329
342
|
|
|
330
343
|
console.log('\nš¤ Spawning Claude agent...\n');
|
|
331
344
|
try {
|