@rmrdeveloper/sideroom-pi 8.6.0 → 8.7.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.
@@ -15,8 +15,8 @@ export const ASK_PROMPT_SNIPPET =
15
15
  'Ask the user one or more questions with a recommended option, in their language.';
16
16
 
17
17
  export const ASK_PROMPT_GUIDELINES = [
18
- 'When a non-trivial request is not yet a settled spec, follow the sideroom-grill skill before implementing; it owns the interview and drives sideroom_ask rounds. One sideroom_ask call is one batch; call it again for another round.',
19
- 'A decision the repository already settles consistently is a project fact: read the code and reuse it. A decision that materially affects architecture, dependencies, cost, security, operations, persistence, public contracts, or future change difficulty is an architectural decision: expose it through sideroom_ask before committing, with the practical consequences of each alternative and one recommendation that carries a one-line justification, never a list of technology names. If the repository shows two inconclusive patterns for the same kind of decision, name the inconsistency in the prompt. Everything else is a minor decision: take it yourself.',
18
+ 'When a non-trivial request is not yet a settled spec, follow the sideroom-grill skill before implementing; it drives sideroom_ask rounds. One sideroom_ask call is one batch; call it again for another round.',
19
+ 'A decision the repository already settles consistently is a project fact: read the code and reuse it. A decision that materially affects architecture, dependencies, cost, security, operations, persistence, public contracts, or future change difficulty is an architectural decision: never assume it; follow the sideroom-architecture skill and expose it through sideroom_ask before committing, with the practical consequences of each alternative and one recommendation carrying a one-line justification, never technology names. If the repository shows two inconclusive patterns for the same decision, name the inconsistency in the prompt. Everything else is a minor decision: take it yourself.',
20
20
  'Write sideroom_ask prompts, tab labels, option labels, and option descriptions in the language the user is speaking; keep ids and option values in English.',
21
21
  'sideroom_ask always adds Out of scope and a write-your-own answer; never send them yourself. A single-selection question needs recommendationIndex; a multiple-selection question needs recommendedIndices and never recommendationIndex.',
22
22
  'sideroom_ask only works in the interactive TUI; it errors in print, JSON, and RPC modes.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rmrdeveloper/sideroom-pi",
3
- "version": "8.6.0",
3
+ "version": "8.7.0",
4
4
  "description": "Pi coding-agent package that asks clarifying questions, shows a live todo board, enforces coding guidelines, and will not call it done while your checks are red.",
5
5
  "type": "module",
6
6
  "files": [
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: sideroom-architecture
3
+ description: "Surface the architectural decisions a change forces so they are asked, not silently assumed. Use when a feature or change touches module boundaries, data ownership, integration contracts, failure behavior, quality attributes, operations, cost, lock-in, or reversibility, or when the user says the architecture is not settled. Do not use for a trivial or reversible change, a pure glossary lookup, or an already-closed spec."
4
+ license: MIT
5
+ metadata:
6
+ author: RMRdeveloper
7
+ version: "1.0"
8
+ ---
9
+
10
+ # Sideroom architecture
11
+
12
+ ## Purpose
13
+
14
+ An LLM's default failure is to assume the architecture and start typing. This
15
+ skill forces the opposite: name the architectural decisions a change forces and
16
+ ask the ones that matter, instead of picking them silently. It does not turn
17
+ every change into an interrogation.
18
+
19
+ ## Activation Contract
20
+
21
+ Load this skill when a change is about to commit an architectural decision:
22
+ something that materially affects module boundaries, data ownership,
23
+ integration contracts, failure behavior, quality attributes (latency,
24
+ throughput, availability), operations, cost, lock-in, or the difficulty of
25
+ changing course later. It runs under `sideroom-grill` for the architectural
26
+ part of an interview, and on its own when only the architecture is open.
27
+
28
+ Do not load it for a minor decision (reversible, no boundary or contract
29
+ impact), or for a word conflict — that is `sideroom-domain-modeling`.
30
+
31
+ ## Hard Rules
32
+
33
+ - Assume nothing architectural. When a change forces an architectural decision
34
+ the code does not already settle, expose it through `sideroom_ask` before
35
+ writing the code. Silent selection of an architectural default is the failure
36
+ this skill exists to prevent.
37
+ - Pick the dimensions this decision actually touches; do not march the whole
38
+ catalog. Two sharp questions beat nine shallow ones. A dimension the change
39
+ does not touch is not asked.
40
+ - Read the code first. A decision the repository already settles consistently
41
+ is a project fact: reuse it, never ask it. When the repository shows two
42
+ inconclusive patterns for the same kind of decision, name that inconsistency
43
+ in the prompt instead of picking one.
44
+ - Quantify or decline. An architectural dimension does not close without a
45
+ number, a range, or an explicit `Out of scope` from the user. A decision
46
+ without a figure is a preference in disguise.
47
+ - Every option of an architectural question carries a `description`: its
48
+ practical consequence, its cost, and the obligation it imposes. The label
49
+ names the choice; the description carries the trade-off. Never a one-word
50
+ technology label.
51
+ - Present the decision as the current situation, the alternatives by their
52
+ practical consequences, and one recommendation with a one-line justification.
53
+ Never reduce it to technology names.
54
+ - One open architectural dimension blocks implementation. `Out of scope` closes
55
+ a thread, is recorded, and is not re-asked.
56
+
57
+ ## Dimension catalog
58
+
59
+ Reference, not a checklist. Pick only what the change touches; force a number or
60
+ an explicit `Out of scope` on each one you pick.
61
+
62
+ | Dimension | The question it forces |
63
+ | --- | --- |
64
+ | Boundaries | Which modules are in, which are out, which dependency direction is forbidden |
65
+ | Data | What is the source of truth, who owns it, how the schema evolves and migrates |
66
+ | Integration | Synchronous or asynchronous, backward compatibility, version window |
67
+ | Quality attributes | Expected latency and volume, availability target — in figures |
68
+ | Failure | What degrades, what retries, what must be idempotent |
69
+ | Operations | How it deploys, how it rolls back, which signal warns it is going wrong |
70
+ | Cost and lock-in | Operating cost, the cost of leaving the provider or dependency |
71
+ | Ownership | Who maintains it, who responds when it breaks |
72
+ | Reversibility | What reopens the decision, and how expensive undoing it is |
73
+
74
+ ## Execution Steps
75
+
76
+ 1. Read the code around the change. Settle every project fact from the
77
+ codebase, and note any inconsistent pattern to name in a prompt.
78
+ 2. List the architectural decisions the change forces. Drop the ones the code
79
+ already settles.
80
+ 3. For each remaining decision, pick the dimensions it touches and run one
81
+ `sideroom_ask` round: situation, alternatives by consequence, one
82
+ recommendation, each option with a `description`. Force a number or an
83
+ explicit `Out of scope`.
84
+ 4. Repeat rounds until no architectural dimension is open. Do not implement
85
+ with one open.
86
+ 5. Record an accepted decision as an ADR under `docs/adr/` only when it clears
87
+ the three `sideroom-domain-modeling` gates: hard to reverse, surprising
88
+ without context, the result of a real trade-off. The ADR names the rejected
89
+ alternatives and what reopens the decision.
90
+
91
+ ## Output Contract
92
+
93
+ Before the first round: a one-line statement of what is built, what it touches,
94
+ what is out. After the rounds: the architectural decisions closed with their
95
+ figures, the dimensions marked out of scope, and any ADR written with its
96
+ rejected alternatives and its revision trigger. No architectural default
97
+ reaches the code without having been asked or read from the repository.
98
+
99
+ ## References
100
+
101
+ - Driven by `sideroom-grill` for the architectural part of an interview; that
102
+ skill owns the interview, this one owns the architectural interrogation.
103
+ - Hands qualifying decisions to `sideroom-domain-modeling` for the ADR
104
+ three-gate offer and records shared vocabulary through it.