@goodtek/vibeops 0.3.0 → 0.7.22
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 +184 -0
- package/README.md +34 -54
- package/dist/cli.js +156 -214
- package/dist/commands/done.js +160 -0
- package/dist/commands/next.js +283 -0
- package/dist/commands/plan.js +53 -250
- package/dist/commands/rollback.js +126 -0
- package/dist/commands/start.js +129 -0
- package/dist/commands/task-add.js +200 -0
- package/dist/commands/task-status.js +122 -0
- package/dist/lib/brief.js +1 -1
- package/dist/lib/cursor-task-prompt.js +60 -0
- package/dist/lib/done-follow-up.js +308 -0
- package/dist/lib/git.js +189 -7
- package/dist/lib/guide-state.js +69 -0
- package/dist/lib/llm-complete.js +62 -0
- package/dist/lib/mvp-artifacts.js +204 -0
- package/dist/lib/mvp-constants.js +15 -0
- package/dist/lib/mvp-diff-summary.js +43 -0
- package/dist/lib/mvp-done-summary.js +335 -0
- package/dist/lib/plan-llm-openai.js +15 -4
- package/dist/lib/plan-llm-session.js +3 -2
- package/dist/lib/resolve-command-task.js +40 -0
- package/dist/lib/slug.js +11 -0
- package/dist/lib/task-add-build-prompt.js +39 -0
- package/dist/lib/task-add-cursor.js +81 -0
- package/dist/lib/task-add-llm.js +268 -0
- package/dist/lib/task-merge.js +220 -0
- package/dist/lib/task-scaffold.js +56 -74
- package/dist/lib/task-status-brief.js +132 -0
- package/dist/lib/task.js +89 -37
- package/dist/lib/workflow-guide.js +485 -0
- package/dist/status/collector.js +2 -2
- package/dist/status/format.js +6 -2
- package/package.json +2 -1
- package/templates/docs/tasks/TASK-000-template.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,190 @@ All notable changes to VibeOps are documented here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 0.7.22 - 2026-05-16
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **Branch switch after `task add` / `start`**: governance-only stash (`docs/tasks/`, `.vibeops/`) is **restored with `git stash pop`** after `git switch`, so a newly created TASK file is not left off-disk (ENOENT on `updateInlineStatus`).
|
|
12
|
+
|
|
13
|
+
## 0.7.21 - 2026-05-16
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **`vibeops task status`** — human briefing (or `--json`) for the active TASK: backlog counts, Goal/Result/Test Result, Git branch alignment, Cursor artifact paths, and the same **next step** hint as `vibeops next` (without the menu).
|
|
18
|
+
|
|
19
|
+
## 0.7.20 - 2026-05-16
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **`vibeops task add`** is **interactive by default** (no required flags):
|
|
24
|
+
- If a TASK is **In Progress**, asks whether to **`vibeops done`** it first (commit + merge + clean).
|
|
25
|
+
- **Just create task** — short prompt, LLM-named `TASK-NNN` file, `start`, branch checkout, **In Progress**.
|
|
26
|
+
- **Create plan using LLM** — Q&A → full TASK + `.vibeops/generated/task-build-TASK-NNN.md` for Cursor.
|
|
27
|
+
- CI: `--non-interactive` and optional `--idea`; `--dry-run` for smoke.
|
|
28
|
+
|
|
29
|
+
## 0.7.19 - 2026-05-16
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- **`vibeops task add --idea "…"`** — writes the next `TASK-NNN-<slug>.md` as a **work-now slice** (links to the current In Progress TASK in Background when present). Does not edit `07-backlog.md`. Optional `--start`, `--parent`, `--phase`, `--dry-run`.
|
|
34
|
+
|
|
35
|
+
## 0.7.18 - 2026-05-16
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- **Branch switch** stashes only **tracked** governance paths; **untracked** `.vibeops/generated/*` uses `stash -u` or is skipped so `git switch` does not fail on “did not match any file(s) known to git”.
|
|
40
|
+
|
|
41
|
+
## 0.7.17 - 2026-05-16
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
|
|
45
|
+
- **`vibeops start`**, **`done`**, **`rollback`** with no task ref: use **TASK-mvp** when present; otherwise the **active / next backlog** TASK (`pickActiveTask`) — legacy projects without `TASK-mvp` no longer require `vibeops plan` first.
|
|
46
|
+
|
|
47
|
+
## 0.7.16 - 2026-05-16
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- **`vibeops next`** shows **Prepare git before TASK-NNN** when `start` would fail (dirty app files on `main`, etc.) instead of a failing **Start** loop.
|
|
52
|
+
- **`vibeops start`** prints clearer options (`commit`, `stash`, `--allow-dirty`, TASK-009 hint).
|
|
53
|
+
|
|
54
|
+
## 0.7.15 - 2026-05-16
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **Post-done cleanup** no longer runs `git switch -c` while a **merge is in progress**; auto-resolves `.vibeops/` / docs merge conflicts when possible and prompts `git commit` to finish the merge.
|
|
59
|
+
|
|
60
|
+
## 0.7.14 - 2026-05-16
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- **`vibeops next`**: when Result/Test are filled and only **`.vibeops/` / docs** are dirty, shows **Finish** (`vibeops done`) instead of a stuck **Commit** loop; manual advance to Finish is preserved; Commit hints no longer say `git add -A`.
|
|
65
|
+
|
|
66
|
+
## 0.7.13 - 2026-05-16
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- **`vibeops start`** / branch switch: when only governance paths are dirty (e.g. `.vibeops/state/guide.json`), auto-**stash** them before `git switch` so checkout does not fail.
|
|
71
|
+
|
|
72
|
+
## 0.7.12 - 2026-05-16
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
|
|
76
|
+
- **`vibeops start`** resumes an **existing** task branch (`git switch`) instead of failing with "Task branch already exists".
|
|
77
|
+
- **`vibeops next`** shows **Resume … branch** when the task branch exists but HEAD is elsewhere (e.g. stuck on `chore/vibeops-post-mvp-*`).
|
|
78
|
+
|
|
79
|
+
## 0.7.11 - 2026-05-16
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- **Post-done cleanup** no longer runs `git add -A` on `node_modules/`, `.next/`, etc.; lists excluded paths and suggests `.gitignore`.
|
|
84
|
+
- **`runGit`** uses a larger `maxBuffer` and `git commit -q` to avoid `ERR_CHILD_PROCESS_STDIO_MAXBUFFER` on huge commits.
|
|
85
|
+
- **`vibeops done`** auto-commit uses the same safe path filter (not `git add -A`).
|
|
86
|
+
|
|
87
|
+
## 0.7.10 - 2026-05-16
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- **`vibeops next`** stays on the current **`task/*` branch** until **`vibeops done`** (merge / Notion) — no longer jumps to the next Planned TASK when the TASK file is already **Done** but the branch is not merged.
|
|
92
|
+
- **Close out** step when Status is Done but you are still on the task branch; blocks starting another TASK from the manual Next flow.
|
|
93
|
+
|
|
94
|
+
## 0.7.9 - 2026-05-16
|
|
95
|
+
|
|
96
|
+
### Added
|
|
97
|
+
|
|
98
|
+
- **`vibeops next`** when **Result** / **Test Result** are empty or placeholders: writes **`.vibeops/generated/cursor-implement-<task>.md`** and tells you to **@-mention** that file in Cursor (ready-made implement prompt).
|
|
99
|
+
|
|
100
|
+
## 0.7.8 - 2026-05-16
|
|
101
|
+
|
|
102
|
+
### Fixed
|
|
103
|
+
|
|
104
|
+
- **`vibeops next`** treats `Pending.` / `TBD` / `TODO` in **Result** / **Test Result** as placeholders (no longer jumps to **Finish** right after **start**); **Implement** comes before **Commit** when sections are still empty.
|
|
105
|
+
- **`vibeops start`** for backlog TASKs points at the TASK file, not `mvp-build.md`.
|
|
106
|
+
|
|
107
|
+
## 0.7.7 - 2026-05-16
|
|
108
|
+
|
|
109
|
+
### Fixed
|
|
110
|
+
|
|
111
|
+
- **`vibeops start`** (and merge dirty checks) treat **`.vibeops/generated/`** (e.g. `next-task-suggestion.md`, done summaries) and other **`.vibeops/**`** paths like governance docs, so a dirty tree with only VibeOps artifacts no longer blocks starting the next TASK.
|
|
112
|
+
|
|
113
|
+
## 0.7.6 - 2026-05-16
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
|
|
117
|
+
- **`vibeops next`** no longer pins the guide to a stale `implement` step from `.vibeops/state/guide.json`; it re-detects from TASK + git (e.g. **Review** with Result/Test filled → **Finish** / `vibeops done`).
|
|
118
|
+
- **Next** on manual steps: re-checks the repo and offers **`vibeops done`** when ready; menu label distinguishes run vs advance.
|
|
119
|
+
|
|
120
|
+
## 0.7.5 - 2026-05-16
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- **`vibeops next`** on existing projects without `TASK-mvp`: picks the active backlog TASK (`in_progress` / `review` / next `planned`) or, when all numbered TASKs are **Done**, shows **Continue after MVP** (last TASK + `last-done-summary.md` / `next-task-suggestion.md`) instead of greenfield “run plan first”.
|
|
125
|
+
- **`next`** runnable steps use the resolved TASK id (`vibeops start TASK-017`, `vibeops done TASK-017`) for backlog work.
|
|
126
|
+
|
|
127
|
+
## 0.7.4 - 2026-05-16
|
|
128
|
+
|
|
129
|
+
### Changed
|
|
130
|
+
|
|
131
|
+
- **`vibeops done`** LLM auto-fill and next-task suggestion use the same providers as **`vibeops plan`**: **Codex OAuth** (`~/.codex/auth.json`), **Cursor Agent CLI**, then **OpenAI API key** — not only `OPENAI_API_KEY`.
|
|
132
|
+
|
|
133
|
+
## 0.7.3 - 2026-05-16
|
|
134
|
+
|
|
135
|
+
### Changed
|
|
136
|
+
|
|
137
|
+
- **`vibeops done`** auto-fills **Result** and **Test Result** in the TASK file (from git + optional LLM; placeholders like `(not yet)` are replaced). Use `--refresh-task-sections` to overwrite existing text, `--skip-summary` to skip.
|
|
138
|
+
|
|
139
|
+
## 0.7.2 - 2026-05-16
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
|
|
143
|
+
- **`vibeops done`** always writes **`.vibeops/generated/last-done-summary.md`** (plus dated archive under `done-summaries/`): TASK Result/Test Result, git log/stat, file list, patch excerpt, optional LLM narrative (`OPENAI_API_KEY`).
|
|
144
|
+
- **`vibeops plan`** and **`vibeops next`** include that summary when starting the next iteration (TASK-mvp + `mvp-build.md` + next-task suggestion).
|
|
145
|
+
|
|
146
|
+
## 0.7.1 - 2026-05-16
|
|
147
|
+
|
|
148
|
+
### Added
|
|
149
|
+
|
|
150
|
+
- **`vibeops done`** now runs **`vibeops notion sync` automatically** when Notion is enabled (`--no-notion-sync` to skip).
|
|
151
|
+
- **Post-done follow-up:** if the working tree is still dirty, offers a cleanup branch → commit → merge to `main`; when clean, writes **`.vibeops/generated/next-task-suggestion.md`** via OpenAI (when `OPENAI_API_KEY` is set).
|
|
152
|
+
|
|
153
|
+
## 0.7.0 - 2026-05-16
|
|
154
|
+
|
|
155
|
+
### Changed (breaking)
|
|
156
|
+
|
|
157
|
+
- **CLI surface reduced to the v2 MVP flow:** `init` · `plan` · `start` · `done` · `next` · `status`, plus optional `notion *`, `github *`, and `rollback`.
|
|
158
|
+
- **Removed:** `task *`, `agent *`, `plan --apply-planner`, legacy 20-question wizard, multi-TASK `generate` / `pull` / `add`, and agent paste prompts. Implementation is **drag `.vibeops/generated/mvp-build.md` into Cursor** only.
|
|
159
|
+
- **`plan`** always writes brief + `TASK-mvp` + `mvp-build.md` (no `--no-mvp`).
|
|
160
|
+
- **`next`** guide is MVP-only (start → implement → finish → optional Notion).
|
|
161
|
+
|
|
162
|
+
### Removed (code)
|
|
163
|
+
|
|
164
|
+
- `src/commands/task-*.ts`, `src/commands/agent-*.ts`, `src/lib/{plan-apply-planner,prompt-builder,task-generator,task-scaffold,task-prompt,task-pull,task-add-cursor,project-docs,plan-post-apply-setup}.ts`, `src/agent/*`.
|
|
165
|
+
|
|
166
|
+
## 0.6.0 - 2026-05-16
|
|
167
|
+
|
|
168
|
+
### Added (v2 MVP workflow — recommended)
|
|
169
|
+
|
|
170
|
+
- **`vibeops plan`** now writes **`docs/tasks/TASK-mvp-*.md`** and **`.vibeops/generated/mvp-build.md`** (orchestration prompt to **drag into Cursor**). Skip with **`--no-mvp`**.
|
|
171
|
+
- Top-level **`vibeops start`** (default **TASK-mvp**) and **`vibeops done`** (Result/Test Result, optional git summary, merge to main, delete task branch).
|
|
172
|
+
- **`vibeops status`** / **`vibeops next`** prefer the MVP flow when **TASK-mvp** is active.
|
|
173
|
+
|
|
174
|
+
### Note
|
|
175
|
+
|
|
176
|
+
- Legacy **`task *`**, **`--apply-planner`**, and eight-agent paste flows remain for existing projects; new work should use **plan → start → mvp-build.md in Cursor → done → next**.
|
|
177
|
+
|
|
178
|
+
## 0.5.0 - 2026-05-16
|
|
179
|
+
|
|
180
|
+
### Added
|
|
181
|
+
|
|
182
|
+
- **`vibeops next`**: interactive workflow guide for the active TASK — shows current step, your to-dos, suggested commands, and a **Next / Prev** menu with **Yes/No** (↑/↓). Runs `task start`, `task check`, `task done`, **`merge` (push + direct `git merge` into main + branch cleanup by default)**, `task done --finalize`, and `notion sync` when appropriate. Optional **`--merge-via-pr`** uses `gh pr create` + `gh pr merge`. Cursor implementation remains manual. Session history for Prev is in `.vibeops/state/guide.json`. Flags: `--non-interactive`, `--execute`, `--dry-run`, `--allow-dirty`, optional `[taskId]`.
|
|
183
|
+
|
|
184
|
+
## 0.4.0 - 2026-05-13
|
|
185
|
+
|
|
186
|
+
### Changed
|
|
187
|
+
|
|
188
|
+
- **Interactive plan LLM (`questionType`)**: system prompt prefers **`multi`** (checkbox, Space toggles) whenever several options can apply; reserve **`single`** for mutually exclusive choices. **`multi` vs `single` terminal behavior** is spelled out for the model.
|
|
189
|
+
- **Plan JSON parsing**: if `questionType` is missing or invalid and **two or more** `options` are present, default to **`multi`** so users get multi-select instead of a hard error or accidental single-only flow.
|
|
190
|
+
|
|
7
191
|
## 0.3.0 - 2026-05-13
|
|
8
192
|
|
|
9
193
|
### Changed
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ It gives a project:
|
|
|
19
19
|
- `docs/tasks/TASK-*.md` as the AI execution source of truth.
|
|
20
20
|
- `.cursor/rules/*` and `AGENTS.md` so Cursor knows how to behave.
|
|
21
21
|
- `.vibeops/agents`, `.vibeops/prompts`, `.vibeops/workflows` for reusable agent instructions.
|
|
22
|
-
-
|
|
22
|
+
- MVP workflow: `plan` → `start` → build in Cursor → `done` (Git merge included).
|
|
23
23
|
- Notion metadata sync for a human dashboard.
|
|
24
24
|
|
|
25
25
|
## Why It Exists
|
|
@@ -70,22 +70,21 @@ vibeops init
|
|
|
70
70
|
# Non-interactive Git bootstrap:
|
|
71
71
|
vibeops init --git --initial-commit
|
|
72
72
|
|
|
73
|
-
# 2. LLM planning
|
|
74
|
-
# Use `vibeops plan --legacy-wizard` for the original 20-question flow.
|
|
73
|
+
# 2. LLM planning → brief + TASK-mvp + mvp-build.md (OpenAI, Codex OAuth, or Cursor agent CLI).
|
|
75
74
|
vibeops plan
|
|
76
75
|
|
|
77
|
-
# 3.
|
|
78
|
-
vibeops
|
|
76
|
+
# 3. Task branch for the single MVP TASK.
|
|
77
|
+
vibeops start
|
|
79
78
|
|
|
80
|
-
# 4.
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
# 4. Drag .vibeops/generated/mvp-build.md into a new Cursor chat and implement.
|
|
80
|
+
|
|
81
|
+
# 5. Finish: verify Result/Test Result, merge to main, delete task branch.
|
|
82
|
+
vibeops done
|
|
83
83
|
|
|
84
|
-
#
|
|
85
|
-
vibeops
|
|
86
|
-
vibeops task done TASK-001
|
|
84
|
+
# 6. Optional: interactive nudge
|
|
85
|
+
vibeops next
|
|
87
86
|
|
|
88
|
-
#
|
|
87
|
+
# 7. Optional Notion dashboard sync.
|
|
89
88
|
vibeops notion init
|
|
90
89
|
vibeops notion test
|
|
91
90
|
vibeops notion sync --dry-run
|
|
@@ -101,13 +100,9 @@ cd acme-automator
|
|
|
101
100
|
|
|
102
101
|
vibeops init --name "Acme Automator" --git --initial-commit
|
|
103
102
|
vibeops plan --idea "Acme Automator: schedule and run browser automation jobs for marketing teams"
|
|
104
|
-
vibeops
|
|
105
|
-
|
|
106
|
-
vibeops
|
|
107
|
-
vibeops task prompt TASK-001 --agent builder
|
|
108
|
-
# Paste the prompt into Cursor and let Cursor implement the TASK.
|
|
109
|
-
vibeops task check TASK-001
|
|
110
|
-
vibeops task done TASK-001
|
|
103
|
+
vibeops start
|
|
104
|
+
# Drag .vibeops/generated/mvp-build.md into Cursor and build the MVP.
|
|
105
|
+
vibeops done
|
|
111
106
|
```
|
|
112
107
|
|
|
113
108
|
If a Notion dashboard is enabled:
|
|
@@ -123,31 +118,15 @@ vibeops notion sync
|
|
|
123
118
|
|
|
124
119
|
```text
|
|
125
120
|
vibeops
|
|
126
|
-
├─ init
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
├─
|
|
130
|
-
├─
|
|
131
|
-
├─
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
├─ task
|
|
136
|
-
│ ├─ generate [--from <path>] [--output <path>] [--count <n>] [--phase <name>] [--scaffold] [--dry-run] [--cwd <path>]
|
|
137
|
-
│ ├─ start <taskId> [--dry-run] [--allow-dirty] [--agent <name>] [--cwd <path>]
|
|
138
|
-
│ ├─ prompt <taskId> --agent <name> [--context <path...>] [--cwd <path>]
|
|
139
|
-
│ ├─ check <taskId> [--strict] [--agent <name>] [--cwd <path>]
|
|
140
|
-
│ ├─ done <taskId> [--dry-run] [--finalize] [--cwd <path>]
|
|
141
|
-
│ ├─ rollback <taskId> [--confirm | --confirm-destructive] [--strategy <name>] [--keep-branch] [--dry-run] [--cwd <path>]
|
|
142
|
-
│ └─ pull [--dry-run] [--json] [--status <list>] [--limit <n>] [--cwd <path>] [--verbose]
|
|
143
|
-
├─ notion
|
|
144
|
-
│ ├─ init [--dry-run] [--enable] [--projects-db <id>] [--tasks-db <id>] [--non-interactive] [--cwd <path>]
|
|
145
|
-
│ ├─ test [--json] [--debug-shape] [--cwd <path>]
|
|
146
|
-
│ └─ sync [--dry-run] [--json] [--only-tasks] [--only-project] [--cwd <path>]
|
|
147
|
-
└─ github
|
|
148
|
-
├─ status [--json] [--cwd <path>]
|
|
149
|
-
└─ init [--dry-run] [--yes] [--owner <user>] [--repo <name>] [--public|--private]
|
|
150
|
-
[--remote <name>] [--connect <owner/repo or url>] [--no-package-update] [--cwd <path>]
|
|
121
|
+
├─ init
|
|
122
|
+
├─ plan
|
|
123
|
+
├─ start [mvp]
|
|
124
|
+
├─ done [mvp]
|
|
125
|
+
├─ next
|
|
126
|
+
├─ status
|
|
127
|
+
├─ rollback [mvp]
|
|
128
|
+
├─ notion { init | test | sync }
|
|
129
|
+
└─ github { status | init }
|
|
151
130
|
```
|
|
152
131
|
|
|
153
132
|
Run any command with `--help` for the option details.
|
|
@@ -160,23 +139,24 @@ Run any command with `--help` for the option details.
|
|
|
160
139
|
|
|
161
140
|
### Interactive Planner
|
|
162
141
|
|
|
163
|
-
`vibeops plan`
|
|
164
|
-
|
|
165
|
-
### Task Generator
|
|
166
|
-
|
|
167
|
-
`vibeops task generate` builds a Cursor prompt for generating TASK files. With `--scaffold`, it creates placeholder TASK markdown directly. It does not call an LLM.
|
|
142
|
+
`vibeops plan` (requires `.vibeops.json`) runs an LLM discovery session (OpenAI, Codex OAuth, or Cursor Agent CLI), then writes:
|
|
168
143
|
|
|
169
|
-
|
|
144
|
+
- `.vibeops/brief/project-brief.md`
|
|
145
|
+
- `docs/tasks/TASK-mvp-*.md`
|
|
146
|
+
- `.vibeops/generated/mvp-build.md` — **drag this file into Cursor** to implement the MVP
|
|
170
147
|
|
|
171
|
-
|
|
148
|
+
Use `--from` to regenerate MVP artifacts from an edited brief. Use `--non-interactive` in CI (placeholders only).
|
|
172
149
|
|
|
173
|
-
###
|
|
150
|
+
### MVP Git Rails
|
|
174
151
|
|
|
175
|
-
`
|
|
152
|
+
- `vibeops start` — task branch + Git Context on **TASK-mvp**
|
|
153
|
+
- `vibeops done` — verify Result/Test Result, mark Done, merge, **Notion sync** (when enabled), post-MVP dirty-tree cleanup, next-task LLM suggestion
|
|
154
|
+
- `vibeops next` — interactive guide (start → build → finish)
|
|
155
|
+
- `vibeops rollback` — advisory by default; `--confirm` / `--confirm-destructive` to execute
|
|
176
156
|
|
|
177
157
|
### Notion Dashboard Sync
|
|
178
158
|
|
|
179
|
-
`notion init/test/sync`
|
|
159
|
+
`notion init/test/sync` pushes project + TASK **metadata** only (not markdown bodies).
|
|
180
160
|
|
|
181
161
|
## Runner Modes
|
|
182
162
|
|