@mindrian_os/install 1.13.0-beta.17 → 1.13.0-beta.19
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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +26 -0
- package/commands/act.md +1 -0
- package/commands/admin.md +1 -0
- package/commands/analyze-needs.md +2 -0
- package/commands/analyze-systems.md +2 -0
- package/commands/analyze-timing.md +2 -0
- package/commands/auto-explore.md +2 -0
- package/commands/beautiful-question.md +2 -0
- package/commands/brain-derive.md +2 -0
- package/commands/build-knowledge.md +2 -0
- package/commands/build-thesis.md +2 -0
- package/commands/causal.md +2 -0
- package/commands/challenge-assumptions.md +2 -0
- package/commands/compare-ventures.md +2 -0
- package/commands/dashboard.md +2 -1
- package/commands/deep-grade.md +2 -0
- package/commands/diagnose.md +21 -1
- package/commands/diagnostics.md +14 -3
- package/commands/doctor.md +4 -1
- package/commands/dogfood-flush.md +92 -0
- package/commands/dominant-designs.md +2 -0
- package/commands/explain-decision.md +2 -0
- package/commands/explore-domains.md +2 -0
- package/commands/explore-futures.md +2 -0
- package/commands/explore-trends.md +2 -0
- package/commands/export.md +1 -0
- package/commands/feynman-timeline-refresh.md +2 -0
- package/commands/file-meeting.md +2 -0
- package/commands/find-analogies.md +1 -0
- package/commands/find-bottlenecks.md +2 -0
- package/commands/find-connections.md +2 -0
- package/commands/funding.md +1 -0
- package/commands/grade.md +2 -0
- package/commands/graph.md +1 -0
- package/commands/hat-briefing.md +1 -0
- package/commands/heal.md +22 -170
- package/commands/help.md +54 -334
- package/commands/hmi-status.md +23 -144
- package/commands/jtbd.md +1 -0
- package/commands/leadership.md +2 -0
- package/commands/lean-canvas.md +2 -0
- package/commands/macro-trends.md +2 -0
- package/commands/map-unknowns.md +2 -0
- package/commands/memory.md +1 -0
- package/commands/models.md +1 -0
- package/commands/mos-reason.md +2 -0
- package/commands/mos.md +139 -0
- package/commands/mullins.md +2 -0
- package/commands/mva-brief.md +2 -0
- package/commands/mva-option.md +2 -0
- package/commands/new-project.md +2 -0
- package/commands/onboard.md +20 -7
- package/commands/operator.md +1 -0
- package/commands/opportunities.md +1 -0
- package/commands/organize.md +22 -469
- package/commands/persona.md +1 -0
- package/commands/pipeline.md +2 -0
- package/commands/present.md +1 -0
- package/commands/publish.md +2 -0
- package/commands/query.md +24 -102
- package/commands/radar.md +2 -0
- package/commands/reanalyze.md +1 -0
- package/commands/research.md +2 -0
- package/commands/room.md +2 -0
- package/commands/rooms.md +1 -0
- package/commands/root-cause.md +2 -0
- package/commands/rs-experts.md +1 -0
- package/commands/rs-explain.md +1 -0
- package/commands/rs-fetch.md +1 -0
- package/commands/rs-thesis.md +1 -0
- package/commands/scenario-plan.md +2 -0
- package/commands/scheduled-tasks.md +1 -0
- package/commands/score-innovation.md +2 -0
- package/commands/scout.md +1 -0
- package/commands/setup.md +2 -0
- package/commands/snapshot.md +2 -0
- package/commands/speakers.md +1 -0
- package/commands/splash.md +5 -2
- package/commands/status.md +1 -0
- package/commands/structure-argument.md +2 -0
- package/commands/suggest-next.md +2 -0
- package/commands/systems-thinking.md +2 -0
- package/commands/think-hats.md +2 -0
- package/commands/update.md +2 -0
- package/commands/user-needs.md +2 -0
- package/commands/validate.md +2 -0
- package/commands/value-proposition.md +2 -0
- package/commands/vault.md +2 -0
- package/commands/visualize.md +24 -29
- package/commands/whitespace.md +2 -1
- package/commands/wiki.md +1 -0
- package/hooks/hooks.json +22 -88
- package/lib/agents/auto-explore-agent.cjs +82 -0
- package/lib/core/breakthrough/canary.cjs +134 -0
- package/lib/core/breakthrough/canary.test.cjs +136 -0
- package/lib/core/breakthrough/detectors.cjs +359 -0
- package/lib/core/breakthrough/detectors.test.cjs +333 -0
- package/lib/core/breakthrough/ethics-fence.cjs +127 -0
- package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
- package/lib/core/breakthrough/resurfacing.cjs +150 -0
- package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
- package/lib/core/breakthrough/review-queue.cjs +154 -0
- package/lib/core/breakthrough/review-queue.test.cjs +160 -0
- package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
- package/lib/core/breakthrough/scanner.cjs +426 -0
- package/lib/core/breakthrough/scanner.test.cjs +267 -0
- package/lib/core/breakthrough/schema.cjs +164 -0
- package/lib/core/breakthrough/schema.test.cjs +256 -0
- package/lib/core/breakthrough/scoring.cjs +293 -0
- package/lib/core/breakthrough/scoring.test.cjs +423 -0
- package/lib/core/breakthrough/verb-dispatch.cjs +221 -0
- package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
- package/lib/core/breakthrough/voice-scaffold.cjs +247 -0
- package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
- package/lib/core/first-touch-version-stamper.cjs +113 -0
- package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
- package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
- package/lib/core/llm-name-suggester.cjs +194 -0
- package/lib/core/llm-name-suggester.test.cjs +132 -0
- package/lib/core/mva-orchestrator.cjs +41 -0
- package/lib/core/mva-telemetry.cjs +31 -143
- package/lib/core/navigation/edges.cjs +35 -0
- package/lib/core/navigation/memory-events.cjs +126 -0
- package/lib/core/room-auto-create.cjs +318 -0
- package/lib/core/room-auto-create.test.cjs +198 -0
- package/lib/core/room-discard-cascade.cjs +225 -0
- package/lib/core/room-discard-cascade.test.cjs +135 -0
- package/lib/core/room-name-validator.cjs +132 -0
- package/lib/core/room-name-validator.test.cjs +156 -0
- package/lib/core/room-naming-selector.cjs +357 -0
- package/lib/core/room-naming-selector.test.cjs +277 -0
- package/lib/core/room-receipt-emit.cjs +63 -0
- package/lib/core/room-skeleton-scaffold.cjs +315 -0
- package/lib/core/room-skeleton-scaffold.test.cjs +291 -0
- package/lib/core/stale-copy-scanner.cjs +190 -0
- package/lib/core/state-aware-router.cjs +78 -0
- package/lib/core/telemetry/schema.cjs +168 -0
- package/lib/core/telemetry/schema.test.cjs +124 -0
- package/lib/core/telemetry/validator.cjs +197 -0
- package/lib/core/telemetry/validator.test.cjs +188 -0
- package/lib/core/telemetry/writer.cjs +141 -0
- package/lib/core/telemetry/writer.test.cjs +331 -0
- package/lib/core/terminal-capability.cjs +88 -0
- package/lib/core/venture-shape-nudge.cjs +163 -0
- package/lib/core/venture-shape-nudge.test.cjs +161 -0
- package/lib/core/visual-ops.cjs +70 -2
- package/lib/hmi/selector-dispatcher.cjs +90 -1
- package/lib/hmi/shape-f7-breakthrough-renderer.cjs +222 -0
- package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
- package/lib/memory/body-shape-coverage.test.cjs +268 -0
- package/lib/memory/doctor-deprecation-surface.test.cjs +185 -0
- package/lib/memory/first-touch-version.test.cjs +198 -0
- package/lib/memory/help-coverage.test.cjs +108 -0
- package/lib/memory/help-renderer.test.cjs +145 -0
- package/lib/memory/palette-consistency.test.cjs +127 -0
- package/lib/memory/pending-tension-store.cjs +80 -0
- package/lib/memory/render-v2-disposition.test.cjs +199 -0
- package/lib/memory/run-feynman-tests.cjs +213 -0
- package/lib/memory/sessionstart-coordinator.test.cjs +446 -0
- package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
- package/lib/memory/soft-alias.test.cjs +144 -0
- package/lib/memory/stale-copy-scanner.test.cjs +291 -0
- package/lib/memory/state-aware-router.test.cjs +90 -0
- package/lib/memory/statusline-two-row.test.cjs +338 -0
- package/lib/memory/terminal-capability.test.cjs +155 -0
- package/lib/render/ROOM.md +74 -22
- package/lib/sessionstart/budget-compressor.cjs +130 -0
- package/lib/sessionstart/contributor-interface.cjs +134 -0
- package/lib/sessionstart/contributor-isolator.cjs +128 -0
- package/lib/sessionstart/precedence-ladder.cjs +47 -0
- package/lib/statusline/governing-thought-truncator.cjs +45 -0
- package/lib/statusline/two-row-renderer.cjs +186 -0
- package/lib/statusline/version-resolver.cjs +81 -0
- package/package.json +1 -1
- package/references/visual/ROOM.md +55 -0
- package/references/visual/palette.json +54 -0
- package/skills/larry-personality/SKILL.md +34 -0
- package/skills/ui-system/SKILL.md +109 -1
- package/skills/ui-system/rules/dual-palette.md +156 -0
- package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
- package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
package/commands/organize.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: organize
|
|
3
|
-
description: Navigate room hierarchy with graph-aware tree
|
|
4
|
-
|
|
3
|
+
description: "[Deprecated] Navigate room hierarchy with graph-aware tree (use /mos:rooms organize)"
|
|
4
|
+
help_jtbd: "Group rooms into portfolios (deprecated: use /mos:rooms organize)."
|
|
5
|
+
argument-hint: "[tree|propose|move <room> <group>]"
|
|
5
6
|
body_shape: B (Semantic Tree)
|
|
6
7
|
serves_jtbd: ["audit-room"]
|
|
7
|
-
|
|
8
|
+
deprecated: true
|
|
9
|
+
deprecated_redirect: "rooms organize"
|
|
10
|
+
deprecated_removal: "v1.14.0"
|
|
11
|
+
teaching: "Deprecated alias. Use /mos:rooms organize to manage the room portfolio hierarchy; organize is folded into the multi-room surface. Scheduled removal: v1.14.0."
|
|
8
12
|
ui_reference: skills/ui-system/SKILL.md
|
|
9
13
|
allowed-tools:
|
|
10
14
|
- Read
|
|
@@ -16,483 +20,32 @@ allowed-tools:
|
|
|
16
20
|
|
|
17
21
|
# /mos:organize
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
> Deprecated. /mos:organize now redirects to /mos:rooms organize. Scheduled removal: v1.14.0. Use /mos:rooms organize going forward.
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
You are Larry. The user invoked /mos:organize. Per D-09 (LOCKED 2026-05-16, Phase 121.5-08 Sub-plan J) /mos:organize is a soft-alias stub for the v1.13.x window. The canonical surface is /mos:rooms organize.
|
|
22
26
|
|
|
23
|
-
##
|
|
27
|
+
## Steps
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
- **Reference:** `skills/ui-system/SKILL.md`
|
|
27
|
-
- All subcommands follow the 4-zone anatomy: Header Panel, Content Body, Intelligence Strip (cross-room signals), Action Footer (NEVER omitted)
|
|
28
|
-
- **Symbols:** Only the 12 approved glyphs. No emoji. No em-dashes.
|
|
29
|
-
- **Nesting depth:** Max 3 levels (root / group / room). Never deeper.
|
|
29
|
+
1. Emit the deprecation note above as a single cyan line (Larry voice; no em-dash; one sentence per skills/ui-system/SKILL.md Section 6).
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Parse user input to determine which subcommand to execute. If no subcommand is given, default to `tree`.
|
|
34
|
-
|
|
35
|
-
Subcommands: `tree` (default), `propose`, `view`, `move`
|
|
36
|
-
|
|
37
|
-
**Natural language mapping (Desktop/Cowork):**
|
|
38
|
-
- "organize my rooms" / "show room structure" -> `tree`
|
|
39
|
-
- "how should I reorganize?" / "suggest groupings" -> `propose`
|
|
40
|
-
- "show rooms by client" / "group by stage" -> `view by-stage`
|
|
41
|
-
- "move fintech to clients" / "put biotech in health group" -> `move fintech-startup clients`
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Subcommand: tree
|
|
46
|
-
|
|
47
|
-
**Trigger:** `/mos:organize` or `/mos:organize tree`
|
|
48
|
-
|
|
49
|
-
### Step 1: Get Room Data
|
|
50
|
-
|
|
51
|
-
Determine `ROOMS_HOME` (`$MINDRIAN_ROOMS_HOME` or `~/MindrianRooms`).
|
|
52
|
-
|
|
53
|
-
Run `bash scripts/room-registry list` to get JSON array of rooms.
|
|
54
|
-
|
|
55
|
-
If the command fails or returns empty:
|
|
56
|
-
> "No rooms found. Run `/mos:rooms new` to create your first room."
|
|
57
|
-
Then STOP.
|
|
58
|
-
|
|
59
|
-
### Step 2: Scan Physical Hierarchy
|
|
60
|
-
|
|
61
|
-
Scan `$ROOMS_HOME` for the actual directory structure:
|
|
31
|
+
2. Invoke /mos:rooms organize with the user's original arguments (the subcommand verb: `tree`, `propose`, `view`, `move`). Run:
|
|
62
32
|
|
|
63
33
|
```bash
|
|
64
|
-
|
|
65
|
-
ls -d "$ROOMS_HOME"/*/ 2>/dev/null | grep -v '/\.' | grep -v '/_'
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
For each directory, check:
|
|
69
|
-
1. Is it a registered room? (exists in registry.json)
|
|
70
|
-
2. Is it a group directory? (contains subdirectories that are rooms, has a CLAUDE.md)
|
|
71
|
-
3. Is it an orphan? (directory exists but not in registry)
|
|
72
|
-
|
|
73
|
-
### Step 3: Check ICM Compliance
|
|
74
|
-
|
|
75
|
-
For each room, check:
|
|
76
|
-
- `CLAUDE.md` exists at room level (Layer 0)
|
|
77
|
-
- `STATE.md` exists (Layer 2)
|
|
78
|
-
- Section directories present (problem-definition/, market-analysis/, etc.)
|
|
79
|
-
|
|
80
|
-
Use status indicators:
|
|
81
|
-
- `checkmark` = ICM-compliant (CLAUDE.md + STATE.md + sections)
|
|
82
|
-
- `bullet` = Partial (missing some ICM layers)
|
|
83
|
-
- `warning` = Non-compliant (no STATE.md or no sections)
|
|
84
|
-
|
|
85
|
-
### Step 4: Render Room Tree
|
|
86
|
-
|
|
87
|
-
Render using Body Shape B (Semantic Tree):
|
|
88
|
-
|
|
34
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/soft-alias-runner.cjs" --from organize --to "rooms organize" --remaining-args $ARGUMENTS
|
|
89
35
|
```
|
|
90
|
-
-- MindrianOS -- Room Portfolio -- ~/MindrianRooms/ -------------------
|
|
91
|
-
|
|
92
|
-
v ~/MindrianRooms/
|
|
93
|
-
|- [group-icon] clients/ 3 rooms
|
|
94
|
-
| |- [checkmark] acme-robotics active Pre-Opportunity 8 entries
|
|
95
|
-
| |- [bullet] fintech-startup parked Discovery 14 entries
|
|
96
|
-
| +- [checkmark] biotech-venture parked Validation 22 entries
|
|
97
|
-
|
|
|
98
|
-
|- [group-icon] internal/ 1 room
|
|
99
|
-
| +- [checkmark] mindrian-ops active -- 5 entries
|
|
100
|
-
|
|
|
101
|
-
|- [warning] orphan-project -- -- 0 entries
|
|
102
|
-
+- _archive/ 2 rooms
|
|
103
|
-
|
|
104
|
-
Rooms: 5 registered, 1 orphan, 2 archived
|
|
105
|
-
Groups: 2 (clients/, internal/)
|
|
106
|
-
ICM health: 3 compliant, 1 partial, 1 non-compliant
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
For ungrouped rooms (directly under ROOMS_HOME), show them at root level without a group parent.
|
|
110
|
-
|
|
111
|
-
Symbol key for groups:
|
|
112
|
-
- `v` (down-triangle) = expanded group with rooms
|
|
113
|
-
- `>` (right-triangle-filled) = collapsed group
|
|
114
|
-
|
|
115
|
-
### Step 5: Intelligence Strip (Zone 3)
|
|
116
|
-
|
|
117
|
-
If any cross-room signals exist, show max 2:
|
|
118
|
-
- `!` "acme-robotics and fintech-startup share 3 market themes" (convergence)
|
|
119
|
-
- `[ ]` "orphan-project not in registry -- run /mos:rooms new to adopt"
|
|
120
|
-
|
|
121
|
-
Omit entirely if no signals.
|
|
122
|
-
|
|
123
|
-
### Step 6: Action Footer (Zone 4)
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
> /mos:organize propose Get graph-informed grouping suggestions
|
|
127
|
-
> /mos:organize view by-stage See rooms grouped by venture stage
|
|
128
|
-
> /mos:organize move <room> <group> Move a room into a group (with confirmation)
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Subcommand: propose
|
|
134
|
-
|
|
135
|
-
**Trigger:** `/mos:organize propose`
|
|
136
|
-
|
|
137
|
-
### Step 1: Gather Room Intelligence
|
|
138
|
-
|
|
139
|
-
Determine `ROOMS_HOME` and load room list via `bash scripts/room-registry list`.
|
|
140
|
-
|
|
141
|
-
For each room, collect metadata:
|
|
142
|
-
- `venture_name` and `venture_stage` from registry
|
|
143
|
-
- Domain keywords: scan `problem-definition/` for topic terms if files exist
|
|
144
|
-
- Team info: check `team/` directory for client/stakeholder names
|
|
145
|
-
- Entry count and section health
|
|
146
|
-
|
|
147
|
-
### Step 2: Attempt Graph-Informed Groupings (Graceful Degradation)
|
|
148
|
-
|
|
149
|
-
**Tier 1 -- Brain + SQLite graph (richest proposals):**
|
|
150
36
|
|
|
151
|
-
|
|
37
|
+
The runner emits `{redirect, deprecation_note, args, ok}`. Use the redirect to confirm the target, then proceed with /mos:rooms organize behavior. The user sees ONE deprecation note + the rooms organize output (Shape B Semantic Tree).
|
|
152
38
|
|
|
153
|
-
|
|
39
|
+
3. Pass through /mos:rooms organize's output (the room portfolio tree, the propose listing, or the move confirmation) verbatim.
|
|
154
40
|
|
|
155
|
-
|
|
156
|
-
// Find rooms that share frameworks
|
|
157
|
-
MATCH (r1:Room)-[:USES_FRAMEWORK]->(f:Framework)<-[:USES_FRAMEWORK]-(r2:Room)
|
|
158
|
-
WHERE r1.name <> r2.name
|
|
159
|
-
RETURN r1.name, r2.name, collect(f.name) AS shared_frameworks
|
|
41
|
+
## Why this is a soft-alias
|
|
160
42
|
|
|
161
|
-
|
|
162
|
-
MATCH (r:Room)-[:AT_STAGE]->(s:VentureStage)
|
|
163
|
-
RETURN s.name, collect(r.name) AS rooms_at_stage
|
|
43
|
+
Cluster 5 audit (2026-05-15) found that /mos:organize and the multi-room /mos:rooms surface both managed the room portfolio hierarchy. Two entry points, one feature. Folding organize into /mos:rooms organize gives one canonical surface for portfolio management.
|
|
164
44
|
|
|
165
|
-
|
|
166
|
-
MATCH (r1:Room)-[:SHARES_THEME]->(t:Theme)<-[:SHARES_THEME]-(r2:Room)
|
|
167
|
-
RETURN t.name, collect(DISTINCT r1.name) + collect(DISTINCT r2.name) AS themed_rooms
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
Note: Room nodes may not exist yet (Phase 59.2 creates them). If these queries return empty, fall through to Tier 2.
|
|
171
|
-
|
|
172
|
-
**Tier 2 -- Metadata-based groupings (always available):**
|
|
173
|
-
|
|
174
|
-
Group rooms by analyzing:
|
|
175
|
-
1. **By venture stage:** Cluster rooms sharing the same `venture_stage`
|
|
176
|
-
2. **By name pattern:** Extract common prefixes or domain keywords from room slugs
|
|
177
|
-
3. **By domain keywords:** Read first 50 lines of each room's `problem-definition/` files, extract key domain terms, find overlaps
|
|
178
|
-
4. **By activity level:** Group stale rooms (no activity >30 days) vs. active ones
|
|
179
|
-
|
|
180
|
-
### Step 3: Generate Proposals
|
|
181
|
-
|
|
182
|
-
Create a ranked list of grouping proposals. Each proposal has:
|
|
183
|
-
- **Group name** (suggested slug, e.g., `health-ventures`, `pre-opp-rooms`)
|
|
184
|
-
- **Rooms included** (which rooms would move into this group)
|
|
185
|
-
- **Rationale** (why these rooms belong together)
|
|
186
|
-
- **Confidence** (high/medium/low based on signal strength)
|
|
187
|
-
- **Source** (Brain graph / metadata / name pattern)
|
|
188
|
-
|
|
189
|
-
### Step 4: Render Proposals
|
|
190
|
-
|
|
191
|
-
```
|
|
192
|
-
-- MindrianOS -- Room Portfolio -- Reorganization Proposals -----------
|
|
193
|
-
|
|
194
|
-
Analyzed 5 rooms. Found 3 potential groupings.
|
|
195
|
-
|
|
196
|
-
Proposal 1: "health-ventures" [HIGH confidence]
|
|
197
|
-
Source: shared domain keywords (genomics, clinical, biotech)
|
|
198
|
-
|- biotech-venture Validation 22 entries
|
|
199
|
-
+- pharma-discovery Discovery 11 entries
|
|
200
|
-
|
|
201
|
-
Proposal 2: "pre-opportunity" [MEDIUM confidence]
|
|
202
|
-
Source: venture stage clustering
|
|
203
|
-
|- acme-robotics Pre-Opportunity 8 entries
|
|
204
|
-
+- new-idea-room Pre-Opportunity 3 entries
|
|
205
|
-
|
|
206
|
-
Proposal 3: "fintech" [LOW confidence]
|
|
207
|
-
Source: name pattern match
|
|
208
|
-
+- fintech-startup Discovery 14 entries
|
|
209
|
-
(single room -- grouping deferred)
|
|
210
|
-
|
|
211
|
-
> /mos:organize move biotech-venture health-ventures Accept proposal 1
|
|
212
|
-
> /mos:organize propose --refresh Re-analyze with latest data
|
|
213
|
-
> /mos:organize view by-stage Preview stage-based view first
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### Step 5: Record Proposals
|
|
217
|
-
|
|
218
|
-
Write proposals to `$ROOMS_HOME/.rooms/proposals.json` for future reference:
|
|
219
|
-
|
|
220
|
-
```json
|
|
221
|
-
{
|
|
222
|
-
"generated": "2026-04-06T20:00:00Z",
|
|
223
|
-
"source": "metadata",
|
|
224
|
-
"proposals": [
|
|
225
|
-
{
|
|
226
|
-
"group": "health-ventures",
|
|
227
|
-
"rooms": ["biotech-venture", "pharma-discovery"],
|
|
228
|
-
"rationale": "shared domain keywords: genomics, clinical, biotech",
|
|
229
|
-
"confidence": "high",
|
|
230
|
-
"status": "pending"
|
|
231
|
-
}
|
|
232
|
-
]
|
|
233
|
-
}
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Subcommand: view
|
|
239
|
-
|
|
240
|
-
**Trigger:** `/mos:organize view [axis]`
|
|
241
|
-
|
|
242
|
-
Available axes: `by-stage`, `by-client`, `by-domain`, `by-activity`
|
|
243
|
-
|
|
244
|
-
This subcommand shows virtual projections WITHOUT moving files. The rooms stay where they are. The view is a lens, not a reorganization.
|
|
245
|
-
|
|
246
|
-
### Step 1: Load Room Data
|
|
247
|
-
|
|
248
|
-
Get room list via `bash scripts/room-registry list`. For each room, load metadata as in `propose`.
|
|
249
|
-
|
|
250
|
-
### Step 2: Build Virtual Grouping
|
|
251
|
-
|
|
252
|
-
**by-stage:** Group rooms by `venture_stage` field from registry.
|
|
253
|
-
|
|
254
|
-
**by-client:** Extract client/owner from:
|
|
255
|
-
1. `venture_name` in registry (parse for company names)
|
|
256
|
-
2. `team/` directory contents (look for stakeholder names)
|
|
257
|
-
3. Room slug prefix patterns
|
|
258
|
-
|
|
259
|
-
**by-domain:** Extract domain from:
|
|
260
|
-
1. Problem-definition content keywords
|
|
261
|
-
2. Room slug domain terms
|
|
262
|
-
3. Brain framework associations (if available)
|
|
263
|
-
|
|
264
|
-
**by-activity:** Group by last activity:
|
|
265
|
-
- Active (activity within 7 days)
|
|
266
|
-
- Recent (7-30 days)
|
|
267
|
-
- Stale (30+ days)
|
|
268
|
-
- Dormant (90+ days)
|
|
269
|
-
|
|
270
|
-
### Step 3: Render Virtual View
|
|
271
|
-
|
|
272
|
-
```
|
|
273
|
-
-- MindrianOS -- Room Portfolio -- View: by-stage ---------------------
|
|
274
|
-
|
|
275
|
-
[virtual projection -- no files moved]
|
|
276
|
-
|
|
277
|
-
v Pre-Opportunity (2 rooms)
|
|
278
|
-
|- acme-robotics active 8 entries
|
|
279
|
-
+- new-idea-room parked 3 entries
|
|
280
|
-
|
|
281
|
-
v Discovery (2 rooms)
|
|
282
|
-
|- fintech-startup parked 14 entries
|
|
283
|
-
+- pharma-discovery active 11 entries
|
|
284
|
-
|
|
285
|
-
v Validation (1 room)
|
|
286
|
-
+- biotech-venture parked 22 entries
|
|
287
|
-
|
|
288
|
-
> /mos:organize move acme-robotics pre-opportunity Make this grouping real
|
|
289
|
-
> /mos:organize view by-domain Try another lens
|
|
290
|
-
> /mos:organize tree Back to physical structure
|
|
291
|
-
```
|
|
45
|
+
Per D-09 the old command stays as a soft-alias stub for v1.13.x; removal is scheduled v1.14.0. CHANGELOG announces the rename.
|
|
292
46
|
|
|
293
|
-
|
|
47
|
+
## Cross-references
|
|
294
48
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
## Subcommand: move
|
|
300
|
-
|
|
301
|
-
**Trigger:** `/mos:organize move <room-name> <target-group>`
|
|
302
|
-
|
|
303
|
-
### Step 1: Validate Inputs
|
|
304
|
-
|
|
305
|
-
Run `bash scripts/room-registry read <room-name>` to verify room exists.
|
|
306
|
-
|
|
307
|
-
If not found:
|
|
308
|
-
```
|
|
309
|
-
x Room not found: <room-name>
|
|
310
|
-
Why: No room named "<room-name>" in .rooms/registry.json
|
|
311
|
-
Fix: /mos:rooms list
|
|
312
|
-
```
|
|
313
|
-
Then STOP.
|
|
314
|
-
|
|
315
|
-
Check if target-group is valid:
|
|
316
|
-
- Must be a valid directory slug (lowercase, alphanumeric, hyphens)
|
|
317
|
-
- Must not exceed nesting depth (max 3 levels: root/group/room)
|
|
318
|
-
|
|
319
|
-
### Step 2: Show Move Preview
|
|
320
|
-
|
|
321
|
-
Display what will happen before asking for confirmation:
|
|
322
|
-
|
|
323
|
-
```
|
|
324
|
-
-- MindrianOS -- Room Move Preview ------------------------------------
|
|
325
|
-
|
|
326
|
-
Moving: fintech-startup
|
|
327
|
-
From: ~/MindrianRooms/fintech-startup/
|
|
328
|
-
To: ~/MindrianRooms/clients/fintech-startup/
|
|
329
|
-
|
|
330
|
-
This will:
|
|
331
|
-
1. Create group directory "clients/" (if new)
|
|
332
|
-
2. Generate ICM CLAUDE.md for "clients/" group
|
|
333
|
-
3. Move fintech-startup/ into clients/
|
|
334
|
-
4. Update registry.json path
|
|
335
|
-
5. Refresh INDEX.md
|
|
336
|
-
|
|
337
|
-
Confirm move? (yes/no)
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
### Step 3: Require Explicit Human Confirmation
|
|
341
|
-
|
|
342
|
-
**CRITICAL:** Wait for explicit "yes" from the user. Accept: "yes", "y", "confirm", "do it", "go ahead".
|
|
343
|
-
|
|
344
|
-
If user declines or says anything ambiguous, STOP:
|
|
345
|
-
> "Move cancelled. Room stays at current location."
|
|
346
|
-
|
|
347
|
-
If user says "defer":
|
|
348
|
-
> Record DEFER decision (Step 7) and STOP.
|
|
349
|
-
|
|
350
|
-
### Step 4: Execute Move
|
|
351
|
-
|
|
352
|
-
If confirmed, execute the move:
|
|
353
|
-
|
|
354
|
-
```bash
|
|
355
|
-
ROOMS_HOME="${MINDRIAN_ROOMS_HOME:-$HOME/MindrianRooms}"
|
|
356
|
-
|
|
357
|
-
# Create group directory if it doesn't exist
|
|
358
|
-
mkdir -p "$ROOMS_HOME/<target-group>"
|
|
359
|
-
|
|
360
|
-
# Move the room directory
|
|
361
|
-
mv "$ROOMS_HOME/<room-name>" "$ROOMS_HOME/<target-group>/<room-name>"
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
### Step 5: Generate Group ICM CLAUDE.md
|
|
365
|
-
|
|
366
|
-
If this is a NEW group (just created), generate an ICM Layer 0 CLAUDE.md for the group directory.
|
|
367
|
-
|
|
368
|
-
Read the template from `templates/icm/GROUP-CLAUDE.md` and fill in:
|
|
369
|
-
- Group name
|
|
370
|
-
- Rationale for grouping (from proposal if available, or ask user)
|
|
371
|
-
- List of rooms in the group
|
|
372
|
-
|
|
373
|
-
Write the filled template to `$ROOMS_HOME/<target-group>/CLAUDE.md`.
|
|
374
|
-
|
|
375
|
-
If the group already has a CLAUDE.md, update the room list section to include the newly moved room.
|
|
376
|
-
|
|
377
|
-
### Step 6: Update Registry and Index
|
|
378
|
-
|
|
379
|
-
Update the room's path in the registry:
|
|
380
|
-
|
|
381
|
-
```bash
|
|
382
|
-
bash scripts/room-registry update <room-name> path "<target-group>/<room-name>"
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
Refresh INDEX.md:
|
|
386
|
-
|
|
387
|
-
```bash
|
|
388
|
-
bash scripts/update-icm-index "$ROOMS_HOME"
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
### Step 7: Record Decision
|
|
392
|
-
|
|
393
|
-
Record the user's decision for future proposal intelligence.
|
|
394
|
-
|
|
395
|
-
Write to `$ROOMS_HOME/.rooms/decisions.json`:
|
|
396
|
-
|
|
397
|
-
```json
|
|
398
|
-
{
|
|
399
|
-
"decisions": [
|
|
400
|
-
{
|
|
401
|
-
"timestamp": "2026-04-06T20:00:00Z",
|
|
402
|
-
"type": "GROUP",
|
|
403
|
-
"room": "fintech-startup",
|
|
404
|
-
"target": "clients",
|
|
405
|
-
"rationale": "client-based grouping",
|
|
406
|
-
"source": "user-confirmed"
|
|
407
|
-
}
|
|
408
|
-
]
|
|
409
|
-
}
|
|
410
|
-
```
|
|
411
|
-
|
|
412
|
-
Decision types:
|
|
413
|
-
- **GROUP** -- user confirmed moving room into a group
|
|
414
|
-
- **SEPARATE** -- user explicitly rejected a proposed grouping ("keep these apart")
|
|
415
|
-
- **DEFER** -- user acknowledged the proposal but chose not to act now
|
|
416
|
-
|
|
417
|
-
When Brain graph is available (Phase 59.2+), also create graph edges:
|
|
418
|
-
|
|
419
|
-
```cypher
|
|
420
|
-
// GROUP decision
|
|
421
|
-
MERGE (r:Room {name: "fintech-startup"})
|
|
422
|
-
MERGE (g:RoomGroup {name: "clients"})
|
|
423
|
-
MERGE (r)-[:GROUPED_BY_USER {timestamp: datetime(), rationale: "client-based"}]->(g)
|
|
424
|
-
|
|
425
|
-
// SEPARATE decision
|
|
426
|
-
MERGE (r1:Room {name: "room-a"})
|
|
427
|
-
MERGE (r2:Room {name: "room-b"})
|
|
428
|
-
MERGE (r1)-[:SEPARATED_BY_USER {timestamp: datetime(), reason: "different domains"}]->(r2)
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
If Brain is not available, the local `decisions.json` file is sufficient. Future proposals read this file to avoid re-suggesting rejected groupings.
|
|
432
|
-
|
|
433
|
-
### Step 8: Report Success
|
|
434
|
-
|
|
435
|
-
```
|
|
436
|
-
-- MindrianOS -- Room Move Complete -----------------------------------
|
|
437
|
-
|
|
438
|
-
Moved: fintech-startup
|
|
439
|
-
To: ~/MindrianRooms/clients/fintech-startup/
|
|
440
|
-
Group: clients/ (ICM CLAUDE.md generated)
|
|
441
|
-
Registry: updated
|
|
442
|
-
INDEX.md: refreshed
|
|
443
|
-
|
|
444
|
-
Decision recorded: GROUP fintech-startup -> clients
|
|
445
|
-
|
|
446
|
-
> /mos:organize tree See updated structure
|
|
447
|
-
> /mos:organize propose Get more suggestions
|
|
448
|
-
> /mos:organize move <room> clients Add another room to this group
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
---
|
|
452
|
-
|
|
453
|
-
## Decision Memory
|
|
454
|
-
|
|
455
|
-
The organize command maintains two local files for decision intelligence:
|
|
456
|
-
|
|
457
|
-
1. **`$ROOMS_HOME/.rooms/proposals.json`** -- generated proposals with status tracking
|
|
458
|
-
2. **`$ROOMS_HOME/.rooms/decisions.json`** -- all GROUP/SEPARATE/DEFER decisions with timestamps
|
|
459
|
-
|
|
460
|
-
When generating new proposals (via `propose`), the system:
|
|
461
|
-
1. Reads `decisions.json` to avoid re-suggesting SEPARATE'd groupings
|
|
462
|
-
2. Boosts confidence for proposals that align with previous GROUP decisions
|
|
463
|
-
3. Surfaces DEFER'd proposals again after 30 days with a note: "Previously deferred on [date]"
|
|
464
|
-
|
|
465
|
-
When Brain graph is available, these local files serve as a staging area. Decisions are promoted to graph edges for richer cross-room intelligence.
|
|
466
|
-
|
|
467
|
-
---
|
|
468
|
-
|
|
469
|
-
## Graceful Degradation
|
|
470
|
-
|
|
471
|
-
| Available | Proposal Quality | Source |
|
|
472
|
-
|-----------|-----------------|--------|
|
|
473
|
-
| Brain + SQLite graph | Rich: shared frameworks, themes, co-occurrence | Graph queries |
|
|
474
|
-
| Brain only | Good: venture stage taxonomy, framework connections | Cypher queries |
|
|
475
|
-
| SQLite graph only | Good: local graph relationships, room metadata | Local graph |
|
|
476
|
-
| Neither (Tier 0) | Basic: stage clustering, name patterns, domain keywords | Registry + filesystem |
|
|
477
|
-
|
|
478
|
-
The command always works. Intelligence quality scales with available infrastructure. This is the Tier 0 principle applied to room organization.
|
|
479
|
-
|
|
480
|
-
---
|
|
481
|
-
|
|
482
|
-
## Cross-Surface Notes (Tri-Polar Rule)
|
|
483
|
-
|
|
484
|
-
| Surface | Behavior |
|
|
485
|
-
|---------|----------|
|
|
486
|
-
| **CLI** | Full subcommand syntax as documented above. Scripts run directly. |
|
|
487
|
-
| **Desktop** | Larry interprets natural language and maps to subcommands. See natural language mapping at top. |
|
|
488
|
-
| **Cowork** | Same registry, same commands. Moves affect all team members sharing the room hierarchy. Announce moves in shared context. |
|
|
489
|
-
|
|
490
|
-
## Error Format
|
|
491
|
-
|
|
492
|
-
Always use the 3-line error pattern:
|
|
493
|
-
|
|
494
|
-
```
|
|
495
|
-
x What happened
|
|
496
|
-
Why: reason
|
|
497
|
-
Fix: /mos:command
|
|
498
|
-
```
|
|
49
|
+
- `commands/rooms.md` -- the canonical target with the full portfolio surface (and the `organize` subcommand).
|
|
50
|
+
- `scripts/soft-alias-runner.cjs` -- the shared runner.
|
|
51
|
+
- Canon Part 7 (Reuse Before Build) -- consolidation rationale.
|
package/commands/persona.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: persona
|
|
3
3
|
description: Generate Six-Hats lenses from room data
|
|
4
|
+
help_jtbd: "Get a per-persona view of your venture (role-blend x journey-stage)."
|
|
4
5
|
body_shape: C (Room Card)
|
|
5
6
|
serves_jtbd: ["prepare-pitch"]
|
|
6
7
|
teaching: "When you need fresh perspectives on the room, /mos:persona generates Six-Hats lenses from your room data. Each persona argues from a different stance; you decide what holds."
|
package/commands/pipeline.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pipeline
|
|
3
3
|
description: Chain a multi-step methodology pipeline
|
|
4
|
+
help_jtbd: "Chain methodologies stage-by-stage."
|
|
5
|
+
body_shape: E
|
|
4
6
|
argument-hint: '[pipeline-name] [--from-problem-type <x>] [--from-framework <x>]'
|
|
5
7
|
serves_jtbd: ["plan-execution"]
|
|
6
8
|
teaching: "When you want several methodologies chained instead of run one-by-one, /mos:pipeline executes a multi-step pipeline with the room as the connecting tissue. Week 7 pattern."
|
package/commands/present.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: present
|
|
3
3
|
description: Generate the 6-view presentation and open it
|
|
4
|
+
help_jtbd: "Render your room as a presentation deck."
|
|
4
5
|
body_shape: E (Action Report)
|
|
5
6
|
body_shape_detail: Generation results as action items, 6 views listed as outputs
|
|
6
7
|
serves_jtbd: ["prepare-pitch"]
|
package/commands/publish.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: publish
|
|
3
3
|
description: Publish the Data Room presentation to Vercel
|
|
4
|
+
help_jtbd: "Publish your room to a live URL."
|
|
5
|
+
body_shape: E
|
|
4
6
|
argument-hint: [--all|<view>]
|
|
5
7
|
serves_jtbd: ["prepare-pitch"]
|
|
6
8
|
teaching: "When the Data Room is ready to share publicly, /mos:publish deploys the presentation to Vercel with a one-click link. From local artifact to shareable URL in one move."
|