@goodtek/vibeops 0.2.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 +28 -0
- package/LICENSE +21 -0
- package/README.md +444 -0
- package/dist/agent/loader.js +71 -0
- package/dist/agent/prompt.js +66 -0
- package/dist/bootstrap/installer.js +149 -0
- package/dist/bootstrap/manifest.js +15 -0
- package/dist/bootstrap/substitute.js +35 -0
- package/dist/cli.js +241 -0
- package/dist/commands/agent-list.js +32 -0
- package/dist/commands/agent-prompt.js +59 -0
- package/dist/commands/agent-show.js +26 -0
- package/dist/commands/github-init.js +554 -0
- package/dist/commands/github-status.js +164 -0
- package/dist/commands/init.js +179 -0
- package/dist/commands/notion-init.js +764 -0
- package/dist/commands/notion-sync.js +405 -0
- package/dist/commands/notion-test.js +595 -0
- package/dist/commands/plan.js +114 -0
- package/dist/commands/status.js +17 -0
- package/dist/commands/task-check.js +155 -0
- package/dist/commands/task-done.js +98 -0
- package/dist/commands/task-generate.js +206 -0
- package/dist/commands/task-pull.js +277 -0
- package/dist/commands/task-rollback.js +174 -0
- package/dist/commands/task-start.js +90 -0
- package/dist/lib/brief.js +349 -0
- package/dist/lib/config.js +158 -0
- package/dist/lib/filesystem.js +67 -0
- package/dist/lib/git.js +237 -0
- package/dist/lib/github-cli.js +247 -0
- package/dist/lib/inquirer-helpers.js +111 -0
- package/dist/lib/logger.js +42 -0
- package/dist/lib/notion-client.js +459 -0
- package/dist/lib/notion-discovery.js +671 -0
- package/dist/lib/notion-env.js +140 -0
- package/dist/lib/notion-mappers.js +148 -0
- package/dist/lib/notion-schema.js +272 -0
- package/dist/lib/notion-sync.js +337 -0
- package/dist/lib/notion-target.js +247 -0
- package/dist/lib/package-json.js +133 -0
- package/dist/lib/paths.js +26 -0
- package/dist/lib/project-docs.js +95 -0
- package/dist/lib/prompt-builder.js +125 -0
- package/dist/lib/task-generator.js +183 -0
- package/dist/lib/task-prompt.js +23 -0
- package/dist/lib/task-pull.js +354 -0
- package/dist/lib/task-scaffold.js +128 -0
- package/dist/lib/task-summary.js +276 -0
- package/dist/lib/task.js +364 -0
- package/dist/status/collector.js +103 -0
- package/dist/status/format.js +177 -0
- package/dist/types/brief.js +126 -0
- package/dist/types/config.js +17 -0
- package/dist/types/task.js +1 -0
- package/dist/version.js +8 -0
- package/package.json +61 -0
- package/templates/.cursor/rules/00-project-governance.mdc +28 -0
- package/templates/.cursor/rules/01-agent-orchestration.mdc +48 -0
- package/templates/.cursor/rules/02-task-workflow.mdc +38 -0
- package/templates/.cursor/rules/03-git-safety.mdc +30 -0
- package/templates/.cursor/rules/04-docs-update.mdc +22 -0
- package/templates/.vibeops/agents/architect.md +47 -0
- package/templates/.vibeops/agents/builder.md +38 -0
- package/templates/.vibeops/agents/docs.md +54 -0
- package/templates/.vibeops/agents/orchestrator.md +40 -0
- package/templates/.vibeops/agents/planner.md +60 -0
- package/templates/.vibeops/agents/recovery.md +49 -0
- package/templates/.vibeops/agents/reviewer.md +47 -0
- package/templates/.vibeops/agents/tester.md +43 -0
- package/templates/.vibeops/prompts/create-plan.md +33 -0
- package/templates/.vibeops/prompts/generate-tasks.md +41 -0
- package/templates/.vibeops/prompts/implement-task.md +39 -0
- package/templates/.vibeops/prompts/review-task.md +34 -0
- package/templates/.vibeops/prompts/rollback.md +32 -0
- package/templates/.vibeops/prompts/start-project.md +39 -0
- package/templates/.vibeops/workflows/notion-sync.md +53 -0
- package/templates/.vibeops/workflows/project-start.md +73 -0
- package/templates/.vibeops/workflows/rollback.md +45 -0
- package/templates/.vibeops/workflows/task-lifecycle.md +71 -0
- package/templates/AGENTS.md +98 -0
- package/templates/docs/logs/README.md +38 -0
- package/templates/docs/project/00-overview.md +27 -0
- package/templates/docs/project/01-requirements.md +30 -0
- package/templates/docs/project/02-mvp-scope.md +36 -0
- package/templates/docs/project/03-architecture.md +34 -0
- package/templates/docs/project/04-tech-stack.md +29 -0
- package/templates/docs/project/05-current-state.md +35 -0
- package/templates/docs/project/06-decisions.md +20 -0
- package/templates/docs/project/07-backlog.md +23 -0
- package/templates/docs/project/08-env.md +29 -0
- package/templates/docs/project/09-deployment.md +28 -0
- package/templates/docs/tasks/TASK-000-template.md +72 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Workflow · Project Start
|
|
2
|
+
|
|
3
|
+
The first hour of a new project.
|
|
4
|
+
|
|
5
|
+
## 0. Prepare
|
|
6
|
+
|
|
7
|
+
- Start in an empty directory.
|
|
8
|
+
- The user has a one-to-two-paragraph **idea**.
|
|
9
|
+
|
|
10
|
+
## 1. Bootstrap
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
vibeops init --name <project-name>
|
|
14
|
+
git init && git add . && git commit -m "chore: bootstrap vibeops"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
What gets created:
|
|
18
|
+
- `AGENTS.md`, `.cursor/rules/*`, `docs/project/*`, `docs/tasks/`, `docs/logs/`
|
|
19
|
+
- `.vibeops/agents/*`, `.vibeops/prompts/*`, `.vibeops/workflows/*`
|
|
20
|
+
- `.vibeops.json`, `.vibeops.env.example`
|
|
21
|
+
|
|
22
|
+
## 2. Plan
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
vibeops plan --idea "<one-paragraph idea>"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Paste the resulting prompt into Cursor. Cursor takes on the `planner` agent role and fills in four files.
|
|
29
|
+
|
|
30
|
+
- `docs/project/00-overview.md`
|
|
31
|
+
- `docs/project/01-requirements.md`
|
|
32
|
+
- `docs/project/02-mvp-scope.md`
|
|
33
|
+
- `docs/project/07-backlog.md`
|
|
34
|
+
|
|
35
|
+
Next, invoke `architect` to fill in `03-architecture.md` and `04-tech-stack.md`.
|
|
36
|
+
|
|
37
|
+
## 3. Backlog → TASKs
|
|
38
|
+
|
|
39
|
+
For each backlog item:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
vibeops task generate --from-backlog TASK-NNN
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
A `docs/tasks/TASK-NNN-*.md` file appears.
|
|
46
|
+
|
|
47
|
+
## 4. First TASK
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
vibeops task start TASK-001
|
|
51
|
+
vibeops task prompt TASK-001 --agent builder
|
|
52
|
+
# paste into Cursor and let it work
|
|
53
|
+
vibeops task check TASK-001
|
|
54
|
+
vibeops task done TASK-001
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Read the merge guidance, then merge and push manually.
|
|
58
|
+
|
|
59
|
+
## 5. (Optional) Notion
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
vibeops notion init # interactive .vibeops.env setup
|
|
63
|
+
vibeops notion test # validate API access and DB schemas
|
|
64
|
+
vibeops notion sync # push docs/tasks metadata to Notion
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 6. Daily
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
vibeops status # check where you are in one second
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Add one entry per decision or step to `docs/logs/YYYY-MM-DD.md` each day.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Workflow · Rollback
|
|
2
|
+
|
|
3
|
+
The standard "this TASK went wrong, let's undo it" flow.
|
|
4
|
+
|
|
5
|
+
## 1. Diagnose first
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
vibeops task rollback TASK-NNN
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The default is **guidance only**. It shows:
|
|
12
|
+
|
|
13
|
+
- Current branch / dirty state.
|
|
14
|
+
- Base branch / base commit / task branch as read from `.vibeops/state/tasks/TASK-NNN.json`.
|
|
15
|
+
- Three possible strategies.
|
|
16
|
+
|
|
17
|
+
## 2. Available strategies
|
|
18
|
+
|
|
19
|
+
| Strategy | Description | What you could lose |
|
|
20
|
+
| ----------------- | ------------------------------------------------------------ | ------------------------------------ |
|
|
21
|
+
| `branch-delete` | Discard the task branch | Every unmerged change on the branch |
|
|
22
|
+
| `reset-base` | Hard-reset the current branch to the base commit | Your current changes (stash first) |
|
|
23
|
+
| `revert-merge` | If already merged, revert the merge commit | Adds a revert commit to history (OK) |
|
|
24
|
+
|
|
25
|
+
## 3. Execute (destructive, `--confirm` required)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
vibeops task rollback TASK-NNN --strategy branch-delete --confirm
|
|
29
|
+
vibeops task rollback TASK-NNN --strategy reset-base --confirm
|
|
30
|
+
vibeops task rollback TASK-NNN --strategy revert-merge --confirm
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Combining `--dry-run` with `--confirm` prints the commands that would run without executing them.
|
|
34
|
+
|
|
35
|
+
## 4. Things you never do
|
|
36
|
+
|
|
37
|
+
- **`git push --force`**: never on shared branches. Even on your own task branch, do not run it unless the reason is unambiguous.
|
|
38
|
+
- Automatic reflog cleanup.
|
|
39
|
+
- Dropping stashes without explicit user consent.
|
|
40
|
+
|
|
41
|
+
## 5. After rollback
|
|
42
|
+
|
|
43
|
+
- Reset `docs/tasks/TASK-NNN-*.md` Status to `planned` or `blocked` and record the reason in Result.
|
|
44
|
+
- Update `docs/project/05-current-state.md`.
|
|
45
|
+
- Append a one-line entry to `docs/logs/YYYY-MM-DD.md`: "Rollback: TASK-NNN — reason".
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Workflow · Task Lifecycle
|
|
2
|
+
|
|
3
|
+
A TASK from start to finish.
|
|
4
|
+
|
|
5
|
+
## 0. Pick
|
|
6
|
+
|
|
7
|
+
Run `vibeops status` to identify the next TASK. Typically run `in_progress` items before `planned` ones.
|
|
8
|
+
|
|
9
|
+
## 1. Start
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
vibeops task start TASK-NNN
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- A dirty working tree is refused (override with `--allow-dirty`, not recommended).
|
|
16
|
+
- Records base branch / base commit / task branch in `.vibeops/state/tasks/TASK-NNN.json`.
|
|
17
|
+
- Creates and checks out the `task/NNN-<slug>` branch.
|
|
18
|
+
- Sets the TASK file's Status to `in_progress`.
|
|
19
|
+
|
|
20
|
+
## 2. Prompt
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
vibeops task prompt TASK-NNN --agent builder
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Paste the single markdown output directly into the Cursor chat. Cursor takes on the builder agent role.
|
|
27
|
+
|
|
28
|
+
Other agents work the same way:
|
|
29
|
+
- `--agent reviewer` — review the diff.
|
|
30
|
+
- `--agent tester` — run the Test Plan.
|
|
31
|
+
- `--agent docs` — update the three docs.
|
|
32
|
+
|
|
33
|
+
## 3. Check
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
vibeops task check TASK-NNN
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- Score Acceptance Criteria items with ✓ / ✗.
|
|
40
|
+
- Match `Expected Files to Change` against actual changes.
|
|
41
|
+
- Summarize current branch / dirty / commit count.
|
|
42
|
+
|
|
43
|
+
## 4. Done
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
vibeops task done TASK-NNN
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- Validates the TASK file's Status, Result, Test Result bodies.
|
|
50
|
+
- Records `doneAt` in `.vibeops/state/tasks/TASK-NNN.json`.
|
|
51
|
+
- Prints **merge guidance** (no automatic merge).
|
|
52
|
+
|
|
53
|
+
A human merges:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
git switch main
|
|
57
|
+
git merge --ff-only task/NNN-<slug>
|
|
58
|
+
git branch -d task/NNN-<slug>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 5. (Optional) Notion sync
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
vibeops notion sync
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Pushes TASK metadata (summary, status, priority, branch, docs path, result summary) to Notion.
|
|
68
|
+
|
|
69
|
+
## When things go wrong: Rollback
|
|
70
|
+
|
|
71
|
+
See [`rollback.md`](rollback.md).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# {{PROJECT_NAME}} — AI agent operating guide
|
|
2
|
+
|
|
3
|
+
> This file was installed by **VibeOps**. Every AI agent on this project (including Cursor) reads it before touching code.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
This project runs **Cursor-based vibe coding** on rails. The execution input is **`docs/tasks/TASK-*.md`**, not chat history.
|
|
8
|
+
|
|
9
|
+
## Required reading before you code
|
|
10
|
+
|
|
11
|
+
Read the docs below **before you start implementing**. Order top to bottom.
|
|
12
|
+
|
|
13
|
+
| Document | Why |
|
|
14
|
+
| ------------------------------------------ | --------------------------------------------------------- |
|
|
15
|
+
| `docs/project/05-current-state.md` | Where the project is today and what comes next |
|
|
16
|
+
| `docs/project/00-overview.md` | Vision, terminology, MVP boundaries |
|
|
17
|
+
| `docs/project/02-mvp-scope.md` | What is in / out of MVP |
|
|
18
|
+
| `docs/project/03-architecture.md` | System, folders, data flow |
|
|
19
|
+
| `docs/project/04-tech-stack.md` | Tools used to build the project |
|
|
20
|
+
| `docs/project/06-decisions.md` | Decisions already made (avoid conflicts) |
|
|
21
|
+
| `docs/project/07-backlog.md` | TASK order and definition of done |
|
|
22
|
+
| **Current TASK file** `docs/tasks/TASK-NNN-*` | Scope and Acceptance Criteria for the current TASK |
|
|
23
|
+
|
|
24
|
+
`docs/project/01-requirements.md`, `08-env.md`, `09-deployment.md` are referenced as needed. **Always read the entire current TASK file.**
|
|
25
|
+
|
|
26
|
+
## Source of truth
|
|
27
|
+
|
|
28
|
+
| What | Where |
|
|
29
|
+
| -------------------------- | ---------------------------------- |
|
|
30
|
+
| AI execution input | Git `docs/tasks/*.md` |
|
|
31
|
+
| Project design and status | Git `docs/project/*.md` |
|
|
32
|
+
| Change history and rollback | Git commits / branches |
|
|
33
|
+
| Human dashboard | Notion (metadata only, never body) |
|
|
34
|
+
| **Not** a source of truth | Chat (Cursor history, Slack) |
|
|
35
|
+
|
|
36
|
+
## TASK-driven development rules
|
|
37
|
+
|
|
38
|
+
1. Implement **one TASK at a time**.
|
|
39
|
+
2. Stay inside the TASK's **Scope / Acceptance Criteria**.
|
|
40
|
+
3. Before adding new code, **search** for existing implementations or patterns and avoid duplication.
|
|
41
|
+
4. **Every mutating command** should support **`--dry-run`** (or an equivalent) so the plan can be previewed without side effects.
|
|
42
|
+
5. **Large refactors** happen only when a dedicated TASK calls for them.
|
|
43
|
+
6. **Notion / Git integrations** are only added when an explicit TASK assigns that responsibility.
|
|
44
|
+
7. When the work is finished, update docs per [Completion report](#completion-report) and `.cursor/rules/04-docs-update.mdc`.
|
|
45
|
+
|
|
46
|
+
Details live in `.cursor/rules/`.
|
|
47
|
+
|
|
48
|
+
## Agent roles
|
|
49
|
+
|
|
50
|
+
`.vibeops/agents/*.md` defines 8 agents for this project.
|
|
51
|
+
|
|
52
|
+
- `orchestrator` — picks the next TASK and delegates to other agents.
|
|
53
|
+
- `planner` — expands an idea into `docs/project/{00,01,02,07}`.
|
|
54
|
+
- `architect` — fills in `docs/project/{03,04}` (architecture, tech stack).
|
|
55
|
+
- `builder` — takes one TASK and edits code.
|
|
56
|
+
- `reviewer` — compares the diff against the Acceptance Criteria.
|
|
57
|
+
- `tester` — runs the Test Plan and fills in Test Result.
|
|
58
|
+
- `docs` — updates `05-current-state.md`, the TASK Result, and `docs/logs/`.
|
|
59
|
+
- `recovery` — diagnoses rollback options (destructive actions require `--confirm`).
|
|
60
|
+
|
|
61
|
+
## Forbidden
|
|
62
|
+
|
|
63
|
+
- Changing requirements or implementing things "loosely" based on chat alone.
|
|
64
|
+
- Editing code or config **without reading the current TASK file**.
|
|
65
|
+
- Mixing **multiple TASKs** in one session, or adding a large structure (e.g. `src/`) without a TASK.
|
|
66
|
+
- Features **outside the TASK Scope** or **outside the MVP**.
|
|
67
|
+
- Creating similar modules **without searching first**.
|
|
68
|
+
- Performing **large refactors** without a dedicated TASK.
|
|
69
|
+
- Adding **Notion / Git integration** that the TASK does not authorize.
|
|
70
|
+
- Calling the TASK done without updating **`05-current-state.md` / the TASK file / `docs/logs/YYYY-MM-DD.md`**.
|
|
71
|
+
|
|
72
|
+
## Cursor rule files
|
|
73
|
+
|
|
74
|
+
| File | Contents |
|
|
75
|
+
| ----------------------------------------------------- | --------------------------------------------------------- |
|
|
76
|
+
| `.cursor/rules/00-project-governance.mdc` | Source of truth, one-TASK rule, MVP scope |
|
|
77
|
+
| `.cursor/rules/01-agent-orchestration.mdc` | Roles of the 8 agents and how they collaborate |
|
|
78
|
+
| `.cursor/rules/02-task-workflow.mdc` | How to start / run / finish a TASK, dry-run first |
|
|
79
|
+
| `.cursor/rules/03-git-safety.mdc` | Branch / rollback safety, no force-push |
|
|
80
|
+
| `.cursor/rules/04-docs-update.mdc` | Mandatory doc updates after implementation |
|
|
81
|
+
|
|
82
|
+
## Completion report
|
|
83
|
+
|
|
84
|
+
When you finish a TASK, include at least the following in your chat response:
|
|
85
|
+
|
|
86
|
+
1. **TASK ID** (for example `TASK-001`).
|
|
87
|
+
2. **Summary** — 2 to 4 sentences on what was achieved.
|
|
88
|
+
3. **Changed files** — list of the main paths.
|
|
89
|
+
4. **Verification** — the commands you ran and their results.
|
|
90
|
+
5. **Doc updates** — confirm you updated `05-current-state.md`, the TASK's Result / Test Result, and `docs/logs/YYYY-MM-DD.md`.
|
|
91
|
+
|
|
92
|
+
Do not end the report with just "done".
|
|
93
|
+
|
|
94
|
+
## VibeOps metadata
|
|
95
|
+
|
|
96
|
+
- Project name: `{{PROJECT_NAME}}`
|
|
97
|
+
- Bootstrapped by: VibeOps `{{VIBEOPS_VERSION}}`
|
|
98
|
+
- Created at: `{{CREATED_AT}}`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Daily Logs
|
|
2
|
+
|
|
3
|
+
This directory follows a **one-file-per-day** policy.
|
|
4
|
+
|
|
5
|
+
- Filename: `YYYY-MM-DD.md` (local date).
|
|
6
|
+
- Create the file on the day's first change. Additional changes the same day append entries to the same file.
|
|
7
|
+
- Logs are **fact-first**: decision summary, changed files, verification result, next work.
|
|
8
|
+
|
|
9
|
+
## Entry template
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
## YYYY-MM-DD · TASK-NNN <short title>
|
|
13
|
+
|
|
14
|
+
### Decision summary
|
|
15
|
+
|
|
16
|
+
- ...
|
|
17
|
+
|
|
18
|
+
### Changed files
|
|
19
|
+
|
|
20
|
+
- new: ...
|
|
21
|
+
- update: ...
|
|
22
|
+
|
|
23
|
+
### Verification
|
|
24
|
+
|
|
25
|
+
| Command | Result |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `...` | ... |
|
|
28
|
+
|
|
29
|
+
### Next work
|
|
30
|
+
|
|
31
|
+
- TASK-NNN — ...
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Non-goals
|
|
35
|
+
|
|
36
|
+
- Chitchat, opinions, self-praise.
|
|
37
|
+
- Copy-pasted TASK bodies.
|
|
38
|
+
- Secret values that should not be committed.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# 00 — Overview
|
|
2
|
+
|
|
3
|
+
> This document is the slot that `vibeops plan` (via the `planner` agent) fills in. Keep the section headers below and leave the bodies empty.
|
|
4
|
+
|
|
5
|
+
## One-line definition
|
|
6
|
+
|
|
7
|
+
<!-- One sentence describing what this project is — who it is for and what the tool/service does. -->
|
|
8
|
+
|
|
9
|
+
## Problem to solve
|
|
10
|
+
|
|
11
|
+
<!-- 3 to 5 bullets. Stay fact-based about current pain points. -->
|
|
12
|
+
|
|
13
|
+
## Example usage
|
|
14
|
+
|
|
15
|
+
<!-- A 6-to-10-line scenario showing how a single hypothetical user flows through the product. -->
|
|
16
|
+
|
|
17
|
+
## Core roles
|
|
18
|
+
|
|
19
|
+
<!-- 4 to 8 things this product "does", one per line. Each line starts with a verb. -->
|
|
20
|
+
|
|
21
|
+
## Vocabulary
|
|
22
|
+
|
|
23
|
+
<!-- 5 to 10 terms that mean something specific in this project. Disambiguate synonyms. -->
|
|
24
|
+
|
|
25
|
+
## Non-goals (out of scope, forever)
|
|
26
|
+
|
|
27
|
+
<!-- Things this project intentionally does not do. Different from "out of MVP scope" — that lives in 02-mvp-scope.md. -->
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 01 — Requirements
|
|
2
|
+
|
|
3
|
+
> Filled in by the `planner` agent.
|
|
4
|
+
|
|
5
|
+
## Functional requirements
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Numbered. Each line reads "the system does …".
|
|
9
|
+
F-001. Users can ...
|
|
10
|
+
F-002. The system ...
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
## Non-functional requirements
|
|
14
|
+
|
|
15
|
+
<!--
|
|
16
|
+
Performance / reliability / security / operations / compatibility.
|
|
17
|
+
NF-001. No command may corrupt user data ...
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
## Users / stakeholders
|
|
21
|
+
|
|
22
|
+
<!-- Who uses the product, who cares about it. By role. -->
|
|
23
|
+
|
|
24
|
+
## Constraints
|
|
25
|
+
|
|
26
|
+
<!-- Technical, schedule, budget, regulatory — anything imposed from outside. -->
|
|
27
|
+
|
|
28
|
+
## Assumptions
|
|
29
|
+
|
|
30
|
+
<!-- The "let's assume this is true" list. Items that would be risky if they break. -->
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 02 — MVP Scope
|
|
2
|
+
|
|
3
|
+
> Filled in by the `planner` agent. Keep it small.
|
|
4
|
+
|
|
5
|
+
## MVP in one sentence
|
|
6
|
+
|
|
7
|
+
<!-- A single line: "Within two weeks, who can do what." -->
|
|
8
|
+
|
|
9
|
+
## In scope
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
The 5 to 10 capabilities the MVP must have.
|
|
13
|
+
- IN: sign-up and single sign-on
|
|
14
|
+
- IN: ...
|
|
15
|
+
-->
|
|
16
|
+
|
|
17
|
+
## Intentionally out for MVP
|
|
18
|
+
|
|
19
|
+
<!--
|
|
20
|
+
Things that may ship later but not in the MVP.
|
|
21
|
+
- OUT: multiple workspaces
|
|
22
|
+
- OUT: payment UI
|
|
23
|
+
The clearer this is, the smaller the backlog gets.
|
|
24
|
+
-->
|
|
25
|
+
|
|
26
|
+
## Definition of done
|
|
27
|
+
|
|
28
|
+
<!--
|
|
29
|
+
- Which scenarios run end-to-end.
|
|
30
|
+
- Which data flows are preserved.
|
|
31
|
+
- Which error situations are tolerated.
|
|
32
|
+
-->
|
|
33
|
+
|
|
34
|
+
## How to validate
|
|
35
|
+
|
|
36
|
+
<!-- How a real person confirms "the MVP is ready". One demo scenario. -->
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 03 — Architecture
|
|
2
|
+
|
|
3
|
+
> Filled in by the `architect` agent.
|
|
4
|
+
|
|
5
|
+
## Big picture
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Use an ASCII diagram to draw the "inside / outside the system" boundary.
|
|
9
|
+
Flows like user → frontend → backend → DB / external services.
|
|
10
|
+
-->
|
|
11
|
+
|
|
12
|
+
## Components
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
| Name | Responsibility | Inputs | Outputs |
|
|
16
|
+
| ----------- | ------------------------ | ------------- | ------------- |
|
|
17
|
+
| component-a | ... | ... | ... |
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
## Data model
|
|
21
|
+
|
|
22
|
+
<!-- The 3 to 7 core entities and how they relate. Field-level detail belongs to a separate TASK. -->
|
|
23
|
+
|
|
24
|
+
## Data flow
|
|
25
|
+
|
|
26
|
+
<!-- The call sequence for the 1 to 2 most common user scenarios. -->
|
|
27
|
+
|
|
28
|
+
## External boundaries
|
|
29
|
+
|
|
30
|
+
<!-- Which external services / APIs we talk to. Auth method, public or private. -->
|
|
31
|
+
|
|
32
|
+
## Non-deterministic / failure paths
|
|
33
|
+
|
|
34
|
+
<!-- High-level behavior under network failures, concurrency, data loss. -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# 04 — Tech Stack
|
|
2
|
+
|
|
3
|
+
> Filled in by the `architect` agent. Add a one-line "why" to each choice.
|
|
4
|
+
|
|
5
|
+
## Runtime / language
|
|
6
|
+
|
|
7
|
+
<!-- Node.js / Python / Go, etc. Version. The reason behind the choice. -->
|
|
8
|
+
|
|
9
|
+
## Frameworks / libraries
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
| Area | Choice | Why |
|
|
13
|
+
| ------- | ------------------ | ---------------------------------------------- |
|
|
14
|
+
| Server | ... | ... |
|
|
15
|
+
| ORM | ... | ... |
|
|
16
|
+
| Tests | vitest | TS-friendly, fast |
|
|
17
|
+
-->
|
|
18
|
+
|
|
19
|
+
## Infrastructure
|
|
20
|
+
|
|
21
|
+
<!-- Where the system runs, how it is deployed (high level). Detailed commands live in 09-deployment.md. -->
|
|
22
|
+
|
|
23
|
+
## Package manager / build
|
|
24
|
+
|
|
25
|
+
<!-- pnpm / npm / yarn, tsc / esbuild / vite, etc. Whether there is a single entry point. -->
|
|
26
|
+
|
|
27
|
+
## Explicit non-adoptions
|
|
28
|
+
|
|
29
|
+
<!-- Things we deliberately do not use, and why. -->
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 05 — Current State
|
|
2
|
+
|
|
3
|
+
> Record **facts only**. The `docs` agent refreshes this document after each implementation.
|
|
4
|
+
|
|
5
|
+
## Stage
|
|
6
|
+
|
|
7
|
+
- **Current stage**: bootstrap complete. Planning and implementation have not started yet.
|
|
8
|
+
- No code (`src/`, `package.json`, …) exists yet.
|
|
9
|
+
|
|
10
|
+
## What is in place
|
|
11
|
+
|
|
12
|
+
| Item | Location | Notes |
|
|
13
|
+
| ----------------- | ------------------------------------- | --------------------------- |
|
|
14
|
+
| Operating guide | `AGENTS.md`, `.cursor/rules/*` | Installed by VibeOps |
|
|
15
|
+
| Agent definitions | `.vibeops/agents/*` | 8 agents |
|
|
16
|
+
| Project docs | `docs/project/00 ~ 09` | Empty (waiting for plan) |
|
|
17
|
+
| TASK folder | `docs/tasks/` | Empty (waiting for generate) |
|
|
18
|
+
| Logs folder | `docs/logs/` | Empty |
|
|
19
|
+
|
|
20
|
+
## What is missing
|
|
21
|
+
|
|
22
|
+
- The actual bodies of `docs/project/*` (planner / architect will fill these in).
|
|
23
|
+
- `docs/tasks/TASK-001-*.md` (`task generate`).
|
|
24
|
+
- Any code at all.
|
|
25
|
+
- Notion connection (run `vibeops notion init` if desired).
|
|
26
|
+
|
|
27
|
+
## Next TASK
|
|
28
|
+
|
|
29
|
+
**The backlog is empty.** Run `vibeops plan --idea "<your idea>"` to fill in `docs/project/{00,01,02,07}`; the first TASK candidates fall out of that.
|
|
30
|
+
|
|
31
|
+
## Working rules (short summary)
|
|
32
|
+
|
|
33
|
+
- Implement **one TASK at a time**.
|
|
34
|
+
- Every mutating command should support `--dry-run` when possible.
|
|
35
|
+
- After implementation, update this document, the TASK file, and `docs/logs/YYYY-MM-DD.md` together.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# 06 — Decisions
|
|
2
|
+
|
|
3
|
+
Decisions that have already been made. A conflicting proposal changes them only after a separate TASK reopens the discussion.
|
|
4
|
+
|
|
5
|
+
## D-001 · Source of truth is Git `docs/`
|
|
6
|
+
|
|
7
|
+
Chat is not trusted. When docs and chat disagree, fix the docs first, then implement.
|
|
8
|
+
|
|
9
|
+
## D-002 · One TASK at a time
|
|
10
|
+
|
|
11
|
+
Large refactors do not happen without a dedicated TASK.
|
|
12
|
+
|
|
13
|
+
## D-003 · Notion is the human dashboard (metadata only)
|
|
14
|
+
|
|
15
|
+
No body sync. No realtime.
|
|
16
|
+
|
|
17
|
+
<!--
|
|
18
|
+
Add later decisions as `D-NNN · one-line summary`.
|
|
19
|
+
Keep each entry short — one paragraph that covers "why" and "result".
|
|
20
|
+
-->
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 07 — Backlog
|
|
2
|
+
|
|
3
|
+
TASK order. Work top to bottom. Do not skip to the next item before the current TASK is done.
|
|
4
|
+
|
|
5
|
+
> Slot to be filled by the `planner` agent.
|
|
6
|
+
|
|
7
|
+
## MVP 1
|
|
8
|
+
|
|
9
|
+
| ID | Title | Status |
|
|
10
|
+
| -------- | ----------------------------------- | ------- |
|
|
11
|
+
| TASK-001 | <first TASK title> | planned |
|
|
12
|
+
|
|
13
|
+
## MVP 2 (later)
|
|
14
|
+
|
|
15
|
+
<!-- Slot. -->
|
|
16
|
+
|
|
17
|
+
## Later (out of MVP, but live candidates)
|
|
18
|
+
|
|
19
|
+
<!-- Items to revisit after MVP. Do not turn them into TASKs right away. -->
|
|
20
|
+
|
|
21
|
+
## Non-goals
|
|
22
|
+
|
|
23
|
+
Follow the "Non-goals" section in `docs/project/00-overview.md`. The backlog only grows inside those bounds.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# 08 — Environment
|
|
2
|
+
|
|
3
|
+
Environment variables used by this project and what they mean.
|
|
4
|
+
|
|
5
|
+
## Local development
|
|
6
|
+
|
|
7
|
+
Copy `.vibeops.env.example` to `.vibeops.env` and fill in the values. Never commit `.vibeops.env` — it is listed in `.gitignore`.
|
|
8
|
+
|
|
9
|
+
| Variable | Purpose | Required |
|
|
10
|
+
| --------------- | ---------------------------------------------------------------- | --------------- |
|
|
11
|
+
| `NOTION_TOKEN` | Notion internal integration secret (the only secret VibeOps reads) | If using Notion |
|
|
12
|
+
|
|
13
|
+
`NOTION_TOKEN` is the only secret VibeOps reads from the environment. Notion **Projects / Tasks DB target IDs** are not environment variables — they live in `.vibeops.json` as `notion.projectsTargetId` / `notion.tasksTargetId`, and `vibeops notion init` writes them. GitHub auth is owned by `gh auth`, so there is no need to put `GITHUB_TOKEN` here.
|
|
14
|
+
|
|
15
|
+
> The legacy `NOTION_API_KEY` / `NOTION_PROJECT_DB` / `NOTION_TASK_DB` environment variables are no longer used. VibeOps ignores them if they remain in an existing `.vibeops.env`. It is safe to remove them by hand.
|
|
16
|
+
|
|
17
|
+
<!--
|
|
18
|
+
Add project-specific environment variables here once they exist.
|
|
19
|
+
Examples: DATABASE_URL, OAUTH_CLIENT_ID, ...
|
|
20
|
+
-->
|
|
21
|
+
|
|
22
|
+
## Staging / production
|
|
23
|
+
|
|
24
|
+
<!-- Slot. -->
|
|
25
|
+
|
|
26
|
+
## Secret management
|
|
27
|
+
|
|
28
|
+
- `.vibeops.env` is a plain-text local file. Production secrets belong in a real secret manager.
|
|
29
|
+
- No VibeOps command prints secret values to stdout in the clear (they are masked).
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 09 — Deployment
|
|
2
|
+
|
|
3
|
+
How the project is deployed and run.
|
|
4
|
+
|
|
5
|
+
## Local run
|
|
6
|
+
|
|
7
|
+
<!-- The single-command dev-server flow (e.g. `pnpm dev`). -->
|
|
8
|
+
|
|
9
|
+
## Build
|
|
10
|
+
|
|
11
|
+
<!-- Where build artifacts live and which command produces them. -->
|
|
12
|
+
|
|
13
|
+
## Packaging / release
|
|
14
|
+
|
|
15
|
+
<!--
|
|
16
|
+
Steps per target environment.
|
|
17
|
+
- npm publish?
|
|
18
|
+
- Docker image?
|
|
19
|
+
- Cloud (Vercel / Fly / AWS / GCP / ...) ?
|
|
20
|
+
-->
|
|
21
|
+
|
|
22
|
+
## Environment separation
|
|
23
|
+
|
|
24
|
+
<!-- Differences between dev / staging / prod. Same code with different env? Same image? -->
|
|
25
|
+
|
|
26
|
+
## Rollback
|
|
27
|
+
|
|
28
|
+
<!-- The standard rollback flow when a deployment goes wrong. -->
|