@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.
Files changed (36) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +28 -12
  3. package/dist/bootstrap/installer.js +1 -1
  4. package/dist/bootstrap/manifest.js +0 -10
  5. package/dist/cli.js +58 -8
  6. package/dist/commands/init.js +3 -3
  7. package/dist/commands/llm.js +3 -3
  8. package/dist/commands/status.js +1 -0
  9. package/dist/commands/task-add.js +2 -2
  10. package/dist/commands/task-merge.js +134 -0
  11. package/dist/commands/task-release.js +103 -0
  12. package/dist/commands/{task-done.js → task-ship.js} +74 -36
  13. package/dist/commands/task-sync.js +183 -0
  14. package/dist/lib/git.js +7 -0
  15. package/dist/lib/paths.js +1 -1
  16. package/dist/lib/pr-create.js +63 -0
  17. package/dist/lib/resolve-task.js +1 -1
  18. package/dist/lib/task-context.js +22 -7
  19. package/dist/lib/task-git-commit.js +32 -0
  20. package/dist/lib/task-lifecycle-target.js +41 -0
  21. package/dist/lib/task-scaffold.js +1 -1
  22. package/dist/lib/{task-done-llm.js → task-ship-llm.js} +9 -6
  23. package/dist/lib/task.js +7 -0
  24. package/package.json +11 -13
  25. package/templates/clients/claude/CLAUDE.md +5 -27
  26. package/templates/clients/cursor/.cursor/rules/02-git-safety.mdc +5 -5
  27. package/templates/clients/cursor/.cursor/rules/03-docs-before-ship.mdc +13 -0
  28. package/templates/core/AGENTS.md +16 -34
  29. package/templates/core/docs/logs/README.md +1 -1
  30. package/templates/core/docs/project/03-architecture.md +1 -1
  31. package/templates/core/docs/project/05-current-state.md +1 -1
  32. package/templates/core/docs/project/06-decisions.md +1 -1
  33. package/templates/skills-shared/implement-task/SKILL.md +7 -16
  34. package/templates/.cursor/rules/02-git-safety.mdc +0 -12
  35. package/templates/AGENTS.md +0 -38
  36. 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": "1.1.1",
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
- # {{PROJECT_NAME}} — Claude Code
1
+ # Claude Code — VibeOps
2
2
 
3
- Read **`AGENTS.md`** first (VibeOps workflow and source of truth).
4
-
5
- ## Skills (project)
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 task branches and commits
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/*` created by `vibeops task add`.
9
- - Include the TASK id in commit messages, e.g. `feat(task-015): short title`.
10
- - **No force-push** to shared branches (`main`, `master`).
11
- - Do not merge or push unless the human runs `vibeops task done` or asks explicitly.
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.
@@ -1,44 +1,26 @@
1
- # {{PROJECT_NAME}} — AI agent guide
1
+ # Project — AI Agent Guide
2
2
 
3
- > Installed by **VibeOps**. Agents read this repo and `docs/tasks/`, not chat history.
3
+ > Installed by VibeOps. Read before coding.
4
4
 
5
- ## Source of truth
5
+ ## TASK workflow
6
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 | 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
- 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/`
11
+ vibeops task ship
12
+ vibeops task merge
13
+ vibeops task sync
14
+ ```
19
15
 
20
- ## Workflow (human + CLI)
16
+ Optional release to production: `vibeops task release`.
21
17
 
22
18
  ```bash
23
- vibeops init # once (pick Cursor / Claude Code / Codex packs)
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
- ## Client packs (installed at init)
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
- - **One TASK at a time** — stay inside Scope and Acceptance Criteria.
43
- - **Search** before adding files; reuse existing patterns.
44
- - Fill **Result** and **Test Result** before `vibeops task done`.
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.
@@ -2,6 +2,6 @@
2
2
 
3
3
  Append-only files: `docs/logs/YYYY-MM-DD.md`.
4
4
 
5
- `vibeops task done` may append a short entry when a TASK closes.
5
+ `vibeops task ship` may append a short entry via LLM when shipping a TASK.
6
6
 
7
7
  Keep entries factual: TASK id, paths touched, commands run.
@@ -1,6 +1,6 @@
1
1
  # Architecture
2
2
 
3
- > Living overview. Update when structure or major paths change (often via `vibeops task done`).
3
+ > Living overview. Update when structure or major paths change (often via `vibeops task ship`).
4
4
 
5
5
  ## System
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Current state
2
2
 
3
- > Facts only. Updated by `vibeops task done` and humans.
3
+ > Facts only. Updated by `vibeops task ship` / humans; stage changes on `task sync`.
4
4
 
5
5
  ## Stage
6
6
 
@@ -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 done` and Cursor for plan/build.
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: Implements the current VibeOps TASK per Scope and Acceptance Criteria. Use when building features for docs/tasks/TASK-NNN.md.
4
- disable-model-invocation: true
3
+ description: Implement the current VibeOps TASK file in the repo.
5
4
  ---
6
5
 
7
- # Implement a TASK
6
+ # Implement TASK
8
7
 
9
- ## Read first
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
- 1. `AGENTS.md` and your agent rules (e.g. `.cursor/rules/`, `CLAUDE.md`)
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.
@@ -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.