@vibedx/vibekit 0.8.0 ā 0.8.3
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 +1 -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
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
<div align="center">
|
|
15
15
|
|
|
16
|
+
[](https://skills.sh/vibedx/vibekit)
|
|
16
17
|
[](https://www.npmjs.com/package/@vibedx/vibekit)
|
|
17
18
|
[](https://www.npmjs.com/package/@vibedx/vibekit)
|
|
18
19
|
[](https://github.com/vibedx/vibekit/blob/main/LICENSE)
|
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 {
|