@goodtek/vibeops 0.7.22 → 1.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 (121) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/README.md +62 -382
  3. package/dist/bootstrap/installer.js +4 -16
  4. package/dist/cli.js +26 -160
  5. package/dist/commands/init.js +3 -3
  6. package/dist/commands/status.js +145 -8
  7. package/dist/commands/task-add.js +64 -164
  8. package/dist/commands/task-done.js +117 -74
  9. package/dist/lib/config.js +2 -118
  10. package/dist/lib/git.js +1 -1
  11. package/dist/lib/paths.js +7 -3
  12. package/dist/lib/plan-llm-openai.js +0 -63
  13. package/dist/lib/resolve-task.js +34 -0
  14. package/dist/lib/task-add-llm.js +46 -233
  15. package/dist/lib/task-context.js +68 -0
  16. package/dist/lib/task-done-llm.js +148 -0
  17. package/dist/lib/task-merge.js +54 -159
  18. package/dist/lib/task-scaffold.js +39 -43
  19. package/dist/lib/task-start.js +72 -0
  20. package/dist/lib/task-summary.js +12 -239
  21. package/dist/lib/task.js +15 -24
  22. package/dist/types/config.js +0 -16
  23. package/package.json +3 -5
  24. package/templates/.cursor/rules/01-task-source-of-truth.mdc +12 -0
  25. package/templates/.cursor/rules/02-git-safety.mdc +11 -0
  26. package/templates/.cursor/rules/03-docs-on-done.mdc +13 -0
  27. package/templates/.cursor/skills/implement-task/SKILL.md +22 -0
  28. package/templates/.cursor/skills/plan-task/SKILL.md +19 -0
  29. package/templates/AGENTS.md +26 -87
  30. package/templates/docs/logs/README.md +4 -35
  31. package/templates/docs/project/03-architecture.md +10 -29
  32. package/templates/docs/project/05-current-state.md +7 -27
  33. package/templates/docs/project/06-decisions.md +6 -17
  34. package/templates/docs/tasks/TASK-000-template.md +9 -44
  35. package/dist/agent/loader.js +0 -71
  36. package/dist/agent/prompt.js +0 -66
  37. package/dist/commands/agent-list.js +0 -32
  38. package/dist/commands/agent-prompt.js +0 -59
  39. package/dist/commands/agent-show.js +0 -26
  40. package/dist/commands/done.js +0 -160
  41. package/dist/commands/github-init.js +0 -554
  42. package/dist/commands/github-status.js +0 -164
  43. package/dist/commands/next.js +0 -283
  44. package/dist/commands/notion-init.js +0 -764
  45. package/dist/commands/notion-sync.js +0 -405
  46. package/dist/commands/notion-test.js +0 -595
  47. package/dist/commands/plan.js +0 -146
  48. package/dist/commands/rollback.js +0 -126
  49. package/dist/commands/start.js +0 -129
  50. package/dist/commands/task-check.js +0 -155
  51. package/dist/commands/task-generate.js +0 -206
  52. package/dist/commands/task-pull.js +0 -277
  53. package/dist/commands/task-rollback.js +0 -174
  54. package/dist/commands/task-start.js +0 -102
  55. package/dist/commands/task-status.js +0 -122
  56. package/dist/lib/brief.js +0 -356
  57. package/dist/lib/cursor-task-prompt.js +0 -60
  58. package/dist/lib/done-follow-up.js +0 -308
  59. package/dist/lib/github-cli.js +0 -247
  60. package/dist/lib/guide-state.js +0 -69
  61. package/dist/lib/mvp-artifacts.js +0 -204
  62. package/dist/lib/mvp-constants.js +0 -15
  63. package/dist/lib/mvp-diff-summary.js +0 -43
  64. package/dist/lib/mvp-done-summary.js +0 -335
  65. package/dist/lib/notion-client.js +0 -459
  66. package/dist/lib/notion-discovery.js +0 -671
  67. package/dist/lib/notion-env.js +0 -140
  68. package/dist/lib/notion-mappers.js +0 -148
  69. package/dist/lib/notion-schema.js +0 -272
  70. package/dist/lib/notion-sync.js +0 -337
  71. package/dist/lib/notion-target.js +0 -247
  72. package/dist/lib/package-json.js +0 -133
  73. package/dist/lib/plan-apply-planner.js +0 -131
  74. package/dist/lib/plan-codex-pkce.js +0 -234
  75. package/dist/lib/plan-llm-models.js +0 -237
  76. package/dist/lib/plan-llm-normalize.js +0 -146
  77. package/dist/lib/plan-llm-session.js +0 -682
  78. package/dist/lib/plan-post-apply-setup.js +0 -116
  79. package/dist/lib/project-docs.js +0 -95
  80. package/dist/lib/prompt-builder.js +0 -135
  81. package/dist/lib/resolve-command-task.js +0 -40
  82. package/dist/lib/task-add-build-prompt.js +0 -39
  83. package/dist/lib/task-add-cursor.js +0 -81
  84. package/dist/lib/task-generator.js +0 -183
  85. package/dist/lib/task-prompt.js +0 -23
  86. package/dist/lib/task-pull.js +0 -354
  87. package/dist/lib/task-status-brief.js +0 -132
  88. package/dist/lib/workflow-guide.js +0 -485
  89. package/dist/status/collector.js +0 -103
  90. package/dist/status/format.js +0 -181
  91. package/dist/types/brief.js +0 -126
  92. package/templates/.cursor/rules/00-project-governance.mdc +0 -28
  93. package/templates/.cursor/rules/01-agent-orchestration.mdc +0 -48
  94. package/templates/.cursor/rules/02-task-workflow.mdc +0 -38
  95. package/templates/.cursor/rules/03-git-safety.mdc +0 -30
  96. package/templates/.cursor/rules/04-docs-update.mdc +0 -22
  97. package/templates/.vibeops/agents/architect.md +0 -47
  98. package/templates/.vibeops/agents/builder.md +0 -38
  99. package/templates/.vibeops/agents/docs.md +0 -54
  100. package/templates/.vibeops/agents/orchestrator.md +0 -40
  101. package/templates/.vibeops/agents/planner.md +0 -60
  102. package/templates/.vibeops/agents/recovery.md +0 -49
  103. package/templates/.vibeops/agents/reviewer.md +0 -47
  104. package/templates/.vibeops/agents/tester.md +0 -43
  105. package/templates/.vibeops/prompts/create-plan.md +0 -33
  106. package/templates/.vibeops/prompts/generate-tasks.md +0 -41
  107. package/templates/.vibeops/prompts/implement-task.md +0 -39
  108. package/templates/.vibeops/prompts/review-task.md +0 -34
  109. package/templates/.vibeops/prompts/rollback.md +0 -32
  110. package/templates/.vibeops/prompts/start-project.md +0 -39
  111. package/templates/.vibeops/workflows/notion-sync.md +0 -53
  112. package/templates/.vibeops/workflows/project-start.md +0 -73
  113. package/templates/.vibeops/workflows/rollback.md +0 -45
  114. package/templates/.vibeops/workflows/task-lifecycle.md +0 -71
  115. package/templates/docs/project/00-overview.md +0 -27
  116. package/templates/docs/project/01-requirements.md +0 -30
  117. package/templates/docs/project/02-mvp-scope.md +0 -36
  118. package/templates/docs/project/04-tech-stack.md +0 -29
  119. package/templates/docs/project/07-backlog.md +0 -23
  120. package/templates/docs/project/08-env.md +0 -29
  121. package/templates/docs/project/09-deployment.md +0 -28
package/CHANGELOG.md CHANGED
@@ -2,7 +2,27 @@
2
2
 
3
3
  All notable changes to VibeOps are documented here.
4
4
 
5
- ## Unreleased
5
+ ## 1.0.0 - 2026-05-27
6
+
7
+ ### Breaking
8
+
9
+ - **Four commands only:** `init`, `task add`, `task done`, `status`.
10
+ - **Removed:** `plan`, `start`, `next`, `rollback`, `notion`, `github`, `task generate`, `task check`, `task prompt`, `task pull`, `agent`, and separate `task status`.
11
+ - **Removed Notion:** no `@notionhq/client`, no Notion config in `.vibeops.json`.
12
+ - **Single TASK model:** `TASK-NNN-<slug>.md` only (no `TASK-mvp` workflow).
13
+ - **`task add`:** if a TASK is In Progress, **guide only** and exit 1 — no auto `task done`.
14
+ - **Templates:** no `.vibeops/agents`, workflows, or prompts; slim `docs/project/` set.
15
+
16
+ ### Added
17
+
18
+ - **`task add`** creates TASK file, task branch, and In Progress status in one step (replaces `start`).
19
+ - **`task done`** LLM assist for Result/Test Result and patches to `05-current-state`, `06-decisions`, `03-architecture`, daily log.
20
+ - **Unified `status`** briefing without Notion/GitHub sections.
21
+ - v3 Cursor rules (3) and optional skills (`plan-task`, `implement-task`).
22
+
23
+ ### Fixed
24
+
25
+ - Governance stash **pop** after branch switch so new TASK files stay on disk.
6
26
 
7
27
  ## 0.7.22 - 2026-05-16
8
28
 
package/README.md CHANGED
@@ -1,425 +1,105 @@
1
1
  # VibeOps
2
2
 
3
- > Workflow rails for Cursor-based vibe coding projects.
3
+ > Minimal CLI rails for Cursor-based TASK-driven vibe coding.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@goodtek/vibeops.svg)](https://www.npmjs.com/package/@goodtek/vibeops)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
7
 
8
- VibeOps is a local CLI that installs and operates the project structure needed to run Cursor-based vibe coding as reproducible TASKs: `AGENTS.md`, Cursor rules, project docs, TASK files, agents/prompts/workflows, Git lifecycle helpers, and optional Notion dashboard sync.
8
+ VibeOps bootstraps a **Cursor-friendly repo**, starts numbered **TASK** files on Git branches, and closes them while updating **project memory** in Git. Cursor plans and implements; the CLI handles files, Git, and short LLM assists.
9
9
 
10
- VibeOps does not write product code for you. Cursor is the builder. VibeOps keeps the workflow on rails.
10
+ ## Four commands
11
11
 
12
- ## What Is VibeOps?
12
+ | Command | Purpose |
13
+ |---------|---------|
14
+ | `vibeops init` | Install AGENTS.md, Cursor rules/skills, docs layout, `.vibeops.json` |
15
+ | `vibeops task add` | New `TASK-NNN` file + task branch (blocks if another TASK is In Progress) |
16
+ | `vibeops task done` | LLM fills Result/Test + updates project docs; commit + merge |
17
+ | `vibeops status` | Briefing: active TASK, branch, doc health, next hint |
13
18
 
14
- VibeOps is a **local CLI** for turning an idea into a repository that Cursor agents can work on safely and repeatably.
15
-
16
- It gives a project:
17
-
18
- - `docs/project/*` for product and architecture context.
19
- - `docs/tasks/TASK-*.md` as the AI execution source of truth.
20
- - `.cursor/rules/*` and `AGENTS.md` so Cursor knows how to behave.
21
- - `.vibeops/agents`, `.vibeops/prompts`, `.vibeops/workflows` for reusable agent instructions.
22
- - MVP workflow: `plan` → `start` → build in Cursor → `done` (Git merge included).
23
- - Notion metadata sync for a human dashboard.
24
-
25
- ## Why It Exists
26
-
27
- Vibe coding is fast, but chat history is a weak source of truth. Without a durable workflow, agents repeat work, drift outside scope, lose decision history, and leave teammates without a dashboard. VibeOps moves the durable context into Git files and uses CLI commands to keep each TASK bounded.
28
-
29
- ## Core Philosophy
30
-
31
- - **VibeOps = workflow rail**: it structures the work, validates state, and prints prompts.
32
- - **Cursor = builder**: Cursor reads the docs/TASKs and writes application code.
33
- - **Git `docs/tasks` = AI execution source of truth**: TASK markdown beats chat memory.
34
- - **Notion = human dashboard**: Notion shows metadata and progress, not canonical task bodies.
35
-
36
- | What | Source of truth |
37
- | --- | --- |
38
- | AI execution input | Git `docs/tasks/*.md` |
39
- | Project design/status | Git `docs/project/*.md` |
40
- | Change and rollback evidence | Git commits/branches |
41
- | Human dashboard | Notion Projects/Tasks DB |
42
- | Not a source of truth | Cursor chat, Slack, memory |
43
-
44
- ## Installation
45
-
46
- VibeOps requires Node.js 20+.
47
-
48
- ```bash
49
- npm install -g @goodtek/vibeops
50
- vibeops --help
51
- ```
52
-
53
- The published package is `@goodtek/vibeops`. The installed CLI command is `vibeops`.
54
-
55
- For local development from this repository:
56
-
57
- ```bash
58
- pnpm install
59
- pnpm build
60
- node dist/cli.js --help
61
- ```
62
-
63
- ## Quick Start
64
-
65
- ```bash
66
- # 1. Install VibeOps workflow files into the current project.
67
- # Interactive mode can also initialize Git and create the first commit.
68
- vibeops init
69
-
70
- # Non-interactive Git bootstrap:
71
- vibeops init --git --initial-commit
72
-
73
- # 2. LLM planning → brief + TASK-mvp + mvp-build.md (OpenAI, Codex OAuth, or Cursor agent CLI).
74
- vibeops plan
75
-
76
- # 3. Task branch for the single MVP TASK.
77
- vibeops start
78
-
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
-
84
- # 6. Optional: interactive nudge
85
- vibeops next
86
-
87
- # 7. Optional Notion dashboard sync.
88
- vibeops notion init
89
- vibeops notion test
90
- vibeops notion sync --dry-run
91
- ```
92
-
93
- ## Quick Tutorial: Acme Automator
94
-
95
- Suppose the idea is: “Build **Acme Automator**, a SaaS that schedules and runs browser automation jobs for marketing teams.”
96
-
97
- ```bash
98
- mkdir acme-automator
99
- cd acme-automator
100
-
101
- vibeops init --name "Acme Automator" --git --initial-commit
102
- vibeops plan --idea "Acme Automator: schedule and run browser automation jobs for marketing teams"
103
- vibeops start
104
- # Drag .vibeops/generated/mvp-build.md into Cursor and build the MVP.
105
- vibeops done
106
- ```
107
-
108
- If a Notion dashboard is enabled:
109
-
110
- ```bash
111
- vibeops notion init
112
- vibeops notion test
113
- vibeops notion sync --dry-run
114
- vibeops notion sync
115
- ```
116
-
117
- ## Full Command Flow
118
-
119
- ```text
120
- vibeops
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 }
130
- ```
131
-
132
- Run any command with `--help` for the option details.
133
-
134
- ## Features
135
-
136
- ### Project Bootstrapper
137
-
138
- `vibeops init` installs a project operating system: `AGENTS.md`, `.cursor/rules`, `docs/project`, `docs/tasks`, `.vibeops/agents`, `.vibeops/prompts`, `.vibeops/workflows`, `.vibeops.json`, and `.vibeops.env.example`. It is idempotent by default and only overwrites when `--force` is used.
139
-
140
- ### Interactive Planner
141
-
142
- `vibeops plan` (requires `.vibeops.json`) runs an LLM discovery session (OpenAI, Codex OAuth, or Cursor Agent CLI), then writes:
143
-
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
147
-
148
- Use `--from` to regenerate MVP artifacts from an edited brief. Use `--non-interactive` in CI (placeholders only).
149
-
150
- ### MVP Git Rails
151
-
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
156
-
157
- ### Notion Dashboard Sync
158
-
159
- `notion init/test/sync` pushes project + TASK **metadata** only (not markdown bodies).
160
-
161
- ## Runner Modes
162
-
163
- - **Prompt mode (default)**: VibeOps prints Cursor-ready prompts. Cursor executes the code changes.
164
- - VibeOps does not call LLM APIs and does not invoke Cursor CLI directly today; it works as a workflow rail around the human + Cursor loop.
165
-
166
- ## Notion Setup
167
-
168
- Notion is optional. If enabled:
169
-
170
- - `NOTION_TOKEN` is the **only** environment variable VibeOps reads. It lives in `.vibeops.env` (gitignored) or in `process.env`.
171
- - Target IDs live in `.vibeops.json`, not in `.vibeops.env`.
172
- - `projectsTargetId` / `tasksTargetId` are preferred resolved **data_source** IDs.
173
- - `projectsDatabaseId` / `tasksDatabaseId` remain legacy/container fallbacks.
174
- - `notion init` uses data_source-first discovery. If no data sources are found, it can search accessible pages, scan 1-depth inline database blocks, then resolve child databases to data source IDs.
175
- - Legacy `NOTION_API_KEY` / `NOTION_PROJECT_DB` / `NOTION_TASK_DB` environment variables are no longer used. The `.vibeops.env.example` that `vibeops init` writes contains only `NOTION_TOKEN=`.
176
-
177
- Required Projects DB properties:
178
-
179
- | Property | Type |
180
- | --- | --- |
181
- | `Name` | `title` |
182
- | `Project ID` | `rich_text` |
183
- | `Status` | `status` |
184
- | `Local Path` | `rich_text` |
185
- | `Git Repo` | `rich_text` or `url` |
186
- | `Current Phase` | `select` |
187
- | `Docs Path` | `rich_text` |
188
- | `Summary` | `rich_text` |
189
-
190
- Required Tasks DB properties:
191
-
192
- | Property | Type |
193
- | --- | --- |
194
- | `Name` | `title` |
195
- | `Task ID` | `rich_text` |
196
- | `Project ID` | `rich_text` |
197
- | `Status` | `status` |
198
- | `Priority` | `select` |
199
- | `MVP Phase` | `select` |
200
- | `Git Branch` | `rich_text` |
201
- | `Docs Path` | `rich_text` |
202
- | `Summary` | `rich_text` |
203
- | `Result Summary` | `rich_text` |
204
-
205
- > `MVP Phase` here is a Notion property name kept for compatibility with existing dashboards. It is a free-form label column and is not an internal release-phase tag.
206
-
207
- Required Status options:
208
-
209
- - Projects DB: `Building`, `Planning`, `Paused`, `Done`, `Archived`
210
- - Tasks DB: `Planned`, `In Progress`, `Review`, `Done`, `Blocked`
211
-
212
- VibeOps validates these options in `notion test` and `notion sync --dry-run`, but it never creates or mutates Notion schema.
213
-
214
- ## GitHub Setup
215
-
216
- GitHub integration runs on top of the GitHub CLI (`gh`). VibeOps never stores `GITHUB_TOKEN` — authentication is owned by `gh auth login`.
217
-
218
- 1. Install `gh`:
219
-
220
- ```bash
221
- brew install gh
222
- # or follow https://cli.github.com/
223
- ```
224
-
225
- 2. Authenticate:
226
-
227
- ```bash
228
- gh auth login
229
- ```
230
-
231
- 3. Probe state:
232
-
233
- ```bash
234
- vibeops github status
235
- ```
236
-
237
- 4. Connect or create a repo interactively:
238
-
239
- ```bash
240
- # plan only — no gh / git / file mutation
241
- vibeops github init --dry-run
242
-
243
- # plan a new public repo
244
- vibeops github init --dry-run --owner <user> --repo <name> --public
245
-
246
- # connect to an existing repo by slug or URL
247
- vibeops github init --dry-run --connect <owner>/<repo>
248
- vibeops github init --dry-run --connect https://github.com/<owner>/<repo>.git
249
- vibeops github init --dry-run --connect git@github.com:<owner>/<repo>.git
250
- ```
251
-
252
- `vibeops github init` applies four things in sequence:
253
-
254
- - (optional) `gh repo create <owner>/<repo> --public|--private --source=. --remote=origin` for new repos.
255
- - `git remote add origin <url>` (or `git remote set-url`) for the `--connect` path. Existing remotes are never silently overwritten — VibeOps asks first and defaults to No.
256
- - Updates `package.json` `repository.url`, `homepage`, `bugs.url` (skip with `--no-package-update`).
257
- - Writes the `github` section of `.vibeops.json`: `enabled`, `mode = "gh-cli"`, `owner`, `repo`, `remote`, `visibility`, `url`.
258
-
259
- VibeOps never runs `git push`. Push your branch manually with `git push -u <remote> <branch>`.
260
-
261
- ## Init Git Bootstrap
262
-
263
- `vibeops init` can optionally do the first local Git setup while installing the workflow files. In interactive mode it asks:
264
-
265
- - Initialize Git repository?
266
- - Use `main` as default branch?
267
- - Create initial commit?
268
- - Initial commit message
269
-
270
- For non-interactive setup:
19
+ ## Workflow
271
20
 
272
21
  ```bash
273
- vibeops init --git --initial-commit
274
- vibeops init --git --no-initial-commit
275
- vibeops init --git --default-branch main --commit-message "chore: initialize vibeops project"
276
- ```
277
-
278
- Safety rules:
22
+ vibeops init --git --initial-commit # once per repo
279
23
 
280
- - Existing Git repositories skip `git init`.
281
- - Existing repositories with commits skip the initial commit path.
282
- - `--dry-run` runs no Git commands.
283
- - VibeOps never pushes and never changes remotes during `init`.
284
- - Before the initial commit, VibeOps prints how many files will be included.
24
+ vibeops task add # interactive: idea → TASK file + branch
25
+ # Plan in Cursor Ask: @docs/tasks/TASK-NNN-….md
26
+ # Build in Cursor Agent: same file + Scope / Acceptance Criteria
285
27
 
286
- Before the first commit, `vibeops status` distinguishes an unborn branch from a detached HEAD:
287
-
288
- ```text
289
- Git
290
- branch main (unborn, no commits yet)
291
- status dirty
292
- hint create the first commit or run `vibeops init --git --initial-commit`
28
+ vibeops task done # close TASK, update memory, merge branch
29
+ vibeops status # anytime snapshot
293
30
  ```
294
31
 
295
- ## Status Output
296
-
297
- `vibeops status` summarizes the local project surface only. It never calls the Notion API and never spawns `gh`. The Notion section reads from `.vibeops.env` / `process.env` (for `NOTION_TOKEN` presence) and `.vibeops.json` (for target IDs). The GitHub section reads from `.vibeops.json`. The Package section reads from `package.json`.
298
-
299
- Example output for a fully-configured project:
300
-
301
- ```text
302
- Git
303
- branch main
304
- status clean
305
-
306
- Notion
307
- enabled yes
308
- token configured (.vibeops.env)
309
- projects target configured
310
- tasks target configured
311
- hint run `vibeops notion test`
312
-
313
- GitHub
314
- enabled yes
315
- mode gh-cli
316
- owner/repo goodtekxyz/vibeops
317
- remote origin
318
- url https://github.com/goodtekxyz/vibeops
319
-
320
- Package
321
- name @goodtek/vibeops
322
- version 0.2.0
323
- bin vibeops
324
- ```
32
+ If a TASK is already **In Progress**, `task add` prints a guide and exits with code 1 — it does **not** auto-run `task done`.
325
33
 
326
- For a fresh project that has not been wired to Notion or GitHub yet:
34
+ ## What `init` creates
327
35
 
328
- ```text
329
- Notion
330
- enabled no
331
- token missing
332
- projects target missing
333
- tasks target missing
334
- hint run `vibeops notion init`
36
+ | Path | Role |
37
+ |------|------|
38
+ | `AGENTS.md` | Source of truth, read order, four CLI commands |
39
+ | `.cursor/rules/` | Task source of truth, Git safety, docs on done |
40
+ | `.cursor/skills/` | Optional `plan-task` and `implement-task` skills |
41
+ | `docs/tasks/TASK-000-template.md` | Section template for new TASKs |
42
+ | `docs/project/05-current-state.md` | Facts: stage, active TASK, next step |
43
+ | `docs/project/06-decisions.md` | Append-only decision log |
44
+ | `docs/project/03-architecture.md` | Living architecture |
45
+ | `docs/logs/README.md` | Daily log convention |
46
+ | `.vibeops.json` | Project metadata (no Notion) |
335
47
 
336
- GitHub
337
- enabled no
338
- hint run `vibeops github init`
339
- ```
48
+ ## Source of truth
340
49
 
341
- If the project has no `package.json`, the Package section degrades gracefully:
50
+ | What | Where |
51
+ |------|--------|
52
+ | Current work | `docs/tasks/TASK-NNN-*.md` |
53
+ | Project memory | `docs/project/05-current-state.md`, `03-architecture.md`, `06-decisions.md` |
54
+ | Change history | Git commits on task branches |
55
+ | **Not** trusted | Cursor chat, Slack |
342
56
 
343
- ```text
344
- Package
345
- package.json missing
346
- ```
57
+ ## LLM (optional)
347
58
 
348
- `vibeops status --json` exposes the same surface programmatically, including `notion.tokenSource`, `notion.hasProjectsTarget`, `notion.hasTasksTarget`, the entire `github` object, and the entire `package` object. Legacy environment variables (`NOTION_API_KEY`, `NOTION_PROJECT_DB`, `NOTION_TASK_DB`) are no longer surfaced — VibeOps only uses `NOTION_TOKEN`.
59
+ Used only for **`task add`** (scaffold title/slug/sections) and **`task done`** (Result, Test Result, project doc patches).
349
60
 
350
- ## Git Rollback Safety
61
+ Providers (first match wins): Codex OAuth (`~/.codex/auth.json`), Cursor Agent CLI, `OPENAI_API_KEY` in `.vibeops.env`.
351
62
 
352
- - `task start` records base branch, base commit, and task branch in task state.
353
- - `task check` is read-only and reports working tree + committed changes.
354
- - `task done` validates TASK Result/Test Result and moves to Review by default.
355
- - `task rollback` is advisory unless explicit confirmation flags are supplied.
63
+ Without LLM, `task add` falls back to a minimal template; `task done` uses a git-diff fallback for Result sections.
356
64
 
357
- ## Agent Workflow
65
+ ## Installation
358
66
 
359
- Agents are Markdown files under `.vibeops/agents`. Use:
67
+ Node.js 20+ required.
360
68
 
361
69
  ```bash
362
- vibeops agent list
363
- vibeops agent show builder
364
- vibeops task prompt TASK-001 --agent builder
365
- ```
366
-
367
- The default project template includes agents such as `orchestrator`, `planner`, `architect`, `builder`, `reviewer`, `tester`, `docs`, and `recovery`.
368
-
369
- ## Packaging / npm Usage
370
-
371
- This package exposes the `vibeops` binary:
372
-
373
- ```json
374
- {
375
- "bin": {
376
- "vibeops": "dist/cli.js"
377
- }
378
- }
70
+ npm install -g @goodtek/vibeops
71
+ vibeops --help
379
72
  ```
380
73
 
381
- Package contents are limited by `package.json#files` to built output, templates, and top-level docs/license files. `dist/` is generated by `pnpm build` / `prepack` and is not committed.
382
-
383
- Useful maintainer commands:
74
+ Local development:
384
75
 
385
76
  ```bash
386
- pnpm typecheck
77
+ pnpm install
387
78
  pnpm build
388
- pnpm smoke
389
- pnpm pack
390
- pnpm publish --dry-run --access public --no-git-checks
79
+ pnpm smoke # typecheck + build + smoke cases
80
+ node dist/cli.js --help
391
81
  ```
392
82
 
393
- Actual `npm publish` is a manual release action and is not performed by this repository workflow.
83
+ ## Flags (common)
394
84
 
395
- ## Security Notes
85
+ - **`init`**: `--dry-run`, `--cwd`, `--name`, `--git`, `--no-git`, `--initial-commit`, `--force`
86
+ - **`task add`**: `--dry-run`, `--non-interactive --idea "…"` (CI/smoke)
87
+ - **`task done`**: `--dry-run`, `--no-merge`, `--allow-dirty`, `--yes`, `--cwd`
88
+ - **`status`**: `--json`, `--cwd`
396
89
 
397
- - `.vibeops.env` is gitignored and must contain secrets such as `NOTION_TOKEN`.
398
- - VibeOps masks tokens in CLI output.
399
- - Notion test/debug output is token-safe.
400
- - `notion sync --dry-run` performs no mutation.
401
- - `task pull --dry-run` performs no file or Notion mutation.
402
- - Notion page bodies are never synced.
403
- - Git destructive rollback paths require explicit confirmation.
404
- - `github init` uses `gh` CLI auth — VibeOps never stores `GITHUB_TOKEN`.
405
- - `github init --dry-run` runs zero `gh` / `git remote` / file mutations and produces only a plan.
90
+ ## Git conventions
406
91
 
407
- ## Support
92
+ - Task branch: `task/<slug>` from current HEAD
93
+ - Commit message: `feat(task-nnn): <short title>`
94
+ - Merge via `task done` (confirm in TTY; `--yes` to skip prompt)
95
+ - No force-push
408
96
 
409
- - Bugs, setup issues, and usage questions: [support@goodtek.xyz](mailto:support@goodtek.xyz)
410
- - Collaboration and feedback: [hello@goodtek.xyz](mailto:hello@goodtek.xyz)
411
- - Issue tracker: [github.com/goodtekxyz/vibeops/issues](https://github.com/goodtekxyz/vibeops/issues)
97
+ ## Breaking change: 1.0.0
412
98
 
413
- ## Documentation
99
+ v1.0 removes `plan`, `start`, `next`, `rollback`, `notion`, `github`, and legacy task subcommands. Pin `@goodtek/vibeops@0.7` if you still need them.
414
100
 
415
- - [`AGENTS.md`](AGENTS.md) — agent operating guide.
416
- - [`docs/project/00-overview.md`](docs/project/00-overview.md) — vision and scope.
417
- - [`docs/project/01-architecture.md`](docs/project/01-architecture.md) — CLI / config / data flow.
418
- - [`docs/project/03-current-state.md`](docs/project/03-current-state.md) — current implementation state.
419
- - [`docs/project/04-decisions.md`](docs/project/04-decisions.md) — decisions already made.
420
- - [`docs/project/05-backlog.md`](docs/project/05-backlog.md) — task order.
421
- - [`docs/tasks/`](docs/tasks/) — TASK files used by Cursor.
101
+ See [CHANGELOG.md](CHANGELOG.md) and [docs/project/v3-scope.md](docs/project/v3-scope.md).
422
102
 
423
103
  ## License
424
104
 
425
- MIT © VibeOps contributors
105
+ MIT
@@ -6,24 +6,12 @@ import { loadManifest, resolveDestination } from "./manifest.js";
6
6
  import { applySubstitutions, buildSubstitutions, isTextPath, } from "./substitute.js";
7
7
  import { configToJson } from "../lib/config.js";
8
8
  function envExampleContents() {
9
- // Modern VibeOps reads exactly one Notion secret: NOTION_TOKEN.
10
- // Notion Projects / Tasks target IDs live in `.vibeops.json` under
11
- // `notion.projectsTargetId` / `notion.tasksTargetId` (configured by
12
- // `vibeops notion init`), so they are NOT environment variables.
13
- //
14
- // We intentionally do NOT seed GITHUB_TOKEN / OPENAI_* here:
15
- // - GitHub integration uses `gh` CLI auth.
16
- // - VibeOps' default runner is prompt mode and does not call LLM APIs.
17
9
  return [
18
- "# VibeOps · environment example",
19
- "# Copy this file to .vibeops.env and fill in the value.",
20
- "# Never commit .vibeops.env — it is added to .gitignore by `vibeops init`.",
10
+ "# VibeOps · optional environment",
11
+ "# Copy to .vibeops.env (gitignored). Never commit secrets.",
21
12
  "#",
22
- "# NOTION_TOKEN is the only secret VibeOps reads. Get it from",
23
- "# https://www.notion.so/profile/integrations after creating an internal",
24
- "# integration and sharing the target databases with it.",
25
- "",
26
- "NOTION_TOKEN=",
13
+ "# LLM for task add / task done (optional — Codex OAuth and Cursor Agent CLI also work):",
14
+ "# OPENAI_API_KEY=",
27
15
  "",
28
16
  ].join("\n");
29
17
  }