@snarkipus/opencode-beads 1.0.1 → 1.1.0-beta.1
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/README.md +45 -28
- package/assets/oc-beads/SKILL.md +149 -0
- package/assets/oc-beads/adr/0001-bd-prime-as-source-of-truth.md +40 -0
- package/assets/oc-beads/resources/AGENTS.md +43 -0
- package/assets/oc-beads/resources/ASYNC_GATES.md +63 -0
- package/assets/oc-beads/resources/BOUNDARIES.md +57 -0
- package/assets/oc-beads/resources/CHEMISTRY_PATTERNS.md +44 -0
- package/assets/oc-beads/resources/CLI_REFERENCE.md +20 -0
- package/assets/oc-beads/resources/CODE_MODE.md +78 -0
- package/assets/oc-beads/resources/DEPENDENCIES.md +82 -0
- package/assets/oc-beads/resources/INTEGRATION_PATTERNS.md +74 -0
- package/assets/oc-beads/resources/ISSUE_CREATION.md +45 -0
- package/assets/oc-beads/resources/MOLECULES.md +65 -0
- package/assets/oc-beads/resources/PATTERNS.md +43 -0
- package/assets/oc-beads/resources/RESUMABILITY.md +83 -0
- package/assets/oc-beads/resources/STATIC_DATA.md +19 -0
- package/assets/oc-beads/resources/TROUBLESHOOTING.md +49 -0
- package/assets/oc-beads/resources/WORKFLOWS.md +64 -0
- package/assets/oc-beads/resources/WORKTREES.md +19 -0
- package/package.json +5 -4
- package/src/agents.ts +11 -3
- package/src/context.ts +67 -22
- package/src/continuity.ts +380 -0
- package/src/guard.ts +44 -11
- package/src/guidance.ts +66 -16
- package/src/host.ts +328 -45
- package/src/instructions.ts +11 -8
- package/src/plugin.ts +2 -1
- package/src/prime.ts +15 -4
- package/src/workflows.ts +131 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Beads in native code mode
|
|
2
|
+
|
|
3
|
+
Use the actual request capability block. When the beads namespace is registered
|
|
4
|
+
and execute is visible, use native `search({namespace: "beads"})` to discover
|
|
5
|
+
current signatures. Catalog discovery and each operation's permissions determine
|
|
6
|
+
what is callable; execute visibility alone does not establish leaf availability.
|
|
7
|
+
Do not copy a signature catalog from prose or invent tools. If execute is denied,
|
|
8
|
+
code-mode-only Beads operations disappear. Permissioned direct shell is a fallback
|
|
9
|
+
only when available, authorized and no guard hold applies. Native shell is
|
|
10
|
+
**direct-only**: never call `tools.shell` inside execute. Repository editing,
|
|
11
|
+
tests and Git run in separate direct shell turns.
|
|
12
|
+
|
|
13
|
+
## Read, choose, then act
|
|
14
|
+
|
|
15
|
+
Start with bounded discovery and inspect scope and `complete`. `true` refers to
|
|
16
|
+
that query, `false` means truncated or partial, and `null` means completeness is
|
|
17
|
+
unknown. Ready, list, search and blocked have different supported filters;
|
|
18
|
+
unsupported combinations are rejected. Blocked and edge reads can return unknown
|
|
19
|
+
completeness. Unknown or failed edges never prove that work is unblocked.
|
|
20
|
+
|
|
21
|
+
Get chosen IDs together (at most 25); the adapter performs sequential single-ID
|
|
22
|
+
reads. Inspect per-ID failures and `complete`; an all-failed get is failed, not
|
|
23
|
+
missing. There is no snapshot-consistency or transaction promise. For independent
|
|
24
|
+
reads, use small bounded fan-out (for example at most eight candidates with
|
|
25
|
+
`Promise.allSettled`), retain rejected/failed outcomes as unknowns, and return a
|
|
26
|
+
projection of relevant fields. Return memory keys first, then recall selected
|
|
27
|
+
keys. A found empty memory differs from a missing key; memories retains a
|
|
28
|
+
key-to-value map, including a successful empty map.
|
|
29
|
+
|
|
30
|
+
Selecting a candidate does not authorize claiming it. Read scope, prior attempts,
|
|
31
|
+
acceptance and dependencies before acting. Await an authorized claim and stop
|
|
32
|
+
dependent work unless it acknowledges the actual executor as assignee in
|
|
33
|
+
`in_progress`. A claim never hides a second readback prompt; use get explicitly
|
|
34
|
+
when needed. `not-claimed` requires evidenced non-claim, and `uncertain` requires
|
|
35
|
+
current-state inspection before considering another write.
|
|
36
|
+
|
|
37
|
+
## Ordered writes and honest outcomes
|
|
38
|
+
|
|
39
|
+
Await dependent writes in order; inspect each result before the next call. Do not
|
|
40
|
+
parallelize claim, note, update, close or dependent creates. Each invocation has
|
|
41
|
+
its own canonical permission resources and `save: []`: an "always" response may
|
|
42
|
+
apply to that call only, so ask may prompt again. Saved shell grants remain
|
|
43
|
+
subject to denies. Orchestrator authority does not bypass host permission prompts.
|
|
44
|
+
Do not catch a rejected operation and continue its dependent writes. Plain
|
|
45
|
+
permission decline on OpenCode 2.1.1 may still permit later independently
|
|
46
|
+
permissioned work or model steps; it does not promise whole-program termination.
|
|
47
|
+
Explicit Stop/Cancel is distinct and its installed qualification remains separate.
|
|
48
|
+
|
|
49
|
+
Use note for append checkpoints. Selected-field update excludes ownership changes
|
|
50
|
+
and closure. Close needs caller-authorized acceptance evidence; it is never an
|
|
51
|
+
automatic workflow step. Create generates an ID and does not automatically assign
|
|
52
|
+
an executor. An uncertain create retains its identifying query/title: search and
|
|
53
|
+
read back before considering a manual retry, to avoid duplicates.
|
|
54
|
+
|
|
55
|
+
Every typed write returns the host-derived actor. Use that same rendered actor
|
|
56
|
+
for direct shell writes, claims and heartbeats with command-scoped `--actor` or
|
|
57
|
+
`BEADS_ACTOR`, and `--sandbox` to suppress automatic Dolt push. No global actor
|
|
58
|
+
configuration, model-controlled actor argument or human Git fallback. A child
|
|
59
|
+
uses its own actual session/agent actor and claims only authorized work; parent
|
|
60
|
+
review does not transfer assignment. Audit author (`created_by`), account owner
|
|
61
|
+
(`owner`) and executor (`assignee`) are separate observations; missing fields
|
|
62
|
+
remain unknown. Attribution is not permission or authentication.
|
|
63
|
+
|
|
64
|
+
Only authoritative CLI evidence acknowledges a write. Started interrupted,
|
|
65
|
+
timed-out or malformed writes may have landed: retain target, actor and original
|
|
66
|
+
diagnostic, then inspect durable state under fresh authorization. Do not blindly
|
|
67
|
+
retry, force, commit or synchronize. A landed but uncommitted memory retains
|
|
68
|
+
`commit_error`/`commit_indeterminate`; it is not committed durability. Fulfilled
|
|
69
|
+
Promises, outer execute completion and compaction summaries do not establish
|
|
70
|
+
successful persistence. Write inputs remain in host trace metadata.
|
|
71
|
+
|
|
72
|
+
Full prime remains the canonical workflow reference. Meaningful checkpoints
|
|
73
|
+
carry attempts, measured outcomes, rationale, blockers and next action. Important
|
|
74
|
+
recovery, external changes and child returns require fresh relevant state;
|
|
75
|
+
acknowledged writes do not require a generic redundant read of their own result.
|
|
76
|
+
Preserve distinct repository/user authority, guard holds and exact scope. Missing
|
|
77
|
+
capability or failed context is reported honestly, without manual-prime bypass,
|
|
78
|
+
implicit sync, automatic retries or a replacement workflow manager.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Dependency types and direction
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `DEPENDENCIES.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/DEPENDENCIES.md).
|
|
4
|
+
|
|
5
|
+
Beads dependencies describe relationships between issues. Confirm direction
|
|
6
|
+
before writing: in the current `bd create` help, a bare ID, `'depends-on:<id>'`, or
|
|
7
|
+
`'blocked-by:<id>'` makes the new issue depend on that ID; `'blocks:<id>'` reverses
|
|
8
|
+
that direction. For existing issues, the installed `bd dep add --help` confirms
|
|
9
|
+
the dependent comes first and the prerequisite second (default type: `blocks`).
|
|
10
|
+
|
|
11
|
+
## Choose a relationship by meaning
|
|
12
|
+
|
|
13
|
+
| Question | Relationship | Effect to preserve |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| Can B start before A is complete? | `blocks` (A blocks B) | Hard ordering constraint; the dependent waits. |
|
|
16
|
+
| Is B part of A's planned work? | `parent-child` (A parent, B child) | Decomposition and ownership; not an ordering edge. |
|
|
17
|
+
| Did work on A uncover B? | `discovered-from` (B from A) | Discovery provenance; not permission to start B. |
|
|
18
|
+
| Are A and B connected but independently actionable? | `related` | Informational association, not a blocker. |
|
|
19
|
+
|
|
20
|
+
For a new dependent issue, current `bd create --help` says that
|
|
21
|
+
`--deps='depends-on:<prerequisite-id>'` means **this new issue depends on that
|
|
22
|
+
prerequisite**. For example, an API task can depend on a schema task like this:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
bd create "Implement API" --type=task \
|
|
26
|
+
--parent='<epic-id>' \
|
|
27
|
+
--deps='depends-on:<schema-task-id>' \
|
|
28
|
+
--actor='<executor-actor>' --sandbox --json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The command above makes the API task a child of an epic while also adding a
|
|
32
|
+
separate hard blocker on schema setup. Read back both edges: hierarchy answers
|
|
33
|
+
“what work belongs here?”; a blocker answers “what must finish first?”. Add a
|
|
34
|
+
hard block only when a real prerequisite exists.
|
|
35
|
+
|
|
36
|
+
### Add and check existing-issue edges
|
|
37
|
+
|
|
38
|
+
X needs Y means X depends on Y: dependent first, prerequisite second.
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
bd dep add '<dependent-id>' '<prerequisite-id>' --actor='<executor-actor>' --sandbox --json
|
|
42
|
+
bd blocked --json
|
|
43
|
+
bd dep list '<dependent-id>' --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Phase trap: “Phase 1 before Phase 2” means Phase 2 needs Phase 1.
|
|
47
|
+
Wrong: `bd dep add '<phase-1-id>' '<phase-2-id>' --actor='<executor-actor>' --sandbox --json` would block Phase 1.
|
|
48
|
+
Right: `bd dep add '<phase-2-id>' '<phase-1-id>' --actor='<executor-actor>' --sandbox --json` blocks Phase 2 on Phase 1.
|
|
49
|
+
Readback: `bd blocked` should show the dependent waiting while its prerequisite
|
|
50
|
+
is open; `bd dep list` defaults to dependencies (down), so it should list that
|
|
51
|
+
prerequisite, never the dependent's later work. These reads do not authorize work.
|
|
52
|
+
|
|
53
|
+
### Diamond and parallel merge
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
setup
|
|
57
|
+
/ \
|
|
58
|
+
API work UI work
|
|
59
|
+
\ /
|
|
60
|
+
integration tests
|
|
61
|
+
|
|
62
|
+
setup blocks API work and UI work; each implementation blocks the merge tests.
|
|
63
|
+
The two implementations can proceed in parallel after setup.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`related` is useful for an optional improvement that should remain independently
|
|
67
|
+
ready. A discovery cascade is different: B may be discovered from A, and C from
|
|
68
|
+
B, preserving how the questions emerged. `discovered-from` does not make that
|
|
69
|
+
cascade required work, grant authority, or create a hard blocker.
|
|
70
|
+
|
|
71
|
+
Use the narrowest accurate relation. Do not use a hard blocker for a preference,
|
|
72
|
+
shared topic, or unverified assumption. Avoid cycles and redundant edges. Before
|
|
73
|
+
adding or changing an edge, inspect both issues and verify which one depends on
|
|
74
|
+
which. Afterward, read the graph back when the relationship affects readiness.
|
|
75
|
+
|
|
76
|
+
Dependency direction is especially easy to reverse when creating a child or
|
|
77
|
+
recording discovery. The current CLI help is authoritative for syntax; this page
|
|
78
|
+
preserves relationship meaning, not every command form. Agent-authored graph
|
|
79
|
+
writes require an explicit executor actor. A ready result is only a scheduling
|
|
80
|
+
view: it does not override assignment, task scope, or authorization. The
|
|
81
|
+
installed CLI describes hard blockers as affecting readiness; inspect the graph
|
|
82
|
+
after a meaningful edit rather than inferring it from the prose alone.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Integrating Beads with project workflow
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `INTEGRATION_PATTERNS.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/INTEGRATION_PATTERNS.md).
|
|
4
|
+
|
|
5
|
+
Use Beads to preserve execution state, not to replace every other source of
|
|
6
|
+
intent or evidence. A useful division is:
|
|
7
|
+
|
|
8
|
+
| Need | Source of truth |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| Intended behavior, requirements, and acceptance contract | Project's specification system (for example OpenSpec, when used) |
|
|
11
|
+
| Detailed rationale, measurements, source references, and qualification evidence | Project documentation |
|
|
12
|
+
| Execution ownership, dependencies, blockers, progress notes, and status | Beads |
|
|
13
|
+
| Short checklist for today's already-authorized steps | Current session or optional host-owned todo, if available |
|
|
14
|
+
|
|
15
|
+
Link those records when the relationship helps a future reader. Do not duplicate
|
|
16
|
+
an entire design or test log in Beads; append a concise checkpoint with the
|
|
17
|
+
result, why it matters, and where the detailed evidence lives.
|
|
18
|
+
|
|
19
|
+
## Worked linkage: plan, review, then execute
|
|
20
|
+
|
|
21
|
+
This is a project-policy example, not a universal Beads requirement. Use the
|
|
22
|
+
project's chosen planning and review rules; the pattern below is optional where
|
|
23
|
+
no such policy exists.
|
|
24
|
+
|
|
25
|
+
For example, an OpenSpec change, in a project that uses it, can own the behavior
|
|
26
|
+
and acceptance criteria for a new export option. Put detailed trade-offs and test
|
|
27
|
+
evidence in a linked project document. A quick planning draft needs no separate Bead. For substantial
|
|
28
|
+
multi-session or delegated planning, create one bounded planning Bead, distinct
|
|
29
|
+
from the implementation epic, and reference the OpenSpec change and evidence
|
|
30
|
+
document there.
|
|
31
|
+
|
|
32
|
+
When review is independently owned and substantive, use one bounded review
|
|
33
|
+
Bead linked to the planning work and the exact candidate revision. Record the
|
|
34
|
+
reviewer's actual actor/session, verdict, findings, and evidence. Reuse that
|
|
35
|
+
same review Bead for correction and recheck cycles; do not create a ticket per
|
|
36
|
+
document, retry, or transient nit. Implementation issues track the authorized
|
|
37
|
+
execution work. The chosen specification system and docs remain the spec/evidence
|
|
38
|
+
sources, not duplicate task trackers; planning or review completion does not
|
|
39
|
+
authorize implementation or prove parent acceptance. A ready Bead is not dispatch authority.
|
|
40
|
+
|
|
41
|
+
## Milestones and recovery
|
|
42
|
+
|
|
43
|
+
Read existing issue notes and relevant project memory before choosing a next
|
|
44
|
+
step. At a material milestone, append attempted work, result, rationale, changed
|
|
45
|
+
decision, blocker, and next action. Use the explicit executor actor. If the
|
|
46
|
+
operation does not materially change the work context, no redundant write is
|
|
47
|
+
needed.
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
bd update '<execution-id>' \
|
|
51
|
+
--append-notes="Tried X; observed Y in tests/export.test.ts; chose Z because …; blocker …; next …" \
|
|
52
|
+
--actor='<executor-actor>' --sandbox --json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For delegation, send the worker the exact authorized scope and its actual actor.
|
|
56
|
+
Ask for the attempt, outcome, evidence, rationale, blocker, next step, and any
|
|
57
|
+
durable record references. The parent reconciles the return against the original
|
|
58
|
+
intent and acceptance before continuing or closing. Delegation is discretionary;
|
|
59
|
+
do not route work based on a command count.
|
|
60
|
+
|
|
61
|
+
OpenCode 2.1 experimental todo support remains opt-in and host-owned. Use it only
|
|
62
|
+
when that host feature is actually available and the user/project chooses it;
|
|
63
|
+
do not enable it or present it as a universal `TodoWrite` tool. It can hold a
|
|
64
|
+
temporary execution checklist, not replace the project's specification system,
|
|
65
|
+
project evidence, or Beads.
|
|
66
|
+
|
|
67
|
+
## Keep durable and transient information distinct
|
|
68
|
+
|
|
69
|
+
Task-specific findings stay with the task. Reusable memory is reserved for
|
|
70
|
+
validated knowledge likely to apply elsewhere. Transient shell output and
|
|
71
|
+
temporary execution checklists stay local unless they change a decision or must
|
|
72
|
+
survive resumption. Existing user and repository instructions remain in force;
|
|
73
|
+
an integration does not grant new authority to create issues, mutate other
|
|
74
|
+
records, or broaden a task.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Creating useful issues
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `ISSUE_CREATION.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/ISSUE_CREATION.md).
|
|
4
|
+
|
|
5
|
+
Create a durable issue when work needs its own assignment, dependencies,
|
|
6
|
+
multi-session history, or acceptance record, and only when the existing authority
|
|
7
|
+
allows creation. Do not create one for every retry, note, or discovered idea.
|
|
8
|
+
Discovery may be reported without being worked; a `discovered-from` edge does
|
|
9
|
+
not authorize the new issue.
|
|
10
|
+
|
|
11
|
+
## Write for the next executor
|
|
12
|
+
|
|
13
|
+
- **Title:** a specific outcome or problem.
|
|
14
|
+
- **Description:** why the work exists, relevant context, and boundaries.
|
|
15
|
+
- **Design:** the intended approach and important constraints.
|
|
16
|
+
- **Acceptance:** observable conditions that define completion.
|
|
17
|
+
- **Notes:** current progress and later checkpoints, appended as work proceeds.
|
|
18
|
+
|
|
19
|
+
Do not treat a proposed approach as an acceptance test. Avoid secrets, copied
|
|
20
|
+
logs, vague “investigate” titles without a question, and unsupported promises.
|
|
21
|
+
Leave new work unassigned unless an assignment is intentional. If a human owns
|
|
22
|
+
the work, assign that person deliberately; an agent actor is not proof of
|
|
23
|
+
permission.
|
|
24
|
+
|
|
25
|
+
Keep design and acceptance distinct: design records a candidate approach and
|
|
26
|
+
trade-offs that may change; acceptance states a testable outcome that remains
|
|
27
|
+
true if the implementation changes. For example, “reuse the current parser if
|
|
28
|
+
it handles quoted fields” is design; “quoted commas and quotes round-trip in the
|
|
29
|
+
export” is acceptance. Put the former in `--design` and the latter in
|
|
30
|
+
`--acceptance`.
|
|
31
|
+
|
|
32
|
+
Current syntax comes from `bd create --help`. A write must use the actual
|
|
33
|
+
executor actor, for example:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
bd create "Clarify retry behavior" --type=task --priority=2 \
|
|
37
|
+
--description="Record the user-visible issue and affected path." \
|
|
38
|
+
--design="Trace the current behavior and document the supported correction." \
|
|
39
|
+
--acceptance="The behavior and validation evidence are recorded." \
|
|
40
|
+
--actor='<executor-actor>' --sandbox --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Before creating linked work, inspect the parent and verify dependency direction.
|
|
44
|
+
Keep planning and implementation ownership distinct when the project assigns
|
|
45
|
+
them to different people.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Molecules, formulas, and wisps
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `MOLECULES.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/MOLECULES.md).
|
|
4
|
+
|
|
5
|
+
The current CLI describes formulas as workflow sources, protos as reusable
|
|
6
|
+
templates, molecules as instantiated work, and wisps as ephemeral workflows.
|
|
7
|
+
Use these only when their lifecycle solves a real project need; a normal issue
|
|
8
|
+
graph is clearer for one-off work.
|
|
9
|
+
|
|
10
|
+
## Decide before instantiating
|
|
11
|
+
|
|
12
|
+
| Question | Choose |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| Is this one-off work with a clear owner and no template need? | A normal issue graph. |
|
|
15
|
+
| Must each step and its audit history remain durable? | Persistent molecule with durable audit history from an inspected formula/proto. |
|
|
16
|
+
| Is the work short-lived and low-audit, with an agreed way to preserve findings? | Wisp, only with explicit lifecycle authority. |
|
|
17
|
+
| Is the workflow repeatable and already validated? | Consider distilling a formula after preserving its evidence and lessons. |
|
|
18
|
+
|
|
19
|
+
Inspect the formula's gates, dependencies, variables, and children before
|
|
20
|
+
creating work. Confirm that every step fits the authorized scope. Keep generated
|
|
21
|
+
children aligned with the intended parent acceptance; closed children do not
|
|
22
|
+
prove the parent outcome.
|
|
23
|
+
|
|
24
|
+
## Example: approved review wisp
|
|
25
|
+
|
|
26
|
+
When a bounded review is authorized as temporary and an existing review proto
|
|
27
|
+
fits the scope, create the wisp, inspect its instantiated steps, and retain only
|
|
28
|
+
validated findings:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
bd mol wisp create '<review-proto-id>' --var 'candidate=<revision>' \
|
|
32
|
+
--actor='<executor-actor>' --sandbox --json
|
|
33
|
+
bd mol show '<wisp-id>'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If the review produced reusable evidence or actionable findings, summarize and
|
|
37
|
+
promote the result to a durable digest:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
bd mol squash '<wisp-id>' \
|
|
41
|
+
--summary="Candidate <revision>: verified findings and evidence references" \
|
|
42
|
+
--actor='<executor-actor>' --sandbox --json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If the wisp contains only noise with no future value, burn it only when that
|
|
46
|
+
deletion is explicitly authorized; this leaves no digest:
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
bd mol burn '<wisp-id>' --actor='<executor-actor>' --sandbox --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
These verbs and phase effects are confirmed by installed subcommand help. A
|
|
53
|
+
wisp is ephemeral and not synced via Git; do not use it as the only home for
|
|
54
|
+
required acceptance evidence. A digest is a summary, not proof that findings
|
|
55
|
+
were independently validated or that a parent issue is accepted.
|
|
56
|
+
|
|
57
|
+
Distilling a formula is useful only after a workflow has proved repeatable.
|
|
58
|
+
Retain validation and lessons in the reusable template, not accidental details
|
|
59
|
+
from one run. Bonding workflows can create large graphs; inspect the result and
|
|
60
|
+
ownership before proceeding. Do not pour, bond, squash, burn, or distill as
|
|
61
|
+
automatic setup or background orchestration.
|
|
62
|
+
|
|
63
|
+
Use `bd formula --help` and `bd mol --help`, then each relevant subcommand's
|
|
64
|
+
help, for current syntax. These are state changes; keep the actual executor
|
|
65
|
+
actor explicit.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Common execution patterns
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `PATTERNS.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/PATTERNS.md).
|
|
4
|
+
|
|
5
|
+
## Start with the actual request
|
|
6
|
+
|
|
7
|
+
Read the assigned issue, parent decisions, relevant dependencies, and current
|
|
8
|
+
notes. Distinguish the requested result from a suggested implementation. A
|
|
9
|
+
ready issue or an open side quest does not itself authorize work.
|
|
10
|
+
|
|
11
|
+
## Record a side discovery without expanding scope
|
|
12
|
+
|
|
13
|
+
When a new concern appears, preserve enough evidence to explain it. If recording
|
|
14
|
+
it is authorized, create a concise issue and link its provenance. Continue only
|
|
15
|
+
if the current authorization explicitly includes it. Otherwise finish the
|
|
16
|
+
assigned work, report the discovery, and stop.
|
|
17
|
+
|
|
18
|
+
## Resume a multi-session task
|
|
19
|
+
|
|
20
|
+
Read the latest appended checkpoint and relevant reusable memory. Reconfirm the
|
|
21
|
+
state from the issue or current evidence instead of assuming the prior next step
|
|
22
|
+
still applies. Preserve rejected approaches so the next executor does not repeat
|
|
23
|
+
them.
|
|
24
|
+
|
|
25
|
+
For research or debugging, keep the hypothesis, the attempt, and the evidence
|
|
26
|
+
that changed the conclusion together. A rejected hypothesis is useful when its
|
|
27
|
+
failure is explained; an unexplained “tried X” is not. If the changed conclusion
|
|
28
|
+
creates separate durable work, record its source only when authorized. Discovery
|
|
29
|
+
does not by itself make that work a blocker or assign it to the current executor.
|
|
30
|
+
|
|
31
|
+
## Change status and close carefully
|
|
32
|
+
|
|
33
|
+
Use the installed CLI's valid transitions. Claim only the item you are
|
|
34
|
+
authorized to execute; keep the actual executor actor on claim, updates, and
|
|
35
|
+
heartbeats. Before closure, compare the deliverable with acceptance criteria and
|
|
36
|
+
record validation results. If a blocker or failed check remains, report it and
|
|
37
|
+
leave the state accurate. If someone else owns acceptance, return the evidence
|
|
38
|
+
instead of closing on their behalf.
|
|
39
|
+
|
|
40
|
+
There is no mandatory one-issue-per-session cadence. Keep each Bead's evidence
|
|
41
|
+
clear, while following an explicitly authorized multi-item batch where one was
|
|
42
|
+
granted. Use `bd '<command>' --help` for current syntax; do not use old MCP-only
|
|
43
|
+
examples or replace notes during ordinary checkpoints.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Resumability and recovery
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `RESUMABILITY.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/RESUMABILITY.md).
|
|
4
|
+
|
|
5
|
+
A future executor needs the state of the work, not a transcript. At meaningful
|
|
6
|
+
transitions preserve:
|
|
7
|
+
|
|
8
|
+
1. what was attempted and why;
|
|
9
|
+
2. the observed result and evidence location;
|
|
10
|
+
3. the decision or hypothesis that changed;
|
|
11
|
+
4. what remains blocked or uncertain; and
|
|
12
|
+
5. one concrete next action within the assigned scope.
|
|
13
|
+
|
|
14
|
+
Append this checkpoint to the issue so earlier attempts remain visible. Do not
|
|
15
|
+
copy full logs, secrets, or unverified conclusions. An abrupt process stop can
|
|
16
|
+
prevent a final write, so checkpoint after important results instead of relying
|
|
17
|
+
on end-of-session cleanup.
|
|
18
|
+
|
|
19
|
+
## Example: make a thin checkpoint resumable
|
|
20
|
+
|
|
21
|
+
### Before checkpoint
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
Tried the export change; the test still fails.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### After checkpoint
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
Attempted: split export rows on commas.
|
|
31
|
+
Observed evidence: tests/export.test.ts, case quoted-comma still fails;
|
|
32
|
+
fixture: tests/fixtures/quoted-comma.csv.
|
|
33
|
+
Rationale: commas inside quoted fields are data, so splitting cannot work.
|
|
34
|
+
Blocker: confirm whether the existing parser exposes a streaming API.
|
|
35
|
+
Next: inspect the parser contract, then add a regression test before changing it.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The second checkpoint carries the approach, observed evidence and its location,
|
|
39
|
+
the decision it supports, the remaining uncertainty, and one next action. Use a
|
|
40
|
+
small handoff shape when the example is too detailed:
|
|
41
|
+
|
|
42
|
+
### Minimal handoff template
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
Task and scope:
|
|
46
|
+
Attempt and result (evidence/reference):
|
|
47
|
+
Decision and rationale:
|
|
48
|
+
Blocker or uncertainty:
|
|
49
|
+
Next authorized step:
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Add a tested minimal command or code snippet only when the next executor needs
|
|
53
|
+
it to reproduce a hard-to-infer result or response shape. Mark what was actually
|
|
54
|
+
run and where. Otherwise link to the relevant test or document and summarize the
|
|
55
|
+
result. Do not paste raw logs, giant JSON dumps, credentials, or speculative
|
|
56
|
+
snippets; acceptance describes the observable outcome, while notes retain
|
|
57
|
+
implementation discoveries and rationale.
|
|
58
|
+
|
|
59
|
+
## Resume safely
|
|
60
|
+
|
|
61
|
+
For a cold start or after compaction, recover the assigned work rather than
|
|
62
|
+
selecting fresh work from `bd ready`:
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
bd list --status=in_progress --assignee='<executor-actor>' --json
|
|
66
|
+
bd show '<issue-id>' --long --json
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Use your actual assignment actor for the assignee filter. If the assignment
|
|
70
|
+
already gives an exact issue ID, show that issue directly; an empty list is not
|
|
71
|
+
permission to claim another task. Read the latest appended checkpoint and earlier
|
|
72
|
+
notes for attempts, evidence, decisions, blockers, and the next authorized step.
|
|
73
|
+
Retrieve only relevant reusable memory, then verify current assignment, status,
|
|
74
|
+
dependencies, and time-sensitive evidence before acting. The issue notes explain
|
|
75
|
+
work on this item; memory carries validated learning beyond it. Neither should
|
|
76
|
+
override current user or repository instructions.
|
|
77
|
+
|
|
78
|
+
Treat missing context, failed retrieval, and deliberately withheld context as
|
|
79
|
+
different outcomes. A permission or migration hold is not an invitation to run a
|
|
80
|
+
manual fallback. If a write timed out, read the issue before retrying; the first
|
|
81
|
+
write may have landed. Preserve uncertainty explicitly until it is resolved.
|
|
82
|
+
|
|
83
|
+
Use the current CLI syntax from `bd prime` and command help when authorized.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Static reference data
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `STATIC_DATA.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/STATIC_DATA.md).
|
|
4
|
+
|
|
5
|
+
Beads is primarily for work with ownership, status, dependencies, and a useful
|
|
6
|
+
lifecycle. Avoid turning every glossary term, configuration value, or mostly
|
|
7
|
+
static reference entry into an open work issue. Use documentation or an existing
|
|
8
|
+
project knowledge system when it provides clearer name-based browsing.
|
|
9
|
+
|
|
10
|
+
Validated reusable conventions can belong in Beads memory when they are likely
|
|
11
|
+
to help future work and do not already exist. Search first, record scope and
|
|
12
|
+
evidence, and correct stale knowledge deliberately. Do not use memory as a dump
|
|
13
|
+
of all project facts or as a substitute for authoritative specifications.
|
|
14
|
+
|
|
15
|
+
If a team has a real need for structured reference entities with relationships
|
|
16
|
+
and ownership, design that use separately. Keep it separated from active work
|
|
17
|
+
where possible and verify the installed CLI's search and query capabilities
|
|
18
|
+
before choosing it. This advanced pattern does not authorize a new database,
|
|
19
|
+
initialization, or schema change.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Troubleshooting and stop conditions
|
|
2
|
+
|
|
3
|
+
> Curated replacement for [Beads marketplace-main `TROUBLESHOOTING.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/TROUBLESHOOTING.md). Legacy repair examples are not carried forward where they imply setup, server changes, or automatic repair.
|
|
4
|
+
|
|
5
|
+
## Context is absent, failed, or withheld
|
|
6
|
+
|
|
7
|
+
First identify which state actually occurred. If no context was provided, retrieve
|
|
8
|
+
current CLI context only when permitted and no hold is active. If retrieval
|
|
9
|
+
failed, report the error and preserve the task's last known state. If a migration
|
|
10
|
+
or permission guard withheld context, stop; do not run `bd prime`, a different
|
|
11
|
+
CLI surface, or another agent as a bypass.
|
|
12
|
+
|
|
13
|
+
## A command or flag is unknown
|
|
14
|
+
|
|
15
|
+
Use `bd --help` and `bd '<command>' --help` to inspect the installed CLI. Do not
|
|
16
|
+
guess a flag from an old example, invoke a similarly named command, or assume an
|
|
17
|
+
MCP interface. If a workflow depends on an unavailable command, explain the
|
|
18
|
+
limitation and use a documented replacement only when it preserves the needed
|
|
19
|
+
semantics. The specialized `bd agent` and `bd slot` commands are absent from the
|
|
20
|
+
inspected CLI; see [AGENTS.md](AGENTS.md).
|
|
21
|
+
|
|
22
|
+
## Store, migration, or routing problem
|
|
23
|
+
|
|
24
|
+
If the CLI reports no store, an outdated schema, an unexpected location, or a
|
|
25
|
+
redirect, do not initialize, migrate, reroute, repair, or synchronize it
|
|
26
|
+
automatically. Preserve the diagnostic and ask the authorized owner to choose a
|
|
27
|
+
supported recovery. The plugin's context guard is not permission to bypass the
|
|
28
|
+
same restriction through a shell command.
|
|
29
|
+
|
|
30
|
+
## Permission denial or external access prompt
|
|
31
|
+
|
|
32
|
+
Respect the decision. Do not switch to another tool, path, or identity to obtain
|
|
33
|
+
the same denied result. If a referenced guidance file is unreachable, state that
|
|
34
|
+
and continue only if the remaining task can be done safely and accurately.
|
|
35
|
+
|
|
36
|
+
## Empty result, failed read, or uncertain write
|
|
37
|
+
|
|
38
|
+
An empty successful query differs from an error. Report the actual result, not
|
|
39
|
+
the exit code alone. After a timeout or interrupted write, inspect the issue or
|
|
40
|
+
memory before retrying; the write may have landed. Do not blindly repeat a
|
|
41
|
+
create, claim, remember, or close operation.
|
|
42
|
+
|
|
43
|
+
## Lost claim or blocked task
|
|
44
|
+
|
|
45
|
+
Read the current assignee, status, and lease before continuing. If another actor
|
|
46
|
+
owns it or the claim was reclaimed, stop writes and coordinate a deliberate
|
|
47
|
+
handoff. Never force-reassign yourself or fall back to the human Git identity.
|
|
48
|
+
Record unresolved acceptance, missing evidence, and the next authorized action
|
|
49
|
+
in the handoff.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Workflows and checkpoints
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `WORKFLOWS.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/WORKFLOWS.md). The append policy below resolves conflicting upstream examples: checkpoints append; replacing notes is deliberate.
|
|
4
|
+
|
|
5
|
+
## Begin with the current context
|
|
6
|
+
|
|
7
|
+
Use current Beads context if it was supplied. Read the target issue, dependencies,
|
|
8
|
+
existing notes, and relevant memory before choosing an action. Confirm the exact
|
|
9
|
+
assignment and authority. Do not treat `ready` output as an assignment or
|
|
10
|
+
permission to work every listed item.
|
|
11
|
+
|
|
12
|
+
For an authorized task, claim it atomically with the actual executor actor. Keep
|
|
13
|
+
that actor on all subsequent writes and heartbeats. Direct execution is fine for
|
|
14
|
+
small tasks; use delegation where it improves the work, carrying a bounded scope
|
|
15
|
+
and the real delegate actor. Do not impose a one-item-per-invocation loop or
|
|
16
|
+
delegate by command count.
|
|
17
|
+
|
|
18
|
+
## Checkpoint at useful transitions
|
|
19
|
+
|
|
20
|
+
Append when a failed approach changes the next step, a finding is validated, a
|
|
21
|
+
decision changes, work becomes blocked, a child returns, or a session may stop.
|
|
22
|
+
Include the attempt, result, why it matters, evidence, blocker, and next action.
|
|
23
|
+
Use `--append-notes`, for example:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
bd update '<id>' --append-notes="Validated …; evidence …; next …" --actor='<executor-actor>' --sandbox --json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This is an append. Do not use the replacing `--notes` field as the default
|
|
30
|
+
checkpoint. If nothing material changed, do not write a redundant note just to
|
|
31
|
+
meet a quota. Avoid credentials, raw logs, and claims unsupported by evidence.
|
|
32
|
+
|
|
33
|
+
## Capture reusable knowledge selectively
|
|
34
|
+
|
|
35
|
+
Task details and short-lived failures belong with the issue. Search existing
|
|
36
|
+
memory before recording a validated lesson that will likely help elsewhere.
|
|
37
|
+
Include its scope and evidence, use the actual executor actor for memory writes,
|
|
38
|
+
and amend stale knowledge intentionally. Do not save every task outcome as
|
|
39
|
+
global memory.
|
|
40
|
+
|
|
41
|
+
## Validate and hand off
|
|
42
|
+
|
|
43
|
+
Check the issue's acceptance conditions, run authorized relevant validation,
|
|
44
|
+
and record exact results. If a parent or human owns acceptance, return the
|
|
45
|
+
evidence without closing for them. A delegate returns attempts, results,
|
|
46
|
+
rationale, validation, blockers, next action, and useful record references; the
|
|
47
|
+
parent reconciles before continuing. If the task was an exact assignment, stop
|
|
48
|
+
there. Explicitly authorized batches may continue within their stated scope;
|
|
49
|
+
new discoveries never expand it.
|
|
50
|
+
|
|
51
|
+
When context is held or a required guarantee is missing, stop the affected path
|
|
52
|
+
and state the limitation. Do not switch to a manual prime, unregistered tool,
|
|
53
|
+
automatic setup, sync, or permission change to complete it.
|
|
54
|
+
|
|
55
|
+
## Planning and independently owned review
|
|
56
|
+
|
|
57
|
+
Follow project-owned planning and review policy. Track substantive multi-session
|
|
58
|
+
or delegated planning in one bounded planning item, separate from implementation;
|
|
59
|
+
a quick draft need not get its own ticket. Give substantive independently owned
|
|
60
|
+
review one bounded review item linked to planning and the exact candidate. Reuse
|
|
61
|
+
the same review item through corrections and rechecks. Record actual reviewer
|
|
62
|
+
actor/session, verdict, findings and evidence without retroactive claims.
|
|
63
|
+
Planning/review closure needs its own evidence and owner acceptance; readiness
|
|
64
|
+
alone never authorizes dispatch, implementation, release or deployment.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Worktree routing
|
|
2
|
+
|
|
3
|
+
> Adapted from [Beads marketplace-main `WORKTREES.md`](https://github.com/gastownhall/beads/blob/4a67d0d0288c1b4ee23e17fc896f47616931ba2d/plugins/beads/skills/beads/resources/WORKTREES.md).
|
|
4
|
+
|
|
5
|
+
A worktree can isolate code changes while retaining a repository's shared Beads
|
|
6
|
+
database. The installed CLI documents common-directory discovery for its
|
|
7
|
+
worktree command. Do not assume that every unrelated checkout, redirected
|
|
8
|
+
workspace, or custom route shares the same store.
|
|
9
|
+
|
|
10
|
+
Use a worktree only when isolation helps and its creation is authorized. Before
|
|
11
|
+
changing issues, confirm which repository and Beads location the CLI resolved.
|
|
12
|
+
Keep the assignment and explicit executor actor the same across the worktree;
|
|
13
|
+
Git identity is not a Beads actor. Do not initialize a separate store, change
|
|
14
|
+
routes, or copy database state to make a task appear ready.
|
|
15
|
+
|
|
16
|
+
Use `bd worktree --help` and relevant subcommand help for current commands and
|
|
17
|
+
safety checks. Inspect local changes before removal, preserve work that is not
|
|
18
|
+
yours, and remove only a worktree whose cleanup is authorized. This resource
|
|
19
|
+
does not create or clean up a worktree automatically.
|