@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.
- package/LICENSE +21 -0
- package/README.md +548 -3
- package/SETUP.md +275 -0
- package/package.json +32 -13
- package/rules/evidence.md +15 -0
- package/rules/finishing.md +23 -0
- package/rules/limits.md +18 -0
- package/rules/mail.md +17 -0
- package/rules/profiles.md +9 -0
- package/rules/review.md +14 -0
- package/rules/scope.md +22 -0
- package/rules/simple.md +14 -0
- package/rules/talk.md +13 -0
- package/rules/tests-first.md +17 -0
- package/rules/the-ask.md +19 -0
- package/skills/obk-arch/LICENSES.md +52 -0
- package/skills/obk-arch/NOTICE.md +242 -0
- package/skills/obk-arch/SKILL.md +598 -0
- package/skills/obk-bot-building/LICENSES.md +21 -0
- package/skills/obk-bot-building/NOTICE.md +113 -0
- package/skills/obk-bot-building/SKILL.md +312 -0
- package/skills/obk-debugging/LICENSES.md +67 -0
- package/skills/obk-debugging/NOTICE.md +115 -0
- package/skills/obk-debugging/SKILL.md +434 -0
- package/skills/obk-decision-memo/LICENSES.md +49 -0
- package/skills/obk-decision-memo/NOTICE.md +181 -0
- package/skills/obk-decision-memo/SKILL.md +241 -0
- package/skills/obk-finops/LICENSES.md +19 -0
- package/skills/obk-finops/NOTICE.md +77 -0
- package/skills/obk-finops/SKILL.md +148 -0
- package/skills/obk-fleet-review/LICENSES.md +52 -0
- package/skills/obk-fleet-review/NOTICE.md +104 -0
- package/skills/obk-fleet-review/SKILL.md +256 -0
- package/skills/obk-grilling/LICENSES.md +42 -0
- package/skills/obk-grilling/NOTICE.md +111 -0
- package/skills/obk-grilling/SKILL.md +221 -0
- package/skills/obk-grooming/LICENSES.md +52 -0
- package/skills/obk-grooming/NOTICE.md +111 -0
- package/skills/obk-grooming/SKILL.md +222 -0
- package/skills/obk-handoff/LICENSES.md +45 -0
- package/skills/obk-handoff/NOTICE.md +51 -0
- package/skills/obk-handoff/SKILL.md +119 -0
- package/skills/obk-personal-facilitation/LICENSES.md +53 -0
- package/skills/obk-personal-facilitation/NOTICE.md +62 -0
- package/skills/obk-personal-facilitation/SKILL.md +86 -0
- package/skills/obk-recall/LICENSES.md +42 -0
- package/skills/obk-recall/NOTICE.md +53 -0
- package/skills/obk-recall/SKILL.md +129 -0
- package/skills/obk-researching/LICENSES.md +67 -0
- package/skills/obk-researching/NOTICE.md +170 -0
- package/skills/obk-researching/SKILL.md +269 -0
- package/skills/obk-reviewing/LICENSES.md +66 -0
- package/skills/obk-reviewing/NOTICE.md +58 -0
- package/skills/obk-reviewing/SKILL.md +411 -0
- package/skills/obk-tdd/LICENSES.md +68 -0
- package/skills/obk-tdd/NOTICE.md +54 -0
- package/skills/obk-tdd/SKILL.md +547 -0
- package/skills/obk-tdd/mutation-tools.md +80 -0
- package/skills/obk-teach/LICENSES.md +42 -0
- package/skills/obk-teach/NOTICE.md +65 -0
- package/skills/obk-teach/SKILL.md +106 -0
- package/skills/obk-why/LICENSES.md +42 -0
- package/skills/obk-why/NOTICE.md +74 -0
- package/skills/obk-why/SKILL.md +180 -0
- package/skills/obk-writing/LICENSES.md +272 -0
- package/skills/obk-writing/NOTICE.md +161 -0
- package/skills/obk-writing/SKILL.md +254 -0
- package/src/book.js +268 -0
- package/src/bot.js +451 -0
- package/src/cli.js +1169 -0
- package/src/conversations.js +150 -0
- package/src/groom.js +159 -0
- package/src/health.js +309 -0
- package/src/hooks.js +257 -0
- package/src/init.js +314 -0
- package/src/launch.js +299 -0
- package/src/message.js +402 -0
- package/src/orca.js +362 -0
- package/src/pause.js +63 -0
- package/src/record.js +209 -0
- package/src/restart.js +193 -0
- package/src/retire.js +92 -0
- package/src/roster.js +71 -0
- package/src/rules.js +408 -0
- package/src/skills.js +630 -0
- package/src/sources.js +371 -0
- package/src/up.js +500 -0
- package/src/usage.js +401 -0
- package/bin/okb.js +0 -4
- 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.
|