@assuredloop/orca-bot-kit 0.1.0 → 0.3.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 (90) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +548 -3
  3. package/SETUP.md +275 -0
  4. package/package.json +32 -13
  5. package/rules/evidence.md +15 -0
  6. package/rules/finishing.md +23 -0
  7. package/rules/limits.md +18 -0
  8. package/rules/mail.md +17 -0
  9. package/rules/profiles.md +9 -0
  10. package/rules/review.md +14 -0
  11. package/rules/scope.md +22 -0
  12. package/rules/simple.md +14 -0
  13. package/rules/talk.md +13 -0
  14. package/rules/tests-first.md +17 -0
  15. package/rules/the-ask.md +19 -0
  16. package/skills/obk-arch/LICENSES.md +52 -0
  17. package/skills/obk-arch/NOTICE.md +242 -0
  18. package/skills/obk-arch/SKILL.md +598 -0
  19. package/skills/obk-bot-building/LICENSES.md +21 -0
  20. package/skills/obk-bot-building/NOTICE.md +113 -0
  21. package/skills/obk-bot-building/SKILL.md +312 -0
  22. package/skills/obk-debugging/LICENSES.md +67 -0
  23. package/skills/obk-debugging/NOTICE.md +115 -0
  24. package/skills/obk-debugging/SKILL.md +434 -0
  25. package/skills/obk-decision-memo/LICENSES.md +49 -0
  26. package/skills/obk-decision-memo/NOTICE.md +181 -0
  27. package/skills/obk-decision-memo/SKILL.md +241 -0
  28. package/skills/obk-finops/LICENSES.md +19 -0
  29. package/skills/obk-finops/NOTICE.md +77 -0
  30. package/skills/obk-finops/SKILL.md +148 -0
  31. package/skills/obk-fleet-review/LICENSES.md +52 -0
  32. package/skills/obk-fleet-review/NOTICE.md +104 -0
  33. package/skills/obk-fleet-review/SKILL.md +256 -0
  34. package/skills/obk-grilling/LICENSES.md +42 -0
  35. package/skills/obk-grilling/NOTICE.md +111 -0
  36. package/skills/obk-grilling/SKILL.md +221 -0
  37. package/skills/obk-grooming/LICENSES.md +52 -0
  38. package/skills/obk-grooming/NOTICE.md +111 -0
  39. package/skills/obk-grooming/SKILL.md +222 -0
  40. package/skills/obk-handoff/LICENSES.md +45 -0
  41. package/skills/obk-handoff/NOTICE.md +51 -0
  42. package/skills/obk-handoff/SKILL.md +119 -0
  43. package/skills/obk-personal-facilitation/LICENSES.md +53 -0
  44. package/skills/obk-personal-facilitation/NOTICE.md +62 -0
  45. package/skills/obk-personal-facilitation/SKILL.md +86 -0
  46. package/skills/obk-recall/LICENSES.md +42 -0
  47. package/skills/obk-recall/NOTICE.md +53 -0
  48. package/skills/obk-recall/SKILL.md +129 -0
  49. package/skills/obk-researching/LICENSES.md +67 -0
  50. package/skills/obk-researching/NOTICE.md +170 -0
  51. package/skills/obk-researching/SKILL.md +269 -0
  52. package/skills/obk-reviewing/LICENSES.md +66 -0
  53. package/skills/obk-reviewing/NOTICE.md +58 -0
  54. package/skills/obk-reviewing/SKILL.md +411 -0
  55. package/skills/obk-tdd/LICENSES.md +68 -0
  56. package/skills/obk-tdd/NOTICE.md +54 -0
  57. package/skills/obk-tdd/SKILL.md +547 -0
  58. package/skills/obk-tdd/mutation-tools.md +80 -0
  59. package/skills/obk-teach/LICENSES.md +42 -0
  60. package/skills/obk-teach/NOTICE.md +65 -0
  61. package/skills/obk-teach/SKILL.md +106 -0
  62. package/skills/obk-why/LICENSES.md +42 -0
  63. package/skills/obk-why/NOTICE.md +74 -0
  64. package/skills/obk-why/SKILL.md +180 -0
  65. package/skills/obk-writing/LICENSES.md +272 -0
  66. package/skills/obk-writing/NOTICE.md +161 -0
  67. package/skills/obk-writing/SKILL.md +254 -0
  68. package/src/book.js +268 -0
  69. package/src/bot.js +451 -0
  70. package/src/cli.js +1169 -0
  71. package/src/conversations.js +150 -0
  72. package/src/groom.js +159 -0
  73. package/src/health.js +309 -0
  74. package/src/hooks.js +257 -0
  75. package/src/init.js +314 -0
  76. package/src/launch.js +299 -0
  77. package/src/message.js +402 -0
  78. package/src/orca.js +362 -0
  79. package/src/pause.js +63 -0
  80. package/src/record.js +209 -0
  81. package/src/restart.js +193 -0
  82. package/src/retire.js +92 -0
  83. package/src/roster.js +71 -0
  84. package/src/rules.js +408 -0
  85. package/src/skills.js +630 -0
  86. package/src/sources.js +371 -0
  87. package/src/up.js +500 -0
  88. package/src/usage.js +401 -0
  89. package/bin/okb.js +0 -4
  90. package/src/index.js +0 -11
@@ -0,0 +1,242 @@
1
+ <!-- Attribution for the sources this skill was built from. Kept out of
2
+ SKILL.md so it is not read into context on every use; it travels with
3
+ the skill directory, which is what the licences require. -->
4
+
5
+ # Sources and licences
6
+
7
+ The skill `obk-arch` was consolidated for this kit from these, with thanks.
8
+ The Cursor pstack and mattpocock/skills material is MIT; for the decision
9
+ record sources, see the note on licences under "Keep a record of a decision"
10
+ below.
11
+
12
+ - **Cursor pstack**, `architect` with its `runner-prompt`, `design-red-flags`
13
+ and `rationale-template` references. Writing the caller's usage and two or
14
+ three real call sites before the types, with the usage as the specification
15
+ and the sketch reconciled to it; data structures first with every dominant
16
+ access pattern traced through the proposed shape, and "we'll add an index
17
+ later" meaning the shape is wrong now; designing it twice with at least two
18
+ structurally distinct whole-shape candidates before synthesis; comparing on
19
+ interface depth; the red flags (callers coordinating several methods for one
20
+ operation, options exposing internal stages, learning the interface not
21
+ saving you from learning the implementation, information leakage, temporal
22
+ decomposition, pass-through methods); the rationale in the form "we accept X
23
+ in exchange for Y" with at least one alternative and why it lost, or "the
24
+ only viable shape, because..." where the constraints forced it (from its
25
+ `rationale-template`); keeping candidates genuinely apart rather than
26
+ converging on a safe middle (from `runner-prompt`); naming
27
+ anything a later reader might take for an oversight; and the scrap tells (the
28
+ repeated workaround, unrelated edge cases each needing a branch, escape
29
+ hatches in the types, the lock reflex where nothing was meant to be shared,
30
+ callers needing the internal rules), with deviations treated as signal and a
31
+ few edge cases not condemning a design.
32
+ - **Cursor pstack**, `architect`'s `runner-prompt` further to the above.
33
+ Grounding the design in what the code actually touches before sketching, and
34
+ what a sketch is (types and signatures with unimplemented bodies, a reader
35
+ able to trace input to output from the signatures alone); encoding invariants
36
+ in types ahead of runtime checks ahead of comments; validating at boundaries
37
+ and trusting types inside; one source of truth per invariant, derived rather
38
+ than kept in step; and asking what happens if an operation runs twice or
39
+ crashes halfway.
40
+ - **Cursor pstack**, `figure-it-out` further to the above. Capturing the
41
+ baseline before the change so the check reads as the old value against the
42
+ new; verdicts of verified, not verified or inconclusive with inconclusive not
43
+ being a pass; inspecting the artefact rather than a report of it; and
44
+ suspecting the observation method when something passes too easily.
45
+ - **Cursor pstack**, `blast-radius` further to the above. Looking where a
46
+ symbol search stops: the library's own source and its pinned version, when
47
+ things run, the shape of what an interface returns, a column, a wire format,
48
+ another language reading the same bytes, a feature flag; giving each risk a
49
+ real likelihood and a real cost; and listing separately what was checked and
50
+ cleared, since a search that finds nothing is still a result.
51
+ - **Cursor pstack**, `create-verification-skill`. The whole of making a thing
52
+ runnable and drivable, which the owner asked to live inside this skill rather
53
+ than have one of its own: interviewing the repository rather than the user
54
+ about surface, how it starts and how you know it is ready, how to drive it
55
+ without a person, what evidence can be captured, and whether two can run side
56
+ by side; the read-only check that says whether an instance is worth driving;
57
+ the proof standards (the real user path rather than an internal setter or a
58
+ test-only endpoint, the action and the resulting state rather than the final
59
+ screen, side effects verified alongside what is visible, stand-ins only where
60
+ a production boundary already isolates the thing); finding out what a dry run
61
+ actually skips by observing rather than trusting its name; cleanup that
62
+ removes what the run started and never the evidence, killing what you started
63
+ rather than by name; and running the instructions once end to end, because
64
+ something never executed is a draft rather than a deliverable. Also fixing,
65
+ or saying precisely what stopped, a checkout that does not build or start
66
+ before writing the recipe against it,
67
+ preferring stable handles over positions and coordinates, and the feature map
68
+ (a short list of what the thing does for someone, one entry per feature),
69
+ which that skill's own users praised most because an agent stops searching
70
+ the codebase for where things are. Kept here in that reduced form rather than
71
+ as its own generated directory.
72
+ - **Cursor pstack**, `principle-sequence-verifiable-units`, `figure-it-out`,
73
+ `blast-radius`, `principle-foundational-thinking`, `principle-model-the-domain`,
74
+ `principle-exhaust-the-design-space` and the `poteto-mode` planning playbooks.
75
+ Ordering work as small units each ending in a state you can check and not
76
+ advancing until it is green, with the reason (a break caught at the unit that
77
+ caused it is cheap, one caught after a batch is buried); done as a falsifiable
78
+ predicate stated before the run and never relaxed to declare victory (the
79
+ last from the `autonomous-run` playbook);
80
+ sequencing the riskiest unknown first; every box naming the evidence that
81
+ checks it, ticked only when that evidence exists; skipping the plan when the
82
+ change is one or two files with an obvious approach; settling an open
83
+ question by prototype before writing; data structures first with types and
84
+ data converging; a structure that carries the domain (a state machine, a
85
+ lookup table, a typed object) making invalid states impossible and deleting
86
+ branches, and the other side, not forcing an abstraction that removes no
87
+ branch, no duplicated rule and no invalid state, with the tell that the
88
+ modelling was skipped; the cases where exploring the design space is not worth it; and the
89
+ blast-radius ladder (said so, pointed at the line, showed the bad case
90
+ cannot happen, ran it, reproduced it) with "listing the callers is not the
91
+ job", the one fact a change is safe because of, and anything short of
92
+ running it said rather than written up as settled.
93
+ - **mattpocock/skills**, `codebase-design` with `DEEPENING` and
94
+ `DESIGN-IT-TWICE`, `domain-modeling` with its `ADR-FORMAT`, `prototype` and
95
+ `to-tickets`. The three questions to put to an interface (fewer ways in,
96
+ simpler arguments, more hidden behind it) and the interface as everything a
97
+ caller must know; the three conditions that must all hold before a decision
98
+ earns a lasting record of its own
99
+ (hard to reverse, surprising without the context, and the result of a real
100
+ trade-off) with what each one rules out; from `domain-modeling`, sharpening
101
+ a term that is doing too much work, forcing a boundary open with a concrete
102
+ scenario, and checking a claim about the domain against the code; from
103
+ `prototype`, being trivial to start, keeping nothing between runs, showing
104
+ the state after every action, and keeping only the decision it produced;
105
+ from `DESIGN-IT-TWICE`, combining the best of the candidates; the deletion
106
+ test,
107
+ the interface being the test surface, and one adapter meaning a hypothetical
108
+ seam against two meaning a real one; designing for testability by accepting
109
+ dependencies rather than creating them, returning results rather than causing
110
+ effects, and keeping the surface small; the four constraints that make
111
+ candidates genuinely different; how the dependency decides the way you test
112
+ across a seam, and "replace, don't layer" with the old shallow tests deleted
113
+ once tests exist at the deeper interface; vertical slices that cut a narrow
114
+ but complete path through every layer, each demoable on its own and sized to
115
+ one fresh context, with prefactoring first; expand, migrate and contract as
116
+ the exception for a change that has to happen everywhere; and a prototype
117
+ being throwaway code that answers a question, with the polish skipped on
118
+ purpose.
119
+ - **mattpocock/skills**, `triage` with its `AGENT-BRIEF`, and `to-tickets`
120
+ further to the above. Handing work over behavioural rather than procedural,
121
+ what the system should do and not how, the builder exploring fresh and
122
+ making their own decisions; durable rather than precise, naming types,
123
+ contracts and behaviours and never file paths or line numbers, because the
124
+ code moves while the work waits; acceptance criteria that can each be
125
+ checked on their own; saying what is out of scope so the builder does not
126
+ gold-plate; the one exception of a prototype's snippet that encodes a
127
+ decision more precisely than prose (from `to-tickets`); and, before handing
128
+ a report on, verifying the claim (reproducing it from the reporter's steps
129
+ and saying whether it was confirmed, failed or lacked detail, a confirmed one
130
+ making a much stronger brief), searching for it by the concept rather than
131
+ the reporter's wording to see whether it already exists, checking whether
132
+ it was turned down before, asking the reporter specific questions rather
133
+ than for more information, and noting when a piece needs a person's
134
+ judgement rather than being delegated.
135
+
136
+ Left behind on purpose: the multi-model arena and its runners, fixed model
137
+ choices, the phase todolist and its ceremony, tracker and pull-request
138
+ machinery, the generated report formats, and the trigger that fires a design
139
+ review on any change crossing a function boundary; from `triage`, the labels,
140
+ the state machine, the brief template, the out-of-scope folder, the grilling
141
+ step and the AI disclaimer. This skill is reached for when there is a shape
142
+ to get wrong, not on every change.
143
+
144
+ What the owner said, and how it shaped this: he asked for a very light part on
145
+ what is wanted and on dividing the work, leaving the details and the tracking
146
+ to the user (research-pack dialogue, 2026-09-19 19:09). The five items of the
147
+ note are the proposal he was given then; three further items that had been
148
+ added since, with no source behind them, are gone. He wanted the design to
149
+ include a clear effort on the big test step so the app is runnable and
150
+ testable (2026-09-19 18:54, and 2026-09-20 02:21), which is why that part stays in full. He agreed
151
+ that the source's strict vocabulary be dropped for plain words (18:50), so the
152
+ list of defined terms is gone and the ideas stay. He did not want a
153
+ blast-radius skill of its own (18:08), so what is kept of it is a short part.
154
+ A small reshaping being part of the change follows PRD 7.3. He asked that work
155
+ be handed over by intention, without micro-management or baby steps, with
156
+ only brief research: enough to validate an issue, above all one reported from
157
+ outside, and to triage it (issue #263, 2026-09-24). That is the part on
158
+ handing a piece over, and why its research stops there.
159
+
160
+ ## Keep a record of a decision
161
+
162
+ Words were copied only from the two sources whose licences waive all rights:
163
+
164
+ - **Michael Nygard, "Documenting Architecture Decisions"** (Cognitect blog,
165
+ 2011-11-15; CC0 1.0, as stated on the page). The reader who can only
166
+ blindly accept or blindly change a decision whose reasons are lost; one
167
+ decision per record, the kinds of decision that earn one (structure,
168
+ non-functional characteristics, dependencies, interfaces, construction
169
+ techniques); context as the forces at play, technological, political, social
170
+ and project local, in tension and described value-neutrally; the decision in
171
+ full sentences and the active voice, "We will…"; all consequences, not just
172
+ the positive ones; bullets only for layout, never an excuse for fragments;
173
+ one or two pages, since nobody reads large documents; records numbered in
174
+ sequence with numbers never reused; and a superseded record kept, because it
175
+ is still worth knowing that it was the decision.
176
+ - **MADR 4.0.0** (adr.github.io/madr; MIT or CC0-1.0 at the reader's choice,
177
+ taken here under CC0). The people who decided and the people consulted as
178
+ fields of the record, "rejected" among the statuses, consequences written as
179
+ good and bad, and a way to confirm the decision is kept (MADR's
180
+ Confirmation, here "Checked by").
181
+
182
+ Taken as ideas only, in this skill's own words, because their licences do not
183
+ allow the text to be reused (all rights reserved unless noted):
184
+
185
+ - **Olaf Zimmermann**, ozimmer.ch: "How to create Architectural Decision
186
+ Records (ADRs) — and how not to", "How to review…", "A Definition of Done for
187
+ Architectural Decision Making" and "Ten Common Mistakes in Architectural
188
+ Decision Records". The ways a record goes wrong (only upsides, a straw-man
189
+ alternative, hidden costs, a sales tone, one option and one time frame, a
190
+ record carrying a whole architecture or a design, criteria reverse-engineered
191
+ from the preferred option, a decision section that repeats the title,
192
+ consequences only for the code); a record for each stage of a staged
193
+ decision; the confidence level; and the definition of done (evidence, at
194
+ least two options compared on criteria, challenged and agreed, written and
195
+ shared, a plan to check and revisit it).
196
+ - **Martin Fowler**, bliki "Architecture Decision Record". Writing the record
197
+ as a way to bring disagreement into the open; most important first; the
198
+ confidence and what should trigger a re-evaluation; an accepted record never
199
+ reopened, only superseded.
200
+ - **AWS Prescriptive Guidance**, "Using architectural decision records…". A
201
+ rejected record kept with its reason so the topic is not argued again; an
202
+ accepted record not changed, a change being a new record noted in the
203
+ record's change history.
204
+ - **Microsoft Azure Well-Architected Framework**, "Maintain an architecture
205
+ decision record" (Microsoft Learn terms of use). Not editing accepted records
206
+ but superseding them and linking the two; a record not being a design guide,
207
+ standing on its own with detail linked; consequences never hidden.
208
+ - **Joel Parker Henderson**, `architecture-decision-record` (CC BY-NC-SA 4.0,
209
+ which does not fit this use). Dating a fact that will change.
210
+ - **adr-tools** (Nat Pryce; the tool is GPL-3.0, the content it adds to a
211
+ project CC BY 4.0). Superseding changes only the old record's status, to a
212
+ link to the new one.
213
+ - **The GDS Way**, "Documenting architecture decisions", and **GOV.UK**,
214
+ "Architectural Decision Record Framework" (both Open Government Licence
215
+ v3.0), and **Google Cloud Architecture Center**, "Architecture decision
216
+ records overview" (CC BY 4.0). Their licences would allow reuse with
217
+ attribution, but no text of theirs is used. The ideas taken: a title that
218
+ names the decision rather than the problem, a superseded status with a link
219
+ to the new record, records kept findable (GDS Way); and a change carrying the
220
+ previous decision and why it changed (Google).
221
+
222
+ What the owner said, and how it shaped this part (issue #264, 2026-09-24): a
223
+ record that partly replaces an older one replaces it with a new one, and he
224
+ wanted one good format; then, on the proposed format, "I need full history of
225
+ change history and the context. For the decision made I also need alternative
226
+ listed and why they are not." So a change to any part of an accepted record is
227
+ a new record that replaces the old one whole and restates what still holds,
228
+ the old record changing only its status; the context is given in full; every
229
+ alternative is listed with why it was not chosen; and each record carries the
230
+ dated history of every record it replaces. No source asks for what still holds
231
+ to be restated; that is his rule. Most sources back superseding over amending
232
+ in place; Joel Parker Henderson and Google prefer adjusting the record with
233
+ the history kept, and the GDS Way allows clarifications in place until the
234
+ decision is acted on, which is where the note on drafts and on spelling fixes
235
+ comes from. The format is the default, and a project's own format wins, since
236
+ PRD 7.1 leaves the user free in how they keep documents. Left behind: review
237
+ boards, decision levels and approval steps (the GOV.UK framework, AWS's review
238
+ meetings), which are process; ADR tooling; and the Y-statement and other
239
+ templates.
240
+
241
+ The three conditions for a lasting record, from mattpocock/skills above, moved
242
+ here from "Write down what you chose" so they are kept in one place.