@assuredloop/orca-bot-kit 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -453,8 +453,21 @@ up. Each run renews its own schedule, which Claude Code would otherwise end
453
453
  after a week, and `--on --at` puts it back if it lapses. A `/clear` in its tab
454
454
  leaves it running until the session is next restarted; after that, `--on --at`
455
455
  puts it back.
456
- `obk groom --compact` compacts its conversation between runs. Grooming on Codex
457
- comes later: on a Codex Bot Father, add the session with `--harness claude`.
456
+ `obk groom --compact` compacts its conversation between runs.
457
+
458
+ The grooming session is always a Claude Code one, even on a Codex Bot Father (add
459
+ it with `--harness claude` there): it is the clock, and where the reports arrive.
460
+ To have the grooming itself done on Codex, turn it on with `--run-on codex`, and
461
+ give the runs their model and effort:
462
+
463
+ ```sh
464
+ obk groom --bots /path/to/my-bots --on --at 04:00 --run-on codex --model gpt-6-sol --effort medium
465
+ ```
466
+
467
+ Each fire then makes a temporary Codex session of the grooming session's, named
468
+ `groom-<date and time>`, which does the grooming, mails its report back, and is
469
+ retired; the grooming session sends the report on to the management session. A
470
+ run an earlier fire left behind is retired at the next one.
458
471
 
459
472
  ## When something is wrong
460
473
 
@@ -485,6 +498,10 @@ What it looks for:
485
498
  brings it back; when the book names no conversation for it, restart would
486
499
  refuse, and the finding says to close the tab in Orca and run
487
500
  `obk up … --session`. A tab the kit cannot read is never called down;
501
+ - **a Claude session on an address the kit did not make**: such as the bare
502
+ `<bot>.<session>` every fleet's sessions had before 0.10.0, which a session of
503
+ another fleet can write to. Its next start through the kit gives it one of its
504
+ own, so the finding names the `obk restart … --session` that does it;
488
505
  - **leftovers no book owns**: an Orca project inside your bots folder with no
489
506
  bot in it, a tab in a bot's project that the book does not name, a start
490
507
  prompt written for a session that has gone, a clone of a skills source you no
@@ -598,7 +615,9 @@ real Orca and the real harnesses on your own machine. No CI runner can do that,
598
615
  so these are run by hand before a change that touches Orca or a harness is
599
616
  merged. A system test touches only what it creates and removes it afterwards,
600
617
  except the mailbox Runs Orca gives no way to delete, which the run names; it
601
- never closes a tab it did not open.
618
+ never closes a tab it did not open. The trust its harnesses write into your
619
+ `~/.codex/config.toml` and `~/.claude.json` for the run's own throwaway folders
620
+ is taken out again after the run, and named; nothing else in them is changed.
602
621
 
603
622
  They run on the machine the command is typed on, so the command will not start
604
623
  them by itself. On its own it says what it is about to drive — whose machine,
package/SETUP.md CHANGED
@@ -194,10 +194,10 @@ waiting for:
194
194
  | On screen | Send | Which is | Proven on |
195
195
  |---|---|---|---|
196
196
  | Claude Code's folder trust list | `\x1b[B\r` | down, then return: its selection starts on **No, exit** | Claude Code 2.1.283 |
197
- | Codex's directory trust, `1. Trust and continue` (older: `1. Yes, continue`) | `\r` | return: its selection starts on **Trust and continue** | Codex 0.158.0 |
198
- | Codex's `Hooks need review` | `\x1b[B\r` | down, then return, to **Trust all and continue**; if the selection already starts there, return alone | Codex 0.158.0 |
199
- | Codex's `/new`: `Where should the new conversation run?` | `\r` | return: its selection starts on **Current checkout** (bot home) | Codex 0.158.0 |
200
- | Codex's update offer, `1. Update now` | `\r` | return: its selection starts on **Update now**, which accepts it | Codex 0.156.1; seen on 0.157.1 (offering 0.158.0) with the selection on **Update now**, not pressed; 0.158.0 has had no newer release to offer |
197
+ | Codex's directory trust, `1. Trust and continue` (older: `1. Yes, continue`) | `\r` | return: its selection starts on **Trust and continue** | Codex 0.160.0 |
198
+ | Codex's `Hooks need review` | `\x1b[B\r` | down, then return, to **Trust all and continue**; if the selection already starts there, return alone | Codex 0.160.0 |
199
+ | Codex's `/new`: `Where should the new conversation run?` | `\r` | return: its selection starts on **Current checkout** (bot home) | Codex 0.160.0 |
200
+ | Codex's update offer, `1. Update now` | `\r` | return: its selection starts on **Update now**, which accepts it | Codex 0.156.1; seen on 0.157.1 (offering 0.158.0) with the selection on **Update now**, not pressed; 0.158.0 offered 0.160.0, taken on 2026-10-02 by Bot Father's restarts |
201
201
  | `[oh-my-zsh] Would you like to update?` | `n` | they update their own shell | oh-my-zsh bf77e35 |
202
202
  | Claude Code's `Teach auto mode about your environment?` | `\x1b` | Esc, which cancels it (**Not now**). On 2.1.283 it is a form, not a list: `How you use Claude here`, `Also scan shell history`, `Also scan your other repos`, `Continue`, and `Enter to continue · Esc to cancel`. **Never send a return**: Enter is **Continue**, which starts a scan of the project, recent Claude sessions and, by default, the machine's shell history | Not yet proven: Esc cancels in Claude Code 2.1.283's code, not yet seen live (#370); the form was seen live twice on 2.1.283, in #261's live test and #239's live run 1 (#416); 2.1.278 showed a numbered list, answered with 2. Not now |
203
203
 
@@ -217,7 +217,7 @@ empty book and nothing says why.
217
217
  Codex's trust question applies to the **repository root**, which for a bot means
218
218
  the whole bots folder rather than the one bot. That is what they are agreeing to.
219
219
 
220
- Codex's `/new` question (seen on 0.156.1, 0.157.1 and 0.158.0) is always answered with the current checkout, which is the bot
220
+ Codex's `/new` question (seen on 0.156.1, 0.157.1, 0.158.0 and 0.160.0) is always answered with the current checkout, which is the bot
221
221
  home. The kit never makes a git worktree, so
222
222
  `2. New worktree` is never the answer.
223
223
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assuredloop/orca-bot-kit",
3
- "version": "0.18.0",
3
+ "version": "0.20.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,7 +35,8 @@
35
35
  "yaml": "2.9.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@stryker-mutator/core": "10.0.0"
38
+ "@stryker-mutator/core": "10.0.0",
39
+ "smol-toml": "1.9.0"
39
40
  },
40
41
  "overrides": {
41
42
  "typed-rest-client": {
@@ -29,6 +29,9 @@ below.
29
29
  hatches in the types, the lock reflex where nothing was meant to be shared,
30
30
  callers needing the internal rules), with deviations treated as signal and a
31
31
  few edge cases not condemning a design.
32
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
33
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
34
+ from; the revision actually read was not recorded)
32
35
  - **Cursor pstack**, `architect`'s `runner-prompt` further to the above.
33
36
  Grounding the design in what the code actually touches before sketching, and
34
37
  what a sketch is (types and signatures with unimplemented bodies, a reader
@@ -37,17 +40,26 @@ below.
37
40
  and trusting types inside; one source of truth per invariant, derived rather
38
41
  than kept in step; and asking what happens if an operation runs twice or
39
42
  crashes halfway.
43
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
44
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
45
+ from; the revision actually read was not recorded)
40
46
  - **Cursor pstack**, `figure-it-out` further to the above. Capturing the
41
47
  baseline before the change so the check reads as the old value against the
42
48
  new; verdicts of verified, not verified or inconclusive with inconclusive not
43
49
  being a pass; inspecting the artefact rather than a report of it; and
44
50
  suspecting the observation method when something passes too easily.
51
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
52
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
53
+ from; the revision actually read was not recorded)
45
54
  - **Cursor pstack**, `blast-radius` further to the above. Looking where a
46
55
  symbol search stops: the library's own source and its pinned version, when
47
56
  things run, the shape of what an interface returns, a column, a wire format,
48
57
  another language reading the same bytes, a feature flag; giving each risk a
49
58
  real likelihood and a real cost; and listing separately what was checked and
50
59
  cleared, since a search that finds nothing is still a result.
60
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
61
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
62
+ from; the revision actually read was not recorded)
51
63
  - **Cursor pstack**, `create-verification-skill`. The whole of making a thing
52
64
  runnable and drivable, which the owner asked to live inside this skill rather
53
65
  than have one of its own: interviewing the repository rather than the user
@@ -69,6 +81,9 @@ below.
69
81
  which that skill's own users praised most because an agent stops searching
70
82
  the codebase for where things are. Kept here in that reduced form rather than
71
83
  as its own generated directory.
84
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
85
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
86
+ from; the revision actually read was not recorded)
72
87
  - **Cursor pstack**, `principle-sequence-verifiable-units`, `figure-it-out`,
73
88
  `blast-radius`, `principle-foundational-thinking`, `principle-model-the-domain`,
74
89
  `principle-exhaust-the-design-space` and the `poteto-mode` planning playbooks.
@@ -90,6 +105,9 @@ below.
90
105
  cannot happen, ran it, reproduced it) with "listing the callers is not the
91
106
  job", the one fact a change is safe because of, and anything short of
92
107
  running it said rather than written up as settled.
108
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
109
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
110
+ from; the revision actually read was not recorded)
93
111
  - **mattpocock/skills**, `codebase-design` with `DEEPENING` and
94
112
  `DESIGN-IT-TWICE`, `domain-modeling` with its `ADR-FORMAT`, `prototype` and
95
113
  `to-tickets`. The three questions to put to an interface (fewer ways in,
@@ -116,6 +134,9 @@ below.
116
134
  the exception for a change that has to happen everywhere; and a prototype
117
135
  being throwaway code that answers a question, with the polish skipped on
118
136
  purpose.
137
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
138
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
139
+ from; the revision actually read was not recorded)
119
140
  - **mattpocock/skills**, `triage` with its `AGENT-BRIEF`, and `to-tickets`
120
141
  further to the above. Handing work over behavioural rather than procedural,
121
142
  what the system should do and not how, the builder exploring fresh and
@@ -132,6 +153,9 @@ below.
132
153
  it was turned down before, asking the reporter specific questions rather
133
154
  than for more information, and noting when a piece needs a person's
134
155
  judgement rather than being delegated.
156
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
157
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
158
+ from; the revision actually read was not recorded)
135
159
 
136
160
  Left behind on purpose: the multi-model arena and its runners, fixed model
137
161
  choices, the phase todolist and its ceremony, tracker and pull-request
@@ -173,11 +197,15 @@ Words were copied only from the two sources whose licences waive all rights:
173
197
  one or two pages, since nobody reads large documents; records numbered in
174
198
  sequence with numbers never reused; and a superseded record kept, because it
175
199
  is still worth knowing that it was the decision.
200
+ Read: 2026-09-24 (reconstructed: read by this date, when the entry was
201
+ written; the day it was read was not recorded)
176
202
  - **MADR 4.0.0** (adr.github.io/madr; MIT or CC0-1.0 at the reader's choice,
177
203
  taken here under CC0). The people who decided and the people consulted as
178
204
  fields of the record, "rejected" among the statuses, consequences written as
179
205
  good and bad, and a way to confirm the decision is kept (MADR's
180
206
  Confirmation, here "Checked by").
207
+ Revision: adr/madr@2475fe1973f66a12aaf58a91d8fa7b42c0f5ea3d (the 4.0.0 release
208
+ this entry names)
181
209
 
182
210
  Taken as ideas only, in this skill's own words, because their licences do not
183
211
  allow the text to be reused (all rights reserved unless noted):
@@ -193,23 +221,38 @@ allow the text to be reused (all rights reserved unless noted):
193
221
  decision; the confidence level; and the definition of done (evidence, at
194
222
  least two options compared on criteria, challenged and agreed, written and
195
223
  shared, a plan to check and revisit it).
224
+ Read: 2026-09-24 (reconstructed: read by this date, when the entry was
225
+ written; the day it was read was not recorded)
196
226
  - **Martin Fowler**, bliki "Architecture Decision Record". Writing the record
197
227
  as a way to bring disagreement into the open; most important first; the
198
228
  confidence and what should trigger a re-evaluation; an accepted record never
199
229
  reopened, only superseded.
230
+ Read: 2026-09-24 (reconstructed: read by this date, when the entry was
231
+ written; the day it was read was not recorded)
200
232
  - **AWS Prescriptive Guidance**, "Using architectural decision records…". A
201
233
  rejected record kept with its reason so the topic is not argued again; an
202
234
  accepted record not changed, a change being a new record noted in the
203
235
  record's change history.
236
+ Read: 2026-09-24 (reconstructed: read by this date, when the entry was
237
+ written; the day it was read was not recorded)
204
238
  - **Microsoft Azure Well-Architected Framework**, "Maintain an architecture
205
239
  decision record" (Microsoft Learn terms of use). Not editing accepted records
206
240
  but superseding them and linking the two; a record not being a design guide,
207
241
  standing on its own with detail linked; consequences never hidden.
242
+ Read: 2026-09-24 (reconstructed: read by this date, when the entry was
243
+ written; the day it was read was not recorded)
208
244
  - **Joel Parker Henderson**, `architecture-decision-record` (CC BY-NC-SA 4.0,
209
245
  which does not fit this use). Dating a fact that will change.
246
+ Revision:
247
+ joelparkerhenderson/architecture-decision-record@b1de91256a57110b655ff3572ce1fc41fbc2dac6
248
+ (reconstructed: the source's head when this entry was written, 2026-09-24; the
249
+ revision actually read was not recorded)
210
250
  - **adr-tools** (Nat Pryce; the tool is GPL-3.0, the content it adds to a
211
251
  project CC BY 4.0). Superseding changes only the old record's status, to a
212
252
  link to the new one.
253
+ Revision: npryce/adr-tools@b3279baf9be2207d1a4f4bbd608fd0b591c72aee
254
+ (reconstructed: the source's head when this entry was written, 2026-09-24; the
255
+ revision actually read was not recorded)
213
256
  - **The GDS Way**, "Documenting architecture decisions", and **GOV.UK**,
214
257
  "Architectural Decision Record Framework" (both Open Government Licence
215
258
  v3.0), and **Google Cloud Architecture Center**, "Architecture decision
@@ -218,6 +261,8 @@ allow the text to be reused (all rights reserved unless noted):
218
261
  names the decision rather than the problem, a superseded status with a link
219
262
  to the new record, records kept findable (GDS Way); and a change carrying the
220
263
  previous decision and why it changed (Google).
264
+ Read: 2026-09-24 (reconstructed: read by this date, when the entry was
265
+ written; the day it was read was not recorded)
221
266
 
222
267
  What the owner said, and how it shaped this part (issue #264, 2026-09-24): a
223
268
  record that partly replaces an older one replaces it with a new one, and he
@@ -44,6 +44,11 @@ hooks means (PRD 6.7).
44
44
 
45
45
  ## Ideas taken from material with no licence
46
46
 
47
+ - **The Grok Bot pages**, docs.x.ai/grok-bot and x.ai/bot/marketplace, as the
48
+ research pack's `grok-bot-lessons.md` gathers them.
49
+ Read: 2026-09-19 (as recorded in grok-bot-lessons.md, which fetched them that
50
+ day)
51
+
47
52
  The research pack's `grok-bot-lessons.md` gathers how one hosted bot product is
48
53
  run. Its material comes from a knowledge base and from that product's own
49
54
  marketplace and documentation pages. No licence is attached to those pages, and
@@ -288,9 +288,9 @@ otherwise `/Applications/Orca.app/Contents/Resources/bin/orca`. A bare
288
288
  | On screen | Send | Which is | Proven on |
289
289
  |---|---|---|---|
290
290
  | Claude Code's trust list | `\x1b[B\r` | down, return: off **No, exit** | Claude Code 2.1.283 |
291
- | Codex's `Trust this folder?` | `\r` | return: it starts on yes | Codex 0.158.0 |
292
- | Codex's `Hooks need review` | `\x1b[B\r` | **Trust all and continue** | Codex 0.158.0 |
293
- | Codex's `Where should the new conversation run?` | `\r` | **Current checkout** | Codex 0.158.0 |
291
+ | Codex's `Trust this folder?` | `\r` | return: it starts on yes | Codex 0.160.0 |
292
+ | Codex's `Hooks need review` | `\x1b[B\r` | **Trust all and continue** | Codex 0.160.0 |
293
+ | Codex's `Where should the new conversation run?` | `\r` | **Current checkout** | Codex 0.160.0 |
294
294
  | Codex's update offer, `1. Update now` | `\r` | **Update now**, where it starts | Codex 0.156.1 |
295
295
  | `[oh-my-zsh] Would you like to update?` | `n` | no: the user updates it | oh-my-zsh bf77e35 |
296
296
  | Claude Code's `Teach auto mode…` | `\x1b` | Esc: Not now; no return | Not yet proven, below |
@@ -302,7 +302,8 @@ return: on Codex's update offer that took the highlighted **Update now**,
302
302
  whatever the digit was. Codex's trust said `1. Yes, continue` on older
303
303
  versions. Its hooks review sometimes starts on `2` already: then return alone.
304
304
  Its update offer was proven on 0.156.1; 0.157.1 showed it with the selection on
305
- Update now, not pressed, and 0.158.0 has had no newer release to offer.
305
+ Update now, not pressed, and 0.158.0 offered 0.160.0, taken on 2026-10-02 by
306
+ Bot Father's restarts.
306
307
  Claude Code's `Teach auto mode` on 2.1.283 is a form, not a list, ending
307
308
  `Enter to continue · Esc to cancel`: never send it a return, since
308
309
  Enter is Continue, which scans the project, recent sessions and the machine's
@@ -313,10 +314,17 @@ question matters most. The kit's hook is how the book learns which
313
314
  conversation the session is running, and until it is answered the
314
315
  conversation has not started. Codex's trust applies to the repository root,
315
316
  which is the whole bots folder. Codex's `/new` may ask where the new
316
- conversation runs (0.156.1, 0.157.1 and 0.158.0 all did); the answer is
317
+ conversation runs (0.156.1, 0.157.1, 0.158.0 and 0.160.0 all did); the answer is
317
318
  always the current checkout, the bot home, and never `2. New worktree`:
318
319
  the kit never makes a git worktree.
319
320
 
321
+ The hooks review of a Codex temporary session you made yourself is the one
322
+ exception: answer it with `obk temp trust-hooks --bots <bots> --name
323
+ <session>`, not with the keys. It reads the screen, chooses **Trust all and
324
+ continue** only if the review is there, and checks that the review went. A
325
+ permission rule can allow that one command, where it cannot allow keys sent
326
+ into any tab.
327
+
320
328
  Where the kit says no session came up, the shell swallowed the launch line,
321
329
  usually while it was asking its own question. Answer the shell, then close
322
330
  that one tab (`<orca> terminal close --terminal <handle> --tab`) and run
@@ -20,6 +20,9 @@ with thanks:
20
20
  measuring before fixing a slow thing, the regression test at a correct seam
21
21
  and "no correct seam is itself the finding", redacting secrets from anything
22
22
  shown, and the list to clear before calling it done.
23
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
24
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
25
+ from; the revision actually read was not recorded)
23
26
  - **Waza**, `hunt`, through the verbatim passages in the research pack. The
24
27
  gate sentence and its form ("I believe the root cause is X because Y", named
25
28
  to a file, function, line or condition), the rule that the cause must explain
@@ -33,6 +36,8 @@ with thanks:
33
36
  re-read the path, and stopping after three failed hypotheses. The owner
34
37
  marked the gate sentence as worth borrowing in his own notes; the rest of
35
38
  `hunt` came in on the research's recommendation.
39
+ Revision: tw93/Waza@59323dee82b04fa8b9ad97a8ee503ca8aee7eb3c (as recorded in
40
+ the research pack's source-book-2.md, read 2026-09-19)
36
41
  - **Cursor pstack**, `principle-fix-root-causes` and the `poteto-mode`
37
42
  playbooks. Not adding guards to silence a crash, a workaround needing a
38
43
  paragraph meaning the code is wrong, checking for the pattern rather than the
@@ -58,6 +63,9 @@ with thanks:
58
63
  it not yet being a diagnosis; confirming against a paired capture or else
59
64
  calling it the strongest hypothesis the artefact supports; and proving the
60
65
  mechanism on the live process where it can still be reached.
66
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
67
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
68
+ from; the revision actually read was not recorded)
61
69
  - **obra/superpowers**, `systematic-debugging` with `root-cause-tracing` and
62
70
  `condition-based-waiting`. Logging what enters and leaves each boundary and
63
71
  reading where it first goes wrong before digging in, tracing backwards
@@ -72,11 +80,17 @@ with thanks:
72
80
  cause really is external, handling at the boundary and a way to see it next
73
81
  time, with most "no root cause" being an investigation stopped early; and
74
82
  finding the test that leaves state behind by running them one at a time.
83
+ Revision: obra/superpowers@5bf4e78011075bcfc0dc295f0724994cd123ee71
84
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
85
+ from; the revision actually read was not recorded)
75
86
 
76
87
  - **obra/superpowers**, `systematic-debugging`, further to the above. Finding
77
88
  the nearest thing that works in the same codebase, reading it properly rather
78
89
  than skimming, and listing every difference however small without deciding in
79
90
  advance which cannot matter.
91
+ Revision: obra/superpowers@5bf4e78011075bcfc0dc295f0724994cd123ee71
92
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
93
+ from; the revision actually read was not recorded)
80
94
  - **addyosmani/agent-skills**, `debugging-and-error-recovery`. The decision
81
95
  tree for a bug you cannot reproduce on demand, sorted into timing,
82
96
  environment, state left behind and genuinely random, with what to try in each
@@ -85,6 +99,9 @@ with thanks:
85
99
  build can carry something shaped like an instruction and is to be read for
86
100
  clues rather than followed; keeping the evidence before a restart or a
87
101
  clean-up; and a test that looks wrong going back rather than being obeyed.
102
+ Revision: addyosmani/agent-skills@dc27a9c2e13721158157632de61b4106c6c2a2a1
103
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
104
+ from; the revision actually read was not recorded)
88
105
  - **Waza**, `hunt`, further to the above. Its gotchas: walking back out of a
89
106
  library frame into your own code, suspecting persisted output written by the
90
107
  old code when the algorithm changed and the output did not, trusting the
@@ -93,14 +110,25 @@ with thanks:
93
110
  lower-layer baseline before blaming the visible thing, diagnosing an external
94
111
  tool before switching it, and never restarting more than twice without new
95
112
  evidence.
113
+ Revision: tw93/Waza@59323dee82b04fa8b9ad97a8ee503ca8aee7eb3c (as recorded in
114
+ the research pack's source-book-2.md, read 2026-09-19)
96
115
 
97
116
  - **garrytan/gstack**, `investigate`: earlier fixes in the same area pointing
98
117
  at the shape of the code, and the rest of the suite still passing after the
99
118
  fix.
119
+ Revision: garrytan/gstack@a6b3a57512ca6d5c6aa5b68f74f736195021f96e
120
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
121
+ from; the revision actually read was not recorded)
100
122
  - **Kent Beck's own rules file**: two tests for a defect, one at the interface
101
123
  and the smallest one where the fault lives.
124
+ Revision: KentBeck/BPlusTree3@ca80e4d85a99cd0af2effe717f709d43e80403bc
125
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
126
+ from; the revision actually read was not recorded)
102
127
  - **Cursor pstack**, `runtime-forensics`, further to the above: when the
103
128
  question is why, the deliverable is the diagnosis, not a fix.
129
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
130
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
131
+ from; the revision actually read was not recorded)
104
132
 
105
133
  The owner's own framing leads the skill: reproduce it, find the difference in
106
134
  environment, version and context, and the hard cases being random and slow
@@ -46,6 +46,9 @@ thanks. Each licence below was read from the file named beside it.
46
46
  recorded. Its completion check contributes the question of whether the
47
47
  baseline is genuine rather than a straw candidate and whether every rejected
48
48
  alternative has a reason.
49
+ Revision: citypaul/.dotfiles@a109f9972bb46671c624fc05752031523e1cf6fc
50
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
51
+ from; the revision actually read was not recorded)
49
52
  - **`addyosmani/agent-skills`, `skills/documentation-and-adrs`**: MIT,
50
53
  `addyosmani_agent-skills/LICENSE`, "Copyright (c) 2025 Addy Osmani". Writing
51
54
  a decision down when it would be expensive to reverse. Matching the
@@ -56,6 +59,9 @@ thanks. Each licence below was read from the file named beside it.
56
59
  giving the reason it was rejected. And the lifecycle: do not delete or edit
57
60
  an old decision when things change, write the next one and say which one it
58
61
  replaces, because the historical context is the part worth keeping.
62
+ Revision: addyosmani/agent-skills@dc27a9c2e13721158157632de61b4106c6c2a2a1
63
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
64
+ from; the revision actually read was not recorded)
59
65
  - **`addyosmani/agent-skills`, `skills/idea-refine`**: same licence. The
60
66
  machinery for alternatives that are actually different: the lenses for
61
67
  generating them, which this skill carries as asking what the opposite would
@@ -73,6 +79,9 @@ thanks. Each licence below was read from the file named beside it.
73
79
  those words. Its "not doing, and
74
80
  why" is the reason this skill treats the dropped options as a part of the
75
81
  memo rather than an appendix to it.
82
+ Revision: addyosmani/agent-skills@dc27a9c2e13721158157632de61b4106c6c2a2a1
83
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
84
+ from; the revision actually read was not recorded)
76
85
  - **`addyosmani/agent-skills`, `skills/doubt-driven-development`**: same
77
86
  licence. Checking your own conclusion: name the decision in two or three
78
87
  lines, because if you cannot get it that small you have a subject rather than
@@ -82,6 +91,9 @@ thanks. Each licence below was read from the file named beside it.
82
91
  what comes back as data rather than a verdict, re-reading the thing against
83
92
  each finding, since rubber-stamping a reviewer is the same failure as
84
93
  ignoring one.
94
+ Revision: addyosmani/agent-skills@dc27a9c2e13721158157632de61b4106c6c2a2a1
95
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
96
+ from; the revision actually read was not recorded)
85
97
  - **`citypaul/.dotfiles`, `claude/.claude/skills/double-check`**: MIT, the
86
98
  repository root licence above. How a finding is closed: push back with
87
99
  evidence and never by signalling which outcome you want, and treat an
@@ -91,6 +103,9 @@ thanks. Each licence below was read from the file named beside it.
91
103
  authoritative, or inferred. And its rule that severity is judged by the
92
104
  impact if it ships rather than by the effort to fix it or by the reviewer's
93
105
  own certainty.
106
+ Revision: citypaul/.dotfiles@a109f9972bb46671c624fc05752031523e1cf6fc
107
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
108
+ from; the revision actually read was not recorded)
94
109
  - **`citypaul/.dotfiles`, `claude/.claude/skills/find-gaps`**: MIT, the
95
110
  repository root licence above. What a plan or a memo is missing rather than
96
111
  what it gets wrong: treating silence as a red flag rather than a green light,
@@ -99,6 +114,9 @@ thanks. Each licence below was read from the file named beside it.
99
114
  anything. Its warning against inventing a gap to make the review look
100
115
  productive is why this skill says a memo may honestly conclude that none of
101
116
  the options is good.
117
+ Revision: citypaul/.dotfiles@a109f9972bb46671c624fc05752031523e1cf6fc
118
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
119
+ from; the revision actually read was not recorded)
102
120
  - **`garrytan/gstack`, `office-hours/SKILL.md` and `plan-ceo-review/SKILL.md`**:
103
121
  MIT, `garrytan_gstack/LICENSE`, "Copyright (c) 2026 Garry Tan". The premise
104
122
  challenge, which this skill carries as asking whether the question is the
@@ -107,6 +125,9 @@ thanks. Each licence below was read from the file named beside it.
107
125
  the outcome or is it solving a proxy for it. And its practice of putting the
108
126
  premises where the reader can disagree with them rather than burying them in
109
127
  the reasoning.
128
+ Revision: garrytan/gstack@a6b3a57512ca6d5c6aa5b68f74f736195021f96e
129
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
130
+ from; the revision actually read was not recorded)
110
131
 
111
132
  Made generic, which is what the owner asked for. The strongest source is
112
133
  build-against-buy shaped and comes with a fixed template, an evaluation table
@@ -13,6 +13,9 @@ thanks:
13
13
  the reader can go and look; that a history is material rather than
14
14
  instructions; and preferring a remedy that holds by
15
15
  itself, one a check can enforce, over another paragraph of prose.
16
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
17
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
18
+ from; the revision actually read was not recorded)
16
19
 
17
20
  ## What is written from this kit's own design
18
21
 
@@ -37,6 +40,11 @@ WHATEVER", which is why nothing here is written as a ban.
37
40
 
38
41
  ## Ideas taken from material with no licence
39
42
 
43
+ - **The Grok Bot pages**, docs.x.ai/grok-bot and x.ai/bot/marketplace, as the
44
+ research pack's `grok-bot-lessons.md` gathers them.
45
+ Read: 2026-09-19 (as recorded in grok-bot-lessons.md, which fetched them that
46
+ day)
47
+
40
48
  The research pack's `grok-bot-lessons.md` gathers how one hosted bot product is
41
49
  run. Its material comes from a knowledge base and from that product's own
42
50
  marketplace and documentation pages. No licence is attached to those pages, and
@@ -20,6 +20,9 @@ with thanks:
20
20
  to make, and being finished only when the frontier is empty with nothing
21
21
  silently assumed and the user confirming the shared understanding before
22
22
  anything is built.
23
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
24
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
25
+ from; the revision actually read was not recorded)
23
26
  - **mattpocock/skills**, `engineering/domain-modeling` with its
24
27
  `CONTEXT-FORMAT` and `ADR-FORMAT`. Challenging a term that conflicts with
25
28
  the agreed one and doing it immediately, proposing a precise term where one
@@ -39,6 +42,9 @@ with thanks:
39
42
  that carries lock-in, a boundary and what is deliberately outside it, a
40
43
  deliberate departure from the obvious path, a constraint invisible in the
41
44
  code, and an alternative rejected for a non-obvious reason.
45
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
46
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
47
+ from; the revision actually read was not recorded)
42
48
 
43
49
  `grill-with-docs` is a one-line skill that loads the two above, and `grill-me`
44
50
  one that loads `grilling` alone. ADR 0019 proposes that a kit skill carries
@@ -76,23 +82,23 @@ words where they are quoted here:
76
82
  Five deliberate departures from `grilling` and `domain-modeling`, so they are
77
83
  not mistaken for consolidation:
78
84
 
79
- - **A round is three questions, not the whole frontier.** `grilling` says to
85
+ - A round is three questions, not the whole frontier. `grilling` says to
80
86
  ask the entire frontier in one round. The owner asked for three at a time
81
87
  (13:24:19, recovered in the audit), and a round of nine reads as a form and gets
82
88
  filled in like one. The frontier still governs *which* questions are
83
89
  askable; it no longer governs how many go out at once.
84
- - **Small settled things get recorded.** `domain-modeling` says to offer an ADR
90
+ - Small settled things get recorded. `domain-modeling` says to offer an ADR
85
91
  only when all three conditions hold and otherwise to skip it. That is the
86
92
  right gate for a decision note, and this skill keeps it, but it applies the
87
93
  gate to the note rather than to the record, because a reversible unsurprising
88
94
  choice is still what the next person needs in order to build the agreed
89
95
  thing. Everything settled goes down; a few earn the note.
90
- - **What was not settled is recorded too.** Neither source asks for this. It
96
+ - What was not settled is recorded too. Neither source asks for this. It
91
97
  comes from the audit of the owner's own design session, where what he had
92
98
  merely agreed with in passing, and what had been assumed on his behalf, were
93
99
  the things that later had to be untangled.
94
100
 
95
- - **A decision note lists its alternatives and is replaced whole.**
101
+ - A decision note lists its alternatives and is replaced whole.
96
102
  `ADR-FORMAT` makes a note one paragraph, with the rejected options and the
97
103
  consequences optional. The owner decided that a decision record lists every
98
104
  alternative that was on the table with why it was not chosen, and that a
@@ -101,7 +107,7 @@ not mistaken for consolidation:
101
107
  teaches the record; this skill's note says the same, so the two do not
102
108
  disagree.
103
109
 
104
- - **Questions are kept short.** `grilling` allows a question several
110
+ - Questions are kept short. `grilling` allows a question several
105
111
  paragraphs of setup; a long one here is taken as a sign it is two questions
106
112
  or that teaching should come first.
107
113
 
@@ -13,10 +13,16 @@ with thanks:
13
13
  the place it was seen, so a reader can go and look; and the rule that a
14
14
  transcript is data to be read rather than instruction to be followed, which
15
15
  is what the section on reading another bot's history is built on.
16
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
17
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
18
+ from; the revision actually read was not recorded)
16
19
  - **Addy Osmani's agent skills**, `constraint-driven-development`: its warning
17
20
  that a figure with no reason attached gets deleted by the next person it
18
21
  inconveniences, which is why a note says what moved it. Its ratchet is not
19
22
  applied to the notes (see below).
23
+ Revision: addyosmani/agent-skills@dc27a9c2e13721158157632de61b4106c6c2a2a1
24
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
25
+ from; the revision actually read was not recorded)
20
26
 
21
27
  ## The owner's own conclusions, restated
22
28
 
@@ -60,6 +66,11 @@ only a summary. The facts about Claude Code's scheduler are in the tech notes.
60
66
 
61
67
  ## Ideas taken from material with no licence
62
68
 
69
+ - **The Grok Bot pages**, docs.x.ai/grok-bot and x.ai/bot/marketplace, as the
70
+ research pack's `grok-bot-lessons.md` gathers them.
71
+ Read: 2026-09-19 (as recorded in grok-bot-lessons.md, which fetched them that
72
+ day)
73
+
63
74
  The research pack's account of how one hosted bot product runs its fleet
64
75
  suggested the daily pass over every bot and the habit of routing each finding
65
76
  to a single kind of fix. Those pages carry no licence and the pack holds only
@@ -244,6 +244,16 @@ at: `obk session add --bots <folder> --bot bot-father --name grooming --model
244
244
  <m> --effort <e>`, with `--harness claude` where Bot Father runs on Codex, then
245
245
  `obk up`. Its launch line carries them, so they are what every run uses.
246
246
 
247
+ The runs can be done on Codex instead. The session stays this Claude Code one,
248
+ the clock and the reader, and `obk groom --on --at <HH:MM> --run-on codex
249
+ --model <m> --effort <e>` schedules it: each fire makes a temporary Codex
250
+ session, `groom-<date and time>`, with that model and effort, which does the
251
+ pass with this skill, mails its report to the grooming session and is retired
252
+ by it; the grooming session sends the report on to the management session. A
253
+ run an earlier fire left behind is retired at the next fire. If you are such a
254
+ run, do the pass, send the report as your task says, and stop: schedule
255
+ nothing and make no session.
256
+
247
257
  Do not schedule a pass nobody has watched. `obk groom --now` runs it once in its
248
258
  tab; read what it produced, and fix the run rather than the report. Then, after
249
259
  one explicit yes from the user who has read a run, `obk groom --on --at <HH:MM>`
@@ -15,6 +15,9 @@ with thanks:
15
15
  From its `docs/productivity/handoff.md`: the next agent takes the note as a
16
16
  contract and will not re-check it, so read it before handing it over and
17
17
  downgrade anything only assumed.
18
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
19
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
20
+ from; the revision actually read was not recorded)
18
21
  - **Cursor pstack**, the `poteto-mode` `pause-safely` playbook: stopping at a
19
22
  safe boundary by finishing or backing out of the current step and never
20
23
  stopping mid-edit in a known-broken state, starting nothing new and stopping
@@ -26,6 +29,9 @@ with thanks:
26
29
  conversation, the commits and whether the tree is clean, and the first action
27
30
  on resume ("this is a pause, not a final report"). Also its rule that a pause
28
31
  is explicit: on "keep going", do not pause.
32
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
33
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
34
+ from; the revision actually read was not recorded)
29
35
 
30
36
  Two additions are not from either source, both from an acceptance run of this
31
37
  skill: commit your own work and only your own, since the durable-work
@@ -22,6 +22,8 @@ contribute a piece each.
22
22
  scheduling for a reminder and verifying what was set, a line in a to-do file
23
23
  or a saved skill not being a scheduled reminder, and reporting a missing host
24
24
  capability instead of claiming something will run later.
25
+ Revision: guwenqing/orca-bot-kit@51a42a3e61711b0f33b00482657499de9afee16e (the
26
+ commit the `git show` above names)
25
27
  - **The research pack's `grok-bot-lessons.md`**, our own read of the owner's
26
28
  knowledge base on running a personal helper bot. "36 drafts queued, 0 sent":
27
29
  finish every reversible step and stop at the irreversible one (BNK-2920 §09,
@@ -29,13 +31,20 @@ contribute a piece each.
29
31
  (BNK-2921); here scoped to a routine that does work, since a plain reminder
30
32
  has nothing to run by hand. The time zone and the end date in a routine's
31
33
  checklist.
34
+ Revision: none (the kit's own research pack, not a published source)
32
35
  - **`mattpocock/skills`, `skills/in-progress/loop-me`** (MIT): do the most you
33
36
  can before involving the person, so they are asked once, late; and hand back
34
37
  something decision-ready that points at the thing rather than reproducing it.
38
+ Revision: mattpocock/skills@c55ee46073ed923f86ce59a5eb3b6d895095d1b7
39
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
40
+ from; the revision actually read was not recorded)
35
41
  - **Cursor `plugins`, `third_party/x/skills/x-chat`** (MIT, `third_party/x/
36
42
  LICENSE`, "Copyright (c) 2026 Cursor"): outbound text needs the person's
37
43
  approval unless they already said to send it ("reply that I'll be there"),
38
44
  and a vague "check my inbox" is not that.
45
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
46
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
47
+ from; the revision actually read was not recorded)
39
48
 
40
49
  Written differently from the old skill, on purpose: no fixed path (PRD 7.1
41
50
  assumes no way of working); a vague item stays on the list and is asked about,
@@ -37,6 +37,9 @@ thanks:
37
37
  to re-derive it, and a "verify from scratch" pass means treating it as
38
38
  untrustworthy when it is not; and a passing prior self-report is not the
39
39
  proof.
40
+ Revision: cursor/plugins@6ed0f7a9504f577d7529064103cecce9be7dfc5e
41
+ (reconstructed: the research pack's 2026-09-20 clone the skills were built
42
+ from; the revision actually read was not recorded)
40
43
 
41
44
  Made generic, which is what the owner asked for. The original names a fixed
42
45
  transcript path, a particular set of hosted sources and a parallel fan-out on