clikit-plugin 0.3.10 → 0.3.12

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 (51) hide show
  1. package/AGENTS.md +62 -41
  2. package/README.md +118 -57
  3. package/command/create.md +107 -20
  4. package/command/discuss.md +123 -0
  5. package/command/handoff.md +7 -5
  6. package/command/init.md +4 -3
  7. package/command/pr.md +2 -4
  8. package/command/research.md +130 -28
  9. package/command/resume.md +2 -2
  10. package/command/ship.md +1 -1
  11. package/command/start.md +12 -11
  12. package/command/status.md +20 -15
  13. package/dist/.tsbuildinfo +1 -1
  14. package/dist/clikit.schema.json +0 -8
  15. package/dist/config.d.ts +0 -5
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/hooks/index.d.ts +0 -2
  18. package/dist/hooks/index.d.ts.map +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +0 -77
  21. package/memory/_templates/discussion.md +99 -0
  22. package/memory/_templates/handoff.md +2 -2
  23. package/memory/_templates/plan.md +83 -176
  24. package/memory/_templates/research.md +33 -7
  25. package/memory/_templates/review.md +2 -2
  26. package/package.json +7 -6
  27. package/skill/beads/SKILL.md +29 -29
  28. package/skill/beads/mcp.json +1 -1
  29. package/skill/beads/references/api-reference.md +8 -3
  30. package/skill/requesting-code-review/SKILL.md +2 -2
  31. package/skill/ritual-workflow/SKILL.md +6 -4
  32. package/src/agents/AGENTS.md +21 -17
  33. package/src/agents/build.md +61 -63
  34. package/src/agents/explore.md +14 -14
  35. package/src/agents/plan.md +238 -94
  36. package/src/agents/research.md +41 -11
  37. package/src/agents/review.md +3 -3
  38. package/command/import-plan.md +0 -175
  39. package/command/issue.md +0 -109
  40. package/dist/hooks/tilth-first-guard.d.ts +0 -18
  41. package/dist/hooks/tilth-first-guard.d.ts.map +0 -1
  42. package/memory/_digest.md +0 -6
  43. package/memory/_templates/spec.md +0 -128
  44. package/memory/beads/.gitkeep +0 -0
  45. package/memory/handoffs/.gitkeep +0 -0
  46. package/memory/memory.db +0 -0
  47. package/memory/plans/.gitkeep +0 -0
  48. package/memory/prds/.gitkeep +0 -0
  49. package/memory/research/.gitkeep +0 -0
  50. package/memory/reviews/.gitkeep +0 -0
  51. package/memory/specs/.gitkeep +0 -0
@@ -1,33 +1,42 @@
1
1
  ---
2
2
  name: beads
3
- description: Use for multi-agent task coordination, file locking, and dependency management via beads-village MCP tools.
3
+ description: Use for multi-agent task coordination with `br` and optional legacy beads-village helpers.
4
4
  ---
5
5
 
6
6
  # Beads
7
7
 
8
- **AI agents: always use `beads-village_*` MCP tools — never shell `bd` commands.**
8
+ **Preferred tracker:** `br` (`beads_rust`) with `.beads/` storage.
9
+
10
+ Use `br` CLI first for task state. Use `beads-village_*` only as optional legacy compatibility when reservations, inbox-style messaging, or existing local workflows still depend on it.
9
11
 
10
12
  ## Session Cycle
11
13
 
12
14
  ```
13
- init → ls(ready) → show → claim → reserve(files)workdone
15
+ br init → br ready --json br show <id> --json br update <id> --status in_progress --claim → workbr close <id> --reason "Completed" --json br sync --flush-only
14
16
  ```
15
17
 
16
- ## Core Tools
17
-
18
- | Tool | Purpose |
19
- |------|---------|
20
- | `beads-village_init(team=…)` | **First call every session** |
21
- | `beads-village_ls(status="ready")` | List unblocked tasks |
22
- | `beads-village_show(id)` | Read task details |
23
- | `beads-village_claim()` | Claim next ready task |
24
- | `beads-village_add(title, typ, pri, tags, deps)` | Create issue |
25
- | `beads-village_reserve(paths, reason)` | Lock files before editing |
26
- | `beads-village_done(id, msg)` | Complete + auto-release locks |
27
- | `beads-village_msg(subj, global=true, to="all")` | Broadcast |
28
- | `beads-village_inbox(unread=true)` | Read messages |
29
- | `beads-village_status(include_agents=true)` | Workspace overview |
30
- | `beads-village_sync()` | Git push/pull |
18
+ ## Preferred Commands
19
+
20
+ | Command | Purpose |
21
+ |---------|---------|
22
+ | `br init` | Initialize `.beads/` if missing |
23
+ | `br ready --json` | List unblocked tasks |
24
+ | `br show <id> --json` | Read task details |
25
+ | `br create --title ... --description ... --type ... --priority ...` | Create issue |
26
+ | `br update <id> --status in_progress --claim` | Claim/start work |
27
+ | `br close <id> --reason "Completed" --json` | Complete work |
28
+ | `br sync --flush-only` | Flush `.beads/` state before commit/push |
29
+ | `br sync --import-only` | Re-import `.beads/` state after pull/rebase |
30
+
31
+ ## Optional Legacy MCP Helpers
32
+
33
+ | Tool | Use only when... |
34
+ |------|------------------|
35
+ | `beads-village_reserve(paths, reason)` | You need explicit file reservations in a shared workspace |
36
+ | `beads-village_reservations()` | You need to inspect existing locks |
37
+ | `beads-village_inbox(unread=true)` | Your team still uses village-style messaging |
38
+ | `beads-village_status(include_agents=true)` | You need legacy workspace/agent discovery |
39
+ | `beads-village_msg(...)` | You need a compatibility broadcast path |
31
40
 
32
41
  ## Issue Schema
33
42
 
@@ -35,7 +44,7 @@ init → ls(ready) → show → claim → reserve(files) → work → done
35
44
  typ: task | bug | feature | epic | chore
36
45
  pri: 0=critical 1=high 2=normal 3=low 4=backlog
37
46
  tags: fe | be | devops | qa
38
- deps: ["bv-id"] or ["discovered-from:bv-id"]
47
+ deps: ["br-id"] or ["discovered-from:br-id"]
39
48
  ```
40
49
 
41
50
  ## When to Create Issues
@@ -43,13 +52,4 @@ deps: ["bv-id"] or ["discovered-from:bv-id"]
43
52
  - Trivial (< 2 min, 1-line): skip, just do it
44
53
  - Non-trivial (2+ min, 2+ files): create issue first, then work
45
54
 
46
- ## v1.3 API Correct Names
47
-
48
- | ❌ Old | ✅ Correct |
49
- |--------|-----------|
50
- | `beads-village_ready` | `beads-village_ls(status="ready")` |
51
- | `beads-village_broadcast` | `beads-village_msg(global=true, to="all")` |
52
- | `beads-village_discover` | `beads-village_status(include_agents=true)` |
53
-
54
- See [references/api-reference.md](references/api-reference.md) for full tool params and examples.
55
- - MCP: `beads-village` — see [mcp.json](mcp.json)
55
+ Legacy `beads-village` remains optional compatibility only. Do not make it a hard prerequisite in new workflows.
@@ -3,7 +3,7 @@
3
3
  "beads-village": {
4
4
  "type": "local",
5
5
  "command": ["npx", "-y", "beads-village"],
6
- "description": "Multi-agent task coordination, file locking, issue tracking",
6
+ "description": "Optional legacy Beads Village compatibility for reservations and messaging",
7
7
  "tools": [
8
8
  "beads-village_init",
9
9
  "beads-village_add",
@@ -1,4 +1,7 @@
1
- # Beads API Reference
1
+ # Legacy Beads Village API Reference
2
+
3
+ This reference documents the optional `beads-village_*` MCP helpers only.
4
+ For primary task tracking, use `br` CLI first.
2
5
 
3
6
  ## Full Tool Parameters
4
7
 
@@ -38,7 +41,7 @@ importance: string
38
41
  thread: string
39
42
  ```
40
43
 
41
- ## Example: Build Agent Session
44
+ ## Example: Legacy Compatibility Session
42
45
 
43
46
  ```
44
47
  beads-village_init(team="myproject")
@@ -56,9 +59,11 @@ beads-village_done(id="bv-42", msg="Fixed null check in token validation")
56
59
  beads-village_sync()
57
60
  ```
58
61
 
59
- ## File Locking Protocol
62
+ ## File Locking Protocol (optional legacy)
60
63
 
61
64
  1. `beads-village_reservations()` — check what's locked before editing
62
65
  2. `beads-village_reserve(paths=[…])` — lock your files
63
66
  3. TTL default: 10 min — extend for longer tasks
64
67
  4. `beads-village_done()` — auto-releases all locks, no manual release needed
68
+
69
+ When possible, prefer the `br` workflow documented in `skill/beads/SKILL.md` and use these helpers only when your local runtime still depends on Beads Village.
@@ -15,7 +15,7 @@ Request review after: major features, significant refactors, before merge, when
15
15
  |------|---------|
16
16
  | Diff range | `a1b2c3d..e4f5g6h` |
17
17
  | What changed | "Added JWT auth with refresh tokens" |
18
- | Spec/plan ref | `.opencode/memory/specs/auth.md` |
18
+ | Plan ref | `.opencode/memory/plans/auth.md` |
19
19
  | Known gaps | "Edge case X not handled yet" |
20
20
 
21
21
  ## Dispatch
@@ -23,7 +23,7 @@ Request review after: major features, significant refactors, before merge, when
23
23
  ```
24
24
  @review: review changes from <sha>..<sha>
25
25
  Context: <what was built>
26
- Spec: <path>
26
+ Plan: <path>
27
27
  Known issues: <list or none>
28
28
  ```
29
29
 
@@ -14,7 +14,7 @@ DISCOVER → PLAN → IMPLEMENT → VERIFY → COMPLETE
14
14
  | Phase | Gate (must pass before advancing) |
15
15
  |-------|-----------------------------------|
16
16
  | DISCOVER | Problem statement written, success criteria defined |
17
- | PLAN | User approves spec + plan |
17
+ | PLAN | User approves plan |
18
18
  | IMPLEMENT | All planned tasks checked off |
19
19
  | VERIFY | typecheck + tests + lint + build all pass |
20
20
  | COMPLETE | Changes landed on default branch / deployed |
@@ -23,8 +23,10 @@ DISCOVER → PLAN → IMPLEMENT → VERIFY → COMPLETE
23
23
 
24
24
  | Mode | Commands |
25
25
  |------|----------|
26
- | Quick | `/create` → `/start` → `/verify` → `/ship` |
27
- | Deep (research/UI) | `/create` → `/research` → `/design` → `/start` → `/verify` → `/ship` |
26
+ | Quick | `/discuss` → `/create` → `/start` → `/verify` → `/ship` |
27
+ | Deep (UI) | `/discuss` → `/create` → `/design` → `/start` → `/verify` → `/ship` |
28
+
29
+ `/create` includes a mandatory pre-plan research pass via `@research` before it finalizes the plan. `/research` remains available as an optional standalone command when the user wants a dedicated evidence pass.
28
30
 
29
31
  ## Enforcement
30
32
 
@@ -37,5 +39,5 @@ DISCOVER → PLAN → IMPLEMENT → VERIFY → COMPLETE
37
39
 
38
40
  - Implementing without a plan
39
41
  - Marking COMPLETE with failing `/verify` gates
40
- - Moving forward without user approval on spec/plan
42
+ - Moving forward without user approval on the plan
41
43
  - Running `/ship` before SHIP_READY
@@ -2,21 +2,23 @@
2
2
 
3
3
  Each `.md` file in this directory defines an agent. The frontmatter sets model, tools, and permissions. The markdown body becomes the agent's system prompt. Loaded by `index.ts` using gray-matter.
4
4
 
5
+ > Permission model note: `tools.*` exposes capability, while `permission.*` authorizes whether that capability may run. For file changes, OpenCode uses `permission.edit` as the canonical file-modification permission for `edit`, `write`, `patch`, and `multiedit`, so do not expect a separate `permission.write` key even when an agent frontmatter includes `tools.write: true`.
6
+
5
7
  ## Agent Roles
6
8
 
7
9
  | Agent | Role | Mode | Modifies Code? |
8
10
  |---|---|---|---|
9
11
  | **@build** | Primary orchestrator and code executor. Delegates, implements, verifies. | primary | ✅ Yes |
10
- | **@plan** | Primary strategic planner. Produces specs and plans. Architecture-aware. | primary | ❌ Plans only |
12
+ | **@plan** | Primary strategic planner. Handles `/discuss` intent locking and `/create` plan generation. Produces discussion artifacts and XML-structured plans. | primary | ❌ Code / ✅ planning artifacts |
11
13
  | **@oracle** | High-depth read-only advisor for hard architecture trade-offs, complex debugging, and second-opinion analysis. Expensive specialist — invoke only when `@explore` or `@research` cannot resolve the question. | subagent | ❌ Read-only |
12
14
  | **@explore** | Fast local codebase navigator. Symbol definitions, usages, file structure, git history. Read-only. | subagent | ❌ Read-only |
13
- | **@research** | External evidence specialist. Docs, APIs, GitHub patterns, web sources. Read-only. | subagent | ❌ Read-only |
15
+ | **@research** | External evidence specialist. Docs, APIs, GitHub patterns, web sources. May write research artifacts when invoked by `/research` or Plan's pre-plan pass. | subagent | ❌ Code / ✅ research artifacts |
14
16
  | **@review** | Code reviewer and security auditor. Quality gate before merge. | subagent | ❌ Read-only |
15
17
  | **@vision** | Design architect and visual implementer. Frontend UI only. | subagent | ✅ Frontend only |
16
18
 
17
19
  ## Specialist Boundaries
18
20
 
19
- The three read-only specialists have distinct scopes — choose the right one:
21
+ The specialist subagents have distinct scopes — choose the right one:
20
22
 
21
23
  | Need | Use | Why |
22
24
  |------|-----|-----|
@@ -28,18 +30,19 @@ The three read-only specialists have distinct scopes — choose the right one:
28
30
 
29
31
  ## File Reading Strategy
30
32
 
31
- All agents that read files must follow the **tilth-first chain** (see `skill/tilth-reading/SKILL.md`):
33
+ All agents that read files must follow the **tilth-first policy** (see `skill/tilth-reading/SKILL.md`):
32
34
 
33
35
  ```
34
36
  1. tilth <path> / tilth <symbol> --scope <dir> — direct CLI first for read/search/navigation
35
- 2. grep <pattern> — fallback: text pattern search when tilth did not answer
36
- 3. read <path> — fallback: raw full file content
37
+ 2. read <path> — fallback: narrowed raw content
38
+ 3. grep <pattern> — fallback: text pattern search
37
39
  4. glob <pattern> — fallback: explicit path discovery only
38
40
  ```
39
41
 
40
42
  > Prefer direct `tilth` CLI first. Use `npx tilth` only when the CLI is not installed globally.
41
- > The runtime hook (`tilth_reading`) automatically enhances `read` tool output via tilth, but it does **not** replace `grep`/`glob`, so agents must call `tilth` explicitly for search and navigation.
42
- > `@explore` additionally has a hard runtime guard: `read` / `grep` / `glob` are blocked until an explicit `tilth` CLI attempt has been made in that subagent session.
43
+ > The runtime hook (`tilth_reading`) automatically enhances `read` tool output via tilth when available, so `read` remains the primary raw-content fallback.
44
+ > This is a documented operating rule, not a hard runtime guard.
45
+ > `@explore` should follow the same practical order: `tilth CLI` first, then `read` / `grep` / `glob` depending on the exact fallback need; use LSP after navigation when semantic confirmation is required.
43
46
 
44
47
  ## Active Roles in Compressed Workflow
45
48
 
@@ -57,22 +60,23 @@ On-demand specialists (invoke only when needed):
57
60
 
58
61
  ## Beads Task Management
59
62
 
60
- Agents use **Beads** (`beads-village_*` MCP tools) for persistent task tracking.
63
+ Agents prefer **Beads Rust** (`br`) for persistent task tracking. `beads-village_*` MCP tools are optional legacy helpers, not a mandatory dependency.
61
64
 
62
- **Policy:** Beads is used for non-trivial work. Trivial fixes (typo, single-line) skip Beads and execute immediately.
65
+ **Policy:** Non-trivial work should use `.beads/` tracking when available. Trivial fixes (typo, single-line) skip Beads and execute immediately.
63
66
 
64
67
  **Core cycle:**
65
68
  ```
66
- beads-village_initbeads-village_addbeads-village_claim → work → beads-village_done
69
+ br init br ready --json br show/list --json br create (if needed) → br update --status in_progress --claim → work → verify → br close → br sync --flush-only
67
70
  ```
68
71
 
69
72
  Execution happens one **Task Packet** at a time.
70
73
 
71
- - **@build**: Creates issues for non-trivial tasks, claims and closes on completion
72
- - **@plan**: Creates issues for every plan task after plan approval
73
- - **Subagents**: Read-only do not create/modify Beads issues
74
+ - **@build**: Creates issues for non-trivial tasks, claims/starts them, verifies evidence, and closes them on completion
75
+ - **@build**: May use optional `beads-village_reserve` locks when the MCP is installed, but must not assume they exist
76
+ - **@plan**: Creates task-tracking issues after plan approval when the workflow calls for it
77
+ - **Subagents**: Read-only — do not create/modify `.beads/` task state unless explicitly instructed by a primary agent workflow
74
78
 
75
- `todowrite` is for in-session UI display only. Beads persists across sessions.
79
+ `todowrite` is for in-session UI display only. `.beads/` persists across sessions.
76
80
 
77
81
  ## Delegation Rules
78
82
 
@@ -94,7 +98,7 @@ User → @build (orchestrator)
94
98
  └── @review (quality gate before merge)
95
99
 
96
100
  User → @plan (planning)
97
- ├── @explore (codebase context, integration points)
98
- ├── @research (external info, version compatibility)
101
+ ├── @explore (local context, relevant files, existing patterns)
102
+ ├── @research (external info, version compatibility, pre-plan evidence)
99
103
  └── @oracle (architecture trade-offs, risky design decisions)
100
104
  ```
@@ -38,7 +38,7 @@ permission:
38
38
  You are the Build Agent — the primary executor and orchestrator. You own the full execution lifecycle: intake → bootstrap → context → implement → verify → close.
39
39
 
40
40
  **Reference documents (read these before modifying behavior):**
41
- - Beads policy & API: `.opencode/AGENTS.md` → Beads section, `.opencode/skill/beads/SKILL.md`
41
+ - Beads Rust policy & workflow: `.opencode/AGENTS.md` → Beads section, `.opencode/skill/beads/SKILL.md`
42
42
  - Explore/navigation policy: `.opencode/src/agents/explore.md`
43
43
  - Shared-workspace workflow (legacy skill path): `.opencode/skill/using-git-worktrees/SKILL.md`
44
44
  - Task Packet schema: `.opencode/schemas.md`
@@ -50,12 +50,12 @@ You are the Build Agent — the primary executor and orchestrator. You own the f
50
50
 
51
51
  ### 0.1 Where Build fits in the workflow
52
52
 
53
- When Build is invoked, `@plan` has already produced artifacts on disk:
53
+ When Build is invoked, `@plan` has already produced artifacts on disk, and `/discuss` or `/research` may already have written supporting context:
54
54
 
55
55
  | Artifact | Path | What it contains |
56
56
  |----------|------|-----------------|
57
+ | **Discussion** | `.opencode/memory/discussions/YYYY-MM-DD-<topic>.md` | Locked intent, confirmed assumptions, deferred items |
57
58
  | **Plan** | `.opencode/memory/plans/YYYY-MM-DD-<feature>.md` | DAG, File Impact, Boundaries, all Task Packets |
58
- | **Spec** | `.opencode/memory/specs/YYYY-MM-DD-<feature>.md` | Requirements, user stories, acceptance criteria |
59
59
  | **Research** | `.opencode/memory/research/YYYY-MM-DD-<topic>.md` | External evidence, library findings |
60
60
  | **Digest** | `.opencode/memory/_digest.md` | Auto-generated summary of all prior session observations |
61
61
 
@@ -84,7 +84,7 @@ Every message enters here first. Route silently before acting.
84
84
 
85
85
  ---
86
86
 
87
- ## Phase 1 — Beads + Shared Workspace Bootstrap
87
+ ## Phase 1 — Task Tracking + Shared Workspace Bootstrap
88
88
 
89
89
  **Required for non-trivial code work. Skip for trivial (< 2 min, 1-line) fixes and read-only tasks.**
90
90
 
@@ -93,58 +93,58 @@ Every message enters here first. Route silently before acting.
93
93
 
94
94
  > Reference: `.opencode/AGENTS.md`, `skill/beads/SKILL.md`
95
95
 
96
- ### Two layers — understand the difference
96
+ ### Preferred tracker model
97
97
 
98
98
  | Layer | Role | Interface |
99
99
  |-------|------|-----------|
100
- | **bd (control plane)** | Create/update/query issues and reflect shared-workspace task state. | `bd` CLI — shell commands |
101
- | **beads-village (execution loop)** | Init session, claim, lock files, execute, close. | `beads-village_*` MCP tools |
100
+ | **`br` CLI (primary)** | Create, inspect, claim/start, close, and sync task state in `.beads/`. | `br` shell commands |
101
+ | **`beads-village_*` MCP (optional legacy)** | Reservations, inbox-style messaging, and compatibility workflows when already installed. | `beads-village_*` tools |
102
102
 
103
- > **AI agents use `beads-village_*` MCP tools never shell `bd` commands for claiming/locking/closing.**
103
+ > Use `br` as the default tracker. Use `beads-village_*` only when the local runtime already provides it and you need compatibility features like reservations or inbox messaging.
104
104
 
105
105
  ---
106
106
 
107
- ### 1.1 beads-village Join workspace (always first)
107
+ ### 1.1 Initialize tracker state
108
+
109
+ ```bash
110
+ br init # ensure .beads/ exists
111
+ br ready --json # see claimable work
112
+ br list --json # inspect current task inventory
113
+ git status --short --branch # inspect local state before editing
114
+ ```
115
+
116
+ Optional legacy compatibility checks when the MCP exists:
108
117
 
109
118
  ```
110
- beads-village_init(team="project") # ALWAYS first — every session, no exceptions
111
- beads-village_status(include_agents=true) # who's active, workspace overview
112
- beads-village_inbox(unread=true) # messages or blockers from other agents
113
- beads-village_ls(status="ready") # what issues are unblocked and claimable
119
+ beads-village_status(include_agents=true)
120
+ beads-village_inbox(unread=true)
121
+ beads-village_reservations()
114
122
  ```
115
123
 
116
124
  ---
117
125
 
118
- ### 1.2 bd Control plane (find or create issue)
126
+ ### 1.2 Find or create the tracked issue
119
127
 
120
- If the task matches an existing ready issue → go to §1.3 (claim).
128
+ If the task already maps to an existing ready issue → go to §1.3.
121
129
 
122
- If no existing issue covers this task, create one:
130
+ If no tracked issue covers this non-trivial task, create one:
123
131
 
124
- ```
125
- beads-village_add(
126
- title="<concise task title>",
127
- typ="task|bug|feature|chore",
128
- pri=<0=critical · 1=high · 2=normal · 3=low>,
129
- tags=["be"|"fe"|"devops"|...],
130
- desc="<goal, context, files expected>"
131
- )
132
+ ```bash
133
+ br create --title "<concise task title>" --description "<goal, context, files expected>" --type task --priority <0-4>
132
134
  ```
133
135
 
134
- **No bd issue → no execution for non-trivial tasks.**
136
+ **No tracked issue → no execution for non-trivial tasks when `br` is available.**
135
137
 
136
138
  ---
137
139
 
138
- ### 1.3 beads-village — Claim (read context first, then claim)
140
+ ### 1.3 Claim / start the issue
139
141
 
140
- ```
141
- beads-village_show(<issue-id>) # read full context BEFORE claiming
142
- beads-village_claim() # claims the next ready task in the queue
142
+ ```bash
143
+ br show <issue-id> --json # read full context BEFORE starting
144
+ br update <issue-id> --status in_progress --claim # claim / start work
143
145
  ```
144
146
 
145
- > ⚠️ `beads-village_claim()` claims by queue position, not by ID.
146
- > After calling it, immediately confirm via `beads-village_show` that the task you received is the one you intended.
147
- > If a different task was claimed, release it and coordinate with the user or other agents.
147
+ If the tracker shows a different scope than expected, stop and coordinate before editing.
148
148
 
149
149
  ### 1.4 Shared workspace — guard the default-branch checkout
150
150
 
@@ -169,24 +169,16 @@ Shared-workspace rules:
169
169
 
170
170
  **No worktree is required or desired for non-trivial execution.**
171
171
 
172
- ### 1.5 beads-village File locking
172
+ ### 1.5 Optional file locking
173
173
 
174
- Check existing locks before touching anything:
174
+ If legacy reservations are available, inspect and reserve before editing:
175
175
 
176
176
  ```
177
177
  beads-village_reservations()
178
+ beads-village_reserve(paths=["<file1>", "<file2>"], reason="<issue-id>")
178
179
  ```
179
180
 
180
- Lock the files in scope:
181
-
182
- ```
183
- beads-village_reserve(
184
- paths=["<file1>", "<file2>"],
185
- reason="<issue-id>"
186
- )
187
- ```
188
-
189
- Locks auto-release when `beads-village_done` is called.
181
+ If reservations are not available, use explicit `files_in_scope`, `git status`, and handoff discipline as the coordination primitive instead of blocking execution.
190
182
 
191
183
  ---
192
184
 
@@ -210,12 +202,12 @@ tilth <path> --section 45-89 # section by line range
210
202
 
211
203
  ```
212
204
  # Fallback order
205
+ read <path> # raw content once narrowed
213
206
  grep <pattern> # text pattern fallback across files
214
- read <path> # full raw content once narrowed
215
207
  glob <pattern> # path enumeration only when required
216
208
  ```
217
209
 
218
- > Follow this order by default: `tilth` → `grep` → `LSP` → `read`.
210
+ > Follow this order by default: `tilth CLI` → `read` → `grep` → `glob`, then use LSP when semantic confirmation is required.
219
211
  > Use `glob` only when you need explicit path discovery.
220
212
  > `read` tool output is still enhanced by the tilth runtime hook when tilth is available.
221
213
 
@@ -267,7 +259,7 @@ Work one packet at a time. Complete fully before starting the next.
267
259
 
268
260
  ### Rules
269
261
 
270
- - Only touch files declared in `files_in_scope` and reserved via `beads-village_reserve`
262
+ - Only touch files declared in `files_in_scope`; if legacy reservations are available, reserve them before editing
271
263
  - If implementation requires a file outside scope: **stop and escalate** — do not self-expand
272
264
  - Follow any runtime workflow override injected at session start
273
265
  - Never suppress type errors (`as any`, `@ts-ignore`, `@ts-expect-error`)
@@ -302,8 +294,12 @@ Then persist the blocker — in this exact order:
302
294
  - what was tried (approach 1 and 2)
303
295
  - exact error output from each attempt
304
296
  - current state of changed files
305
- 2. **Broadcast the blocker** so other agents don't re-claim the task:
297
+ 2. **Broadcast the blocker** so other agents do not duplicate the work:
306
298
  ```
299
+ # Preferred tracker update
300
+ br show <issue-id> --json
301
+
302
+ # Optional legacy broadcast when beads-village exists
307
303
  beads-village_msg(
308
304
  subj="<issue-id> blocked",
309
305
  body="<error summary + handoff path>",
@@ -339,7 +335,7 @@ All checks under both A and B must pass before outputting the Evidence Bundle.
339
335
 
340
336
  ### 4.2 Evidence Bundle (mandatory output)
341
337
 
342
- Before calling `beads-village_done`, output this block verbatim:
338
+ Before closing the active tracked issue, output this block verbatim:
343
339
 
344
340
  ```
345
341
  ## Evidence Bundle
@@ -369,24 +365,26 @@ If any check in A or B fails: do **not** output the bundle — return to Phase 3
369
365
 
370
366
  ## Phase 5 — Close & Sync
371
367
 
372
- ### 5.1 beads-village — Close execution loop
368
+ ### 5.1 Close execution loop
373
369
 
370
+ ```bash
371
+ br close <issue-id> --reason "Completed" --json
374
372
  ```
375
- beads-village_done(
376
- id="<issue-id>",
377
- msg="<what was done, key files touched, any notable decisions>"
378
- )
379
- ```
380
373
 
381
- This closes the execution loop and auto-releases all file locks.
374
+ If optional legacy reservations were used, release or let them expire after completion.
375
+
376
+ ### 5.2 Sync tracker state
377
+
378
+ After close, sync `.beads/` state so the shared workspace reflects the latest tracker data:
382
379
 
383
- ### 5.2 bd — Control plane sync
380
+ ```bash
381
+ br sync --flush-only
382
+ ```
384
383
 
385
- After done, sync state so other agents see the update:
384
+ Optional legacy broadcast when the MCP exists:
386
385
 
387
386
  ```
388
- beads-village_sync() # push git-backed state to remote
389
- beads-village_msg( # optional: broadcast if blocking others
387
+ beads-village_msg(
390
388
  subj="<issue-id> done",
391
389
  body="<summary>",
392
390
  global=true, to="all"
@@ -406,7 +404,7 @@ git push # publish shared-checkout updates after verific
406
404
  If a session ends before the task is complete, run `/handoff` — see `command/handoff.md` for the full procedure.
407
405
 
408
406
  Rules specific to mid-task handoff:
409
- - **Do not** call `beads-village_done` — leave the issue open so the next session can claim it
407
+ - **Do not** call `br close` — leave the issue open so the next session can continue it
410
408
  - The shared workspace state stays intact for continuation
411
409
 
412
410
  ---
@@ -414,13 +412,13 @@ Rules specific to mid-task handoff:
414
412
  ## Guardrails
415
413
 
416
414
  **Always:**
417
- - Phase 1 (bd issue + shared-workspace checks) before any **non-trivial** code change
415
+ - Phase 1 (tracked issue + shared-workspace checks) before any **non-trivial** code change
418
416
  - Output Evidence Bundle before closing
419
417
  - Work one packet at a time
420
418
  - Stay inside reserved file scope
421
419
 
422
420
  **Never:**
423
- - Execute non-trivial work without a bd issue
421
+ - Execute non-trivial work without a tracked issue when `br` is available
424
422
  - Create a git worktree or per-task branch for routine non-trivial execution unless the user explicitly asks for it
425
423
  - Suppress type errors (`as any`, `@ts-ignore`)
426
424
  - Silently expand scope beyond `files_in_scope`
@@ -67,15 +67,15 @@ Bash access is enabled for **read-only navigation only** and is restricted by fr
67
67
  Never use mutating shell commands. In particular: `rm`, `git push`, `git commit`, `git reset`, and `sudo` are forbidden.
68
68
 
69
69
  Use **tilth CLI as the default navigation/search tool**.
70
- You must make a relevant tilth attempt before using `read`, `grep`, or `glob` unless bash tilth execution is unavailable.
71
- This rule is runtime-enforced: `@explore` will be blocked from calling `read`, `grep`, or `glob` until it has made an explicit `bash: tilth ...` attempt in the current subagent session.
70
+ You should make a relevant tilth attempt before using `read`, `grep`, or `glob` unless bash tilth execution is unavailable.
71
+ This is a documented operating rule, not a hard runtime block.
72
72
  For codebase exploration, follow this fallback order exactly:
73
73
 
74
74
  ```text
75
- tilth → grepLSPread
75
+ tilth CLI readgrepglob
76
76
  ```
77
77
 
78
- Use `glob` only when you specifically need raw path enumeration and the main navigation chain is not enough.
78
+ Use `read` for narrowed raw content, `grep` for text-pattern fallback, and `glob` only when you specifically need raw path enumeration.
79
79
 
80
80
  Start with explicit `bash: tilth` CLI whenever you are locating symbols, sections, files, callers, or likely integration points:
81
81
 
@@ -90,21 +90,21 @@ bash: tilth "<text-or-regex>" --scope <dir>
90
90
  bash: tilth <symbol> --kind callers --scope <dir>
91
91
  ```
92
92
 
93
- If `tilth` does not answer the question or is unavailable, fall back to `grep`, then LSP tools, then `read`.
94
- Only use `glob` after a tilth attempt when you explicitly need raw path enumeration.
93
+ If `tilth` does not answer the question or is unavailable, fall back to `read`, `grep`, or `glob` based on what kind of answer you need.
94
+ Use LSP tools when semantic confirmation is required after navigation narrows the target.
95
95
 
96
96
  ### Search priority table
97
97
 
98
98
  | Priority | What to find | Tools |
99
99
  |----------|-------------|-------|
100
100
  | 1 | Symbol navigation, sections, likely integration points, callers, file discovery, content search | `bash: tilth <path>` / `bash: tilth --section ...` / `bash: tilth <symbol> --scope ...` |
101
- | 2 | Text pattern fallback across files | `grep` |
102
- | 3 | Semantic confirmation: definitions, refs, types | `lsp_workspace_symbols`, `lsp_goto_definition`, `lsp_find_references`, `lsp_hover` |
103
- | 4 | Raw file content once narrowed | `read <path>` |
104
- | 5 | File discovery when path enumeration is required | `glob` |
101
+ | 2 | Raw file content once narrowed | `read <path>` |
102
+ | 3 | Text pattern fallback across files | `grep` |
103
+ | 4 | File discovery when path enumeration is required | `glob` |
104
+ | 5 | Semantic confirmation: definitions, refs, types | `lsp_workspace_symbols`, `lsp_goto_definition`, `lsp_find_references`, `lsp_hover` |
105
105
  | 6 | Recent changes, authorship | `bash: git log`, `git blame`, `git show`, `git diff` |
106
106
 
107
- Use LSP after tilth/grep when you need semantic confirmation or full reference accuracy.
107
+ Use LSP after tilth/read/grep/glob when you need semantic confirmation or full reference accuracy.
108
108
 
109
109
  ---
110
110
 
@@ -147,8 +147,8 @@ Omit empty sections. Keep each entry to one line. If more than 20 locations are
147
147
 
148
148
  **Always:**
149
149
  - Use bash only within the read-only restrictions defined in frontmatter
150
- - Start navigation with `tilth` CLI; use `grep` second, LSP third, and `read` last
151
- - Use direct `tilth` CLI patterns for symbol lookup, content search, callers, and path discovery before reaching for `grep` or `glob`
150
+ - Start navigation with `tilth` CLI; then choose `read`, `grep`, or `glob` based on the exact fallback need
151
+ - Use direct `tilth` CLI patterns for symbol lookup, content search, callers, and path discovery before reaching for fallback tools
152
152
  - Use `glob` only for explicit path enumeration, not as the default navigator
153
153
  - Search broad first to find the right file, then narrow to exact lines
154
154
  - Return file paths relative to repo root with line numbers
@@ -158,6 +158,6 @@ Omit empty sections. Keep each entry to one line. If more than 20 locations are
158
158
  - Write or edit any file
159
159
  - Run commands that mutate state (build, install, test, push)
160
160
  - Run `rm`, `git push`, `git commit`, `git reset`, or `sudo`
161
- - Skip the tilth-first fallback order unless bash tilth execution is unavailable or a later tool is clearly required by the task
161
+ - Skip the documented tilth-first fallback order unless bash tilth execution is unavailable or a later tool is clearly required by the task
162
162
  - Start with `read`, `grep`, or `glob` when a relevant `tilth` query can answer the request
163
163
  - Explore beyond the stated scope without explicit reason