@su-record/vibe 4.1.20 → 4.1.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +10 -3
- package/card.md +10 -11
- package/dist/cli/memory.js +11 -4
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/work.js +5 -2
- package/dist/cli/work.js.map +1 -1
- package/dist/core/check.js +17 -1
- package/dist/core/check.js.map +1 -1
- package/dist/core/checks/mutation.js +31 -0
- package/dist/core/checks/mutation.js.map +1 -0
- package/dist/core/ledger.js +14 -5
- package/dist/core/ledger.js.map +1 -1
- package/dist/core/regress.js +3 -0
- package/dist/core/regress.js.map +1 -1
- package/dist/core/scenarios.js +9 -0
- package/dist/core/scenarios.js.map +1 -1
- package/dist/core/view.js +54 -2
- package/dist/core/view.js.map +1 -1
- package/dist/install/hooks.js +9 -5
- package/dist/install/hooks.js.map +1 -1
- package/dist/install/register.js +36 -3
- package/dist/install/register.js.map +1 -1
- package/dist/install/tree.js +1 -0
- package/dist/install/tree.js.map +1 -1
- package/hooks/hooks.json +11 -0
- package/hooks/notify.js +45 -4
- package/hooks/session.js +15 -1
- package/package.json +1 -1
- package/skills/vibe/SKILL.md +15 -12
- package/skills/vibe-build/SKILL.md +6 -5
- package/skills/vibe-handoff/SKILL.md +2 -2
- package/skills/vibe-prove/SKILL.md +3 -1
- package/skills/vibe-scope/SKILL.md +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe-build
|
|
3
|
-
description:
|
|
3
|
+
description: For a `size: full` task only — parallel worktrees, irreversible scenarios, a failed scenario's `vibe context`. A `size: small` task needs no skill — build everything, one `vibe check --all`.
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,12 +8,13 @@ user-invocable: false
|
|
|
8
8
|
|
|
9
9
|
## Procedure
|
|
10
10
|
|
|
11
|
+
0. Whatever the size: build every remaining scenario, then one `vibe check --all` — no check per scenario, no `vibe context` before building, no handoff document unless the intent names one. `vibe context <id>` and `vibe check <id>` are for a scenario that failed, and for a question the files do not answer. Steps 1–2 are for `size: full` — an irreversible scenario, a review/http/eval check, a needs chain two deep, or more than eight scenarios.
|
|
11
12
|
1. Take scenarios in the order of `remaining` from `vibe state --json` — parents before their `needs` dependents (`vibe state --graph` shows the edges). Put scenarios marked `irreversible` last.
|
|
12
13
|
- Scenarios with no edge between them may be built by parallel agents, each in its own worktree, merged before `vibe check --all`. Never two agents in one working tree. Batch scenarios of one shape into one dispatch; never a nested subagent (a reviewer's reviewer counts for nothing). Hand artifacts to an agent as files, never pasted. When the context is nearly full, start a new session from `.vibe/` instead of compacting.
|
|
13
|
-
2.
|
|
14
|
+
2. Build only what each scenario needs, and make sure the check itself (`check.cmd`, `check.path`) can actually run. `vibe map` and `vibe context {id}` are tools for a question — where a symbol lives, what a change reaches — not a step before every scenario.
|
|
14
15
|
- Orientation reads ("what does this module do", "where is X handled") go through `vibe read <files> --ask "<question>"` — a low-reasoning model reads and answers with line numbers; read the file yourself only to edit or debug it.
|
|
15
|
-
3.
|
|
16
|
-
- Pass (`code 0`): next scenario.
|
|
16
|
+
3. When everything is built, `vibe check --all --json`; on a failure, `vibe context {id}` for that scenario — the files and symbols the check touches, the decisions and regressions around them — then fix and `vibe check {id} --json` for that scenario only.
|
|
17
|
+
- Pass (`code 0`): the next failing scenario, or `vibe check --all` when none is left.
|
|
17
18
|
- Fail (`code 1`): read `tail` and fix. If the same failure happens twice the harness marks STUCK and leaves an inbox question — stop and show that question to the user.
|
|
18
19
|
- Blocked (`status: blocked`): a parent has not passed; `vibe check {id}` runs unpassed parents first, so fix the parent named in `blockedBy`.
|
|
19
20
|
4. When a project-local skill (`vibe skill list`) applies to the scenario, follow it and run `vibe skill used {name}` — prune decisions read the ledger.
|
|
@@ -28,7 +29,7 @@ Before actually executing an `irreversible` scenario (send, deploy, delete, spen
|
|
|
28
29
|
vibe ask "{what is about to happen, one line}" --needs authorize:{action} --target "{target}" --json
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
If the response carries a token, show it to the user and execute only after they paste it and `vibe authorize "{number}" --action {action} --target "{target}"` exits 0. If the project's token policy is `off`, the response has no token: run `vibe authorize --action {action} --target "{target}"` (recorded as auto) and proceed. Dry runs never need a token.
|
|
32
|
+
If the response carries a token, show it to the user and execute only after they paste it and `vibe authorize "{number}" --action {action} --target "{target}"` exits 0 — as its own tool call, never chained in front of the action with `&&`: the hook reads the ledger before a command runs, so it blocks the chained command as unauthorized. If the project's token policy is `off`, the response has no token: run `vibe authorize --action {action} --target "{target}"` (recorded as auto) and proceed. Dry runs never need a token.
|
|
32
33
|
|
|
33
34
|
## Never
|
|
34
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe-handoff
|
|
3
|
-
description:
|
|
3
|
+
description: Only when the intent asks for a HANDOFF.md, or the user asks for a document an operator runs alone. DONE itself needs no skill — answer from the `vibe check` output.
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -20,7 +20,7 @@ Done: {intent title}
|
|
|
20
20
|
- Proposals: {from `vibe state --json` proposals[] — e.g. an operator skill for an irreversible step, at most 3}
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
3. Write the handoff document `HANDOFF.md` (or the location the user chose), in English. Four sections are mandatory: **How to run**, **When it fails (alerts · rerun)**, **How to roll back**, **Contacts / owner**. Say so first if any is missing.
|
|
23
|
+
3. Write the handoff document `HANDOFF.md` (or the location the user chose), in English, only when the intent names a handoff scenario or the user asks for one; otherwise the report above is the handoff. Four sections are mandatory: **How to run**, **When it fails (alerts · rerun)**, **How to roll back**, **Contacts / owner**. Say so first if any is missing.
|
|
24
24
|
4. The commands in the handoff document must be proven to run (`run` check). If an approved scenario already covers the handoff check, run `vibe check` on it. If not, ask the user whether to add a handoff scenario and re-approve.
|
|
25
25
|
5. A final irreversible action (deploy, send) follows the token procedure in `vibe-build` exactly.
|
|
26
26
|
6. If something should be kept for the next request (a repeated question, a customer convention), propose `vibe knowledge add`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe-prove
|
|
3
|
-
description:
|
|
3
|
+
description: Only on STUCK (the same failure twice) — read `vibe context <id>`, answer the inbox, `vibe check --all`. A passing task needs no skill.
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -19,3 +19,5 @@ user-invocable: false
|
|
|
19
19
|
DONE means every gate scenario passed on this exact tree. Changing any file sends the state back to RUNNING; run `vibe check --all` again.
|
|
20
20
|
|
|
21
21
|
On STUCK, read `vibe context {id}` before touching anything — the decisions and regressions around that scenario are usually the reason.
|
|
22
|
+
|
|
23
|
+
After DONE, no further `vibe check`: a check after DONE spends a turn and changes nothing until a file changes.
|
|
@@ -14,6 +14,7 @@ user-invocable: false
|
|
|
14
14
|
- When it is something a person looks at (screen, page, component, dashboard, slide, card news, poster), propose `check: { type: review, pack: design, path: <file or directory>, contract: <brief>, screenshot: <png, if an earlier scenario renders one> }`, same mark.
|
|
15
15
|
- When the code will be read or maintained by someone else (a library, a contribution, a handoff), propose `check: { type: review, pack: code, path: <directory>, contract: <brief>, changed: true }`, same mark; `changed: true` reviews what changed against HEAD and its one-hop importers instead of the whole directory (a git ref instead of `true` diffs against it) — propose it on every `review` of a directory in a git repository; otherwise `vibe size` stays the code gate.
|
|
16
16
|
- Next to a text `review` that has an evidence file, propose `check: { type: file, path: <file>, traceable: <evidence file> }` (every number in the text is in the evidence); next to a design `review` on html, `check: { type: file, path: <html>, a11y: true }` (alt, heading order, unnamed controls, unlabelled inputs, contrast). These check facts; the reviewers keep the judgment.
|
|
17
|
+
- A check observes. A `run` command that changes state (restore, reset, seed, migrate down, push, deploy) is detected and marked `irreversible`; `check --all` will not run it without `vibe authorize`, and it cannot become a regression. Rewrite such a check to observe — run against a copy, read the result — or declare `irreversible: <action>` and say so in the approval message.
|
|
17
18
|
- Next to every `review`, propose its deterministic pre-gate on the same file: `check: { type: file, path: <file>, absent: "@placeholders" }` — the preset is the usual leftovers (lorem-ipsum text, a bracketed TODO, a to-be-decided mark, a company-name placeholder, unfilled double-brace fields, double-square-bracket notes); add the project's own words with `|`. For a directory, a `run` check with `grep -rlE` and `expect: 1`. Tell the writer that a note to the model goes between double square brackets, so the gate catches it if it survives into the artifact.
|
|
18
19
|
- A condition you cannot check gets `human` explicitly. An irreversible action (push, deploy, send, delete, spend) gets `irreversible: <action>`.
|
|
19
20
|
- A scenario that only makes sense after another one has passed gets `needs: [ids]`. The harness orders and parallelises checks from these edges; keep a connected graph under six scenarios.
|