thumbgate 1.4.3 → 1.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/llms.txt +12 -8
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +18 -8
- package/adapters/README.md +1 -1
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/codex/config.toml +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/config/github-about.json +2 -2
- package/package.json +158 -10
- package/scripts/billing.js +5 -2
- package/scripts/statusline.sh +1 -0
- package/src/api/server.js +113 -16
- package/src/index.js +3 -0
- package/.claude-plugin/bundle/icon.png +0 -0
- package/.claude-plugin/bundle/icon.svg +0 -18
- package/.claude-plugin/bundle/server/index.js +0 -24
- package/adapters/chatgpt/INSTALL.md +0 -158
- package/adapters/perplexity/.mcp.json +0 -36
- package/adapters/perplexity/config.toml +0 -16
- package/adapters/perplexity/opencode.json +0 -29
- package/bin/memory.sh +0 -64
- package/bin/obsidian-sync.sh +0 -20
- package/plugins/amp-skill/INSTALL.md +0 -52
- package/plugins/amp-skill/SKILL.md +0 -64
- package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +0 -22
- package/plugins/claude-codex-bridge/.mcp.json +0 -14
- package/plugins/claude-codex-bridge/INSTALL.md +0 -43
- package/plugins/claude-codex-bridge/README.md +0 -46
- package/plugins/claude-codex-bridge/scripts/codex-bridge.js +0 -286
- package/plugins/claude-codex-bridge/skills/adversarial-review/SKILL.md +0 -24
- package/plugins/claude-codex-bridge/skills/result/SKILL.md +0 -22
- package/plugins/claude-codex-bridge/skills/review/SKILL.md +0 -28
- package/plugins/claude-codex-bridge/skills/second-pass/SKILL.md +0 -27
- package/plugins/claude-codex-bridge/skills/setup/SKILL.md +0 -21
- package/plugins/claude-codex-bridge/skills/status/SKILL.md +0 -19
- package/plugins/claude-skill/INSTALL.md +0 -55
- package/plugins/claude-skill/SKILL.md +0 -46
- package/plugins/codex-profile/.codex-plugin/plugin.json +0 -43
- package/plugins/codex-profile/.mcp.json +0 -14
- package/plugins/codex-profile/AGENTS.md +0 -20
- package/plugins/codex-profile/INSTALL.md +0 -89
- package/plugins/codex-profile/README.md +0 -61
- package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +0 -23
- package/plugins/cursor-marketplace/CHANGELOG.md +0 -30
- package/plugins/cursor-marketplace/LICENSE +0 -21
- package/plugins/cursor-marketplace/README.md +0 -124
- package/plugins/cursor-marketplace/agents/reliability-reviewer.md +0 -31
- package/plugins/cursor-marketplace/assets/logo-400x400.png +0 -0
- package/plugins/cursor-marketplace/commands/capture-feedback.md +0 -33
- package/plugins/cursor-marketplace/commands/check-gates.md +0 -25
- package/plugins/cursor-marketplace/commands/show-lessons.md +0 -27
- package/plugins/cursor-marketplace/hooks/hooks.json +0 -10
- package/plugins/cursor-marketplace/mcp.json +0 -14
- package/plugins/cursor-marketplace/rules/feedback-capture.mdc +0 -34
- package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +0 -30
- package/plugins/cursor-marketplace/rules/session-continuity.mdc +0 -28
- package/plugins/cursor-marketplace/scripts/gate-check.sh +0 -21
- package/plugins/cursor-marketplace/skills/capture-feedback/SKILL.md +0 -48
- package/plugins/cursor-marketplace/skills/prevention-rules/SKILL.md +0 -31
- package/plugins/cursor-marketplace/skills/recall-context/SKILL.md +0 -30
- package/plugins/cursor-marketplace/skills/search-lessons/SKILL.md +0 -33
- package/plugins/gemini-extension/INSTALL.md +0 -92
- package/plugins/gemini-extension/gemini_prompt.txt +0 -14
- package/plugins/gemini-extension/tool_contract.json +0 -45
- package/plugins/opencode-profile/INSTALL.md +0 -57
- package/public/assets/instagram-card.png +0 -0
- package/public/assets/tiktok-agent-memory.mp4 +0 -0
- package/public/blog.html +0 -474
- package/public/compare/mem0.html +0 -189
- package/public/compare/speclock.html +0 -180
- package/public/compare.html +0 -310
- package/public/dashboard.html +0 -1100
- package/public/guide.html +0 -317
- package/public/guides/claude-code-prevent-repeated-mistakes.html +0 -161
- package/public/guides/codex-cli-guardrails.html +0 -158
- package/public/guides/cursor-prevent-repeated-mistakes.html +0 -161
- package/public/guides/pre-action-gates.html +0 -162
- package/public/guides/stop-repeated-ai-agent-mistakes.html +0 -159
- package/public/index.html +0 -1225
- package/public/js/buyer-intent.js +0 -252
- package/public/learn/agent-harness-pattern.html +0 -180
- package/public/learn/ai-agent-persistent-memory.html +0 -203
- package/public/learn/learn.css +0 -45
- package/public/learn/mcp-pre-action-gates-explained.html +0 -172
- package/public/learn/stop-ai-agent-force-push.html +0 -134
- package/public/learn/vibe-coding-safety-net.html +0 -142
- package/public/learn.html +0 -274
- package/public/lessons.html +0 -967
- package/public/llm-context.md +0 -156
- package/public/pro.html +0 -1087
- package/public/vercel.json +0 -8
- package/scripts/a2ui-engine.js +0 -73
- package/scripts/adk-consolidator.js +0 -274
- package/scripts/agent-security-hardening.js +0 -225
- package/scripts/ai-search-visibility.js +0 -116
- package/scripts/autonomous-sales-agent.js +0 -39
- package/scripts/autoresearch-runner.js +0 -216
- package/scripts/background-agent-governance.js +0 -229
- package/scripts/behavioral-extraction.js +0 -93
- package/scripts/budget-enforcer.js +0 -173
- package/scripts/budget-guard.js +0 -173
- package/scripts/build-claude-mcpb.js +0 -255
- package/scripts/build-codex-plugin.js +0 -152
- package/scripts/capture-railway-diagnostics.sh +0 -97
- package/scripts/changeset-check.js +0 -372
- package/scripts/check-congruence.js +0 -443
- package/scripts/computer-use-firewall.js +0 -280
- package/scripts/content-engine/linkedin-content-generator.js +0 -154
- package/scripts/content-engine/output/linkedin-memento-validation.md +0 -17
- package/scripts/content-engine/output/linkedin-posts-2026-04-09.md +0 -175
- package/scripts/content-engine/reddit-thread-finder.js +0 -154
- package/scripts/context-engine.js +0 -710
- package/scripts/daily-digest.js +0 -11
- package/scripts/data-governance.js +0 -173
- package/scripts/deploy-gcp.sh +0 -44
- package/scripts/deploy-policy.js +0 -249
- package/scripts/disagreement-mining.js +0 -315
- package/scripts/dpo-optimizer.js +0 -206
- package/scripts/ensure-repo-bootstrap.js +0 -130
- package/scripts/ephemeral-agent-store.js +0 -212
- package/scripts/eval-harness.js +0 -56
- package/scripts/export-kto-pairs.js +0 -309
- package/scripts/export-training.js +0 -446
- package/scripts/feedback-fallback.js +0 -111
- package/scripts/feedback-inbox-read.js +0 -162
- package/scripts/feedback-root-consolidator.js +0 -233
- package/scripts/feedback-to-memory.js +0 -185
- package/scripts/gate-satisfy.js +0 -42
- package/scripts/generate-paperbanana-diagrams.sh +0 -99
- package/scripts/generate-pretool-hook.sh +0 -40
- package/scripts/github-about.js +0 -430
- package/scripts/github-outreach.js +0 -65
- package/scripts/gtm-revenue-loop.js +0 -535
- package/scripts/hallucination-detector.js +0 -226
- package/scripts/hf-papers.js +0 -317
- package/scripts/hook-auto-capture.sh +0 -100
- package/scripts/hook-stop-pr-thread-check.sh +0 -68
- package/scripts/hook-stop-self-score.sh +0 -51
- package/scripts/hook-stop-verify-deploy.sh +0 -31
- package/scripts/hook-verify-before-done.sh +0 -20
- package/scripts/managed-dpo-export.js +0 -91
- package/scripts/markdown-escape.js +0 -12
- package/scripts/marketing-experiment.js +0 -657
- package/scripts/memalign-recall.js +0 -111
- package/scripts/memory-migration.js +0 -296
- package/scripts/meta-policy.js +0 -190
- package/scripts/metered-billing.js +0 -16
- package/scripts/model-tier-router.js +0 -310
- package/scripts/money-watcher.js +0 -218
- package/scripts/multi-hop-recall.js +0 -240
- package/scripts/per-step-scoring.js +0 -163
- package/scripts/perplexity-command-center.js +0 -644
- package/scripts/perplexity-marketing.js +0 -454
- package/scripts/pii-scanner.js +0 -153
- package/scripts/plan-gate.js +0 -154
- package/scripts/post-everywhere.js +0 -341
- package/scripts/post-to-x-retry.sh +0 -22
- package/scripts/post-to-x.js +0 -369
- package/scripts/pr-manager.js +0 -421
- package/scripts/principle-extractor.js +0 -162
- package/scripts/pro-features.js +0 -41
- package/scripts/prompt-dlp.js +0 -222
- package/scripts/prove-adapters.js +0 -860
- package/scripts/prove-attribution.js +0 -361
- package/scripts/prove-automation.js +0 -651
- package/scripts/prove-autoresearch.js +0 -304
- package/scripts/prove-claim-verification.js +0 -277
- package/scripts/prove-cloudflare-sandbox.js +0 -161
- package/scripts/prove-data-pipeline.js +0 -408
- package/scripts/prove-data-quality.js +0 -227
- package/scripts/prove-evolution.js +0 -352
- package/scripts/prove-harnesses.js +0 -287
- package/scripts/prove-intelligence.js +0 -257
- package/scripts/prove-lancedb.js +0 -425
- package/scripts/prove-local-intelligence.js +0 -340
- package/scripts/prove-loop-closure.js +0 -263
- package/scripts/prove-packaged-runtime.js +0 -327
- package/scripts/prove-predictive-insights.js +0 -355
- package/scripts/prove-runtime.js +0 -363
- package/scripts/prove-seo-gsd.js +0 -234
- package/scripts/prove-settings.js +0 -279
- package/scripts/prove-subway-upgrades.js +0 -277
- package/scripts/prove-tessl.js +0 -229
- package/scripts/prove-training-export.js +0 -325
- package/scripts/prove-workflow-contract.js +0 -112
- package/scripts/prove-xmemory.js +0 -332
- package/scripts/publish-decision.js +0 -159
- package/scripts/ralph-loop.js +0 -376
- package/scripts/ralph-mode-ci.js +0 -434
- package/scripts/reddit-dm-outreach.js +0 -192
- package/scripts/reddit-monitor-cron.sh +0 -26
- package/scripts/reminder-engine.js +0 -132
- package/scripts/revenue-status.js +0 -472
- package/scripts/rotate-stripe-webhook-secret.js +0 -314
- package/scripts/schedule-manager.js +0 -249
- package/scripts/self-healing-check.js +0 -193
- package/scripts/session-analyzer.js +0 -533
- package/scripts/shieldcortex-memory-firewall-runner.mjs +0 -53
- package/scripts/skill-exporter.js +0 -260
- package/scripts/skill-materializer.js +0 -134
- package/scripts/skill-packs.js +0 -136
- package/scripts/skill-proposer.js +0 -99
- package/scripts/skill-quality-tracker.js +0 -282
- package/scripts/slow-loop.js +0 -72
- package/scripts/social-analytics/db/marketing-db.js +0 -179
- package/scripts/social-analytics/db/schema.sql +0 -55
- package/scripts/social-analytics/digest.js +0 -256
- package/scripts/social-analytics/engagement-audit.js +0 -185
- package/scripts/social-analytics/generate-instagram-card.js +0 -123
- package/scripts/social-analytics/generate-slides.js +0 -268
- package/scripts/social-analytics/instagram-thumbgate-post.js +0 -111
- package/scripts/social-analytics/install-growth-automation.js +0 -114
- package/scripts/social-analytics/load-env.js +0 -77
- package/scripts/social-analytics/mcp-server.js +0 -289
- package/scripts/social-analytics/normalizer.js +0 -580
- package/scripts/social-analytics/notify.js +0 -162
- package/scripts/social-analytics/poll-all.js +0 -107
- package/scripts/social-analytics/pollers/github.js +0 -195
- package/scripts/social-analytics/pollers/instagram.js +0 -253
- package/scripts/social-analytics/pollers/linkedin.js +0 -340
- package/scripts/social-analytics/pollers/plausible.js +0 -245
- package/scripts/social-analytics/pollers/reddit.js +0 -306
- package/scripts/social-analytics/pollers/threads.js +0 -233
- package/scripts/social-analytics/pollers/tiktok.js +0 -203
- package/scripts/social-analytics/pollers/x.js +0 -227
- package/scripts/social-analytics/pollers/youtube.js +0 -304
- package/scripts/social-analytics/pollers/zernio.js +0 -183
- package/scripts/social-analytics/post-video.js +0 -316
- package/scripts/social-analytics/publish-instagram-thumbgate.js +0 -104
- package/scripts/social-analytics/publish-thumbgate-launch.js +0 -322
- package/scripts/social-analytics/publishers/devto.js +0 -122
- package/scripts/social-analytics/publishers/instagram.js +0 -317
- package/scripts/social-analytics/publishers/linkedin.js +0 -294
- package/scripts/social-analytics/publishers/reddit.js +0 -385
- package/scripts/social-analytics/publishers/threads.js +0 -275
- package/scripts/social-analytics/publishers/tiktok.js +0 -217
- package/scripts/social-analytics/publishers/x.js +0 -259
- package/scripts/social-analytics/publishers/youtube.js +0 -223
- package/scripts/social-analytics/publishers/zernio.js +0 -568
- package/scripts/social-analytics/reconcile-thumbgate-campaign.js +0 -165
- package/scripts/social-analytics/run-digest.js +0 -34
- package/scripts/social-analytics/schedule-thumbgate-campaign.js +0 -275
- package/scripts/social-analytics/store.js +0 -455
- package/scripts/social-analytics/sync-launch-assets.js +0 -185
- package/scripts/social-analytics/utm.js +0 -143
- package/scripts/social-pipeline.js +0 -2626
- package/scripts/social-post-hourly.js +0 -228
- package/scripts/social-quality-gate.js +0 -134
- package/scripts/social-reply-monitor.js +0 -592
- package/scripts/status-dashboard.js +0 -155
- package/scripts/stripe-live-status.js +0 -115
- package/scripts/subagent-profiles.js +0 -79
- package/scripts/sync-branch-protection.js +0 -340
- package/scripts/sync-gh-secrets-from-env.sh +0 -70
- package/scripts/sync-github-about.js +0 -55
- package/scripts/sync-version.js +0 -479
- package/scripts/synthetic-dpo.js +0 -234
- package/scripts/tessl-export.js +0 -369
- package/scripts/test-coverage.js +0 -128
- package/scripts/thumbgate-bench.js +0 -494
- package/scripts/thumbgate_session_start.sh +0 -32
- package/scripts/train_from_feedback.py +0 -929
- package/scripts/validate-feedback.js +0 -581
- package/scripts/verify-obsidian-setup.sh +0 -269
- package/scripts/verify-run.js +0 -269
- package/scripts/weekly-auto-post.js +0 -124
- package/scripts/x-autonomous-marketing.js +0 -139
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const { spawn } = require('child_process');
|
|
6
|
-
|
|
7
|
-
const cliPath = path.join(__dirname, '..', '..', 'bin', 'cli.js');
|
|
8
|
-
const child = spawn(process.execPath, [cliPath, 'serve'], {
|
|
9
|
-
stdio: 'inherit',
|
|
10
|
-
env: process.env,
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
child.on('exit', (code, signal) => {
|
|
14
|
-
if (signal) {
|
|
15
|
-
process.kill(process.pid, signal);
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
process.exit(code ?? 1);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
child.on('error', (error) => {
|
|
22
|
-
console.error(`[thumbgate] Failed to launch Claude Desktop bundle runtime: ${error.message}`);
|
|
23
|
-
process.exit(1);
|
|
24
|
-
});
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
# ChatGPT GPT Actions: ThumbGate Install
|
|
2
|
-
|
|
3
|
-
Open the published ThumbGate GPT directly:
|
|
4
|
-
|
|
5
|
-
https://chatgpt.com/g/g-69dcfd1cd5f881918ae31874631d6f08-thumbgate
|
|
6
|
-
|
|
7
|
-
Use the GPT as the public front door: paste an AI action to check, save a thumbs-up/down lesson, write a Pre-Action Gate, install ThumbGate for an agent, or export proof.
|
|
8
|
-
|
|
9
|
-
Users do **not** have to keep chatting inside the ThumbGate GPT for enforcement. The GPT is the fast demo, guided setup path, and ChatGPT memory surface. Real enforcement for coding agents still runs locally through ThumbGate hooks after `npx thumbgate init`.
|
|
10
|
-
|
|
11
|
-
Marketing rule: every landing page, README, social post, and plugin listing should point to the live GPT before asking a cold user to read OpenAPI docs.
|
|
12
|
-
|
|
13
|
-
## GPT Store path
|
|
14
|
-
|
|
15
|
-
1. Open the direct GPT URL: https://chatgpt.com/g/g-69dcfd1cd5f881918ae31874631d6f08-thumbgate
|
|
16
|
-
2. If ChatGPT does not open it for your account, open **Explore GPTs**.
|
|
17
|
-
3. Search for `ThumbGate`.
|
|
18
|
-
4. Choose the GPT by **Igor Ganapolsky** in the **Programming** category.
|
|
19
|
-
|
|
20
|
-
## 30-second user flow
|
|
21
|
-
|
|
22
|
-
1. Paste a proposed AI action, command, merge, deploy, file edit, email, payment, or API call.
|
|
23
|
-
2. ThumbGate evaluates whether to allow, block, or require a checkpoint before the action runs.
|
|
24
|
-
3. After any answer or agent run, reply with `thumbs up:` or `thumbs down:` plus one concrete sentence.
|
|
25
|
-
4. ThumbGate saves the lesson, refreshes prevention rules when patterns repeat, and can show what it remembers.
|
|
26
|
-
5. When the user is ready to enforce outside ChatGPT, send them to `npx thumbgate init` for Claude Code, Cursor, Codex, Gemini CLI, Amp, OpenCode, or another MCP-compatible agent.
|
|
27
|
-
|
|
28
|
-
Regular users should never need to know MCP, OpenAPI, Actions, DPO, Thompson Sampling, or schema validation. The GPT should explain the loop as: "One signal becomes one remembered rule."
|
|
29
|
-
|
|
30
|
-
## GPT profile card
|
|
31
|
-
|
|
32
|
-
Use this copy in GPT Builder instead of the generic "AI safety gate" framing:
|
|
33
|
-
|
|
34
|
-
Short description:
|
|
35
|
-
|
|
36
|
-
```text
|
|
37
|
-
Turn thumbs-down into prevention gates
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Full description:
|
|
41
|
-
|
|
42
|
-
```text
|
|
43
|
-
Paste a proposed AI action or reply thumbs up/down after an answer. ThumbGate captures the lesson, searches prior mistakes, writes Pre-Action Gates, and tells you when to allow, block, or checkpoint. Built for developers using AI agents and proof-backed Reliability Gateway workflows.
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Conversation starters:
|
|
47
|
-
|
|
48
|
-
1. `Check this agent action before it runs: git push --force --tags`
|
|
49
|
-
2. `Turn this mistake into a ThumbGate rule: the agent edited generated files again.`
|
|
50
|
-
3. `Install ThumbGate for Claude Code or Codex in this repo.`
|
|
51
|
-
4. `Search my saved lessons before you answer.`
|
|
52
|
-
|
|
53
|
-
Use typed chat replies. ChatGPT's native feedback buttons may send feedback to OpenAI, but they should not be described as the ThumbGate capture path unless OpenAI exposes them to GPT Actions.
|
|
54
|
-
|
|
55
|
-
## Pre-action gate flow
|
|
56
|
-
|
|
57
|
-
Use this when the user asks whether an AI agent should run a proposed action, command, file edit, deployment, merge, or publish step:
|
|
58
|
-
|
|
59
|
-
1. The GPT calls `evaluateDecision` (`POST /v1/decisions/evaluate`) before answering.
|
|
60
|
-
2. If the response has `decisionControl.executionMode: "blocked"`, the GPT says the action is blocked and explains the returned reason.
|
|
61
|
-
3. If the response has `decisionControl.executionMode: "checkpoint_required"`, the GPT asks for explicit confirmation before proceeding.
|
|
62
|
-
4. If the response has `decisionControl.executionMode: "auto_execute"`, the GPT can say the action is allowed and summarize why.
|
|
63
|
-
|
|
64
|
-
Plain thumbs-up/down feedback is the memory loop. The decision endpoint is the gate loop. Do not claim hard blocking unless the decision endpoint, a saved lesson, or a prevention rule was actually applied.
|
|
65
|
-
|
|
66
|
-
## Best first GPT message
|
|
67
|
-
|
|
68
|
-
Use this as the first response:
|
|
69
|
-
|
|
70
|
-
```text
|
|
71
|
-
Paste an AI action to check, or tell me what went right/wrong. I can block risky actions, save the lesson, write a prevention gate, or show what ThumbGate already remembers.
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## Prerequisites
|
|
75
|
-
|
|
76
|
-
- A ChatGPT Plus or Team account (Custom GPTs require a paid plan)
|
|
77
|
-
- ThumbGate API running at `https://thumbgate-production.up.railway.app`
|
|
78
|
-
- Privacy policy URL: `https://thumbgate-production.up.railway.app/privacy`
|
|
79
|
-
- Owner-managed `THUMBGATE_API_KEY` for one-time GPT Builder Actions auth
|
|
80
|
-
|
|
81
|
-
Regular GPT users should not need an API key, JSON payload, OpenAPI knowledge, or developer setup. They should only see the thumbs-up/down memory loop.
|
|
82
|
-
|
|
83
|
-
## Step 1 — Open GPT Builder
|
|
84
|
-
|
|
85
|
-
1. Go to [https://chat.openai.com/gpts/editor](https://chat.openai.com/gpts/editor)
|
|
86
|
-
2. Click **Create a GPT**
|
|
87
|
-
3. Switch to the **Configure** tab
|
|
88
|
-
|
|
89
|
-
## Step 2 — Add Actions
|
|
90
|
-
|
|
91
|
-
1. Scroll to the **Actions** section
|
|
92
|
-
2. Click **Create new action**
|
|
93
|
-
3. Click **Import from URL** — paste your hosted spec URL:
|
|
94
|
-
```
|
|
95
|
-
https://thumbgate-production.up.railway.app/openapi.yaml
|
|
96
|
-
```
|
|
97
|
-
Or click **Upload file** and select:
|
|
98
|
-
```
|
|
99
|
-
adapters/chatgpt/openapi.yaml
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Step 3 — Set Authentication
|
|
103
|
-
|
|
104
|
-
In the Actions panel:
|
|
105
|
-
|
|
106
|
-
1. Select **Authentication type: API Key**
|
|
107
|
-
2. **Auth type**: Bearer
|
|
108
|
-
3. **API Key**: paste your `THUMBGATE_API_KEY` value
|
|
109
|
-
|
|
110
|
-
This is an owner setup field. Do not ask regular GPT users to provide an API key.
|
|
111
|
-
|
|
112
|
-
## Step 4 — Update the Server URL
|
|
113
|
-
|
|
114
|
-
In the imported spec, confirm the `servers.url` points to your deployed API:
|
|
115
|
-
|
|
116
|
-
```yaml
|
|
117
|
-
servers:
|
|
118
|
-
- url: https://thumbgate-production.up.railway.app
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
If you uploaded the file, edit the server URL in the GPT Actions editor.
|
|
122
|
-
|
|
123
|
-
## Step 5 — Verify
|
|
124
|
-
|
|
125
|
-
Click **Test** on the `captureFeedback` action:
|
|
126
|
-
|
|
127
|
-
```json
|
|
128
|
-
{
|
|
129
|
-
"signal": "up",
|
|
130
|
-
"context": "GPT Actions install verified with a successful test call",
|
|
131
|
-
"whatWorked": "The hosted action returned accepted=true and a promoted status"
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Expected response: `200 OK` with `{ "accepted": true, "status": "promoted" }`.
|
|
136
|
-
|
|
137
|
-
If you only send a bare `thumbs up/down` style payload, expect `422` with `status: "clarification_required"` and a follow-up `prompt`.
|
|
138
|
-
|
|
139
|
-
## Available Actions
|
|
140
|
-
|
|
141
|
-
| Action | Method | Path | Description |
|
|
142
|
-
|---|---|---|---|
|
|
143
|
-
| `captureFeedback` | POST | `/v1/feedback/capture` | Capture up/down signal plus one-line why |
|
|
144
|
-
| `getFeedbackStats` | GET | `/v1/feedback/stats` | Aggregated feedback statistics |
|
|
145
|
-
| `getFeedbackSummary` | GET | `/v1/feedback/summary` | Recent feedback summary |
|
|
146
|
-
| `generatePreventionRules` | POST | `/v1/feedback/rules` | Generate prevention rules |
|
|
147
|
-
| `exportDpoPairs` | POST | `/v1/dpo/export` | Export DPO preference pairs |
|
|
148
|
-
| `listIntentCatalog` | GET | `/v1/intents/catalog` | List available intents |
|
|
149
|
-
| `planIntent` | POST | `/v1/intents/plan` | Generate policy-scoped plan |
|
|
150
|
-
| `constructContextPack` | POST | `/v1/context/construct` | Build context pack |
|
|
151
|
-
|
|
152
|
-
Full spec: `adapters/chatgpt/openapi.yaml`
|
|
153
|
-
|
|
154
|
-
## Troubleshooting
|
|
155
|
-
|
|
156
|
-
- **401 Unauthorized**: Verify `THUMBGATE_API_KEY` is set and matches the Bearer token
|
|
157
|
-
- **Connection refused**: Confirm Railway deployment is live (`curl https://<domain>/health`)
|
|
158
|
-
- **Schema errors**: Ensure you are using the latest `openapi.yaml` (version 1.1.0+)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mcpServers": {
|
|
3
|
-
"thumbgate": {
|
|
4
|
-
"command": "npx",
|
|
5
|
-
"args": [
|
|
6
|
-
"--yes",
|
|
7
|
-
"--package",
|
|
8
|
-
"thumbgate@1.4.1",
|
|
9
|
-
"thumbgate",
|
|
10
|
-
"serve"
|
|
11
|
-
]
|
|
12
|
-
},
|
|
13
|
-
"perplexity": {
|
|
14
|
-
"command": "npx",
|
|
15
|
-
"args": [
|
|
16
|
-
"-y",
|
|
17
|
-
"@perplexity-ai/mcp-server"
|
|
18
|
-
],
|
|
19
|
-
"env": {
|
|
20
|
-
"PERPLEXITY_API_KEY": "${PERPLEXITY_API_KEY}"
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"hooks": {
|
|
25
|
-
"preToolUse": {
|
|
26
|
-
"command": "npx",
|
|
27
|
-
"args": [
|
|
28
|
-
"--yes",
|
|
29
|
-
"--package",
|
|
30
|
-
"thumbgate@1.4.1",
|
|
31
|
-
"thumbgate",
|
|
32
|
-
"gate-check"
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Codex MCP profile: ThumbGate + Perplexity (copy into ~/.codex/config.toml or merge section)
|
|
2
|
-
[mcp_servers.thumbgate]
|
|
3
|
-
command = "npx"
|
|
4
|
-
args = ["--yes", "--package", "thumbgate@1.4.1", "thumbgate", "serve"]
|
|
5
|
-
|
|
6
|
-
[mcp_servers.perplexity]
|
|
7
|
-
command = "npx"
|
|
8
|
-
args = ["-y", "@perplexity-ai/mcp-server"]
|
|
9
|
-
|
|
10
|
-
[mcp_servers.perplexity.env]
|
|
11
|
-
PERPLEXITY_API_KEY = "${PERPLEXITY_API_KEY}"
|
|
12
|
-
|
|
13
|
-
# Hard PreToolUse hook for Codex
|
|
14
|
-
[hooks.pre_tool_use]
|
|
15
|
-
command = "npx"
|
|
16
|
-
args = ["--yes", "--package", "thumbgate@1.4.1", "thumbgate", "gate-check"]
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"mcp": {
|
|
4
|
-
"thumbgate": {
|
|
5
|
-
"type": "local",
|
|
6
|
-
"command": [
|
|
7
|
-
"npx",
|
|
8
|
-
"--yes",
|
|
9
|
-
"--package",
|
|
10
|
-
"thumbgate@1.4.1",
|
|
11
|
-
"thumbgate",
|
|
12
|
-
"serve"
|
|
13
|
-
],
|
|
14
|
-
"enabled": true
|
|
15
|
-
},
|
|
16
|
-
"perplexity": {
|
|
17
|
-
"type": "local",
|
|
18
|
-
"command": [
|
|
19
|
-
"npx",
|
|
20
|
-
"-y",
|
|
21
|
-
"@perplexity-ai/mcp-server"
|
|
22
|
-
],
|
|
23
|
-
"env": {
|
|
24
|
-
"PERPLEXITY_API_KEY": "${PERPLEXITY_API_KEY}"
|
|
25
|
-
},
|
|
26
|
-
"enabled": true
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
package/bin/memory.sh
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# bin/memory.sh - Layer 3 & 4 & 5 Memory Stack Refresher
|
|
3
|
-
|
|
4
|
-
PRIMER_FILE="primer.md"
|
|
5
|
-
|
|
6
|
-
if [ ! -f "$PRIMER_FILE" ]; then
|
|
7
|
-
echo "Error: $PRIMER_FILE not found."
|
|
8
|
-
exit 1
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
echo "🤖 [Memory Stack] Refreshing context..."
|
|
12
|
-
|
|
13
|
-
# 1. Behavioral Extraction (Layer 4)
|
|
14
|
-
node scripts/behavioral-extraction.js > /dev/null
|
|
15
|
-
TRAITS_FILE="$(node -e "const path = require('path'); const { resolveFeedbackDir } = require('./scripts/feedback-paths'); process.stdout.write(path.join(resolveFeedbackDir(), 'behavioral-traits.json'));" 2>/dev/null)"
|
|
16
|
-
if [ -z "$TRAITS_FILE" ]; then
|
|
17
|
-
TRAITS_FILE=".thumbgate/behavioral-traits.json"
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
# 2. Capture git context (Layer 3)
|
|
21
|
-
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
|
22
|
-
LAST_COMMITS=$(git log -n 5 --oneline 2>/dev/null || echo "No commits found")
|
|
23
|
-
DIRTY_FILES=$(git status --short 2>/dev/null || echo "")
|
|
24
|
-
|
|
25
|
-
# 3. Rebuild Primer
|
|
26
|
-
TEMP_FILE=$(mktemp)
|
|
27
|
-
|
|
28
|
-
# Read primer until "## Behavioral Traits"
|
|
29
|
-
sed -n '1,/## Behavioral Traits/p' "$PRIMER_FILE" > "$TEMP_FILE"
|
|
30
|
-
echo "" >> "$TEMP_FILE"
|
|
31
|
-
|
|
32
|
-
if [ -f "$TRAITS_FILE" ]; then
|
|
33
|
-
# Extract trait descriptions from JSON
|
|
34
|
-
cat "$TRAITS_FILE" | grep "description" | sed 's/.*: "//;s/".*//' | sed 's/^/- /' >> "$TEMP_FILE"
|
|
35
|
-
else
|
|
36
|
-
echo "_No strong behavioral patterns identified yet._" >> "$TEMP_FILE"
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
|
-
echo "" >> "$TEMP_FILE"
|
|
40
|
-
echo "## Live Git Context" >> "$TEMP_FILE"
|
|
41
|
-
echo "" >> "$TEMP_FILE"
|
|
42
|
-
echo "### Branch: $CURRENT_BRANCH" >> "$TEMP_FILE"
|
|
43
|
-
echo "" >> "$TEMP_FILE"
|
|
44
|
-
echo "### Last 5 Commits:" >> "$TEMP_FILE"
|
|
45
|
-
echo '```' >> "$TEMP_FILE"
|
|
46
|
-
echo "$LAST_COMMITS" >> "$TEMP_FILE"
|
|
47
|
-
echo '```' >> "$TEMP_FILE"
|
|
48
|
-
echo "" >> "$TEMP_FILE"
|
|
49
|
-
echo "### Modified Files:" >> "$TEMP_FILE"
|
|
50
|
-
if [ -z "$DIRTY_FILES" ]; then
|
|
51
|
-
echo "_None (Clean working tree)_" >> "$TEMP_FILE"
|
|
52
|
-
else
|
|
53
|
-
echo '```' >> "$TEMP_FILE"
|
|
54
|
-
echo "$DIRTY_FILES" >> "$TEMP_FILE"
|
|
55
|
-
echo '```' >> "$TEMP_FILE"
|
|
56
|
-
fi
|
|
57
|
-
|
|
58
|
-
mv "$TEMP_FILE" "$PRIMER_FILE"
|
|
59
|
-
|
|
60
|
-
# 4. Sync to Obsidian (Layer 5)
|
|
61
|
-
chmod +x bin/obsidian-sync.sh
|
|
62
|
-
./bin/obsidian-sync.sh
|
|
63
|
-
|
|
64
|
-
echo "✅ Context refresh complete."
|
package/bin/obsidian-sync.sh
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# obsidian-sync.sh
|
|
4
|
-
#
|
|
5
|
-
# Layer 5: Obsidian Knowledge Bridge
|
|
6
|
-
# Exports ThumbGate data as interlinked Obsidian markdown notes to a vault.
|
|
7
|
-
|
|
8
|
-
VAULT_PATH=$THUMBGATE_OBSIDIAN_VAULT_PATH
|
|
9
|
-
PROJECT_NAME=$(basename "$(pwd)")
|
|
10
|
-
|
|
11
|
-
if [ -z "$VAULT_PATH" ]; then
|
|
12
|
-
echo "🤖 [Layer 5] THUMBGATE_OBSIDIAN_VAULT_PATH not set. Skipping sync."
|
|
13
|
-
exit 0
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
echo "🤖 [Layer 5] Exporting memories to Obsidian vault: $VAULT_PATH/AI-Memories/$PROJECT_NAME"
|
|
17
|
-
|
|
18
|
-
npx thumbgate obsidian-export --vault-path="$VAULT_PATH" --output-dir="AI-Memories/$PROJECT_NAME"
|
|
19
|
-
|
|
20
|
-
echo "✅ Sync complete."
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Amp: ThumbGate Feedback Skill Install
|
|
2
|
-
|
|
3
|
-
Install the ThumbGate skill for Amp in under 60 seconds. No manual file editing required.
|
|
4
|
-
|
|
5
|
-
## One-Command Install
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
cp plugins/amp-skill/SKILL.md .amp/skills/thumbgate-feedback.md
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
Or from the npm package:
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npx thumbgate init
|
|
15
|
-
cp node_modules/thumbgate/plugins/amp-skill/SKILL.md .amp/skills/thumbgate-feedback.md
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## What This Does
|
|
19
|
-
|
|
20
|
-
Copies the skill definition to `.amp/skills/` so Amp loads it automatically on next launch.
|
|
21
|
-
|
|
22
|
-
## Verify
|
|
23
|
-
|
|
24
|
-
After copying, restart Amp. The skill will appear in the active skills list.
|
|
25
|
-
|
|
26
|
-
Then test:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npx thumbgate capture --feedback=up --context="amp skill install verified" --tags="install"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Available Commands (via skill)
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# Positive feedback
|
|
36
|
-
npx thumbgate capture --feedback=up --context="..." --tags="..."
|
|
37
|
-
|
|
38
|
-
# Negative feedback
|
|
39
|
-
npx thumbgate capture --feedback=down --context="..." --what-went-wrong="..." --what-to-change="..." --tags="..."
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Requirements
|
|
43
|
-
|
|
44
|
-
- Amp (any version with skills support)
|
|
45
|
-
- Node.js 18+ in PATH
|
|
46
|
-
- `.thumbgate/` directory (created by `npx thumbgate init`)
|
|
47
|
-
|
|
48
|
-
## Uninstall
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
rm .amp/skills/thumbgate-feedback.md
|
|
52
|
-
```
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: thumbgate-feedback
|
|
3
|
-
description: Dual-write feedback to Amp MCP memory AND thumbgate for DPO export, analytics, and cross-platform portability
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ThumbGate Feedback Skill (Dual-Write)
|
|
7
|
-
|
|
8
|
-
This skill captures feedback in TWO places simultaneously:
|
|
9
|
-
1. **Amp MCP memory** — for immediate in-session recall (native to Amp)
|
|
10
|
-
2. **thumbgate** — for DPO export, LanceDB vectors, prevention rules, and cross-platform analytics
|
|
11
|
-
|
|
12
|
-
## On thumbs up / positive feedback
|
|
13
|
-
|
|
14
|
-
First, store in Amp's native memory for in-session recall:
|
|
15
|
-
```
|
|
16
|
-
Use mcp__memory__remember to store: "GOOD: {context}. What worked: {details}"
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Then, pipe to thumbgate for DPO export and analytics:
|
|
20
|
-
```bash
|
|
21
|
-
npx -y thumbgate capture --feedback=up --context="..." --what-worked="..." --tags="..."
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## On thumbs down / negative feedback
|
|
25
|
-
|
|
26
|
-
First, store in Amp's native memory so the mistake is recalled immediately:
|
|
27
|
-
```
|
|
28
|
-
Use mcp__memory__remember to store: "BAD: {context}. What went wrong: {details}. Fix: {what to change}"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Then, pipe to thumbgate for prevention rules and DPO pairs:
|
|
32
|
-
```bash
|
|
33
|
-
npx -y thumbgate capture --feedback=down --context="..." --what-went-wrong="..." --what-to-change="..." --tags="..."
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Before starting a new task
|
|
37
|
-
|
|
38
|
-
Recall from Amp's memory (instant, in-session):
|
|
39
|
-
```
|
|
40
|
-
Use mcp__memory__recall with query describing the current task
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Also check thumbgate for cross-session prevention rules:
|
|
44
|
-
```bash
|
|
45
|
-
npx -y thumbgate rules
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Triggers
|
|
49
|
-
|
|
50
|
-
- "thumbs up" / "that worked" / "looks good" / "nice" / "perfect"
|
|
51
|
-
- "thumbs down" / "that failed" / "that was wrong" / "no" / "fix this"
|
|
52
|
-
|
|
53
|
-
## Negative Triggers (do NOT activate for)
|
|
54
|
-
|
|
55
|
-
- "generate code" / "search files" / "explain this" / "run tests"
|
|
56
|
-
|
|
57
|
-
## Why dual-write?
|
|
58
|
-
|
|
59
|
-
Amp's MCP memory gives you instant in-session recall. thumbgate gives you:
|
|
60
|
-
- **DPO training pairs** for fine-tuning your model
|
|
61
|
-
- **Prevention rules** that block repeated mistakes
|
|
62
|
-
- **Cross-platform portability** — same feedback works in Claude, Codex, Gemini
|
|
63
|
-
- **LanceDB vector search** for semantic similarity across sessions
|
|
64
|
-
- **REST API** for team dashboards and analytics
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "codex-bridge",
|
|
3
|
-
"version": "1.4.3",
|
|
4
|
-
"description": "Run Codex review, adversarial review, and second-pass handoffs from Claude Code while keeping ThumbGate reliability memory in the loop.",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Igor Ganapolsky",
|
|
7
|
-
"url": "https://github.com/IgorGanapolsky"
|
|
8
|
-
},
|
|
9
|
-
"homepage": "https://thumbgate-production.up.railway.app",
|
|
10
|
-
"repository": "https://github.com/IgorGanapolsky/ThumbGate",
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"keywords": [
|
|
13
|
-
"claude-code",
|
|
14
|
-
"codex",
|
|
15
|
-
"codex-review",
|
|
16
|
-
"adversarial-review",
|
|
17
|
-
"thumbgate",
|
|
18
|
-
"pre-action-gates",
|
|
19
|
-
"agent-reliability"
|
|
20
|
-
],
|
|
21
|
-
"mcpServers": "./.mcp.json"
|
|
22
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Install ThumbGate Codex Bridge for Claude Code
|
|
2
|
-
|
|
3
|
-
## One-command session install
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
claude --plugin-dir "$(pwd)/plugins/claude-codex-bridge"
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
That loads the plugin for the current Claude Code session and makes the following skills available:
|
|
10
|
-
|
|
11
|
-
- `/codex-bridge:setup`
|
|
12
|
-
- `/codex-bridge:review`
|
|
13
|
-
- `/codex-bridge:adversarial-review`
|
|
14
|
-
- `/codex-bridge:second-pass`
|
|
15
|
-
- `/codex-bridge:status`
|
|
16
|
-
- `/codex-bridge:result`
|
|
17
|
-
|
|
18
|
-
## Verify
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
claude plugin validate plugins/claude-codex-bridge
|
|
22
|
-
node plugins/claude-codex-bridge/scripts/codex-bridge.js setup
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Expected setup proof:
|
|
26
|
-
|
|
27
|
-
- `codexInstalled: true`
|
|
28
|
-
- `reviewCommand: true`
|
|
29
|
-
- `execCommand: true`
|
|
30
|
-
- `dataDir` points at the plugin data directory
|
|
31
|
-
|
|
32
|
-
## Typical flow
|
|
33
|
-
|
|
34
|
-
1. Run `/codex-bridge:review base=main` before merge.
|
|
35
|
-
2. Run `/codex-bridge:adversarial-review` before deploy or publish.
|
|
36
|
-
3. Run `/codex-bridge:second-pass focus on billing webhook hardening` when you want Codex to take another shot.
|
|
37
|
-
4. Run `/codex-bridge:status` or `/codex-bridge:result` to inspect the saved artifact.
|
|
38
|
-
|
|
39
|
-
## Codex prerequisites
|
|
40
|
-
|
|
41
|
-
- `codex` must be installed and authenticated on the machine.
|
|
42
|
-
- ThumbGate's existing Codex MCP profile still lives at `plugins/codex-profile/`.
|
|
43
|
-
- This bridge plugin does not replace the Codex profile; it gives Claude Code a clean way to call Codex from the same repo.
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# ThumbGate Codex Bridge for Claude Code
|
|
2
|
-
|
|
3
|
-
This repo-local Claude Code plugin brings Codex into the same workflow for three high-ROI cases:
|
|
4
|
-
|
|
5
|
-
- independent review of uncommitted work or a base diff
|
|
6
|
-
- skeptical adversarial review before risky merges or deploys
|
|
7
|
-
- second-pass handoff when you want a different agent to take another shot
|
|
8
|
-
|
|
9
|
-
The plugin keeps ThumbGate's local reliability memory available through the bundled `thumbgate` MCP server while the bridge script persists Codex artifacts in `${CLAUDE_PLUGIN_DATA}`.
|
|
10
|
-
|
|
11
|
-
## Shipped skills
|
|
12
|
-
|
|
13
|
-
- `/codex-bridge:setup` — verify Codex CLI, plugin data path, and ThumbGate MCP wiring
|
|
14
|
-
- `/codex-bridge:review` — run a normal Codex review against `--uncommitted`, `--base`, or `--commit`
|
|
15
|
-
- `/codex-bridge:adversarial-review` — run a stricter review focused on hidden regressions and security risk
|
|
16
|
-
- `/codex-bridge:second-pass` — hand off the current task or diff to Codex for a second pass
|
|
17
|
-
- `/codex-bridge:status` — show the latest saved bridge artifact metadata
|
|
18
|
-
- `/codex-bridge:result` — print the last saved Codex output
|
|
19
|
-
|
|
20
|
-
## Install
|
|
21
|
-
|
|
22
|
-
Run Claude Code with the repo-local plugin loaded:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
claude --plugin-dir "$(pwd)/plugins/claude-codex-bridge"
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Validate the plugin shape before shipping changes:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
claude plugin validate plugins/claude-codex-bridge
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
The plugin launches ThumbGate's MCP server automatically through `plugins/claude-codex-bridge/.mcp.json`, so Claude Code gets the reliability tools without extra configuration.
|
|
35
|
-
|
|
36
|
-
## How it works
|
|
37
|
-
|
|
38
|
-
1. Claude invokes a bridge skill such as `/codex-bridge:review`.
|
|
39
|
-
2. The skill runs `plugins/claude-codex-bridge/scripts/codex-bridge.js`.
|
|
40
|
-
3. The bridge script shells out to `codex exec review` or `codex exec`.
|
|
41
|
-
4. Codex output is saved under `${CLAUDE_PLUGIN_DATA}/runs/`.
|
|
42
|
-
5. `/codex-bridge:status` and `/codex-bridge:result` replay the latest artifact without rerunning Codex.
|
|
43
|
-
|
|
44
|
-
## Why this matters
|
|
45
|
-
|
|
46
|
-
ThumbGate is not trying to replace Codex. The point is to give Claude Code users a fast second reviewer and adversarial pass while keeping pre-action gates, thumbs-up/down feedback memory, and proof artifacts local-first.
|