@goodtek/vibeops 1.1.1 → 2.0.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/CHANGELOG.md +32 -0
- package/README.md +28 -12
- package/dist/bootstrap/installer.js +1 -1
- package/dist/bootstrap/manifest.js +0 -10
- package/dist/cli.js +58 -8
- package/dist/commands/init.js +3 -3
- package/dist/commands/llm.js +3 -3
- package/dist/commands/status.js +1 -0
- package/dist/commands/task-add.js +2 -2
- package/dist/commands/task-merge.js +134 -0
- package/dist/commands/task-release.js +103 -0
- package/dist/commands/{task-done.js → task-ship.js} +74 -36
- package/dist/commands/task-sync.js +183 -0
- package/dist/lib/git.js +7 -0
- package/dist/lib/paths.js +1 -1
- package/dist/lib/pr-create.js +63 -0
- package/dist/lib/resolve-task.js +1 -1
- package/dist/lib/task-context.js +22 -7
- package/dist/lib/task-git-commit.js +32 -0
- package/dist/lib/task-lifecycle-target.js +41 -0
- package/dist/lib/task-scaffold.js +1 -1
- package/dist/lib/{task-done-llm.js → task-ship-llm.js} +9 -6
- package/dist/lib/task.js +7 -0
- package/package.json +11 -13
- package/templates/clients/claude/CLAUDE.md +5 -27
- package/templates/clients/cursor/.cursor/rules/02-git-safety.mdc +5 -5
- package/templates/clients/cursor/.cursor/rules/03-docs-before-ship.mdc +13 -0
- package/templates/core/AGENTS.md +16 -34
- package/templates/core/docs/logs/README.md +1 -1
- package/templates/core/docs/project/03-architecture.md +1 -1
- package/templates/core/docs/project/05-current-state.md +1 -1
- package/templates/core/docs/project/06-decisions.md +1 -1
- package/templates/skills-shared/implement-task/SKILL.md +7 -16
- package/templates/.cursor/rules/02-git-safety.mdc +0 -12
- package/templates/AGENTS.md +0 -38
- package/templates/clients/cursor/.cursor/rules/03-docs-on-done.mdc +0 -13
package/dist/lib/task.js
CHANGED
|
@@ -155,6 +155,13 @@ export function pickLatestDoneTask(tasks) {
|
|
|
155
155
|
return null;
|
|
156
156
|
return [...done].sort((a, b) => taskSortKey(b.id) - taskSortKey(a.id))[0];
|
|
157
157
|
}
|
|
158
|
+
/** Latest TASK in Review (awaiting merge / sync). */
|
|
159
|
+
export function pickLatestReviewTask(tasks) {
|
|
160
|
+
const review = filterActionableTasks(tasks).filter((t) => t.status === "review");
|
|
161
|
+
if (review.length === 0)
|
|
162
|
+
return null;
|
|
163
|
+
return [...review].sort((a, b) => taskSortKey(b.id) - taskSortKey(a.id))[0];
|
|
164
|
+
}
|
|
158
165
|
export async function loadActionableTasks(tasksDir) {
|
|
159
166
|
return filterActionableTasks(await scanTasks(tasksDir));
|
|
160
167
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodtek/vibeops",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Minimal CLI rails for Cursor-based TASK-driven vibe coding.",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"packageManager": "pnpm@9.15.9",
|
|
7
6
|
"author": "VibeOps contributors",
|
|
8
7
|
"license": "MIT",
|
|
9
8
|
"repository": {
|
|
@@ -30,16 +29,6 @@
|
|
|
30
29
|
"engines": {
|
|
31
30
|
"node": ">=20"
|
|
32
31
|
},
|
|
33
|
-
"scripts": {
|
|
34
|
-
"dev": "tsx src/cli.ts",
|
|
35
|
-
"build": "tsc -p tsconfig.json",
|
|
36
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
37
|
-
"start": "node dist/cli.js",
|
|
38
|
-
"smoke": "pnpm typecheck && pnpm build && node scripts/smoke.mjs",
|
|
39
|
-
"clean": "rm -rf dist",
|
|
40
|
-
"prepack": "pnpm clean && pnpm build",
|
|
41
|
-
"publish:dry": "pnpm publish --dry-run --no-git-checks"
|
|
42
|
-
},
|
|
43
32
|
"keywords": [
|
|
44
33
|
"cursor",
|
|
45
34
|
"ai",
|
|
@@ -58,5 +47,14 @@
|
|
|
58
47
|
"@types/node": "^20.14.0",
|
|
59
48
|
"tsx": "^4.19.0",
|
|
60
49
|
"typescript": "^5.5.4"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"dev": "tsx src/cli.ts",
|
|
53
|
+
"build": "tsc -p tsconfig.json",
|
|
54
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
55
|
+
"start": "node dist/cli.js",
|
|
56
|
+
"smoke": "pnpm typecheck && pnpm build && node scripts/smoke.mjs",
|
|
57
|
+
"clean": "rm -rf dist",
|
|
58
|
+
"publish:dry": "pnpm publish --dry-run --no-git-checks"
|
|
61
59
|
}
|
|
62
|
-
}
|
|
60
|
+
}
|
|
@@ -1,28 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Claude Code — VibeOps
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
| Skill | When |
|
|
8
|
-
|-------|------|
|
|
9
|
-
| `/plan-task` | Refine `docs/tasks/TASK-NNN-*.md` before coding |
|
|
10
|
-
| `/implement-task` | Build per TASK Scope and Acceptance Criteria |
|
|
11
|
-
|
|
12
|
-
Skills live in `.claude/skills/`.
|
|
13
|
-
|
|
14
|
-
## Session start
|
|
15
|
-
|
|
16
|
-
1. `docs/project/05-current-state.md`
|
|
17
|
-
2. The **full** current `docs/tasks/TASK-NNN-*.md` file
|
|
18
|
-
3. `docs/project/03-architecture.md` and `06-decisions.md` when relevant
|
|
19
|
-
|
|
20
|
-
## Git
|
|
21
|
-
|
|
22
|
-
- Branch: `task/*` from `vibeops task add`
|
|
23
|
-
- Commit messages include the TASK id, e.g. `feat(task-015): short title`
|
|
24
|
-
- Do not merge to main unless the human runs `vibeops task done` or asks
|
|
25
|
-
|
|
26
|
-
## Finishing
|
|
27
|
-
|
|
28
|
-
Fill **Result** and **Test Result** in the TASK file, then tell the human to run `vibeops task done TASK-NNN`.
|
|
3
|
+
- Work from `docs/tasks/TASK-NNN-*.md` only.
|
|
4
|
+
- One TASK at a time.
|
|
5
|
+
- Fill **Result** and **Test Result** before telling the human to run `vibeops task ship TASK-NNN`.
|
|
6
|
+
- Do not merge to integration or main unless the human runs `vibeops task merge` / `task release`.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Git safety for
|
|
2
|
+
description: Git safety for TASK branches
|
|
3
3
|
alwaysApply: true
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Git safety
|
|
7
7
|
|
|
8
|
-
- Use branch pattern `task/*`
|
|
9
|
-
- Include
|
|
10
|
-
-
|
|
11
|
-
-
|
|
8
|
+
- Use branch pattern `task/*` from `vibeops task add`.
|
|
9
|
+
- Include TASK id in commits: `feat(task-nnn): …`.
|
|
10
|
+
- No force-push to shared branches.
|
|
11
|
+
- Run `vibeops task ship`, `task merge`, `task sync` when the human asks — do not merge locally in the IDE unless requested.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Update TASK Result and project memory before shipping
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Docs before task ship
|
|
7
|
+
|
|
8
|
+
Before `vibeops task ship`:
|
|
9
|
+
|
|
10
|
+
1. Fill **Result** and **Test Result** in the TASK file (paths, commands, outcomes — facts only).
|
|
11
|
+
2. If architecture or decisions changed, note them in the TASK; `task ship` can update `docs/project/*` via LLM.
|
|
12
|
+
|
|
13
|
+
Do not ship with placeholder `(not yet)` sections.
|
package/templates/core/AGENTS.md
CHANGED
|
@@ -1,44 +1,26 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Project — AI Agent Guide
|
|
2
2
|
|
|
3
|
-
> Installed by
|
|
3
|
+
> Installed by VibeOps. Read before coding.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## TASK workflow
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
| Project memory | `docs/project/05-current-state.md`, `03-architecture.md`, `06-decisions.md` |
|
|
11
|
-
| Change history | Git commits on task branches |
|
|
12
|
-
| **Not** trusted | Chat history, Slack |
|
|
13
|
-
|
|
14
|
-
## Before you code
|
|
7
|
+
```bash
|
|
8
|
+
vibeops task add
|
|
9
|
+
# Plan / build in your agent (@docs/tasks/TASK-NNN-*.md)
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
vibeops task ship
|
|
12
|
+
vibeops task merge
|
|
13
|
+
vibeops task sync
|
|
14
|
+
```
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
Optional release to production: `vibeops task release`.
|
|
21
17
|
|
|
22
18
|
```bash
|
|
23
|
-
vibeops
|
|
24
|
-
vibeops task add # new TASK + branch
|
|
25
|
-
# Plan: refine TASK file with your agent (see client skills below)
|
|
26
|
-
# Build: implement per TASK Scope / Acceptance Criteria
|
|
27
|
-
vibeops task done # close TASK, update project docs, merge
|
|
28
|
-
vibeops status # briefing
|
|
29
|
-
vibeops llm connect # LLM for task add / task done
|
|
19
|
+
vibeops llm connect # optional — task add / task ship
|
|
30
20
|
```
|
|
31
21
|
|
|
32
|
-
##
|
|
33
|
-
|
|
34
|
-
| Tool | Rules / guide | Skills |
|
|
35
|
-
|------|----------------|--------|
|
|
36
|
-
| **Cursor** | `.cursor/rules/` | `.cursor/skills/` (`plan-task`, `implement-task`) |
|
|
37
|
-
| **Claude Code** | `CLAUDE.md` | `.claude/skills/` |
|
|
38
|
-
| **Codex CLI** | `AGENTS.md` (this file) | `.agents/skills/` |
|
|
39
|
-
|
|
40
|
-
## Rules (all agents)
|
|
22
|
+
## Rules
|
|
41
23
|
|
|
42
|
-
-
|
|
43
|
-
- **
|
|
44
|
-
-
|
|
24
|
+
- One TASK at a time; scope from `docs/tasks/TASK-NNN-*.md`.
|
|
25
|
+
- Fill **Result** and **Test Result** before `vibeops task ship`.
|
|
26
|
+
- Agents do not merge or sync unless the human asks.
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
## D-001 · VibeOps workflow
|
|
6
6
|
|
|
7
7
|
- **Date:** {{CREATED_AT}}
|
|
8
|
-
- **Decision:** TASK-driven development with `vibeops task add` / `task
|
|
8
|
+
- **Decision:** TASK-driven development with `vibeops task add` / `task ship` / `merge` / `sync` and Cursor for plan/build.
|
|
9
9
|
- **Why:** Git `docs/tasks` beats chat as source of truth.
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: implement-task
|
|
3
|
-
description:
|
|
4
|
-
disable-model-invocation: true
|
|
3
|
+
description: Implement the current VibeOps TASK file in the repo.
|
|
5
4
|
---
|
|
6
5
|
|
|
7
|
-
# Implement
|
|
6
|
+
# Implement TASK
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
1. Read the full `docs/tasks/TASK-NNN-*.md` (Scope, Acceptance Criteria, Test Plan).
|
|
9
|
+
2. Search the codebase before adding new patterns.
|
|
10
|
+
3. Implement only within the TASK scope.
|
|
11
|
+
4. Do not run `vibeops task ship`, `merge`, or `sync` — the human runs the CLI lifecycle.
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
2. `docs/project/05-current-state.md`, `03-architecture.md`, `06-decisions.md`
|
|
13
|
-
3. The TASK file referenced by the human
|
|
14
|
-
|
|
15
|
-
## Instructions
|
|
16
|
-
|
|
17
|
-
1. Work **only** within Scope and Acceptance Criteria.
|
|
18
|
-
2. Search the repo before adding files; match existing patterns.
|
|
19
|
-
3. Fill **Result** and **Test Result** with facts when done.
|
|
20
|
-
4. Do not run `vibeops task done` or merge — the human closes the TASK.
|
|
21
|
-
|
|
22
|
-
Tell the human to run `vibeops task done TASK-NNN` when ready.
|
|
13
|
+
When implementation is ready, tell the human to run `vibeops task ship TASK-NNN`.
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Git safety for task branches and merge requests
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Git safety
|
|
7
|
-
|
|
8
|
-
- Branch policy lives in `.vibeops.json` (`integrationBranch`, `productionBranch`).
|
|
9
|
-
- `vibeops task add` creates `task/*` from the **integration** branch (e.g. `develop`).
|
|
10
|
-
- Include the TASK id in commit messages, e.g. `feat(task-015): short title`.
|
|
11
|
-
- **`vibeops task done`** pushes the branch and opens an MR/PR — it does **not** merge locally.
|
|
12
|
-
- Merge on GitHub/GitLab; CI deploys after merge. No force-push to shared branches.
|
package/templates/AGENTS.md
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# {{PROJECT_NAME}} — AI agent guide
|
|
2
|
-
|
|
3
|
-
> Installed by **VibeOps**. Cursor reads this repo, not chat history.
|
|
4
|
-
|
|
5
|
-
## Source of truth
|
|
6
|
-
|
|
7
|
-
| What | Where |
|
|
8
|
-
|------|--------|
|
|
9
|
-
| Current work | `docs/tasks/TASK-NNN-*.md` |
|
|
10
|
-
| Project memory | `docs/project/05-current-state.md`, `03-architecture.md`, `06-decisions.md` |
|
|
11
|
-
| Change history | Git commits on task branches |
|
|
12
|
-
| **Not** trusted | Cursor chat, Slack |
|
|
13
|
-
|
|
14
|
-
## Before you code
|
|
15
|
-
|
|
16
|
-
1. `docs/project/05-current-state.md`
|
|
17
|
-
2. `docs/project/03-architecture.md` and `06-decisions.md` when relevant
|
|
18
|
-
3. **The full current TASK file** under `docs/tasks/`
|
|
19
|
-
|
|
20
|
-
## Workflow (human + CLI)
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
vibeops init # once
|
|
24
|
-
vibeops task add # new TASK + branch
|
|
25
|
-
# Plan in Cursor Ask: @docs/tasks/TASK-NNN-….md
|
|
26
|
-
# Build in Cursor Agent: same file + Scope / Acceptance Criteria
|
|
27
|
-
vibeops task done # close TASK, update project docs, push + open MR/PR
|
|
28
|
-
vibeops status # briefing
|
|
29
|
-
vibeops llm connect # set up LLM providers and pick default
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Rules
|
|
33
|
-
|
|
34
|
-
- **One TASK at a time** — stay inside Scope and Acceptance Criteria.
|
|
35
|
-
- **Search** before adding files; reuse existing patterns.
|
|
36
|
-
- When the TASK is finished, **Result** and **Test Result** must be filled before `vibeops task done`.
|
|
37
|
-
|
|
38
|
-
Details: `.cursor/rules/`.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Update TASK Result and project memory when finishing work
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Docs when finishing a TASK
|
|
7
|
-
|
|
8
|
-
Before `vibeops task done`:
|
|
9
|
-
|
|
10
|
-
1. Fill **Result** and **Test Result** in the TASK file (paths, commands, outcomes — facts only).
|
|
11
|
-
2. If architecture or decisions changed, note them in the TASK; `task done` updates `docs/project/*`.
|
|
12
|
-
|
|
13
|
-
Do not mark a TASK complete with placeholder `(not yet)` sections.
|