@vibedx/vibekit 0.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibedx/vibekit",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "A powerful CLI tool for managing development tickets and project workflows",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -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 opus/<ticket-id>-<description>
251
+ # 2. Do the work on branch feature/<ticket-id>-<slug>
190
252
  # 3. Commit changes
191
- # 4. Close: vibe close TKT-XXX
192
- # 5. Notify team
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 {