@bradheitmann/odin-sentinel 0.4.3 → 0.4.5

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/README.md CHANGED
@@ -28,6 +28,136 @@ programming language.
28
28
  For a recommended first team, see
29
29
  [docs/guides/recommended-starter-team.md](docs/guides/recommended-starter-team.md).
30
30
 
31
+ For copy-paste setup and team-bootstrap prompts you can hand to Claude Code or
32
+ Codex on a fresh machine, see
33
+ [docs/guides/quickstart-prompts.md](docs/guides/quickstart-prompts.md).
34
+
35
+ ## Quick Start
36
+
37
+ ### 1. Install
38
+
39
+ ```bash
40
+ npm i -g @bradheitmann/odin-sentinel
41
+ ```
42
+
43
+ Or use `npx` without installing — see the host-specific configs below.
44
+
45
+ ### 2. Configure your MCP host
46
+
47
+ Pick the one you use. Restart the host after editing.
48
+
49
+ **Claude Code**
50
+
51
+ ```bash
52
+ claude mcp add odin-sentinel -- npx -y -p @bradheitmann/odin-sentinel odin-sentinel-mcp
53
+ ```
54
+
55
+ **Codex** (`~/.codex/config.toml`)
56
+
57
+ ```toml
58
+ [mcp_servers.odin-sentinel]
59
+ command = "npx"
60
+ args = ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
61
+ ```
62
+
63
+ **Cursor / Cursor CLI / VS Code / Factory (Droid) / Pi** (`mcpServers` JSON)
64
+
65
+ ```json
66
+ {
67
+ "mcpServers": {
68
+ "odin-sentinel": {
69
+ "command": "npx",
70
+ "args": ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ **Zed** (`~/.config/zed/settings.json` → `context_servers`)
77
+
78
+ ```json
79
+ "odin-sentinel": {
80
+ "source": "custom",
81
+ "command": "npx",
82
+ "args": ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
83
+ }
84
+ ```
85
+
86
+ **Goose** (`~/.config/goose/config.yaml` → `extensions`)
87
+
88
+ ```yaml
89
+ odin-sentinel:
90
+ type: stdio
91
+ cmd: npx
92
+ args: ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
93
+ enabled: true
94
+ ```
95
+
96
+ **Crush** (`~/.config/crush/crush.json` → `mcp`)
97
+
98
+ ```json
99
+ {
100
+ "mcp": {
101
+ "odin-sentinel": {
102
+ "type": "stdio",
103
+ "command": "npx",
104
+ "args": ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ **OpenCode** (`~/.config/opencode/opencode.json` → `mcp`)
111
+
112
+ ```json
113
+ {
114
+ "mcp": {
115
+ "odin-sentinel": {
116
+ "type": "local",
117
+ "command": ["npx", "-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"],
118
+ "enabled": true
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+ **OpenHands** (`~/.openhands/config.toml`)
125
+
126
+ ```toml
127
+ [mcp.stdio_servers.odin-sentinel]
128
+ name = "odin-sentinel"
129
+ command = "npx"
130
+ args = ["-y", "-p", "@bradheitmann/odin-sentinel", "odin-sentinel-mcp"]
131
+ ```
132
+
133
+ ### 3. Use it
134
+
135
+ After restarting the host, give the agent an instruction like:
136
+
137
+ > Use the `odin-sentinel` MCP server. Call `odin.get_startup_packet`, then bootstrap an executive office and one development pod.
138
+
139
+ The agent will read the protocol resources (`odin://protocol/*`), follow the role contracts, and stay inside the SCP governance rules.
140
+
141
+ ### 4. Verify (optional)
142
+
143
+ A one-line smoke test that works without any host:
144
+
145
+ ```bash
146
+ printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}\n' \
147
+ | npx -y -p @bradheitmann/odin-sentinel odin-sentinel-mcp
148
+ ```
149
+
150
+ A successful response includes `"serverInfo":{"name":"odin-sentinel","version":"0.4.5"}`.
151
+
152
+ ### Claude Code plugin (optional)
153
+
154
+ If you're on Claude Code, you can install the SCP skill + MCP server together as a plugin:
155
+
156
+ ```bash
157
+ claude plugin marketplace add bradheitmann/odin-sentinel
158
+ claude plugin install sentinel-coordination-protocol@odin-sentinel
159
+ ```
160
+
31
161
  ## Terms
32
162
 
33
163
  - ODIN Sentinel: this MCP server and its portable team-coordination protocol.
@@ -0,0 +1,132 @@
1
+ # ODIN Sentinel Quickstart Prompts
2
+
3
+ Two prompts that take a fresh machine from *"agents installed"* to *"team running under the Sentinel Coordination Protocol."* Paste each one into a capable coding agent (Claude Code or Codex) at the indicated moment. The agents do the rest.
4
+
5
+ The prompts are opinionated. They assume you want a working team in the smallest number of steps, not a customized one. Swap rosters or hosts at the end if you have different agents available.
6
+
7
+ ---
8
+
9
+ ## Prompt 1 — Setup
10
+
11
+ **When to use:** once per machine. Paste into Claude Code or Codex on the target machine. The agent will detect what's missing, install only what's needed (Homebrew, git, Node.js, pnpm, CMUX, and the `@bradheitmann/odin-sentinel` MCP server), and wire the server into every agent host you actually have installed.
12
+
13
+ ```
14
+ Set up the @bradheitmann/odin-sentinel MCP server on this machine. Detect what's missing, install only what's needed, configure only the agent hosts that exist on this machine.
15
+
16
+ # Plan
17
+ Make a 5-task plan and execute in order:
18
+ 1. Prereqs (Homebrew, git, node, pnpm, cmux — install only if missing)
19
+ 2. Install MCP server with explicit @latest tag
20
+ 3. Smoke test the server
21
+ 4. Detect installed agent hosts and wire each one
22
+ 5. Print final report
23
+
24
+ # Rules
25
+ - Detect first, install only if missing: `command -v <tool>` for CLIs; `test -e <path>` for config dirs.
26
+ - After installing pnpm fresh, run `pnpm setup && source ~/.zshrc` once.
27
+ - Ignore pnpm warnings of the form "Failed to create bin … @pnpm/exe" — benign Homebrew vs pnpm self-install conflict.
28
+ - Always install with `pnpm add -g @bradheitmann/odin-sentinel@latest` — the bare name can return a stale version from registry cache.
29
+ - The MCP server has no `--version` flag. To verify, send a JSON-RPC initialize on stdin and parse the response.
30
+ - For every JSON / TOML / YAML config file: read, merge the odin-sentinel entry, write back. Never overwrite a whole file. Preserve comments in JSONC. Create the file if missing.
31
+ - Do not install agent CLIs the user doesn't have.
32
+ - Do not enable telemetry, deploy Cloudflare resources, or edit anything outside the host config files listed below plus one optional line in ~/.zshrc.
33
+
34
+ # Smoke test (use this exact form)
35
+ printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}\n' | odin-sentinel-mcp
36
+
37
+ Expect `"serverInfo":{"name":"odin-sentinel","version":"<X.Y.Z>"}`. If absent, stop and report.
38
+
39
+ # Hosts to detect and configure
40
+ For each: detect → if installed, merge the entry into the listed config file (idempotent). Every entry uses `command = "odin-sentinel-mcp"` with no args.
41
+
42
+ - Claude Code: `command -v claude` → `claude mcp add odin-sentinel -- odin-sentinel-mcp`
43
+ - Codex: `command -v codex` → `~/.codex/config.toml` [mcp_servers.odin-sentinel] command = "odin-sentinel-mcp"
44
+ - Cursor: `command -v cursor-agent` → `~/.cursor/mcp.json` mcpServers.odin-sentinel = { command: "odin-sentinel-mcp" }
45
+ - Factory Droid: `command -v droid` → `~/.factory/mcp.json` mcpServers.odin-sentinel = { type: "stdio", command: "odin-sentinel-mcp", disabled: false }
46
+ - Kilo Code: `command -v kilocode` → `~/.kilocode/mcp.json` (same shape as Cursor)
47
+ - Pi: `command -v pi` → `~/.pi/mcp.json` (same shape as Cursor)
48
+ - OpenCode: `command -v opencode` → `~/.config/opencode/opencode.json` mcp.odin-sentinel = { type: "local", command: ["odin-sentinel-mcp"], enabled: true }
49
+ - Crush: `command -v crush` → `~/.config/crush/crush.json` mcp.odin-sentinel = { type: "stdio", command: "odin-sentinel-mcp" }
50
+ - Goose: `command -v goose` → `~/.config/goose/config.yaml` extensions.odin-sentinel = { type: stdio, cmd: odin-sentinel-mcp, enabled: true }
51
+ - OpenHands: `command -v openhands` → `~/.openhands/config.toml` [mcp.stdio_servers.odin-sentinel] name = "odin-sentinel", command = "odin-sentinel-mcp"
52
+ - Zed: `test -e ~/.config/zed` → `~/.config/zed/settings.json` context_servers.odin-sentinel = { source: "custom", command: "odin-sentinel-mcp", enabled: true }
53
+ - VS Code: `command -v code` → `~/Library/Application Support/Code/User/mcp.json` servers.odin-sentinel = { type: "stdio", command: "odin-sentinel-mcp" }
54
+
55
+ # Final report
56
+ Print:
57
+ - installed odin-sentinel version
58
+ - which hosts were configured
59
+ - which hosts were skipped (one line each, with reason "not installed")
60
+ - any non-fatal warnings
61
+
62
+ Then print these three lines and stop:
63
+
64
+ Setup complete.
65
+ Restart any agent host you configured (their MCP config is cached at startup).
66
+ To boot a team: open CMUX, launch your Executive PM agent in the first surface, paste your team-roster prompt.
67
+ ```
68
+
69
+ After it finishes, **restart any agent host it touched** — each one caches MCP server configs at startup. Skipping the restart is the most common reason "the MCP server isn't showing up" after a clean install.
70
+
71
+ ---
72
+
73
+ ## Prompt 2 — Team Bootstrap
74
+
75
+ **When to use:** every time you spin up a new project. Open CMUX, launch Codex in the first surface, paste this. Codex acts as `A/EXEC-PM`, reads the Sentinel Coordination Protocol from the bundled skill, and stages a two-team layout (executive office + one development pod). The roster below is opinionated — substitute models or hosts you actually have.
76
+
77
+ ```
78
+ You are A/EXEC-PM. Bootstrap a 2-team Sentinel Coordination Protocol session in this CMUX workspace.
79
+
80
+ # Procedure
81
+ 1. Call odin.get_version. Confirm >= 0.4.4.
82
+ 2. Call odin.get_bootstrap_skill. Read the full SCP contract. Follow it for the remainder of this session — particularly: you are the sole staffing authority, sole CMUX surface custodian, and you must complete the pre-staffing gate before every spawn.
83
+ 3. Call odin.compute_surface_layout with teamCount=2. Confirm the canonical layout is [A] [B].
84
+ 4. Call odin.compute_surface_layout_gate with fromTeamCount=1, toTeamCount=2. Execute the cmux operations it lists.
85
+ 5. Stage the team per the roster below. For each surface: create it via cmux, confirm it exists and is empty, send the agent launch command, then send the occupant boot prompt requesting an SCP_BOOT_RECEIPT.
86
+
87
+ # Roster (substitute hosts/models if you have different agents available)
88
+
89
+ Team A — Executive Office (column 0, 5 surfaces stacked as tabs):
90
+ | Slot | Agent host | Model |
91
+ |---------------|---------------|-----------------|
92
+ | A/EXEC-PM | Codex | (you) |
93
+ | A/EXEC-ODIN | Codex | high-reasoning |
94
+ | A/EXEC-ASST | Kilo Code | Composer-2 |
95
+ | A/EXEC-RSCH | Cursor | Kimi-K-2.5 |
96
+ | A/EXEC-QA | OpenCode | Kimi-K-2.5 |
97
+
98
+ Team B — Development Pod (column 1, 5 surfaces stacked as tabs):
99
+ | Slot | Agent host | Model |
100
+ |---------------|---------------|-----------------|
101
+ | B/TEAM-PM | Claude Code | Opus-4.7 |
102
+ | B/ODIN | Codex | high-reasoning |
103
+ | B/DEV-1 | Droid (Factory) | Kimi-K-2.6 |
104
+ | B/QA-1 | Crush | GLM-5.1 |
105
+ | B/SHADOW-1 | Claude Code | Haiku |
106
+
107
+ # Constraints
108
+ - You are the only role permitted to invoke cmux surface operations (new-split, new-surface, move-surface, close-surface).
109
+ - No hidden subagents. Every agent must occupy a visible CMUX surface.
110
+ - TEAM PMs do not staff their own pods. All staffing is yours.
111
+ - A/EXEC-ODIN holds binding HALT authority over you. Honor HALT directives.
112
+ - Context window soft threshold 70% / hard 90% per agent. Force handoff or lockdown on hard breach.
113
+
114
+ # Closeout signal
115
+ After all 10 surfaces are spawned, all 10 boot receipts received, and odin.validate_team_manifest passes, emit a single line:
116
+
117
+ STAGED_AND_IDLE: 2 teams, 10 occupants, layout=[A] [B]
118
+
119
+ Then wait for the user's first product directive. Do not begin work until dispatched.
120
+ ```
121
+
122
+ When `STAGED_AND_IDLE` appears, the team is ready for your first directive.
123
+
124
+ ---
125
+
126
+ ## Scaling beyond 2 teams
127
+
128
+ To add a third development pod (Team C), tell `A/EXEC-PM`:
129
+
130
+ > Stage Team C as a new development pod identical in role shape to Team B. Call `odin.compute_surface_layout_gate fromTeamCount=2 toTeamCount=3` first and follow its checklist. The canonical layout becomes `[A] [B/C]` — Team A in the tall column, B and C stacked in the right column.
131
+
132
+ The same pattern scales out to 4, 5, 6, 7, 8 teams. The packing rule is in `odin://protocol/topology`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bradheitmann/odin-sentinel",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -33,10 +33,12 @@ function filesToAudit() {
33
33
 
34
34
  const publicFiles = filesToAudit();
35
35
 
36
- // The bundled bootstrap protocol document references agent harness config
37
- // directories and tilde home paths as part of its install guidance. The
38
- // path-style rules below skip these files; the rest of the rules still apply.
36
+ // Install and protocol documentation legitimately references agent harness
37
+ // config directories and tilde home paths. The path-style rules below skip
38
+ // these files; the rest of the rules still apply.
39
39
  const BUNDLED_DOC = new Set([
40
+ "README.md",
41
+ "docs/guides/quickstart-prompts.md",
40
42
  "protocol/bootstrap-" + "sk" + "ill.md",
41
43
  "plugins/sentinel-coordination-protocol/" + "sk" + "ills/sentinel-coordination-protocol/SK" + "ILL.md"
42
44
  ]);
@@ -39,6 +39,7 @@ const requiredFiles = [
39
39
  "dist/src/protocol/validators.js",
40
40
  "dist/src/protocol/version.js",
41
41
  "docs/guides/quick-start.md",
42
+ "docs/guides/quickstart-prompts.md",
42
43
  "docs/guides/recommended-starter-team.md",
43
44
  "docs/reference/client-compatibility.md",
44
45
  "docs/reference/cost-and-privacy.md",