opensocrates 1.2.1 → 1.3.1

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
@@ -4,6 +4,12 @@
4
4
 
5
5
  # OpenSocrates
6
6
 
7
+ **A method for the judgment your agent is making.**
8
+
9
+ OpenSocrates brings 48 authored reasoning methods to Claude, Codex, OpenCode,
10
+ Grok Build, Cursor and Google Antigravity. Use it to examine assumptions, compare
11
+ options and weigh evidence while you work in your existing agent.
12
+
7
13
  **English** | [한국어](README.ko.md)
8
14
 
9
15
  [![CI](https://github.com/ParkerHwang/OpenSocrates/actions/workflows/ci.yml/badge.svg)](https://github.com/ParkerHwang/OpenSocrates/actions/workflows/ci.yml)
@@ -11,558 +17,105 @@
11
17
  [![Release](https://img.shields.io/github/v/release/ParkerHwang/OpenSocrates)](https://github.com/ParkerHwang/OpenSocrates/releases)
12
18
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
13
19
 
14
- OpenSocrates is a local integration and authored reasoning framework for
15
- Google Antigravity, Claude, Codex, Cursor, Grok Build, and OpenCode. It preserves
16
- each host's delivery model: Claude/Codex hidden trusted context leads with
17
- teacher questions, Antigravity/Cursor/Grok expose question-led complete
18
- procedures through skills, and OpenCode injects one such procedure in the same
19
- turn with the native skill as fallback. Straightforward factual and mechanical
20
- work can pass through unchanged.
21
-
22
- Version `1.2.0` added first-class OpenCode support to the 48 reasoning systems,
23
- including stable same-turn activation, a native skill fallback, coordinated
24
- multi-host lifecycle management, and opt-in automatic updates on
25
- Apple-silicon macOS (`darwin-arm64`). It uses your existing host login and does
26
- not require an API key or an OpenSocrates backend.
27
-
28
- The native plugin archives intentionally ship only `bin/launch.sh`. That
29
- launcher accepts `darwin-arm64` only; macOS Intel, Linux, and Windows launchers
30
- and runtimes are not shipped or supported in this release.
31
-
32
- > **Current release: OpenSocrates 1.2.1.** It adds a committed, mutation-tested
33
- > v1.2 adjudication snapshot and a bilingual three-question teacher overlay
34
- > across all six host packages. It also adds safe complete-uninstall and Codex
35
- > trust-reset flows, tighter Claude provenance boundaries, same-machine
36
- > reinstall acceptance, and source-complete Codex SessionStart timing evidence.
37
- > The separate Claude Chat v1.2.1 live-upload receipt remains pending.
38
-
39
- ## Host support
40
-
41
- | Host surface | Automatic selection | User-facing entry | Validation status |
42
- | --- | --- | --- | --- |
43
- | Google Antigravity CLI | No; explicit skill only | `opensocrates` skill | [Experimental content-only plugin; `agy 1.0.6` validation passed](docs/antigravity-support.md) |
44
- | Cursor IDE and CLI | Cursor may discover the skill; no separate OpenSocrates selector call | `/opensocrates` | [Experimental content-only Agent Plugin; official package contract checked, no live Cursor receipt](docs/cursor-support.md) |
45
- | Grok Build `grok -p` | Yes; native same-turn skill selection | `/opensocrates` | [Automatic and explicit native skill validated on Grok Build 1.0.3](docs/grok-support.md) |
46
- | Grok Build TUI | Native plugin is shared with headless; activation receipt pending | `/opensocrates` | [TUI hook execution verified, native skill marker test pending; shipped package has no hooks](docs/grok-support.md) |
47
- | OpenCode TUI and `opencode run` | Yes; stable same-turn local bridge | Native `opensocrates` skill | [OpenCode 1.18.18 TUI, `opencode run`, and DeepSeek V4 Flash live smoke validated](docs/opencode-support.md) |
48
- | Codex CLI and Desktop | Yes, after one-time in-app hook approval | OpenSocrates plugin | Package and launcher release-validated on `darwin-arm64`; no live Codex hook-delivery receipt |
49
- | Claude Code CLI | Yes, through `UserPromptSubmit` | Plugin: `/opensocrates:opensocrates` | Locally validated on `darwin-arm64` |
50
- | Claude Code desktop app, Local mode | Yes, where Claude Code plugins run | Plugin: `/opensocrates:opensocrates` | [Authenticated hook lifecycle locally validated](docs/claude-desktop-live-probe.md) |
51
- | Claude Cowork with the local plugin | Yes, in the tested local plugin upload | Plugin: `/opensocrates:opensocrates` | [Native hook lifecycle locally validated; direct release upload, no marketplace sync](docs/claude-cowork-live-probe.md) |
52
- | Claude web and Desktop Chat | No OpenSocrates hooks | Standalone skill: `/opensocrates` | [Historical v1.1.2 upload validated; exact v1.2.1 release and live upload pending](docs/claude-chat-upload-probe.md) |
53
-
54
- The status column uses four distinct levels. Do not read them as
55
- interchangeable:
56
-
57
- - **Implemented** — the integration exists in code and ships in the package.
58
- - **Locally validated** — exercised end to end on a maintainer machine, but
59
- not on every build.
60
- - **Release-validated** — exercised by the release gate on every build. For
61
- Codex this currently covers the package and launcher, not live hook delivery.
62
- - **Experimental / no live probe receipt** — implemented, but no captured
63
- receipt shows the host actually delivering the hook. `os capabilities show`
64
- reports these capabilities as `unknown`, not as available.
65
-
66
- The Claude plugin's canonical explicit command is
67
- `/opensocrates:opensocrates`, following Anthropic's
68
- [plugin namespace contract](https://code.claude.com/docs/en/plugins). A current
69
- Claude version can also offer `/opensocrates` as a bare alias when no other
70
- command owns that name, but the alias is not the canonical plugin contract and
71
- does not prove which skill source answered. The separately uploaded Chat ZIP
72
- is a standalone skill and canonically uses `/opensocrates`. Chat surfaces do
73
- not run the packaged OpenSocrates hooks; automatic per-prompt selection is
74
- available only on Claude Code and Cowork surfaces that execute the plugin
75
- runtime. OpenSocrates fails open if a hook or selector is unavailable.
76
-
77
- Keep three Claude provenance states separate: the installer-managed local
78
- plugin, a standalone ZIP manually uploaded to Chat, and any pre-existing
79
- synced/custom skill. Local plugin status cannot prove or update either Cloud
80
- state. The currently recorded local plugin version is 1.2.1, while the
81
- pre-existing synced/custom observation is 1.1.2; neither is evidence that an
82
- exact v1.2.1 standalone release ZIP was uploaded.
83
-
84
- The published v1.1.2 Claude plugin archive exceeded Cowork's documented
85
- compressed limit and observed uncompressed limit. A pre-release v1.1.3
86
- candidate was 13.8 MB compressed and 34.1 MB uncompressed, contained neither
87
- the Codex runtime nor a nested ZIP, and passed Cowork's local upload. Its
88
- UserPromptSubmit, PostToolUse(Read), authenticated grounding receipt, Stop, and
89
- cleanup lifecycle is locally validated. Version 1.1.4 is the first release to
90
- ship that reviewed package boundary. The repository still has no Cowork
91
- marketplace manifest, so Cowork installation uses the local plugin upload path
92
- rather than repository sync.
93
-
94
- ## Install
20
+ [Website](https://opensocrates.parker-j-hwang.chatgpt.site) ·
21
+ [v1.3.1 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.3.1) ·
22
+ [Installation reference](docs/advanced-usage.md)
95
23
 
96
- Before installing, sign in to the host and make sure its command is available:
24
+ ## Get started
97
25
 
98
- - Antigravity: `agy 1.0.0` or later; support is explicit-skill only;
99
- - Cursor: Cursor `2.5.0` or later; support is explicit-skill first;
100
- - Claude: Claude Code `2.1.205` or later and the `claude` command;
101
- - Codex: an OAuth-authenticated `codex` command.
102
- - Grok Build: `grok 1.0.3` or later; existing Grok authentication, with no additional API key.
103
- - OpenCode: OpenCode `1.18.18` or later; any configured provider/model is accepted.
26
+ Sign in to your host and make its CLI available. You need Node.js 20 or later.
27
+ The distributed native runtimes support **Apple-silicon macOS**; see each host's
28
+ support documentation before installing on another platform.
104
29
 
105
- Node.js 20 or later is required. The published `opensocrates` npm package is a
106
- small, dependency-free installer. It downloads the matching package from
107
- GitHub Releases and verifies the release checksum and every file checksum
108
- before registering an owner-marked managed marketplace.
30
+ ```sh
31
+ # Install for every supported, ready host
32
+ npx --yes opensocrates@1.3.1 install --host all
109
33
 
110
- ### Install every ready host
111
-
112
- ```bash
113
- npx --yes opensocrates@1.2.1 install --host all
114
- ```
115
-
116
- The all-host path detects supported, authenticated host CLIs, completes every
117
- preflight before changing any host, verifies and stages every selected package,
118
- and then activates one release transactionally. If one activation fails, every
119
- host already changed in that transaction is restored to its previous managed
120
- registration.
121
-
122
- Use the same host value for the complete lifecycle:
123
-
124
- ```bash
125
- npx --yes opensocrates@1.2.1 status --host all
126
- npx --yes opensocrates@1.2.1 update --host all
127
- npx --yes opensocrates@1.2.1 remove --host all
34
+ # Or choose one host
35
+ npx --yes opensocrates@1.3.1 install --host codex
36
+ npx --yes opensocrates@1.3.1 install --host claude
128
37
  ```
129
38
 
130
- ### Remove a registration, purge owned payloads, or reset Codex trust
131
-
132
- Ordinary `remove` keeps its backward-compatible, narrow contract: it removes
133
- the selected exact host registration and installer-managed root and reconciles
134
- the updater, but it may leave host-owned OpenSocrates plugin caches and the
135
- installer desired-state file. Its output names every remaining known
136
- OpenSocrates path and the purge command to run next; it does not describe that
137
- result as a complete uninstall.
39
+ Start a new task after installation. In Codex, approve the OpenSocrates hooks in
40
+ an interactive session before relying on native discovery. OpenSocrates uses your
41
+ host's existing authentication and provider configuration; it needs no separate
42
+ OpenSocrates account or API key.
138
43
 
139
- After closing active hosts, request the explicit owned-payload purge:
44
+ For an existing installation:
140
45
 
141
- ```bash
142
- npx --yes opensocrates@1.2.1 remove --host all --purge
143
- # One host: npx --yes opensocrates@1.2.1 remove --host claude --purge
144
- # Also reset only OpenSocrates Codex hook trust:
145
- npx --yes opensocrates@1.2.1 remove --host all --purge --reset-trust
146
- # Codex only: npx --yes opensocrates@1.2.1 remove --host codex --purge --reset-trust
46
+ ```sh
47
+ npx --yes opensocrates@1.3.1 update --host all
48
+ npx --yes opensocrates@1.3.1 status --host all
147
49
  ```
148
50
 
149
- Purge verifies canonical paths, the exact `opensocrates@opensocrates` package
150
- identity, manifests, checksums, and installer ownership markers before deleting
151
- anything. It covers the managed roots, exact Claude/Codex cache versions, empty
152
- Claude OpenSocrates plugin-data directories, OpenCode's owned skill/bridge/
153
- sidecar, the OpenSocrates LaunchAgent, known transaction residue, and—after the
154
- lifecycle lock is released—the final known installer state files and an empty
155
- state directory. It never recursively deletes broad host parents such as
156
- `~/.claude/plugins`, `~/.codex/plugins`, or `~/.opensocrates`.
157
-
158
- An active Claude cache with a live `.in_use/<pid>`, a missing host CLI that
159
- prevents registration verification, a symlink, an invalid marker or manifest,
160
- nonempty unverified plugin data, or a cleanup/permission failure makes the
161
- result `pending` or failed and the command exits unsuccessfully. Close the
162
- host or resolve the reported path and rerun the same purge command; a completed
163
- purge is idempotent. Other plugins and user task, project, chat, plan, and
164
- history data are preserved byte-for-byte.
165
-
166
- The four removal surfaces remain separate:
167
-
168
- - **Plugin registration:** ordinary remove and purge ask the selected host to
169
- remove only the exact `opensocrates@opensocrates` registration.
170
- - **Payload and installer state:** `--purge` verifies ownership before removing
171
- the exact cache/data/managed-state paths described above.
172
- - **Host security trust:** Codex hook approval is not payload. Purge preserves
173
- it by default and reports that fact. Add `--reset-trust` explicitly with
174
- `--host codex` or `--host all` to reset only the seven canonical
175
- OpenSocrates hook approvals.
176
- - **User history:** task, project, chat, plan, session, and history content is
177
- never a removal target and remains byte-for-byte unchanged.
178
-
179
- Codex CLI 0.145.0 has no supported narrow trust-removal command, so this opt-in
180
- fallback targets only the exact `CODEX_HOME/config.toml`. It removes canonical
181
- OpenSocrates sections for `pre_tool_use`, `post_tool_use`, `pre_compact`,
182
- `session_start`, `session_end`, `user_prompt_submit`, and `stop`, without
183
- hard-coding or printing their hashes. Other settings, plugins, comments, order,
184
- whitespace, and LF/CRLF style are preserved. A symlink, noncanonical matching
185
- section, unexpected key, invalid config, unsupported Codex validator, concurrent
186
- change, or write/validation failure makes the purge partial. The original
187
- config is retained or transactionally restored when rollback remains safe. If
188
- a later external edit makes automatic rollback unsafe, that edit is not
189
- overwritten and the owner-only recovery copy is preserved. No complete result
190
- is claimed. Reinstallation is expected to present those seven hooks as new
191
- approvals; that live approval flow still requires separate host evidence.
192
-
193
- A private `~/.opensocrates/desired-state.json` manifest records the selected
194
- channel, installed hosts, and desired active version. `status --host all`
195
- reports the desired and available versions, last check, last successful
196
- automatic update, and per-host drift.
197
-
198
- ### Install one host explicitly
199
-
200
- Codex remains the default host for backward compatibility:
201
-
202
- ```bash
203
- npx --yes opensocrates@1.2.1 install
204
- # Equivalent: npx --yes opensocrates@1.2.1 install --host codex
205
- npx --yes opensocrates@1.2.1 install --host antigravity
206
- npx --yes opensocrates@1.2.1 install --host claude
207
- npx --yes opensocrates@1.2.1 install --host cursor
208
- npx --yes opensocrates@1.2.1 install --host grok
209
- npx --yes opensocrates@1.2.1 install --host opencode
210
- ```
211
-
212
- Antigravity installs a content-only plugin at
213
- `~/.gemini/config/plugins/opensocrates`. It contains one explicit skill and no
214
- hook, launcher, native runtime, background service, telemetry, or extra model
215
- selector call. See the [Antigravity support boundary](docs/antigravity-support.md).
216
- Cursor installs a content-only Agent Plugin at
217
- `~/.cursor/plugins/local/opensocrates`. It includes one skill and no hook,
218
- launcher, native runtime, background service, telemetry, or separate selector
219
- model call. See the [Cursor support boundary](docs/cursor-support.md).
220
- Grok Build installs a native content-only plugin at
221
- `~/.grok/plugins/opensocrates`. It exposes one auto-selectable and explicitly
222
- invocable `/opensocrates` skill with 48 internal procedures. The package has no
223
- hooks, command, agent, MCP server, launcher, runtime, or nested selector call.
224
- The installer reads Grok's machine-readable inspection state but owns only that
225
- exact directory and never modifies or removes a Claude installation. See the
226
- [Grok Build support boundary](docs/grok-support.md).
227
- Existing `--host codex` and `--host claude` lifecycle commands remain
228
- supported. A host-specific update can intentionally create drift; a later
229
- `update --host all` or successful automatic reconciliation brings every host
230
- recorded in desired state back to one version.
231
-
232
- OpenCode installation owns only `plugins/opensocrates.js`, its sidecar, and
233
- `skills/opensocrates/` beneath `~/.config/opencode`; it never rewrites
234
- `opencode.json` or unrelated plugins and skills. See the
235
- [OpenCode support and evidence boundary](docs/opencode-support.md).
236
-
237
- For Claude, status distinguishes an enabled installation from an
238
- installed-but-disabled plugin. A disabled desired installation is reported as
239
- drift. Running `install` or `update` intentionally installs the verified
240
- package enabled again; if activation fails, rollback restores the previous
241
- enabled or disabled state. The installer accepts only the observed direct JSON
242
- arrays and explicit `marketplaces`/`plugins` wrappers from Claude's list
243
- commands. The privacy-safe 2.1.226 fixture is under
244
- `installer/fixtures/claude-cli/`.
245
-
246
- ### Opt-in automatic updates
247
-
248
- ```bash
249
- npx --yes opensocrates@1.2.1 auto-update enable --host all
250
- npx --yes opensocrates@1.2.1 auto-update status
251
- npx --yes opensocrates@1.2.1 auto-update disable
252
- ```
253
-
254
- Automatic updates are disabled until explicitly enabled. The macOS LaunchAgent
255
- starts a bounded hourly poll; desired state applies the configured interval
256
- (24 hours by default) with jitter and a single-instance lock. The job invokes
257
- the selected npm channel, verifies release and package checksums, stages every
258
- managed host, and reconciles them as one transaction. Major-version upgrades
259
- are blocked by default; use `--allow-major` only when that policy is intended.
260
-
261
- Passing one host to `auto-update enable` narrows only the automatic-update
262
- scope. It never removes another installed host from desired state;
263
- `status --host all` continues to track every installation, and a later
264
- `update --host all` still reconciles the complete installed set.
265
-
266
- The updater keeps a private receipt with version, time, per-host result, and an
267
- error category only. It never records prompts, transcripts, credentials, or
268
- workspace paths. `auto-update disable` unloads and removes the LaunchAgent;
269
- `remove --host all` does the same before removing the managed hosts.
270
-
271
- ### Claude web and Desktop Chat skills
272
-
273
- These surfaces can use a separately uploaded standalone skill but do not run
274
- the local plugin hooks.
275
-
276
- Exact v1.2.1 Chat release artifact: **unavailable; live upload pending.**
277
-
278
- As of the 2026-08-15 audit, GitHub has no public `v1.2.1` tag or release, so
279
- `opensocrates-1.2.1-claude-chat-skills.zip`, its checksum, and its release
280
- commit cannot be verified or uploaded. Do not substitute a source-built
281
- candidate or the Claude Code/Cowork plugin archive. The existing v1.1.2 live
282
- receipt is historical evidence only, and the existing synced/custom skill was
283
- left unchanged. See the [version-bound evidence and flip
284
- conditions](docs/claude-chat-upload-probe.md).
285
-
286
- When the exact release is published, verify its checksum before using Claude's
287
- **Customize → Skills → Upload skill** UI. The ZIP must contain one top-level
288
- `opensocrates/` folder with `SKILL.md` directly inside. It is not the Claude
289
- Code/Cowork plugin archive. The standalone package exposes exactly one
290
- canonical `/opensocrates` skill; its 48 method procedures, rigor, evidence, and
291
- trace controls are internal supporting references. Automatic hook selection is
292
- absent because Chat does not execute the packaged hooks. See Anthropic's
293
- [custom skill guide](https://support.claude.com/en/articles/12512180-use-skills-in-claude).
294
-
295
- ### Install from a tagged GitHub source
296
-
297
- The same host option works without the npm registry by using the published tag:
298
-
299
- ```bash
300
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host all
301
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host antigravity
302
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host claude
303
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host codex
304
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host cursor
305
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host grok
306
- npx --yes github:ParkerHwang/OpenSocrates#v1.2.1 install --host opencode
307
- ```
308
-
309
- ### Manual release verification
310
-
311
- After publication, download `opensocrates.mjs`, the host package, and its
312
- `.sha256` file from the
313
- [v1.2.1 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.2.1).
314
- That release was unavailable at the 2026-08-15 audit. The following is the
315
- verification command to use only after all named assets exist; for Claude:
316
-
317
- ```bash
318
- shasum -a 256 -c opensocrates-1.2.1-claude-plugin.zip.sha256
319
- node opensocrates.mjs install --host claude \
320
- --asset opensocrates-1.2.1-claude-plugin.zip \
321
- --checksum opensocrates-1.2.1-claude-plugin.zip.sha256
322
- ```
323
-
324
- Replace `claude` with `antigravity`, `codex`, `cursor`, `grok`, or `opencode` for the matching package.
325
-
326
- ### Migrating a pre-1.0 Claude plugin
327
-
328
- Some development builds used a case-sensitive marketplace named
329
- `OpenSocrates`. The new marketplace is `opensocrates`. The installer detects
330
- the old registration and refuses to remove it automatically. After reviewing
331
- what is installed, remove it explicitly:
332
-
333
- ```bash
334
- claude plugin uninstall opensocrates@OpenSocrates --scope user
335
- claude plugin marketplace remove OpenSocrates --scope user
336
- npx --yes opensocrates@1.2.1 install --host claude
337
- ```
338
-
339
- Updating a managed v1.1.0 Claude installation replaces the complete package
340
- tree. Its old 48 top-level method skills, `rigor`, `trace`, and duplicate
341
- commands are therefore removed rather than left visible as stale entries.
342
-
343
- ## Use
344
-
345
- Use any supported host normally. OpenSocrates may participate when a request
346
- needs judgment, interpretation, diagnosis, explanation, planning, evidence
347
- reconciliation, or another structured reasoning process. On Claude/Codex
348
- native-runtime surfaces it:
349
-
350
- 1. starts a fresh, non-persistent selector in the current host;
351
- 2. chooses from the authored 48-system catalog;
352
- 3. writes the complete selected content to an owner-only Markdown file;
353
- 4. adds a bounded hidden context message that leads with teacher questions to
354
- settle, then each method ID, content revision, and, when they fit, its exact
355
- `Do not use when` and `Stop conditions`; and
356
- 5. requires the active task to read the complete file before applying the
357
- method and to end a grounded response with an exact audit line such as
358
- `OpenSocrates grounding: triangulation@1`.
359
-
360
- On OpenCode, the dependency-free stable hook instead selects locally and
361
- injects one complete authored procedure directly into the same message turn.
362
- That compiled procedure starts with its three teacher questions, and the native
363
- `/opensocrates` fallback reads the same procedure without a duplicate preamble;
364
- the bridge creates no artifact and makes no extra model call. See the
365
- [OpenCode support boundary](docs/opencode-support.md).
366
-
367
- Antigravity and Cursor use their explicit content skills; Grok Build uses native
368
- skill selection or `/opensocrates`. In all three packages, a generated complete
369
- procedure begins with teacher questions for the active agent to settle before
370
- using the rest as a check. These content-only paths make no OpenSocrates hook
371
- delivery claim.
372
-
373
- After installing for Codex, open one interactive Codex session and approve the
374
- OpenSocrates hooks before relying on automatic selection. Until that one-time
375
- approval, non-interactive surfaces such as `codex exec` may silently continue
376
- without running the untrusted hooks.
377
-
378
- Claude hook surfaces prefer an owner-only `.opensocrates` artifact area inside
379
- the current workspace so Claude can read the selected content without an extra
380
- directory permission. Its self-contained `.gitignore` keeps the area out of
381
- `git status`; files are removed on turn/session cleanup. If the workspace is
382
- unusable, OpenSocrates falls back to the owner-only OS temporary directory.
383
- Because the preferred area is inside the workspace, a separate backup or sync
384
- tool that ignores neither `.gitignore` nor hidden directories could observe the
385
- authored OpenSocrates artifact while it exists. Artifacts never contain the raw
386
- prompt, transcript, workspace content, credentials, or selector reasoning.
387
-
388
- On Claude hook surfaces, a Read-only `PostToolUse` hook records an authenticated
389
- receipt only when the exact current-turn file is read from its first line
390
- through a terminal marker. At `Stop`, a missing receipt or audit line requests
391
- one bounded repair pass; `stop_hook_active` prevents a continuation loop. A
392
- partial, truncated, failed, or wrong-file read is not accepted. Claude Chat
393
- does not run these hooks, so its grounding contract remains skills-only.
394
-
395
- The receipt records that a successful `Read` callback for that exact file
396
- returned content reaching the terminal marker. It is not a proof that every byte
397
- was delivered, and the gate fails open. See [SECURITY.md](SECURITY.md) for the
398
- boundary this does and does not defend.
399
-
400
- There is no fixed selection-count limit. The selector has a 30-second internal
401
- deadline, does not retry, and fails open. A timeout, host error, invalid output,
402
- non-intervention decision, unsafe context, or unavailable hook produces no
403
- injection and does not block the user's task.
404
-
405
- On Claude, explicitly invoke the same controller when desired:
406
-
407
- ```text
408
- /opensocrates:opensocrates <request>
409
- /opensocrates:opensocrates auto <request>
410
- /opensocrates:opensocrates trace
411
- /opensocrates:opensocrates status
412
- ```
413
-
414
- Those commands are for the Claude Code/Cowork plugin. The standalone Chat ZIP
415
- uses `/opensocrates` instead. The plugin's registered command inventory names
416
- `/opensocrates:opensocrates`; do not use a bare alias as source evidence. The
417
- controller selects and loads internal method references, so users do not need
418
- to browse the 48-system implementation catalog.
419
-
420
- The Claude selector uses one `claude --safe-mode -p` process with no session
421
- persistence. Safe mode disables user, project, and plugin customizations:
422
- `CLAUDE.md`, skills, plugins, hooks, MCP servers, custom commands, and agents.
423
- OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`,
424
- and `--strict-mcp-config` so that no built-in or MCP tool remains available. It
425
- receives only the current prompt and the authored selection catalog.
426
-
427
- Managed policy settings are part of the host trust boundary and are **not**
428
- disabled by safe mode. Anthropic's
429
- [CLI reference](https://code.claude.com/docs/en/cli-reference) states that under
430
- `--safe-mode` "managed settings policy still applies, including
431
- policy-configured hooks". On a machine where an administrator configures a
432
- managed `UserPromptSubmit` hook, that hook runs inside the selector process,
433
- receives the current prompt on standard input, and can return
434
- `additionalContext` that enters selection. Managed plugins, managed skills,
435
- managed `CLAUDE.md`, and policy-configured MCP servers do not load. If your
436
- organization configures managed hooks, treat the selector prompt as visible to
437
- them and disable OpenSocrates selection if that is unacceptable.
438
-
439
- The Codex selector can additionally use bounded transcript context unless
440
- disabled:
441
-
442
- ```bash
443
- export OPENSOCRATES_SELECTOR_TRANSCRIPT_ACCESS=0
444
- ```
445
-
446
- ## Privacy and security
447
-
448
- OpenSocrates runs its integration locally and uses the existing Claude or
449
- Codex login. Host model requests are still processed by the selected host
450
- service under that service's terms. OpenSocrates does not host a backend, add
451
- telemetry, store an API key, or execute the user's requested task.
452
-
453
- Temporary instruction files contain authored OpenSocrates content only. Raw
454
- prompts, transcripts, workspace files, tool data, credentials, and selector
455
- reasoning are not written to OpenSocrates records, logs, metrics, diagnostics,
456
- or instruction files. The complete Read response is inspected only in memory
457
- for its terminal marker and is not retained. The owner-only grounding receipt
458
- stores only an artifact digest, content revision, selected method IDs, and
459
- keyed authentication/tool-use tags—never a prompt, tool output, workspace path,
460
- or artifact path. Turn files and receipts are removed on `Stop`. If `Stop` never
461
- arrives, the next `UserPromptSubmit` in the same session removes every prior
462
- `prompt_id` tree before selecting for the new turn while preserving the new
463
- active tree. `SessionEnd` removes anything still left in the session, and the
464
- next `SessionStart` removes crash leftovers older than 24 hours.
465
-
466
- Claude selector attempts increment one owner-only local aggregate using only
467
- the fixed labels `executable_missing`, `request_rejected`, `spawn_failed`,
468
- `timeout`, `nonzero_exit`, `invalid_output`, `selector_closed`,
469
- `no_intervention`, and `selected`. `diagnose` reports those cumulative counts.
470
- The aggregate contains no timestamp, prompt, transcript, session or turn ID,
471
- path, model output, credential, or reasoning, and is never uploaded.
472
- If the aggregate is unreadable, `diagnose` reports it as `unavailable` instead
473
- of asserting zero attempts. The next valid selector outcome replaces a
474
- malformed current-schema aggregate with a fresh bounded count document; an
475
- unknown future schema is preserved for the newer runtime that owns it.
476
-
477
- The packaged `diagnose` command also verifies the installed file inventory
478
- against `checksums.sha256` and checks that the release manifest identifies the
479
- running version, host, and content revision. It reports `verified`, `mismatch`,
480
- `unavailable`, or `unverified` rather than inferring success from file presence.
481
- These hashes detect local change or damage; the manifest and checksum file are
482
- not signed and therefore are not an authenticity proof against an attacker who
483
- can replace the whole package.
484
-
485
- When enabled, the updater stores only desired lifecycle state and the concise
486
- receipt described above, under owner-only permissions. It does not inspect or
487
- terminate running Claude or Codex sessions; a running task keeps its loaded
488
- plugin, and a new task naturally loads the reconciled version.
489
-
490
- See [SECURITY.md](SECURITY.md) for vulnerability reporting and the measured
491
- support boundary.
492
-
493
- ## Develop
494
-
495
- The source repository intentionally excludes native binaries and intermediate
496
- build output. Install [uv](https://docs.astral.sh/uv/), Python 3.12, and Node.js
497
- 20 or later, then run:
498
-
499
- Before merging a release candidate, follow the
500
- [clean Apple-silicon Mac acceptance procedure](docs/clean-machine-acceptance.md)
501
- to exercise the real authenticated Claude Code and Codex homes and return a
502
- privacy-safe evidence bundle.
503
-
504
- The selector's authenticated Claude subprocess contract has a separate
505
- [opt-in check](docs/real-claude-selector.md). The authenticated v1.1.2 receipt
506
- passes the real subprocess isolation and structured-output contract; the live
507
- call is never rerun by the ordinary offline suite.
508
-
509
- Repeated `--max-turns 1` structured-output behavior has a separate
510
- [aggregate reliability matrix](docs/claude-structured-output-reliability.md).
511
- The authenticated Claude Code 2.1.226 `host-default` row passed 20/20 attempts;
512
- no unobserved named model is claimed supported.
513
-
514
- Packaged Claude PostToolUse receipt and Stop cleanup latency has a reproducible
515
- [Apple-silicon timing receipt](docs/claude-hook-timing.md). The observed v1.1.2
516
- p95 results retain more than half of the 3-second hook budget, so the timeout is
517
- unchanged.
518
-
519
- ```bash
520
- make bootstrap
521
- make format-check
522
- make lint
523
- make generated-check
524
- make content-check
525
- make docs-check
526
- make governance-check
527
- make security-scan
528
- make smoke
529
- npm test
530
- npm pack --dry-run
531
- make release-check
532
- ```
533
-
534
- | Path | Purpose |
535
- | --- | --- |
536
- | `src/opensocrates/` | Shared Python 3.12 runtime and host-native selectors |
537
- | `content/` | Policies, localized messages, methods, theory, and examples |
538
- | `plugin-src/claude/` | Claude plugin templates |
539
- | `plugin-src/codex/` | Codex plugin templates |
540
- | `plugin-src/antigravity/` | Experimental Antigravity content-only plugin templates |
541
- | `plugin-src/cursor/` | Experimental Cursor Agent Plugin templates |
542
- | `plugin-src/grok/` | Native Grok Build content-only plugin templates |
543
- | `plugin-src/opencode/` | OpenCode stable bridge and native skill templates |
544
- | `schemas/source/` | Canonical schema definitions |
545
- | `schemas/v1/` | Generated, versioned public schemas |
546
- | `installer/` | Dependency-free Node.js GitHub/npx installer |
547
- | `tools/` | Build, validation, lifecycle, security, and release tools |
548
- | `packaging/` | Native launcher and packaging configuration |
549
- | `build/`, `dist/` | Generated locally and published as release assets |
550
-
551
- Generated schemas and compiled content must be changed through their canonical
552
- sources and generators. Release binaries belong in GitHub Releases, not in Git
553
- history.
554
-
555
- ## Contributing
556
-
557
- Contributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) before
558
- opening a pull request, and use the issue templates for bugs and feature
559
- requests. The project follows the [Code of Conduct](CODE_OF_CONDUCT.md).
560
-
561
- ## License
562
-
563
- OpenSocrates is available under the [MIT License](LICENSE). You may use,
564
- modify, distribute, sublicense, and sell copies, provided the copyright and
565
- license notice are preserved.
566
-
567
- OpenSocrates is an independent open-source project and is not affiliated with
568
- or endorsed by Anthropic or OpenAI.
51
+ ## What it does
52
+
53
+ - **Choose a method for a judgment.** Compare alternatives, check a causal claim,
54
+ examine assumptions or decide which evidence would change a recommendation.
55
+ - **Revisit a decision when the facts change.** v1.3.1 supports method retrieval
56
+ at multiple decision points within one request. Mechanical steps need no method.
57
+ - **Read the complete procedure.** Each method has authored instructions,
58
+ examples, applicability limits and required public results, in English and Korean.
59
+ - **Keep the answer connected to its evidence.** Guided writing instructions
60
+ preserve uncertainty, permissions and the user's format, with separate conclusions
61
+ and reopening conditions for separate questions.
62
+
63
+ For example, ask your agent to compare two vendors under a fixed budget, reconsider
64
+ its choice after a new audit, or distinguish what a small pilot supports from what
65
+ it leaves unknown. These are use cases, not measured outcome guarantees.
66
+
67
+ ## How v1.3.1 works
68
+
69
+ Claude/Codex hooks provide lightweight discovery guidance. The active agent then
70
+ uses the packaged native selector to retrieve eligible complete methods as needed.
71
+ If the runtime is unavailable, a constrained reference-file fallback remains.
72
+ Other hosts use the delivery paths below. OpenSocrates fails open when its
73
+ integration is unavailable so ordinary work can continue.
74
+
75
+ The release retains all **48 methods and 96 English/Korean procedure bodies**.
76
+ Its writing policy is guidance, not automatic rewriting. See
77
+ [decision-point retrieval and migration](docs/decision-points.md) for the exact
78
+ selection, fallback and method-availability contracts.
79
+
80
+ ## Supported hosts
81
+
82
+ | Host | Delivery and entry point | Details |
83
+ | --- | --- | --- |
84
+ | Claude Code / Cowork | Plugin discovery where hooks run; `/opensocrates:opensocrates` | [Claude support](docs/decision-points.md) |
85
+ | Codex CLI / Desktop | Discovery after hook approval; `opensocrates` controller | [Delivery modes](docs/decision-points.md) |
86
+ | OpenCode | Local same-turn bridge; native skill fallback | [OpenCode support](docs/opencode-support.md) |
87
+ | Grok Build | Native skill selection or `/opensocrates` | [Grok support](docs/grok-support.md) |
88
+ | Cursor | Agent Plugin skill discovery or explicit invocation | [Cursor support](docs/cursor-support.md) |
89
+ | Google Antigravity | Explicit content skill | [Antigravity support](docs/antigravity-support.md) |
90
+
91
+ Claude web and Desktop Chat use a **separate standalone skill ZIP**, not the local
92
+ plugin hooks. Download it from the [v1.3.1 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.3.1)
93
+ and follow the [Chat installation guide](docs/claude-chat-upload-probe.md).
94
+
95
+ Chat standalone export: **archive contract validated; live activation unvalidated.**
96
+
97
+ ## Privacy and support boundaries
98
+
99
+ The integration runs locally, adds no product telemetry and has no OpenSocrates
100
+ backend. Model requests still use your selected host service under its terms.
101
+ No separate OpenSocrates account is required. Read [SECURITY.md](SECURITY.md)
102
+ for the host trust boundaries and retained legacy adapter behavior.
103
+
104
+ v1.3.1 fixes multi-line decision input and checks packaged examples before release. Package verification
105
+ does not establish every host's live behavior or the model's actual application
106
+ of a method. Synthetic tests include final-delivery timeouts and repetitive output;
107
+ no general quality, naturalness, token-cost or response-time improvement is claimed.
108
+ The complete [release evidence](docs/v1.3.1-release.md) and
109
+ [publication verification](https://github.com/ParkerHwang/OpenSocrates/pull/92)
110
+ retain the measured results and limitations.
111
+
112
+ ## More information
113
+
114
+ - [Detailed installation, updates, removal and runtime behavior](docs/advanced-usage.md)
115
+ - [Authored method catalog](content/methods/)
116
+ - [Changelog](CHANGELOG.md)
117
+ - [Contributing and development checks](CONTRIBUTING.md)
118
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
119
+
120
+ OpenSocrates is [MIT licensed](LICENSE). It is an independent open-source project,
121
+ not affiliated with or endorsed by its supported host providers.