keepmind 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.codex-plugin/plugin.json +46 -0
  3. package/LICENSE +202 -0
  4. package/README.md +139 -0
  5. package/dist/npx-cli/index.js +1398 -0
  6. package/dist/opencode-plugin/index.js +68 -0
  7. package/openclaw/Dockerfile.e2e +46 -0
  8. package/openclaw/SKILL.md +462 -0
  9. package/openclaw/TESTING.md +279 -0
  10. package/openclaw/dist/index.js +20 -0
  11. package/openclaw/e2e-verify.sh +222 -0
  12. package/openclaw/install.sh +1653 -0
  13. package/openclaw/openclaw.plugin.json +98 -0
  14. package/openclaw/package.json +21 -0
  15. package/openclaw/skills/do/SKILL.md +1 -0
  16. package/openclaw/skills/make-plan/SKILL.md +1 -0
  17. package/openclaw/src/index.test.ts +1178 -0
  18. package/openclaw/src/index.ts +1136 -0
  19. package/openclaw/test-e2e.sh +40 -0
  20. package/openclaw/test-install.sh +2086 -0
  21. package/openclaw/test-sse-consumer.js +98 -0
  22. package/openclaw/tsconfig.json +26 -0
  23. package/package.json +187 -0
  24. package/plugin/.claude-plugin/plugin.json +24 -0
  25. package/plugin/.codex-plugin/plugin.json +46 -0
  26. package/plugin/.mcp.json +12 -0
  27. package/plugin/bun.lock +325 -0
  28. package/plugin/hooks/bugfixes-2026-01-10.md +92 -0
  29. package/plugin/hooks/codex-hooks.json +63 -0
  30. package/plugin/hooks/hooks.json +117 -0
  31. package/plugin/modes/code--ar.json +24 -0
  32. package/plugin/modes/code--bn.json +24 -0
  33. package/plugin/modes/code--chill.json +8 -0
  34. package/plugin/modes/code--cs.json +24 -0
  35. package/plugin/modes/code--da.json +24 -0
  36. package/plugin/modes/code--de.json +24 -0
  37. package/plugin/modes/code--el.json +24 -0
  38. package/plugin/modes/code--es.json +24 -0
  39. package/plugin/modes/code--fi.json +24 -0
  40. package/plugin/modes/code--fr.json +24 -0
  41. package/plugin/modes/code--he.json +24 -0
  42. package/plugin/modes/code--hi.json +24 -0
  43. package/plugin/modes/code--hu.json +24 -0
  44. package/plugin/modes/code--id.json +24 -0
  45. package/plugin/modes/code--it.json +24 -0
  46. package/plugin/modes/code--ja.json +24 -0
  47. package/plugin/modes/code--ko.json +24 -0
  48. package/plugin/modes/code--nl.json +24 -0
  49. package/plugin/modes/code--no.json +24 -0
  50. package/plugin/modes/code--pl.json +24 -0
  51. package/plugin/modes/code--pt-br.json +24 -0
  52. package/plugin/modes/code--ro.json +24 -0
  53. package/plugin/modes/code--ru.json +24 -0
  54. package/plugin/modes/code--sv.json +24 -0
  55. package/plugin/modes/code--th.json +24 -0
  56. package/plugin/modes/code--tr.json +24 -0
  57. package/plugin/modes/code--uk.json +24 -0
  58. package/plugin/modes/code--ur.json +25 -0
  59. package/plugin/modes/code--vi.json +24 -0
  60. package/plugin/modes/code--zh.json +24 -0
  61. package/plugin/modes/code.json +139 -0
  62. package/plugin/modes/email-investigation.json +120 -0
  63. package/plugin/modes/law-study--chill.json +7 -0
  64. package/plugin/modes/law-study-CLAUDE.md +85 -0
  65. package/plugin/modes/law-study.json +120 -0
  66. package/plugin/modes/meme-tokens.json +125 -0
  67. package/plugin/package.json +47 -0
  68. package/plugin/scripts/bun-runner.js +229 -0
  69. package/plugin/scripts/context-generator.cjs +1005 -0
  70. package/plugin/scripts/mcp-server.cjs +247 -0
  71. package/plugin/scripts/statusline-counts.js +45 -0
  72. package/plugin/scripts/transcript-watcher.cjs +27 -0
  73. package/plugin/scripts/version-check.js +193 -0
  74. package/plugin/scripts/worker-cli.js +19 -0
  75. package/plugin/scripts/worker-service.cjs +2638 -0
  76. package/plugin/scripts/worker-wrapper.cjs +2 -0
  77. package/plugin/skills/babysit/SKILL.md +87 -0
  78. package/plugin/skills/design-is/SKILL.md +312 -0
  79. package/plugin/skills/do/SKILL.md +45 -0
  80. package/plugin/skills/how-it-works/SKILL.md +22 -0
  81. package/plugin/skills/how-it-works/onboarding-explainer.md +17 -0
  82. package/plugin/skills/knowledge-agent/SKILL.md +80 -0
  83. package/plugin/skills/learn-codebase/SKILL.md +21 -0
  84. package/plugin/skills/make-plan/SKILL.md +67 -0
  85. package/plugin/skills/mem-search/SKILL.md +131 -0
  86. package/plugin/skills/oh-my-issues/SKILL.md +226 -0
  87. package/plugin/skills/pathfinder/SKILL.md +111 -0
  88. package/plugin/skills/smart-explore/SKILL.md +193 -0
  89. package/plugin/skills/standup/SKILL.md +142 -0
  90. package/plugin/skills/standup/agent-brief.md +47 -0
  91. package/plugin/skills/standup/standup.mjs +662 -0
  92. package/plugin/skills/timeline-report/SKILL.md +211 -0
  93. package/plugin/skills/version-bump/SKILL.md +74 -0
  94. package/plugin/skills/version-bump/scripts/generate_changelog.js +34 -0
  95. package/plugin/skills/weekly-digests/SKILL.md +262 -0
  96. package/plugin/skills/what-the/SKILL.md +6 -0
  97. package/plugin/skills/wowerpoint/SKILL.md +205 -0
  98. package/plugin/ui/assets/fonts/monaspace-radon-var.woff +0 -0
  99. package/plugin/ui/assets/fonts/monaspace-radon-var.woff2 +0 -0
  100. package/plugin/ui/icon-thick-completed.svg +8 -0
  101. package/plugin/ui/icon-thick-investigated.svg +8 -0
  102. package/plugin/ui/icon-thick-learned.svg +12 -0
  103. package/plugin/ui/icon-thick-next-steps.svg +8 -0
  104. package/plugin/ui/viewer-bundle.js +65 -0
  105. package/plugin/ui/viewer.html +3302 -0
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: smart-explore
3
+ description: Token-optimized structural code search using tree-sitter AST parsing. Use instead of reading full files when you need to understand code structure, find functions, or explore a codebase efficiently.
4
+ ---
5
+
6
+ # Smart Explore
7
+
8
+ Structural code exploration using AST parsing. **This skill overrides your default exploration behavior.** While this skill is active, use smart_search/smart_outline/smart_unfold as your primary tools instead of Read, Grep, and Glob.
9
+
10
+ **Core principle:** Index first, fetch on demand. Give yourself a map of the code before loading implementation details. The question before every file read should be: "do I need to see all of this, or can I get a structural overview first?" The answer is almost always: get the map.
11
+
12
+ ## Your Next Tool Call
13
+
14
+ This skill only loads instructions. You must call the MCP tools yourself. Your next action should be one of:
15
+
16
+ ```
17
+ smart_search(query="<topic>", path="./src") -- discover files + symbols across a directory
18
+ smart_outline(file_path="<file>") -- structural skeleton of one file
19
+ smart_unfold(file_path="<file>", symbol_name="<name>") -- full source of one symbol
20
+ ```
21
+
22
+ Do NOT run Grep, Glob, Read, or find to discover files first. `smart_search` walks directories, parses all code files, and returns ranked symbols in one call. It replaces the Glob → Grep → Read discovery cycle.
23
+
24
+ ## 3-Layer Workflow
25
+
26
+ ### Step 1: Search -- Discover Files and Symbols
27
+
28
+ ```
29
+ smart_search(query="shutdown", path="./src", max_results=15)
30
+ ```
31
+
32
+ **Returns:** Ranked symbols with signatures, line numbers, match reasons, plus folded file views (~2-6k tokens)
33
+
34
+ ```
35
+ -- Matching Symbols --
36
+ function performGracefulShutdown (services/infrastructure/GracefulShutdown.ts:56)
37
+ function httpShutdown (services/infrastructure/HealthMonitor.ts:92)
38
+ method WorkerService.shutdown (services/worker-service.ts:846)
39
+
40
+ -- Folded File Views --
41
+ services/infrastructure/GracefulShutdown.ts (7 symbols)
42
+ services/worker-service.ts (12 symbols)
43
+ ```
44
+
45
+ This is your discovery tool. It finds relevant files AND shows their structure. No Glob/find pre-scan needed.
46
+
47
+ **Parameters:**
48
+
49
+ - `query` (string, required) -- What to search for (function name, concept, class name)
50
+ - `path` (string) -- Root directory to search (defaults to cwd)
51
+ - `max_results` (number) -- Max matching symbols, default 20, max 50
52
+ - `file_pattern` (string, optional) -- Filter to specific files/paths
53
+
54
+ ### Step 2: Outline -- Get File Structure
55
+
56
+ ```
57
+ smart_outline(file_path="services/worker-service.ts")
58
+ ```
59
+
60
+ **Returns:** Complete structural skeleton -- all functions, classes, methods, properties, imports (~1-2k tokens per file)
61
+
62
+ **Skip this step** when Step 1's folded file views already provide enough structure. Most useful for files not covered by the search results.
63
+
64
+ **Parameters:**
65
+
66
+ - `file_path` (string, required) -- Path to the file
67
+
68
+ ### Step 3: Unfold -- See Implementation
69
+
70
+ Review symbols from Steps 1-2. Pick the ones you need. Unfold only those:
71
+
72
+ ```
73
+ smart_unfold(file_path="services/worker-service.ts", symbol_name="shutdown")
74
+ ```
75
+
76
+ **Returns:** Full source code of the specified symbol including JSDoc, decorators, and complete implementation (~400-2,100 tokens depending on symbol size). AST node boundaries guarantee completeness regardless of symbol size — unlike Read + agent summarization, which may truncate long methods.
77
+
78
+ **Parameters:**
79
+
80
+ - `file_path` (string, required) -- Path to the file (as returned by search/outline)
81
+ - `symbol_name` (string, required) -- Name of the function/class/method to expand
82
+
83
+ ## When to Use Standard Tools Instead
84
+
85
+ Use these only when smart_* tools are the wrong fit:
86
+
87
+ - **Grep:** Exact string/regex search ("find all TODO comments", "where is `ensureWorkerStarted` defined?")
88
+ - **Read:** Small files under ~100 lines, non-code files (JSON, markdown, config)
89
+ - **Glob:** File path patterns ("find all test files")
90
+ - **Explore agent:** When you need synthesized understanding across 6+ files, architecture narratives, or answers to open-ended questions like "how does this entire system work end-to-end?" Smart-explore is a scalpel — it answers "where is this?" and "show me that." It doesn't synthesize cross-file data flows, design decisions, or edge cases across an entire feature.
91
+
92
+ For code files over ~100 lines, prefer smart_outline + smart_unfold over Read.
93
+
94
+ ## Workflow Examples
95
+
96
+ **Discover how a feature works (cross-cutting):**
97
+
98
+ ```
99
+ 1. smart_search(query="shutdown", path="./src")
100
+ -> 14 symbols across 7 files, full picture in one call
101
+ 2. smart_unfold(file_path="services/infrastructure/GracefulShutdown.ts", symbol_name="performGracefulShutdown")
102
+ -> See the core implementation
103
+ ```
104
+
105
+ **Navigate a large file:**
106
+
107
+ ```
108
+ 1. smart_outline(file_path="services/worker-service.ts")
109
+ -> 1,466 tokens: 12 functions, WorkerService class with 24 members
110
+ 2. smart_unfold(file_path="services/worker-service.ts", symbol_name="startSessionProcessor")
111
+ -> 1,610 tokens: the specific method you need
112
+ Total: ~3,076 tokens vs ~12,000 to Read the full file
113
+ ```
114
+
115
+ **Write documentation about code (hybrid workflow):**
116
+
117
+ ```
118
+ 1. smart_search(query="feature name", path="./src") -- discover all relevant files and symbols
119
+ 2. smart_outline on key files -- understand structure
120
+ 3. smart_unfold on important functions -- get implementation details
121
+ 4. Read on small config/markdown/plan files -- get non-code context
122
+ ```
123
+
124
+ Use smart_* tools for code exploration, Read for non-code files. Mix freely.
125
+
126
+ **Exploration then precision:**
127
+
128
+ ```
129
+ 1. smart_search(query="session", path="./src", max_results=10)
130
+ -> 10 ranked symbols: SessionMetadata, SessionQueueProcessor, SessionSummary...
131
+ 2. Pick the relevant one, unfold it
132
+ ```
133
+
134
+ ## Token Economics
135
+
136
+ | Approach | Tokens | Use Case |
137
+ |----------|--------|----------|
138
+ | smart_outline | ~1,000-2,000 | "What's in this file?" |
139
+ | smart_unfold | ~400-2,100 | "Show me this function" |
140
+ | smart_search | ~2,000-6,000 | "Find all X across the codebase" |
141
+ | search + unfold | ~3,000-8,000 | End-to-end: find and read (the primary workflow) |
142
+ | Read (full file) | ~12,000+ | When you truly need everything |
143
+ | Explore agent | ~39,000-59,000 | Cross-file synthesis with narrative |
144
+
145
+ **4-8x savings** on file understanding (outline + unfold vs Read). **11-18x savings** on codebase exploration vs Explore agent. The narrower the query, the wider the gap — a 27-line function costs 55x less to read via unfold than via an Explore agent, because the agent still reads the entire file.
146
+
147
+ ## Language Support
148
+
149
+ Smart-explore uses **tree-sitter AST parsing** for structural analysis. Unsupported file types fall back to text-based search.
150
+
151
+ ### Bundled Languages
152
+
153
+ | Language | Extensions |
154
+ |----------|-----------|
155
+ | JavaScript | `.js`, `.mjs`, `.cjs` |
156
+ | TypeScript | `.ts` |
157
+ | TSX / JSX | `.tsx`, `.jsx` |
158
+ | Python | `.py`, `.pyw` |
159
+ | Go | `.go` |
160
+ | Rust | `.rs` |
161
+ | Ruby | `.rb` |
162
+ | Java | `.java` |
163
+ | C | `.c`, `.h` |
164
+ | C++ | `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hh` |
165
+
166
+ Files with unrecognized extensions are parsed as plain text — `smart_search` still works (grep-style), but `smart_outline` and `smart_unfold` will not extract structured symbols.
167
+
168
+ ### Custom Grammars (`.claude-mem.json`)
169
+
170
+ You can register additional tree-sitter grammars for file types not in the bundled list. Create or update `.claude-mem.json` in your project root:
171
+
172
+ ```json
173
+ {
174
+ "grammars": {
175
+ "solidity": {
176
+ "package": "tree-sitter-solidity",
177
+ "extensions": [".sol"],
178
+ "query": "solidity-query.scm"
179
+ }
180
+ }
181
+ }
182
+ ```
183
+
184
+ Each key is a language name. `package` is the npm package of the tree-sitter grammar and `extensions` lists the file extensions it covers; the package must be installed in the project's `node_modules` (`npm install tree-sitter-solidity`). `query` (optional) is a path, relative to the config file, to a tree-sitter query whose captures (`@func`, `@cls`, `@method`, `@iface`, `@enm`, `@struct_def`, `@imp`) extract symbols. Without `query`, a minimal generic pattern is used — it only matches grammars that define `function_declaration`/`class_declaration` node types, and query compilation fails silently (0 symbols) for grammars that lack them, so a custom query is effectively required for most languages. Once registered, `smart_outline` and `smart_unfold` parse those extensions structurally instead of falling back to plain text.
185
+
186
+ ### Markdown Special Support
187
+
188
+ Markdown files (`.md`, `.mdx`) receive special handling beyond the generic plain-text fallback:
189
+
190
+ - **`smart_outline`** — extracts headings (`#`, `##`, `###`) as the symbol tree. Use it to navigate long documents without reading the full file.
191
+ - **`smart_search`** — searches within code fences as well as prose, so queries for function names inside ` ```ts ``` ` blocks work as expected.
192
+ - **`smart_unfold`** — expands heading sections rather than function bodies; each section up to the next same-level heading is returned as a chunk.
193
+ - **Frontmatter** — YAML frontmatter (lines between leading `---` delimiters) is included in `smart_outline` output under a synthetic `frontmatter` symbol so metadata like `title:` and `description:` is visible without reading the whole file.
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: standup
3
+ version: 1.0.0
4
+ description: Facilitate a read-only standup across git worktrees, branches, or PRs to compare changes and produce one consolidation plan.
5
+ allowed-tools:
6
+ - Bash
7
+ - Read
8
+ - Edit
9
+ - Task
10
+ - AskUserQuestion
11
+ ---
12
+
13
+ # standup — facilitate a group chat between branch-agents
14
+
15
+ You're the **facilitator**. Each of the user's git worktrees (and any PRs they
16
+ pick) joins a shared markdown chat as its own agent, and the agents reconcile
17
+ their scattered work into ONE consolidated worktree. You convene the room, run
18
+ the conversation in rounds, and carry the outcome back — the reconciling happens
19
+ in the chat, between the agents.
20
+
21
+ The room is one shared file (default `~/.claude-mem/STANDUP.md`): YAML front
22
+ matter holds the `goal` + `prompt`; the body is the transcript. Writes are
23
+ atomically locked, so agents speak at once. It is **read-only** — agents decide
24
+ how the merge *should* go; nobody commits or merges inside the room. Real git
25
+ work happens afterward via `/do`.
26
+
27
+ ## 1. Fill the room
28
+
29
+ Two ways, mixable:
30
+
31
+ - **By recency** (common) — worktrees active in a window:
32
+ ```bash
33
+ node "${CLAUDE_SKILL_DIR}/standup.mjs" worktrees --since <1h|4h|24h|7d|all> --json
34
+ ```
35
+ Active = a commit *or* an uncommitted/staged/untracked edit in the window. If
36
+ the user didn't name a window, offer 1h / 4h / 24h / 7d / all.
37
+
38
+ - **By hand** — specific branches and/or open PRs:
39
+ ```bash
40
+ node "${CLAUDE_SKILL_DIR}/standup.mjs" worktrees --json # local branches
41
+ node "${CLAUDE_SKILL_DIR}/standup.mjs" prs --json # open PRs (via gh)
42
+ ```
43
+ Show one numbered list (worktrees + PRs, with age/title); their reply is the
44
+ "checkbox." If `prs` errors (no `gh` / not GitHub), carry on worktrees-only.
45
+
46
+ Zero or one candidate isn't a standup — say so, offer to widen, stop. Otherwise
47
+ echo the roster to confirm before you start.
48
+
49
+ ## 2. Open the room
50
+
51
+ Set a goal + prompt that invite a conversation, not one-shot status reports:
52
+
53
+ ```bash
54
+ node "${CLAUDE_SKILL_DIR}/standup.mjs" open --force --agent facilitator \
55
+ --goal "Collapse these branches/PRs into ONE consolidated worktree: what each changed, where they overlap, which becomes the target, and the merge order." \
56
+ --prompt "Facilitated rounds. Round 1: introduce your branch and its state. Then resolve the conflicts the facilitator surfaces, round by round, until the room lands on one concrete plan (target worktree + merge order + conflict resolutions). Read-only: decide, don't merge. Register AGREE when you back the plan."
57
+ ```
58
+
59
+ ## 3. Run it as rounds
60
+
61
+ You drive the turns — if agents watch-loop on their own the room can stall with
62
+ nothing decided. Each agent speaks once per round (read → post → return); you
63
+ read between rounds and bring back whoever's still needed.
64
+
65
+ Spawned agents don't inherit `CLAUDE_SKILL_DIR`, so resolve it once and paste the
66
+ real path into each brief:
67
+ ```bash
68
+ echo "${CLAUDE_SKILL_DIR}"
69
+ ```
70
+
71
+ **Round 1 — intros (everyone, one Task message so they run together).** Brief
72
+ each:
73
+
74
+ > You're **`<branch>`** (a PR is **`pr-<number>`**) in a standup group chat. Read
75
+ > `<skill-dir>/agent-brief.md` and play your part by it. The room is
76
+ > `~/.claude-mem/STANDUP.md`; speak with `node "<skill-dir>/standup.mjs" post …`,
77
+ > catch up with `… read`. Get your bearings (`cd "<path>"`,
78
+ > `git log --oneline origin/main..HEAD`, `git status --short`,
79
+ > `git diff --stat origin/main...HEAD`; a PR uses `gh pr view/diff <number>`),
80
+ > then post ONE turn: your branch, its real state, and how it should fold in.
81
+ > Read-only. Then return.
82
+
83
+ **Reconcile.** Once they've returned, `read` the room and list the **open
84
+ items** — overlaps, conflicts, competing implementations, undecided
85
+ target/order. None? Skip to the close.
86
+
87
+ **Resolution rounds (cap ~4).** Per open item, re-spawn only the agents it
88
+ implicates, with the specific question. Tell them to `read --since <their-name>`
89
+ first, then post their position and `--agree` if convinced. `read` again, update
90
+ the list. Repeat.
91
+
92
+ **Close — you always write it.** Stop when the list is empty, you hit the cap, or
93
+ an agent errors (note "didn't report," don't block). Then write the SUMMATION
94
+ yourself — don't wait for an agent to volunteer. Write it as plain prose a human
95
+ can skim, not a field dump: which worktree is the target and why, the merge order
96
+ in a sentence, and what's left for the human:
97
+ ```bash
98
+ node "${CLAUDE_SKILL_DIR}/standup.mjs" summation --agent facilitator \
99
+ --text "Build on <worktree> — it's the only one with real code. Layer <branch>'s changes on top, then drop in the doc-only branches; skip <empty branch>. Your call before it's safe: <the one or two real decisions>. Done when it all sits in <target> and builds clean."
100
+ ```
101
+
102
+ ## 4. Brief the human in plain language
103
+
104
+ This is the payoff — don't hand them the raw SUMMATION, **translate it.** A human
105
+ who didn't watch the room should understand the outcome without decoding paths,
106
+ line counts, or commit hashes. Lead with the answer, then the few choices only
107
+ they can make:
108
+
109
+ - **What you found** — one plain line per branch: who has real code, who's just
110
+ docs, who's empty.
111
+ - **The plan** — target + merge order in a sentence or two.
112
+ - **Their call** — only the decisions a human must make (which implementation
113
+ wins, what to drop, anything risky), as concrete questions. Use
114
+ `AskUserQuestion` for the clear-cut ones.
115
+
116
+ Keep git internals out unless they ask. Once they've settled the open calls, hand
117
+ the plan to **`/do`** to perform the merges — don't merge anything yourself
118
+ outside `/do`.
119
+
120
+ ## CLI
121
+
122
+ ```bash
123
+ node "${CLAUDE_SKILL_DIR}/standup.mjs" <command> [--flags]
124
+ ```
125
+ Defaults: agent = git branch, file = `~/.claude-mem/STANDUP.md`. Every write is
126
+ atomically locked.
127
+
128
+ | command | what it does |
129
+ |---|---|
130
+ | `worktrees [--since 4h] [--json]` | worktrees newest-first; `--since N{m,h,d,w}` keeps those active in the window |
131
+ | `prs [--since 4h] [--json]` | open GitHub PRs (via `gh`) newest-first |
132
+ | `open --goal "…" --prompt "…" [--force]` | create the room (`--force` rotates an old one aside) |
133
+ | `join [--message "…"]` | add yourself + say Hello |
134
+ | `post --message "…" [--agree "…"]` | append a turn |
135
+ | `agree --deliverable "…"` | append an AGREE turn |
136
+ | `watch [--timeout SEC] [--interval SEC]` | block until someone else posts, print it (exit 2 on timeout) |
137
+ | `read [--tail N] [--since AGENT]` | print the chat (or only turns after AGENT's last) |
138
+ | `status` | participants + AGREEs + consensus check |
139
+ | `summation --text "…"` | write the SUMMATION, flip `status: agreed` |
140
+
141
+ Each spawned agent plays its turns by **`agent-brief.md`** (bundled here) — the
142
+ playbook for being one voice in the room.
@@ -0,0 +1,47 @@
1
+ # You're in a standup — a group chat with the other branches
2
+
3
+ You're one voice in a room of coding agents, each embodying a git branch or PR,
4
+ all sharing **one markdown file** as the chat. This is a conversation, not a form
5
+ to fill in: state your case, react, push back, change your mind — together the
6
+ room lands on one plan.
7
+
8
+ The point is in the file's front matter — a `goal` and a `prompt`. Read them
9
+ first; trust them over this page. Usually: collapse everyone's work into one
10
+ consolidated worktree.
11
+
12
+ A **facilitator** runs the rounds and decides when it's done. So **you don't loop
13
+ or wait** — you're brought in, you take your turn, you return (you'll likely be
14
+ called back). Scheduling the next speaker and closing the room are the
15
+ facilitator's job, not yours.
16
+
17
+ ## Your turn
18
+
19
+ A tiny CLI to speak and listen (the facilitator gives you the path to
20
+ `standup.mjs`):
21
+
22
+ - `read` — the whole room; `read --since <you>` — just what's new. Always catch
23
+ up before you speak.
24
+ - `post --message "…"` — say something; add `--agree "<deliverable>"` to back a
25
+ decision.
26
+ - `status` — who's agreed so far.
27
+
28
+ Each time you're brought in:
29
+
30
+ 1. **Catch up** — `read --since <you>` (or `read` on your first turn).
31
+ 2. **Say one substantive thing** — `post` one turn. First turn: introduce your
32
+ branch and its honest state (changed what, committed or not, merged or not,
33
+ where it overlaps). Later: engage the facilitator's question, address people
34
+ by `@branch`, agree or disagree *with reasons*, propose or concede. Move the
35
+ room toward one plan — don't restate status.
36
+ 3. **Take a position** — back the plan with `AGREE: <deliverable>`, quoting it
37
+ precisely (consensus = the *same* words). Not convinced? Say what would
38
+ convince you — that's the next round's open item.
39
+ 4. **Return** — then stop. Don't watch, loop, or write the summation; the
40
+ facilitator does that.
41
+
42
+ ## Stay in your lane
43
+
44
+ Only ever speak as yourself — never post as another branch. **Read-only**:
45
+ introspect, discuss, decide — do not commit, merge, push, or deploy. Execution
46
+ happens later via `/do`, under the human's eye. A sharp, honest turn beats a long
47
+ one.