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/CHANGELOG.md +43 -1
- package/README.ko.md +77 -489
- package/README.md +98 -545
- package/SECURITY.md +11 -0
- package/VERSION +1 -1
- package/installer/opensocrates.mjs +1 -1
- package/package.json +1 -1
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
|
[](https://github.com/ParkerHwang/OpenSocrates/actions/workflows/ci.yml)
|
|
@@ -11,558 +17,105 @@
|
|
|
11
17
|
[](https://github.com/ParkerHwang/OpenSocrates/releases)
|
|
12
18
|
[](LICENSE)
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
24
|
+
## Get started
|
|
97
25
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
44
|
+
For an existing installation:
|
|
140
45
|
|
|
141
|
-
```
|
|
142
|
-
npx --yes opensocrates@1.
|
|
143
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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.
|