ramstack 0.1.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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/agents/comment-sicko.md +32 -0
  4. package/agents/poteto-agent.md +9 -0
  5. package/cli/rstack.mjs +539 -0
  6. package/package.json +29 -0
  7. package/skills/architect/README.md +25 -0
  8. package/skills/architect/SKILL.md +83 -0
  9. package/skills/architect/agents/openai.yaml +5 -0
  10. package/skills/architect/references/design-red-flags.md +33 -0
  11. package/skills/architect/references/rationale-template.md +35 -0
  12. package/skills/architect/references/runner-prompt.md +20 -0
  13. package/skills/arena/README.md +21 -0
  14. package/skills/arena/SKILL.md +71 -0
  15. package/skills/arena/agents/openai.yaml +5 -0
  16. package/skills/automate-me/README.md +21 -0
  17. package/skills/automate-me/SKILL.md +109 -0
  18. package/skills/automate-me/agents/openai.yaml +5 -0
  19. package/skills/blast-radius/README.md +21 -0
  20. package/skills/blast-radius/SKILL.md +50 -0
  21. package/skills/blast-radius/agents/openai.yaml +5 -0
  22. package/skills/bro/README.md +16 -0
  23. package/skills/bro/SKILL.md +7 -0
  24. package/skills/bro/agents/openai.yaml +5 -0
  25. package/skills/create-verification-skill/README.md +22 -0
  26. package/skills/create-verification-skill/SKILL.md +44 -0
  27. package/skills/create-verification-skill/agents/openai.yaml +5 -0
  28. package/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  29. package/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  30. package/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  31. package/skills/figure-it-out/README.md +22 -0
  32. package/skills/figure-it-out/SKILL.md +55 -0
  33. package/skills/figure-it-out/agents/openai.yaml +5 -0
  34. package/skills/how/README.md +25 -0
  35. package/skills/how/SKILL.md +134 -0
  36. package/skills/how/agents/openai.yaml +3 -0
  37. package/skills/how/references/critic-prompt.md +59 -0
  38. package/skills/how/references/critique-rubric.md +58 -0
  39. package/skills/how/references/explainer-prompt.md +55 -0
  40. package/skills/how/references/explorer-prompt.md +52 -0
  41. package/skills/interrogate/README.md +21 -0
  42. package/skills/interrogate/SKILL.md +112 -0
  43. package/skills/interrogate/agents/openai.yaml +5 -0
  44. package/skills/interrogate/references/code-quality-review.md +47 -0
  45. package/skills/interrogate/references/lead-judgment.md +58 -0
  46. package/skills/interrogate/references/reviewer-prompt.md +72 -0
  47. package/skills/interrogate/references/rubric.md +77 -0
  48. package/skills/maintain-verification-skill/README.md +21 -0
  49. package/skills/maintain-verification-skill/SKILL.md +39 -0
  50. package/skills/maintain-verification-skill/agents/openai.yaml +5 -0
  51. package/skills/no-comments/README.md +22 -0
  52. package/skills/no-comments/SKILL.md +24 -0
  53. package/skills/no-comments/agents/openai.yaml +5 -0
  54. package/skills/poteto-mode/README.md +26 -0
  55. package/skills/poteto-mode/SKILL.md +140 -0
  56. package/skills/poteto-mode/agents/openai.yaml +5 -0
  57. package/skills/poteto-mode/playbooks/authoring-a-skill.md +13 -0
  58. package/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
  59. package/skills/poteto-mode/playbooks/autopilot-full.md +13 -0
  60. package/skills/poteto-mode/playbooks/autopilot-stack.md +16 -0
  61. package/skills/poteto-mode/playbooks/babysit.md +27 -0
  62. package/skills/poteto-mode/playbooks/bug-fix.md +17 -0
  63. package/skills/poteto-mode/playbooks/eval.md +27 -0
  64. package/skills/poteto-mode/playbooks/feature.md +21 -0
  65. package/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  66. package/skills/poteto-mode/playbooks/investigation.md +14 -0
  67. package/skills/poteto-mode/playbooks/multi-phase-plan.md +3 -0
  68. package/skills/poteto-mode/playbooks/opening-a-pr.md +11 -0
  69. package/skills/poteto-mode/playbooks/orchestrate.md +113 -0
  70. package/skills/poteto-mode/playbooks/pause-safely.md +10 -0
  71. package/skills/poteto-mode/playbooks/perf-issue.md +24 -0
  72. package/skills/poteto-mode/playbooks/prototype.md +14 -0
  73. package/skills/poteto-mode/playbooks/refactoring.md +16 -0
  74. package/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  75. package/skills/poteto-mode/playbooks/session-pickup.md +13 -0
  76. package/skills/poteto-mode/playbooks/shipping.md +20 -0
  77. package/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  78. package/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  79. package/skills/poteto-mode/playbooks/worktree-cleanup.md +14 -0
  80. package/skills/poteto-mode/references/bugbot-triage.md +142 -0
  81. package/skills/poteto-mode/references/plan.md +105 -0
  82. package/skills/poteto-mode/scripts/bootstrap.ts +62 -0
  83. package/skills/poteto-mode/scripts/bun.lock +67 -0
  84. package/skills/poteto-mode/scripts/orch/orch.test.ts +634 -0
  85. package/skills/poteto-mode/scripts/orch/orch.ts +578 -0
  86. package/skills/poteto-mode/scripts/orch/store.ts +1607 -0
  87. package/skills/poteto-mode/scripts/package.json +16 -0
  88. package/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
  89. package/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
  90. package/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +118 -0
  91. package/skills/poteto-mode/scripts/watch-pr/github.test.ts +306 -0
  92. package/skills/poteto-mode/scripts/watch-pr/github.ts +699 -0
  93. package/skills/poteto-mode/scripts/watch-pr/policy.test.ts +420 -0
  94. package/skills/poteto-mode/scripts/watch-pr/policy.ts +832 -0
  95. package/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
  96. package/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
  97. package/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
  98. package/skills/poteto-mode/scripts/watch-pr/types.ts +401 -0
  99. package/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
  100. package/skills/poteto-mode/scripts/worktree-audit.sh +86 -0
  101. package/skills/principle-boundary-discipline/README.md +17 -0
  102. package/skills/principle-boundary-discipline/SKILL.md +34 -0
  103. package/skills/principle-boundary-discipline/agents/openai.yaml +5 -0
  104. package/skills/principle-build-the-lever/README.md +17 -0
  105. package/skills/principle-build-the-lever/SKILL.md +23 -0
  106. package/skills/principle-build-the-lever/agents/openai.yaml +5 -0
  107. package/skills/principle-encode-lessons-in-structure/README.md +17 -0
  108. package/skills/principle-encode-lessons-in-structure/SKILL.md +31 -0
  109. package/skills/principle-encode-lessons-in-structure/agents/openai.yaml +5 -0
  110. package/skills/principle-exhaust-the-design-space/README.md +17 -0
  111. package/skills/principle-exhaust-the-design-space/SKILL.md +21 -0
  112. package/skills/principle-exhaust-the-design-space/agents/openai.yaml +5 -0
  113. package/skills/principle-experience-first/README.md +17 -0
  114. package/skills/principle-experience-first/SKILL.md +19 -0
  115. package/skills/principle-experience-first/agents/openai.yaml +5 -0
  116. package/skills/principle-fix-root-causes/README.md +17 -0
  117. package/skills/principle-fix-root-causes/SKILL.md +23 -0
  118. package/skills/principle-fix-root-causes/agents/openai.yaml +5 -0
  119. package/skills/principle-foundational-thinking/README.md +17 -0
  120. package/skills/principle-foundational-thinking/SKILL.md +21 -0
  121. package/skills/principle-foundational-thinking/agents/openai.yaml +5 -0
  122. package/skills/principle-guard-the-context-window/README.md +17 -0
  123. package/skills/principle-guard-the-context-window/SKILL.md +17 -0
  124. package/skills/principle-guard-the-context-window/agents/openai.yaml +5 -0
  125. package/skills/principle-laziness-protocol/README.md +17 -0
  126. package/skills/principle-laziness-protocol/SKILL.md +18 -0
  127. package/skills/principle-laziness-protocol/agents/openai.yaml +5 -0
  128. package/skills/principle-make-operations-idempotent/README.md +17 -0
  129. package/skills/principle-make-operations-idempotent/SKILL.md +24 -0
  130. package/skills/principle-make-operations-idempotent/agents/openai.yaml +5 -0
  131. package/skills/principle-migrate-callers-then-delete-legacy-apis/README.md +17 -0
  132. package/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +22 -0
  133. package/skills/principle-migrate-callers-then-delete-legacy-apis/agents/openai.yaml +5 -0
  134. package/skills/principle-minimize-reader-load/README.md +17 -0
  135. package/skills/principle-minimize-reader-load/SKILL.md +23 -0
  136. package/skills/principle-minimize-reader-load/agents/openai.yaml +5 -0
  137. package/skills/principle-model-the-domain/README.md +17 -0
  138. package/skills/principle-model-the-domain/SKILL.md +26 -0
  139. package/skills/principle-model-the-domain/agents/openai.yaml +5 -0
  140. package/skills/principle-never-block-on-the-human/README.md +16 -0
  141. package/skills/principle-never-block-on-the-human/SKILL.md +23 -0
  142. package/skills/principle-never-block-on-the-human/agents/openai.yaml +5 -0
  143. package/skills/principle-outcome-oriented-execution/README.md +16 -0
  144. package/skills/principle-outcome-oriented-execution/SKILL.md +22 -0
  145. package/skills/principle-outcome-oriented-execution/agents/openai.yaml +5 -0
  146. package/skills/principle-prove-it-works/README.md +18 -0
  147. package/skills/principle-prove-it-works/SKILL.md +33 -0
  148. package/skills/principle-prove-it-works/agents/openai.yaml +5 -0
  149. package/skills/principle-redesign-from-first-principles/README.md +16 -0
  150. package/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
  151. package/skills/principle-redesign-from-first-principles/agents/openai.yaml +5 -0
  152. package/skills/principle-separate-before-serializing-shared-state/README.md +16 -0
  153. package/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
  154. package/skills/principle-separate-before-serializing-shared-state/agents/openai.yaml +5 -0
  155. package/skills/principle-sequence-verifiable-units/README.md +18 -0
  156. package/skills/principle-sequence-verifiable-units/SKILL.md +22 -0
  157. package/skills/principle-sequence-verifiable-units/agents/openai.yaml +5 -0
  158. package/skills/principle-subtract-before-you-add/README.md +17 -0
  159. package/skills/principle-subtract-before-you-add/SKILL.md +22 -0
  160. package/skills/principle-subtract-before-you-add/agents/openai.yaml +5 -0
  161. package/skills/principle-type-system-discipline/README.md +19 -0
  162. package/skills/principle-type-system-discipline/SKILL.md +31 -0
  163. package/skills/principle-type-system-discipline/agents/openai.yaml +5 -0
  164. package/skills/recall/README.md +23 -0
  165. package/skills/recall/SKILL.md +35 -0
  166. package/skills/recall/agents/openai.yaml +5 -0
  167. package/skills/reflect/README.md +24 -0
  168. package/skills/reflect/SKILL.md +77 -0
  169. package/skills/reflect/agents/openai.yaml +5 -0
  170. package/skills/reflect/references/divergent-reviewer.md +43 -0
  171. package/skills/reflect/references/judgment-reviewer.md +42 -0
  172. package/skills/reflect/references/synthesizer.md +56 -0
  173. package/skills/reflect/references/tooling-reviewer.md +57 -0
  174. package/skills/setup-rstack/README.md +25 -0
  175. package/skills/setup-rstack/SKILL.md +81 -0
  176. package/skills/setup-rstack/agents/openai.yaml +3 -0
  177. package/skills/show-me-your-work/README.md +23 -0
  178. package/skills/show-me-your-work/SKILL.md +82 -0
  179. package/skills/show-me-your-work/agents/openai.yaml +5 -0
  180. package/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
  181. package/skills/show-me-your-work/scripts/log.sh +40 -0
  182. package/skills/swarm/README.md +21 -0
  183. package/skills/swarm/SKILL.md +46 -0
  184. package/skills/swarm/agents/openai.yaml +5 -0
  185. package/skills/tdd/README.md +21 -0
  186. package/skills/tdd/SKILL.md +44 -0
  187. package/skills/tdd/agents/openai.yaml +5 -0
  188. package/skills/teach/README.md +22 -0
  189. package/skills/teach/SKILL.md +21 -0
  190. package/skills/teach/agents/openai.yaml +5 -0
  191. package/skills/technical-writing/README.md +23 -0
  192. package/skills/technical-writing/SKILL.md +130 -0
  193. package/skills/technical-writing/agents/openai.yaml +5 -0
  194. package/skills/typescript-best-practices/README.md +22 -0
  195. package/skills/typescript-best-practices/SKILL.md +28 -0
  196. package/skills/typescript-best-practices/agents/openai.yaml +3 -0
  197. package/skills/typescript-best-practices/references/patterns.md +292 -0
  198. package/skills/unslop/README.md +21 -0
  199. package/skills/unslop/SKILL.md +80 -0
  200. package/skills/unslop/agents/openai.yaml +3 -0
  201. package/skills/why/README.md +26 -0
  202. package/skills/why/SKILL.md +229 -0
  203. package/skills/why/agents/openai.yaml +3 -0
  204. package/skills/why/references/epistemics.md +144 -0
  205. package/skills/why/references/investigator-prompt.md +103 -0
  206. package/skills/why/references/source-playbook.md +17 -0
  207. package/skills/why/references/sources/code-archaeology.md +88 -0
  208. package/skills/why/references/sources/databricks.md +70 -0
  209. package/skills/why/references/sources/datadog.md +99 -0
  210. package/skills/why/references/sources/incident-postmortem.md +15 -0
  211. package/skills/why/references/sources/linear.md +48 -0
  212. package/skills/why/references/sources/notion.md +55 -0
  213. package/skills/why/references/sources/sentry.md +100 -0
  214. package/skills/why/references/sources/slack.md +54 -0
  215. package/skills/why/references/synthesizer-prompt.md +135 -0
@@ -0,0 +1,25 @@
1
+ # Architect
2
+
3
+ Design types, signatures, and module structure before writing implementation code.
4
+
5
+ ## When to use
6
+
7
+ - `/architect` or "architect this", "design this"
8
+ - Non-trivial work where jumping straight to code would lock in the wrong shape
9
+ - Changes that cross function or module boundaries
10
+ - When you need parallel design exploration before committing to one approach
11
+
12
+ ## What it produces
13
+
14
+ A type sketch with function signatures, module boundaries, and `not implemented` bodies. A rationale document (shaped per `references/rationale-template.md`) that records the caller's usage, the synthesis decision, and rejected alternatives. For larger work, a module map alongside the type definitions.
15
+
16
+ ## How it works
17
+
18
+ The skill runs five phases: ground the problem (via the `how` and `why` skills), sketch competing designs in an arena with at least two structurally distinct candidates, optionally checkpoint with the human, implement against the chosen sketch, and scrap the design if implementation friction proves the architecture wrong. Each candidate is screened against `references/design-red-flags.md` before synthesis. The arena prefers the design that hides more complexity behind a smaller public surface.
19
+
20
+ ## Related
21
+
22
+ - [SKILL.md](SKILL.md)
23
+ - [references/design-red-flags.md](references/design-red-flags.md)
24
+ - [references/rationale-template.md](references/rationale-template.md)
25
+ - [references/runner-prompt.md](references/runner-prompt.md)
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: architect
3
+ description: "Sketch types, signatures, and module structure before code, then stay in the loop while implementation fills in. Use for /architect, 'architect this', 'design this', or non-trivial work where jumping to code would lock in the wrong shape."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Architect
8
+
9
+ Design before implementing. Sketch types, function signatures, class shapes, and module boundaries with `not implemented` bodies and pseudocode. Synthesize across multiple model perspectives, then fill in code against the chosen sketch. If implementation proves the sketch wrong, throw it out and redesign.
10
+
11
+ ## Start
12
+
13
+ Open a todolist with one entry per phase before starting. Autonomous mode without checkpoints needs the list to show phase position and keep phases from silently disappearing.
14
+
15
+ 1. Ground
16
+ 2. Sketch
17
+ 3. Agree
18
+ 4. Implement
19
+ 5. Scrap
20
+
21
+ ## Phase A: Ground the problem
22
+
23
+ Build a real mental model of every system the new code touches. Run the **how** skill over the relevant subsystems. Critique mode if existing structure is the constraint or the design must push back on it.
24
+
25
+ Naming a file isn't grounding. Produce the traced model `how` prescribes. If the design redefines ownership or layering, also run the **why** skill on the existing shape so the rationale becomes a constraint, not a guess.
26
+
27
+ Skip Phase A only when the work is genuinely greenfield with no surrounding system to integrate.
28
+
29
+ ## Phase B: Sketch
30
+
31
+ Run the **arena** skill with the design-sketch task and the Phase A grounding artifacts. Pass `references/runner-prompt.md` as each runner's prompt. Each candidate produces a design package shaped per `references/rationale-template.md`: the caller's usage written first, then the type sketch, function signatures, module map, and prose rationale derived from it.
32
+
33
+ Use your configured architect runners (defaults `fable`, `opus`, `sonnet`).
34
+
35
+ Design it twice. Require at least two structurally distinct candidates before synthesis, even when the first looks sufficient. This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape.
36
+
37
+ Screen every candidate against [`references/design-red-flags.md`](references/design-red-flags.md) before synthesis. Reject or revise shallow modules, information leakage, temporal decomposition, and pass-through methods.
38
+
39
+ Compare viable candidates on interface depth. Prefer the design that hides more complexity behind a smaller, simpler public surface. A rich interface can keep call chains short by concentrating capability instead of scattering it across layers.
40
+
41
+ Arena returns one synthesized design package. The synthesis decision populates the rationale's "Synthesis decision" section.
42
+
43
+ ## Phase C: Agree (opt-in)
44
+
45
+ Default: proceed directly to implementation with the synthesized design. No human checkpoint.
46
+
47
+ Opt in to a checkpoint when the invoker explicitly asks: "/architect with checkpoint," "stop and show me before implementing," or similar. Then surface the synthesized design and pause for sign-off.
48
+
49
+ The synthesis can ship as its own commit either way. That's the "scaffold first" mode of the **foundational-thinking** principle skill; subsequent commits read as filling in bodies against a stable contract. Planned and scoped breakage during fill-in is fine, per the **outcome-oriented-execution** principle skill. For adversarial pressure on the design before implementing, run the **interrogate** skill on the synthesized sketch.
50
+
51
+ If the human pushes back on the shape (in a checkpoint or after the fact), treat that as Phase A evidence. Re-ground and re-run Phase B before writing more code.
52
+
53
+ ## Phase D: Implement against the sketch
54
+
55
+ Replace `not implemented` bodies with code, pseudocode with logic. The synthesized sketch is the contract.
56
+
57
+ Deviations from the sketch are signal worth surfacing, not friction to absorb silently. If a function needs a parameter the sketch didn't anticipate, ask whether the sketch was wrong, the requirement was missed, or the implementation is overreaching. Surface it; don't bolt it on.
58
+
59
+ ## Phase E: Scrap when the architecture is wrong
60
+
61
+ If implementation keeps producing friction the sketch can't absorb, throw the sketch out. Don't bolt fixes onto a wrong design, per the **redesign-from-first-principles** and **fix-root-causes** principle skills.
62
+
63
+ The signal is a *pattern*, not single instances. Tells:
64
+
65
+ - The same shape of workaround appearing repeatedly across unrelated code.
66
+ - Multiple unrelated edge cases that all need special-case branches.
67
+ - Types that need escape hatches (`any`, casts, optional fields always set in practice) to compile.
68
+ - The "we need a lock" reflex when the sketch said the state wasn't shared.
69
+ - Callers having to know the abstraction's internal rules to use it.
70
+ - Two or more independent Phase D deviations of the same shape across the implementation. Surfacing deviations is Phase D's job; a repeated pattern of them is Phase E's trigger.
71
+
72
+ Use judgment. A few edge cases don't condemn an architecture. Some problems are legitimately complex; complexity in the data is not complexity in the design. The rewrite signal is repeated friction of the same shape, not single hard cases.
73
+
74
+ When you scrap:
75
+
76
+ 1. Re-run the **how** skill over what's been built. The implementation lessons enter the new design as inputs, not vibes.
77
+ 2. Redesign as if the new constraints had been day-one assumptions, per redesign-from-first-principles.
78
+ 3. Subtract before adding, per the **subtract-before-you-add** principle skill. The new sketch should be smaller than the old one before it grows.
79
+ 4. Return to Phase B and re-run arena.
80
+
81
+ ## Outputs
82
+
83
+ The caller's usage is written first and the type sketch derived from it. One file with new types and signatures for small changes; module map plus type definitions for larger work. The rationale ships alongside, shaped per `references/rationale-template.md`, including the usage sketch and the synthesis decision.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Architect"
3
+ short_description: "Sketch types and structure before code"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,33 @@
1
+ # Design red flags
2
+
3
+ Screen every candidate before synthesis. A red flag is a reason to revise or reject the shape.
4
+
5
+ ## Shallow module
6
+
7
+ A shallow module exposes a large interface while hiding little complexity. Judge depth by the capability and policy hidden behind the public surface relative to the size of that surface. Prefer a simple interface backed by substantial behavior.
8
+
9
+ Do not confuse a deep module with a deep call chain. A deep call chain scatters understanding across layers. A deep module concentrates capability behind one interface.
10
+
11
+ Look for these signs:
12
+
13
+ - Callers coordinate several methods to complete one operation.
14
+ - Public options expose internal stages or implementation choices.
15
+ - Learning the interface does not save the caller from learning the implementation.
16
+
17
+ ## Information leakage
18
+
19
+ Information leakage makes multiple modules depend on the same internal decision. A representation, policy, or protocol detail appears in more than one place, so changing it requires coordinated edits.
20
+
21
+ Public re-exports of transport or wire types are leakage. Parse external data into domain types behind the interface. Keep storage schemas, framework objects, and protocol details private.
22
+
23
+ ## Temporal decomposition
24
+
25
+ Temporal decomposition organizes modules by execution order instead of the knowledge they own. Separate load, validate, transform, and save stages often repeat one representation and its invariants across several boundaries.
26
+
27
+ Group code around domain knowledge and ownership. Methods that run at different times can still belong to one module when they protect the same decisions.
28
+
29
+ ## Pass-through method
30
+
31
+ A pass-through method forwards the same arguments to another method with the same shape. It adds a layer without hiding complexity.
32
+
33
+ Remove it or move responsibility to the module that can complete the operation. Keep a forwarding boundary only when it adds policy, adaptation, or a distinct abstraction.
@@ -0,0 +1,35 @@
1
+ # Rationale template
2
+
3
+ The prose that ships alongside the type sketch. One page. Sentence-case headings, no boilerplate. Replace the italic notes with actual content.
4
+
5
+ ## Problem
6
+
7
+ *One paragraph. What we're trying to do, and what about the existing system or constraints makes the shape non-obvious. If [Phase A](../SKILL.md#phase-a-ground-the-problem) surfaced constraints the design must honor (existing types to interop with, callers we can't break, invariants that crossed our boundary), name them here so the reader sees the same constraints you saw.*
8
+
9
+ ## Usage (caller's view)
10
+
11
+ *Write this first, before the type sketch. Show the README or quickstart the consumer reads, plus two or three realistic call sites in their own code. What they import, what they call, what comes back. The type sketch in [Shape](#shape) is derived from this. The two must agree; when they diverge, reconcile the sketch to the usage, not the reverse. The caller's experience is the spec. The types serve it.*
12
+
13
+ ## Shape
14
+
15
+ *The recommended architecture. Data structures first; then how data flows through the signatures. Name the load-bearing decisions. State which invariants are encoded in types, where validation lives, and what the system deliberately does not do. Judge interface depth explicitly. State what complexity the public surface hides, what remains exposed to callers, and why the interface is no larger than needed. Cite the principle behind each decision (e.g., `per boundary-discipline`); don't restate it.*
16
+
17
+ ## Synthesis decision
18
+
19
+ *Filled in by [arena](../../arena/SKILL.md). Records which candidate became the base and why, what was adapted from each of the others, and what was rejected and why.*
20
+
21
+ ## Tradeoffs accepted
22
+
23
+ *One bullet per tradeoff the chosen shape makes. Form: "we accept X in exchange for Y." Name anything a future reader might mistake for an oversight, including things that look like premature optimization or premature simplification.*
24
+
25
+ ## Alternatives considered
26
+
27
+ *Required. Name at least one concrete alternative shape, with one line on why it lost. Judge each alternative on interface depth, not implementation simplicity alone. Name the complexity it exposes to callers and the complexity it hides. Two or three alternatives belong here when the design space had real contenders. One is fine when the constraints forced the answer, with the conclusion phrased as "this was the only viable shape because..." Avoid listing flavors of the same shape. This section covers design alternatives the chosen shape considered and rejected, not other runner candidates.*
28
+
29
+ ## Open questions and risks
30
+
31
+ *Things you noticed during the sketch that the human needs to weigh in on, and risks worth flagging before implementation starts. Phrase as questions, not assertions, so the human's answer is the resolution rather than a comment.*
32
+
33
+ ## Next implementation step
34
+
35
+ *The first thing to build against the sketch. One sentence. What you'd start writing immediately after synthesis (or after Phase D sign-off, if a checkpoint was opted into).*
@@ -0,0 +1,20 @@
1
+ # Architect runner prompt
2
+
3
+ The orchestrator passes this file through to every parallel candidate runner during Phase B and fills in the variable inputs around it: the task, the Phase A grounding artifacts, the isolated working directory, and the path to write outputs. The working directory is a git worktree when available, otherwise a per-runner subdirectory under the sketch dir; what matters is independence between candidates.
4
+
5
+ You are producing one candidate design in architect's parallel exploration. Read the **architect** skill in full first; that's the workflow you're inside. Output a candidate design package: type sketch, function signatures, module map, and prose rationale shaped per [`rationale-template.md`](rationale-template.md).
6
+
7
+ Apply the following discipline. The orchestrator compares candidates on these axes to pick a base.
8
+
9
+ - Caller's usage first. Write the README-style usage and two or three real call sites before the types, then derive the type sketch from them. The usage is the spec; the two must agree, so reconcile the sketch to the usage, not the reverse.
10
+ - Data structures first. Get the core types right and the code becomes obvious. Trace each dominant access pattern through the proposed structure; if the answer is "we'll add a map / index / cache later," the structure is wrong.
11
+ - Interface depth. Compare the capability hidden behind the public surface relative to the size of that surface. Prefer a simple interface that pulls complexity into the callee, even when the implementation becomes less simple. Do not put transport or wire types on the public surface; parse into domain types behind the interface.
12
+ - Shared state: if two actors might both write, ask "what happens?" If the answer isn't "nothing," default to per-actor state with a merge at the read boundary, per the **separate-before-serializing-shared-state** principle skill.
13
+ - Make boundaries visible. `not implemented` errors for bodies, `// TODO` pseudocode for tricky logic, doc comments stating intent and invariants. A reader should trace data from input to output by reading types and signatures alone.
14
+ - Encode invariants in types: hard-to-misuse types > runtime checks > prose comments, per the **encode-lessons-in-structure** principle skill.
15
+ - Validate at boundaries, trust types inside, per the **boundary-discipline** principle skill. Business logic as pure functions; the shell stays thin.
16
+ - Single source of truth per invariant. Derive instead of sync.
17
+ - Idempotent state transitions where applicable, per the **make-operations-idempotent** principle skill. Ask what happens if the operation runs twice or crashes halfway.
18
+ - Short call chains. If tracing the flow needs more than three files, flatten the hierarchy, per the **laziness-protocol** and **minimize-reader-load** principle skills.
19
+
20
+ You are one of several runners, each on a different model. Produce the best design your model can make; don't hedge against the others. Differences between candidates are the signal used to pick a base and graft. Converging on a safe-looking middle defeats the exploration.
@@ -0,0 +1,21 @@
1
+ # Arena
2
+
3
+ Fan out N parallel attempts at the same task, pick the strongest as a base, and graft the best ideas from the losers into it.
4
+
5
+ ## When to use
6
+
7
+ - `/arena` or "arena this", "throw it in the arena"
8
+ - When one attempt at a non-trivial artifact would lock in the wrong shape
9
+ - Design or code bakeoffs where you want base selection and grafting
10
+
11
+ ## What it produces
12
+
13
+ One synthesized artifact and a short synthesis note. The note names the base candidate, what was grafted from each loser, what was rejected and why, any dropouts, and the verification result.
14
+
15
+ ## How it works
16
+
17
+ Six phases: frame the task and derive a rubric, fan out N candidates (each to its own output path), cross-judge with a model from a different family, pick a base by scoring each candidate against the rubric, graft the best parts of losing candidates, and verify the result. Agreement between the parent's pick and the cross-judge confirms the base. Divergence forces a closer read of both rationales before deciding.
18
+
19
+ ## Related
20
+
21
+ - [SKILL.md](SKILL.md)
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: arena
3
+ description: "Spawn N parallel candidates at the same task, pick a base, graft the strongest parts of the losers into it. Use for /arena, 'arena this', 'throw it in the arena', or when one attempt at a non-trivial artifact would lock in the wrong shape."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Arena
8
+
9
+ Fan out N parallel attempts at the same task. Read every candidate end to end. Pick the strongest as the base. Graft the best ideas from the others into it. Verify the synthesized result.
10
+
11
+ ## Start
12
+
13
+ Open a todolist with one entry per phase before launching anything. The arena runs autonomously and the list keeps phases from silently disappearing.
14
+
15
+ 1. Frame
16
+ 2. Fan out
17
+ 3. Cross-judge
18
+ 4. Pick
19
+ 5. Graft
20
+ 6. Verify
21
+
22
+ ## Phase A: Frame
23
+
24
+ The N candidates will receive the same prompt, so the prompt is the contract. Get it right before spawning anything.
25
+
26
+ 1. State the artifact each candidate is producing.
27
+ 2. Derive the rubric. State what success looks like for *this* task, then turn it into 3-6 concrete gradeable criteria. Concrete: `Adds a --dry-run flag that skips writes`. Vague: `code is correct`. The rubric is the picker's tool in Phase D; candidates only see the task.
28
+ 3. Pick the runners. Use `arena runners` from your host's `## <host>` section of `~/.agents/rstack-models.md` when present. Otherwise default to one each on `fable`, `opus`, `sonnet`. Spawn more when the arena covers multiple design directions. Same model N times when the work is generation-bound rather than judgment-sensitive.
29
+ 4. Assign output paths. Each candidate writes to its own location (a git worktree where possible, otherwise `/tmp/arena-<slug>/candidate-<n>/`). N candidates writing to the same path is shared mutable state and fails the the **separate-before-serializing-shared-state** principle skill test.
30
+
31
+ ## Phase B: Fan out
32
+
33
+ Spawn all N subagents in one message, in the background, each with the task, the path to the shared grounding, its own output path, and instructions to produce both the artifact and a short rationale.
34
+
35
+ The rationale is mandatory. Without it, the parent cannot tell whether a candidate's structure is principled or accidental, which makes Phase E grafting unreliable. Each rationale names the alternatives the candidate considered and what it rejected.
36
+
37
+ If a candidate fails to produce output, proceed with N-1 and note the dropout in the synthesis record.
38
+
39
+ ## Phase C: Cross-judge
40
+
41
+ After all Phase B candidates complete, choose one model from the `arena cross-judge pool` in your host's `## <host>` section of `~/.agents/rstack-models.md` when present. Otherwise use `fable`, `opus`, `sonnet`. Prefer a different model family from the parent's. Spawn one readonly judge subagent on that model. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with the parent's reading in Phase D, not with the candidates themselves. Spawning while candidates are still writing means the judge sees partial or empty outputs and reports them as dropouts.
42
+
43
+ ## Phase D: Pick a base
44
+
45
+ Read every candidate end to end before picking. Skimming N candidates surfaces only the candidate whose surface looks most familiar.
46
+
47
+ Score each candidate against the rubric criterion by criterion, not on holistic feel. Compare against the cross-judge. Agreement on the base confirms the pick. Disagreement means one of you is biased or the rubric was ambiguous. Read both rationales before deciding.
48
+
49
+ Pick the base on which candidate a future maintainer can extend most easily without breaking invariants. Prefer the cleaner boundary or smaller surface area when two feel tied, per the Laziness Protocol.
50
+
51
+ Record the pick and the reason in a short synthesis note alongside the base artifact, including the cross-judge's verdict.
52
+
53
+ ## Phase E: Graft
54
+
55
+ Walk each losing candidate once more and identify what is worth porting into the base. The signal is usually one or two things per candidate, not most of it.
56
+
57
+ Fold each graft in by hand, per the **redesign-from-first-principles** principle skill. Don't paste mechanically. The result has to remain coherent under one mental model.
58
+
59
+ Record what was grafted, from which candidate, and what was rejected and why. The rejection notes are the highest-signal part of the record. Future readers learn from what you considered and dropped, not just what you kept.
60
+
61
+ When N candidates converge on the same shape, that is a strong agreement signal. Note the convergence in the record and ship the consensus shape. No graft is needed. When N candidates wildly diverge, Phase A was under-specified. Reframe and re-run rather than averaging the divergence.
62
+
63
+ ## Phase F: Verify
64
+
65
+ The synthesized artifact has to hold up under the same scrutiny as any other output, per the **prove-it-works** principle skill. The arena does not earn you a pass.
66
+
67
+ If verification surfaces a problem the arena did not catch, either Phase A was wrong (re-frame and re-run) or one candidate caught it and you missed the graft (go back to Phase E). Don't paper over.
68
+
69
+ ## Outputs
70
+
71
+ One synthesized artifact. One short synthesis note alongside, naming the base, the grafts (with source candidate), the rejections, the dropouts if any, and the verification result.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Arena"
3
+ short_description: "Run parallel candidates and graft the best"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,21 @@
1
+ # Automate me
2
+
3
+ Turn your working conventions into a personal `-mode` skill that agents follow.
4
+
5
+ ## When to use
6
+
7
+ - "Automate me" or "create my -mode skill"
8
+ - "Update my skill" or "refresh my -mode skill"
9
+ - "Turn my preferences into a skill" or "capture my working style"
10
+
11
+ ## What it produces
12
+
13
+ A `<handle>-mode/SKILL.md` skill file that encodes your response preferences, delegation habits, verification posture, code discipline, and process conventions. Placed in `.claude/skills/<handle>-mode/` (project) or `~/.claude/skills/<handle>-mode/` (personal). Delivered as a PR.
14
+
15
+ ## How it works
16
+
17
+ The skill mines recent agent transcripts in parallel slices for recurring patterns, asks you structured questions to fill gaps the mining missed, clusters findings into sections, drafts the skill (using the host's skill-authoring skill when available), and iterates on prose with the `unslop` skill. Patterns need 2+ independent sightings before they get codified. The `poteto-mode` skill serves as the reference shape.
18
+
19
+ ## Related
20
+
21
+ - [SKILL.md](SKILL.md)
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: automate-me
3
+ description: "Use for \"automate me\", \"create/update/refresh my -mode skill\", \"turn/capture my preferences or working style into a skill\", or wanting agents to follow how the user works. Drafts or revises a personal -mode skill via create-skill + unslop, optionally pulling fresh evidence from recent transcripts."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Automate me
8
+
9
+ A guided flow for turning the user's working conventions into a skill agents will follow. The output is one `-mode` skill tailored to them (e.g. `jay-mode`, `priya-mode`).
10
+
11
+ This skill orchestrates three passes: an inline mining pass (see step 1), skill authoring (the host's skill-authoring skill when installed, otherwise direct SKILL.md writing), and the **unslop** skill (prose discipline). It sequences them; it doesn't replace them.
12
+
13
+ ## Flow
14
+
15
+ ### 0. Check for an existing skill
16
+
17
+ Look recursively for `.claude/skills/**/*-mode/SKILL.md` and `~/.claude/skills/*-mode/SKILL.md` matching the user's handle. Mode skills can live in a personal category directory (`.claude/skills/<handle>/`), not only at the top level. If one exists, confirm intent with `AskUserQuestion` (unless they already said "update my skill" or similar):
18
+
19
+ - Update the existing skill (default for repeat runs)
20
+ - Start fresh (rare; ask why before doing it)
21
+
22
+ Update mode changes the rest of the flow:
23
+ - Step 1 mines only history since the skill was last edited (`git log -1 --format=%cI <path>`).
24
+ - Step 2 asks what's changed or missing, not what to capture from zero.
25
+ - Step 4 edits the existing file in place. Preserve sections the user hasn't contradicted; revise ones with new evidence; add new sections only for genuinely new rules.
26
+
27
+ ### 1. Mine their history
28
+
29
+ Locate the active workspace's transcripts before fanning out (Claude Code: `~/.claude/projects/<slug>/`, slug = workspace path with each "/" turned into "-"; Codex: `~/.codex/sessions/<yyyy>/<mm>/<dd>/`). Use only the current workspace's transcripts. Don't glob across other projects' directories. That crosses workspace boundaries and reads private chats from unrelated projects.
30
+
31
+ Survey recent agent conversations within that scope for recurring patterns. Run multiple parallel subagents across slices of history (e.g. last 2-4 weeks, split into 3 slices so each has enough material). Each slice mining subagent reads transcripts from the workspace-scoped path the parent provides, looks for the signals below, and returns a short structured list of patterns it saw with evidence pointers. Default signals worth hunting:
32
+
33
+ - Response preferences (length, tone, format, "dumb it down" corrections)
34
+ - Delegation habits (subagents, models, specialized workflows, parallelism)
35
+ - Verification posture (what "done" means; unit tests vs live repro; reviewers)
36
+ - Code and prose discipline (style, principles cited, lint/format tools)
37
+ - Process conventions (worktrees, commits, PRs, review/merge tooling)
38
+ - Meta preferences (fixing skills mid-task, proposing new ones)
39
+
40
+ Cross-check across slices before elevating a signal. Patterns seen in 2+ slices are high-confidence; lone signals are weak and usually get dropped.
41
+
42
+ ### 2. Ask the user directly
43
+
44
+ Mining misses intent that hasn't come up yet. Use the `AskUserQuestion` tool (structured multi-choice) rather than asking the user to type from scratch. Lower cognitive load, higher hit rate.
45
+
46
+ Shape: one or two questions with 4-6 options each, `allow_multiple: true` for category questions. Start broad ("Which areas matter most?"), then follow up on selected areas with specific options. After the structured rounds, one free-form chat question catches anything the options missed.
47
+
48
+ Don't dump 20 questions. Two structured rounds plus one open question is usually enough.
49
+
50
+ ### 3. Cluster findings
51
+
52
+ Group the combined signals into sections. Common ones (use only what applies):
53
+
54
+ - **Response style**: length, tone, format.
55
+ - **Autonomy**: how much to do without asking; MCP tool use.
56
+ - **Understand first**: which skills to reach for when scoping or investigating a change.
57
+ - **Subagents**: default, parallelism, model-to-task, specialized workflows.
58
+ - **Prose / code discipline**: principles, lint tools, style guides.
59
+ - **Review and verify**: repro posture, verification skills, live-testing tools.
60
+ - **Process**: git worktrees, commits, PRs, review/merge tooling.
61
+ - **Skills**: skill-authoring habits, fix-the-skill-first, proposing new skills.
62
+
63
+ The **poteto-mode** skill shows the shape. Read it for granularity. Don't copy its content; the user's rules are not the same as poteto-mode's.
64
+
65
+ ### 4. Draft the skill
66
+
67
+ Author the skill with the host's skill-authoring skill when one is installed; otherwise write the SKILL.md directly. Placement:
68
+
69
+ - Path: preserve an existing mode skill's category. For a new mode, use `.claude/skills/<handle>/<handle>-mode/SKILL.md` when the repo has an established personal category for that handle; otherwise default to `.claude/skills/<handle>-mode/SKILL.md` in the project (or `~/.claude/skills/<handle>-mode/` if the user prefers a personal skill).
70
+ - Handle: the user's first name or chosen identifier.
71
+ - Frontmatter `description`: trigger on their name + `/<handle>-mode` + "work in their style", not on generic keywords like "write code" or "review PR".
72
+ - Frontmatter formatting: follow `create-skill`'s YAML rules. Keep `description` as one YAML scalar; quote it or use `description: >-` with indented continuation lines when punctuation or wrapping requires it.
73
+ - Frontmatter `disable-model-invocation: true` by default. Mode skills are heavy and opinionated; they should only apply when the user explicitly invokes them (by name or slash command), not auto-trigger on description matching. Opt out only if the user explicitly wants their mode to apply on every turn.
74
+
75
+ ### 5. Iterate on prose
76
+
77
+ Apply the **unslop** skill and `create-skill`'s writing guidelines to every line. Both apply to any agent-read prose, not just skills.
78
+
79
+ Show the draft to the user and take feedback. Expect multiple iterations. Cut ruthlessly; a mode skill is not a manual.
80
+
81
+ ### 6. Land it
82
+
83
+ Work in a worktree off main. Commit and open a PR so the user can review it. Don't push to main directly.
84
+
85
+ ## Guardrails
86
+
87
+ - **Don't overfit to one conversation.** A preference stated once and contradicted another time is noise. Require multiple instances before codifying it.
88
+ - **Don't be clever.** Restating other skills' contents, inventing metaphors, or writing "poetic" prose for an agent reader is cost without benefit. Keep it operational.
89
+ - **Reference, don't inline.** Other skills the user relies on should appear as path references, not pasted excerpts. Same for any principle docs they maintain elsewhere.
90
+ - **Keep sections minimal.** Only add a section if the user has a specific, non-default rule there. "Communicate clearly" is not a section. "Short paragraphs. Tables when comparing options. Bullets only when items are genuinely parallel." is.
91
+ - **Name conventions generic.** Use "the user" or "the human" in imperatives, not the author's first name. Others may read or adopt the skill.
92
+ - **Don't force symmetry.** If a user has no process rules worth writing down, skip the Process section entirely. Sparse is fine; bloated is not.
93
+
94
+ ## Evaluation
95
+
96
+ A `-mode` skill is subjective output. A `create-skill`-style test/iterate benchmark loop isn't useful here. Vibe-check with the user: does it read like them? Did it miss anything? Then ship.
97
+
98
+ Run a description-optimization loop only if the skill's trigger accuracy turns out to be a problem in practice.
99
+
100
+ ## When not to use
101
+
102
+ - User wants a task-specific skill (not working conventions): `create-skill` alone, no mining required.
103
+ - User wants to capture one narrow workflow (e.g. "how I write commit messages"): that's a regular skill, not a mode skill.
104
+
105
+ ## Reference files
106
+
107
+ - The **poteto-mode** skill: example of the output shape.
108
+ - The **unslop** skill: prose discipline for every line.
109
+ - The host's skill-authoring skill (when installed): skill authoring process and writing guidelines.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Automate Me"
3
+ short_description: "Capture your working style as a skill"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,21 @@
1
+ # Blast radius
2
+
3
+ Find what a change could break somewhere else before it ships.
4
+
5
+ ## When to use
6
+
7
+ - "Blast radius of X" or "what could this break"
8
+ - Reviewing a small diff you don't trust yet
9
+ - Before shipping a change that touches shared code or a wire format
10
+
11
+ ## What it produces
12
+
13
+ A writeup with five sections: what the change does (including non-obvious parts), the one fact it's safe because of (proven or marked unproven), confirmed risks with `file:line` citations and likelihood, cleared items, and a before-you-merge test or repro.
14
+
15
+ ## How it works
16
+
17
+ The skill reads the change, identifies the single fact the change's safety depends on, follows what grep misses (JSON APIs, DB columns, wire formats, downstream consumers), and proves that fact by running real code. Every safety claim gets rated on a five-level confidence scale from "you said so" (worthless) to "you reproduced it in the running app" (best). For wide changes, the analysis runs as an arena across multiple models.
18
+
19
+ ## Related
20
+
21
+ - [SKILL.md](SKILL.md)
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: blast-radius
3
+ description: "Find what a change could break somewhere else before it ships, beyond the diff, and prove the one fact it's safe because of by running real code instead of writing it up. Use for 'blast radius of X', 'what could this break', or reviewing a small diff you don't trust."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Blast radius
8
+
9
+ Find what a change breaks somewhere else, before it ships. Use for "blast radius of X", "what could this break", or reviewing a small diff you don't trust yet.
10
+
11
+ Companion to `how` and `why`. `how` tells you what the code does. `why` tells you why it's shaped that way. Blast radius tells you what it breaks somewhere else.
12
+
13
+ Listing the callers is not the job. The agent can grep those in a second. The job is the breakage grep won't show you.
14
+
15
+ ## Don't trust your own writeup
16
+
17
+ A blast-radius writeup that sounds right is worthless. It reads as convincing whether or not it's true, and that is the trap you are walking into. So don't hand back the writeup. Find the one or two facts the whole thing depends on and prove them by running code. Words are where you start, not what you ship.
18
+
19
+ ### How sure are you
20
+
21
+ For each fact the change's safety depends on, get it as far down this list as is cheap, and say where it stopped.
22
+
23
+ 1. You said so. Worthless on its own.
24
+ 2. You pointed at the line. A real `file:line`, or the library's own source.
25
+ 3. You showed the bad case can't happen. You walked the failure step by step and it doesn't reach.
26
+ 4. You ran it. A script or test that calls the real code and fails loud if you're wrong.
27
+ 5. You reproduced it in the running app.
28
+
29
+ Any safety fact you can't get to step 4, say so out loud. Don't write it up as settled. Step 4 is usually one small script that imports the same library the app ships and calls the exact function you're worried about.
30
+
31
+ ## Steps
32
+
33
+ 1. Read the change. The diff, the symbols it adds, changes, and deletes, and what it now does differently, including the part the diff doesn't spell out. Use `why` step 2 to pull the PR and commits.
34
+ 2. Find the one fact it's safe because of. Most changes that look scary are safe because of a single fact, like "this call only drops already-dead cache entries and does nothing else". Find that fact. If it holds, most of the scary cases die at once. Spend your time here, not on a long list of maybes.
35
+ 3. Look where grep stops. Read the source of the library you call, and check its pinned version and any local patch. Work out when things run: microtasks, unmount and teardown, Solid versus React. Follow what a symbol search misses: the JSON an API returns, a DB column, a wire format, another language reading the same bytes, a feature flag, code three hops downstream.
36
+ 4. Be honest about each risk. Give it a real chance of happening and a real cost if it does. Keep the risks you confirmed; list the ones you checked and cleared separately. Same rules as `why`. Cite a real `file:line`, a search that finds nothing is still an answer, and never make up a caller or an API.
37
+ 5. Prove the one fact. Write a script or test that runs the real code, run it, and paste what happened. If you can't prove it cheaply, mark it unproven. Don't round up.
38
+ 6. For a big or wide change, run it as an `arena`. Ask several models the same question and merge the answers. Different models catch different real bugs.
39
+
40
+ ## What to hand back
41
+
42
+ - **What it does.** What changed, including the part that isn't obvious.
43
+ - **The one fact it's safe because of.** State it, say which step you got it to, and show the proof. If you couldn't prove it, write unproven.
44
+ - **Risks.** Only the real ones. Each names how it breaks, the `file:line`, how likely and how bad, and how to check. Paste the proof for the ones that matter.
45
+ - **Cleared.** What you checked and why it's fine.
46
+ - **Before you merge.** The cheapest test or repro that catches the real bug, including the script you wrote.
47
+
48
+ Write it through `unslop`, cite real code, and strip anything private before it goes anywhere public.
49
+
50
+ **Reply:** the writeup above, with the one safety fact either proven or marked unproven.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Blast Radius"
3
+ short_description: "Find what a change could break elsewhere"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,16 @@
1
+ # Bro
2
+
3
+ Restate the last message in plain human language with no jargon.
4
+
5
+ ## When to use
6
+
7
+ - `/bro`
8
+ - When the agent's last response was too technical or dense
9
+
10
+ ## What it produces
11
+
12
+ A rewritten version of the previous message. Simpler, more concise, like one person talking to another.
13
+
14
+ ## Related
15
+
16
+ - [SKILL.md](SKILL.md)
@@ -0,0 +1,7 @@
1
+ ---
2
+ name: bro
3
+ description: Restate the last message in plain human language, with no jargon.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ Restate your last message. Stop using jargon and speak coherently. State it more simply and concisely, like one human talking to another.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Bro"
3
+ short_description: "Restate the last message in plain language"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,22 @@
1
+ # Create verification skill
2
+
3
+ Generate a project-local skill that drives your app the way a user does and captures evidence of correct behavior.
4
+
5
+ ## When to use
6
+
7
+ - `/create-verification-skill`
8
+ - "Make a control skill for this repo"
9
+ - When a project has no scripted way to prove UI, CLI, or service behavior
10
+
11
+ ## What it produces
12
+
13
+ A `verify-<app>/` skill directory containing a SKILL.md with launch, doctor, drive, evidence, and cleanup sections, plus a `features/` directory with one file per user-facing feature. The skill is tailored to the repo's actual stack, selectors, commands, and harness tooling.
14
+
15
+ ## How it works
16
+
17
+ The skill interviews the codebase (not the user) to determine the app's surface, startup procedure, harness options, evidence formats, and isolation constraints. It generates the skill, seeds a feature map of the top 3-5 user-facing features, then proves the generated skill works by running it end to end on one feature. A generated skill that was never executed is a draft, not a deliverable.
18
+
19
+ ## Related
20
+
21
+ - [SKILL.md](SKILL.md)
22
+ - [references/feature-map-example/](references/feature-map-example/)