thumbgate 1.20.0 → 1.21.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/.claude-plugin/marketplace.json +40 -12
- package/.claude-plugin/plugin.json +15 -6
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +28 -8
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +15 -5
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +119 -2
- package/bin/postinstall.js +19 -13
- package/config/merge-quality-checks.json +0 -1
- package/config/post-deploy-marketing-pages.json +46 -0
- package/package.json +74 -60
- package/public/agent-manager.html +139 -0
- package/public/compare.html +1 -1
- package/public/dashboard.html +3 -3
- package/public/guide.html +23 -0
- package/public/index.html +79 -133
- package/public/learn.html +16 -0
- package/public/lessons.html +22 -0
- package/public/numbers.html +2 -2
- package/public/pricing.html +345 -0
- package/scripts/auto-promote-gates.js +7 -6
- package/scripts/billing.js +64 -0
- package/scripts/context-manager.js +42 -2
- package/scripts/feedback-loop.js +2 -1
- package/scripts/gates-engine.js +133 -7
- package/scripts/license.js +0 -1
- package/scripts/rate-limiter.js +36 -1
- package/scripts/tool-registry.js +28 -0
- package/scripts/verify-marketing-pages-deployed.js +195 -0
- package/scripts/workflow-sentinel.js +6 -1
- package/src/api/server.js +514 -142
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.1",
|
|
4
4
|
"description": "ThumbGate self-improving agent governance: thumbs-up/down turns every mistake into a prevention rule and blocks repeat patterns. 33 pre-action checks, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
|
|
5
5
|
"homepage": "https://thumbgate-production.up.railway.app",
|
|
6
6
|
"repository": {
|
|
@@ -15,44 +15,13 @@
|
|
|
15
15
|
"thumbgate": "bin/cli.js"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
|
-
".claude-plugin/marketplace.json",
|
|
19
|
-
".claude-plugin/plugin.json",
|
|
20
|
-
".well-known/",
|
|
21
|
-
"LICENSE",
|
|
22
|
-
"README.md",
|
|
23
|
-
"adapters/amp/skills/thumbgate-feedback/SKILL.md",
|
|
24
|
-
"adapters/chatgpt/openapi.yaml",
|
|
25
|
-
"adapters/claude/.mcp.json",
|
|
26
|
-
"adapters/codex/config.toml",
|
|
27
|
-
"adapters/forge/forge.yaml",
|
|
28
|
-
"adapters/gemini/function-declarations.json",
|
|
29
|
-
"adapters/mcp/server-stdio.js",
|
|
30
|
-
"adapters/opencode/opencode.json",
|
|
31
|
-
"bench/programbench-smoke.json",
|
|
32
|
-
"bench/prompt-eval-suite.json",
|
|
33
|
-
"bench/thumbgate-bench.json",
|
|
34
|
-
"bin/cli.js",
|
|
35
|
-
"bin/postinstall.js",
|
|
36
|
-
"config/",
|
|
37
|
-
"openapi/",
|
|
38
|
-
"public/blog.html",
|
|
39
|
-
"public/codex-plugin.html",
|
|
40
|
-
"public/compare.html",
|
|
41
|
-
"public/dashboard.html",
|
|
42
|
-
"public/federal.html",
|
|
43
|
-
"public/guide.html",
|
|
44
|
-
"public/index.html",
|
|
45
|
-
"public/learn.html",
|
|
46
|
-
"public/lessons.html",
|
|
47
|
-
"public/numbers.html",
|
|
48
|
-
"public/pro.html",
|
|
49
18
|
"scripts/access-anomaly-detector.js",
|
|
50
19
|
"scripts/activation-tracker.js",
|
|
51
20
|
"scripts/agent-audit-trace.js",
|
|
52
21
|
"scripts/agent-design-governance.js",
|
|
53
22
|
"scripts/agent-memory-lifecycle.js",
|
|
54
|
-
"scripts/agent-readiness.js",
|
|
55
23
|
"scripts/agent-readiness-plan.js",
|
|
24
|
+
"scripts/agent-readiness.js",
|
|
56
25
|
"scripts/agent-reasoning-traces.js",
|
|
57
26
|
"scripts/agent-reward-model.js",
|
|
58
27
|
"scripts/agent-stack-survival-audit.js",
|
|
@@ -60,11 +29,11 @@
|
|
|
60
29
|
"scripts/ai-engineering-stack-guardrails.js",
|
|
61
30
|
"scripts/ai-search-distribution.js",
|
|
62
31
|
"scripts/analytics-window.js",
|
|
63
|
-
"scripts/autoresearch-runner.js",
|
|
64
32
|
"scripts/async-job-runner.js",
|
|
65
33
|
"scripts/audit-trail.js",
|
|
66
34
|
"scripts/auto-promote-gates.js",
|
|
67
35
|
"scripts/auto-wire-hooks.js",
|
|
36
|
+
"scripts/autoresearch-runner.js",
|
|
68
37
|
"scripts/background-agent-governance.js",
|
|
69
38
|
"scripts/bayes-optimal-gate.js",
|
|
70
39
|
"scripts/belief-update.js",
|
|
@@ -78,28 +47,28 @@
|
|
|
78
47
|
"scripts/cli-feedback.js",
|
|
79
48
|
"scripts/cli-schema.js",
|
|
80
49
|
"scripts/cli-status.js",
|
|
81
|
-
"scripts/cli-test-block.js",
|
|
82
50
|
"scripts/cli-telemetry.js",
|
|
51
|
+
"scripts/cli-test-block.js",
|
|
83
52
|
"scripts/cloudflare-dynamic-sandbox.js",
|
|
53
|
+
"scripts/code-graph-guardrails.js",
|
|
84
54
|
"scripts/code-mode-mcp-plan.js",
|
|
85
55
|
"scripts/code-reasoning.js",
|
|
86
|
-
"scripts/code-graph-guardrails.js",
|
|
87
56
|
"scripts/codegraph-context.js",
|
|
57
|
+
"scripts/codex-self-heal.js",
|
|
88
58
|
"scripts/commercial-offer.js",
|
|
89
|
-
"scripts/context-manager.js",
|
|
90
59
|
"scripts/context-engine.js",
|
|
60
|
+
"scripts/context-footprint.js",
|
|
61
|
+
"scripts/context-manager.js",
|
|
91
62
|
"scripts/contextfs.js",
|
|
92
63
|
"scripts/conversation-context.js",
|
|
93
|
-
"scripts/context-footprint.js",
|
|
94
|
-
"scripts/codex-self-heal.js",
|
|
95
64
|
"scripts/dashboard-render-spec.js",
|
|
96
65
|
"scripts/dashboard.js",
|
|
97
66
|
"scripts/decision-journal.js",
|
|
98
|
-
"scripts/durability/step.js",
|
|
99
67
|
"scripts/deepseek-v4-runtime-guardrails.js",
|
|
100
68
|
"scripts/docker-sandbox-planner.js",
|
|
101
69
|
"scripts/document-intake.js",
|
|
102
70
|
"scripts/document-workflow-governance.js",
|
|
71
|
+
"scripts/durability/step.js",
|
|
103
72
|
"scripts/evolution-state.js",
|
|
104
73
|
"scripts/experiment-tracker.js",
|
|
105
74
|
"scripts/explore-subcommands.js",
|
|
@@ -112,10 +81,10 @@
|
|
|
112
81
|
"scripts/feedback-loop.js",
|
|
113
82
|
"scripts/feedback-paths.js",
|
|
114
83
|
"scripts/feedback-quality.js",
|
|
115
|
-
"scripts/feedback_quality_eval.py",
|
|
116
84
|
"scripts/feedback-schema.js",
|
|
117
85
|
"scripts/feedback-session.js",
|
|
118
86
|
"scripts/feedback-to-rules.js",
|
|
87
|
+
"scripts/feedback_quality_eval.py",
|
|
119
88
|
"scripts/filesystem-search.js",
|
|
120
89
|
"scripts/fs-utils.js",
|
|
121
90
|
"scripts/gate-stats.js",
|
|
@@ -130,8 +99,8 @@
|
|
|
130
99
|
"scripts/hosted-config.js",
|
|
131
100
|
"scripts/hybrid-feedback-context.js",
|
|
132
101
|
"scripts/hybrid-supervisor-agent.js",
|
|
133
|
-
"scripts/install-mcp.js",
|
|
134
102
|
"scripts/inference-cache-policy.js",
|
|
103
|
+
"scripts/install-mcp.js",
|
|
135
104
|
"scripts/internal-agent-bootstrap.js",
|
|
136
105
|
"scripts/intervention-policy.js",
|
|
137
106
|
"scripts/jsonl-watcher.js",
|
|
@@ -142,14 +111,13 @@
|
|
|
142
111
|
"scripts/lesson-rotation.js",
|
|
143
112
|
"scripts/lesson-search.js",
|
|
144
113
|
"scripts/lesson-synthesis.js",
|
|
145
|
-
"scripts/rule-validator.js",
|
|
146
114
|
"scripts/license.js",
|
|
147
|
-
"scripts/llm-client.js",
|
|
148
115
|
"scripts/llm-behavior-monitor.js",
|
|
149
|
-
"scripts/
|
|
150
|
-
"scripts/mailer/resend-mailer.js",
|
|
116
|
+
"scripts/llm-client.js",
|
|
151
117
|
"scripts/local-model-profile.js",
|
|
152
118
|
"scripts/long-running-agent-context-guardrails.js",
|
|
119
|
+
"scripts/mailer/index.js",
|
|
120
|
+
"scripts/mailer/resend-mailer.js",
|
|
153
121
|
"scripts/mcp-config.js",
|
|
154
122
|
"scripts/mcp-policy.js",
|
|
155
123
|
"scripts/mcp-transport-strategy.js",
|
|
@@ -162,32 +130,33 @@
|
|
|
162
130
|
"scripts/native-messaging-audit.js",
|
|
163
131
|
"scripts/natural-language-harness.js",
|
|
164
132
|
"scripts/obsidian-export.js",
|
|
133
|
+
"scripts/operational-integrity.js",
|
|
165
134
|
"scripts/oss-pr-opportunity-scout.js",
|
|
166
135
|
"scripts/otel-declarative-config.js",
|
|
167
|
-
"scripts/operational-integrity.js",
|
|
168
136
|
"scripts/perplexity-client.js",
|
|
169
137
|
"scripts/plausible-server-events.js",
|
|
170
138
|
"scripts/pr-manager.js",
|
|
171
139
|
"scripts/private-core-boundary.js",
|
|
172
140
|
"scripts/pro-local-dashboard.js",
|
|
173
|
-
"scripts/problem-detail.js",
|
|
174
141
|
"scripts/proactive-agent-eval-guardrails.js",
|
|
142
|
+
"scripts/problem-detail.js",
|
|
175
143
|
"scripts/product-feedback.js",
|
|
176
|
-
"scripts/prompting-operating-system.js",
|
|
177
|
-
"scripts/provider-action-normalizer.js",
|
|
178
144
|
"scripts/profile-router.js",
|
|
179
|
-
"scripts/prompt-programs.js",
|
|
180
145
|
"scripts/prompt-eval.js",
|
|
181
146
|
"scripts/prompt-guard.js",
|
|
147
|
+
"scripts/prompt-programs.js",
|
|
148
|
+
"scripts/prompting-operating-system.js",
|
|
149
|
+
"scripts/provider-action-normalizer.js",
|
|
182
150
|
"scripts/proxy-pointer-rag-guardrails.js",
|
|
183
|
-
"scripts/rag-precision-guardrails.js",
|
|
184
151
|
"scripts/published-cli.js",
|
|
152
|
+
"scripts/rag-precision-guardrails.js",
|
|
185
153
|
"scripts/rate-limiter.js",
|
|
186
154
|
"scripts/reasoning-efficiency-guardrails.js",
|
|
187
155
|
"scripts/reward-hacking-guardrails.js",
|
|
188
156
|
"scripts/risk-scorer.js",
|
|
189
157
|
"scripts/rlaif-self-audit.js",
|
|
190
158
|
"scripts/rubric-engine.js",
|
|
159
|
+
"scripts/rule-validator.js",
|
|
191
160
|
"scripts/secret-scanner.js",
|
|
192
161
|
"scripts/security-scanner.js",
|
|
193
162
|
"scripts/self-distill-agent.js",
|
|
@@ -196,9 +165,9 @@
|
|
|
196
165
|
"scripts/semantic-layer.js",
|
|
197
166
|
"scripts/seo-gsd.js",
|
|
198
167
|
"scripts/settings-hierarchy.js",
|
|
168
|
+
"scripts/single-use-credential-gate.js",
|
|
199
169
|
"scripts/skill-generator.js",
|
|
200
170
|
"scripts/skill-rag-router.js",
|
|
201
|
-
"scripts/single-use-credential-gate.js",
|
|
202
171
|
"scripts/slo-alert-engine.js",
|
|
203
172
|
"scripts/spec-gate.js",
|
|
204
173
|
"scripts/statusline-cache-path.js",
|
|
@@ -216,20 +185,54 @@
|
|
|
216
185
|
"scripts/thompson-sampling.js",
|
|
217
186
|
"scripts/thumbgate-bench.js",
|
|
218
187
|
"scripts/thumbgate-search.js",
|
|
219
|
-
"scripts/token-tco.js",
|
|
220
188
|
"scripts/token-savings.js",
|
|
189
|
+
"scripts/token-tco.js",
|
|
221
190
|
"scripts/tool-registry.js",
|
|
222
191
|
"scripts/upstream-contribution-engine.js",
|
|
223
192
|
"scripts/user-profile.js",
|
|
224
193
|
"scripts/validate-workflow-contract.js",
|
|
225
194
|
"scripts/vector-store.js",
|
|
226
|
-
"scripts/verifier-scoring.js",
|
|
227
195
|
"scripts/verification-loop.js",
|
|
196
|
+
"scripts/verifier-scoring.js",
|
|
197
|
+
"scripts/verify-marketing-pages-deployed.js",
|
|
228
198
|
"scripts/workflow-runs.js",
|
|
229
199
|
"scripts/workflow-sentinel.js",
|
|
230
200
|
"scripts/workspace-agent-routines.js",
|
|
231
201
|
"scripts/workspace-evolver.js",
|
|
232
202
|
"scripts/xmemory-lite.js",
|
|
203
|
+
".claude-plugin/marketplace.json",
|
|
204
|
+
".claude-plugin/plugin.json",
|
|
205
|
+
".well-known/",
|
|
206
|
+
"LICENSE",
|
|
207
|
+
"README.md",
|
|
208
|
+
"adapters/amp/skills/thumbgate-feedback/SKILL.md",
|
|
209
|
+
"adapters/chatgpt/openapi.yaml",
|
|
210
|
+
"adapters/claude/.mcp.json",
|
|
211
|
+
"adapters/codex/config.toml",
|
|
212
|
+
"adapters/forge/forge.yaml",
|
|
213
|
+
"adapters/gemini/function-declarations.json",
|
|
214
|
+
"adapters/mcp/server-stdio.js",
|
|
215
|
+
"adapters/opencode/opencode.json",
|
|
216
|
+
"bench/programbench-smoke.json",
|
|
217
|
+
"bench/prompt-eval-suite.json",
|
|
218
|
+
"bench/thumbgate-bench.json",
|
|
219
|
+
"bin/cli.js",
|
|
220
|
+
"bin/postinstall.js",
|
|
221
|
+
"config/",
|
|
222
|
+
"openapi/",
|
|
223
|
+
"public/agent-manager.html",
|
|
224
|
+
"public/blog.html",
|
|
225
|
+
"public/codex-plugin.html",
|
|
226
|
+
"public/compare.html",
|
|
227
|
+
"public/dashboard.html",
|
|
228
|
+
"public/federal.html",
|
|
229
|
+
"public/guide.html",
|
|
230
|
+
"public/index.html",
|
|
231
|
+
"public/learn.html",
|
|
232
|
+
"public/lessons.html",
|
|
233
|
+
"public/numbers.html",
|
|
234
|
+
"public/pricing.html",
|
|
235
|
+
"public/pro.html",
|
|
233
236
|
"skills/thumbgate/SKILL.md",
|
|
234
237
|
"src/"
|
|
235
238
|
],
|
|
@@ -329,7 +332,7 @@
|
|
|
329
332
|
"social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
|
|
330
333
|
"social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
|
|
331
334
|
"test:python": "python3 -m pytest tests/*.py",
|
|
332
|
-
"test": "npm run test:python && npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:post-everywhere-zernio-default && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:community-course-platform-launch-kit && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:social-dedupe-cleanup && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:ci-cd-hygiene-audit",
|
|
335
|
+
"test": "npm run test:python && npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:post-everywhere-zernio-default && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:community-course-platform-launch-kit && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:social-dedupe-cleanup && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture",
|
|
333
336
|
"test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
|
|
334
337
|
"test:hook-stop-anti-claim": "node --test tests/hook-stop-anti-claim.test.js",
|
|
335
338
|
"test:plausible-server-events": "node --test tests/plausible-server-events.test.js",
|
|
@@ -435,7 +438,7 @@
|
|
|
435
438
|
"test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/may-2026-revenue-machine.test.js tests/customer-discovery-sprint.test.js tests/revenue-pack-utils.test.js tests/aiventyx-marketplace-plan.test.js tests/cursor-marketplace-revenue-pack.test.js tests/codex-marketplace-revenue-pack.test.js tests/codex-plugin-revenue-pack.test.js tests/gemini-cli-demand-pack.test.js tests/roo-sunset-demand-pack.test.js tests/linkedin-workflow-hardening-pack.test.js tests/chatgpt-gpt-revenue-pack.test.js tests/mcp-directory-revenue-pack.test.js tests/money-marketplace-distribution-pack.test.js tests/autonomous-sales-agent.test.js tests/reddit-dm-workflow-hardening-pack.test.js tests/sales-pipeline.test.js tests/reddit-dm-outreach.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/ralph-loop.test.js tests/ralph-mode-ci.test.js tests/guide-conversion-path.test.js tests/roo-sunset-marketing.test.js",
|
|
436
439
|
"test:sales-pipeline": "node --test tests/sales-pipeline.test.js",
|
|
437
440
|
"test:billing": "node --test tests/billing.test.js tests/stripe-sync-product-images.test.js",
|
|
438
|
-
"test:cli": "node --test tests/analytics-report.test.js tests/agent-design-governance.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js tests/creator-dev-and-prune.test.js",
|
|
441
|
+
"test:cli": "node --test tests/analytics-report.test.js tests/agent-design-governance.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/install-scope-docs.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js tests/creator-dev-and-prune.test.js",
|
|
439
442
|
"test:evolution": "node --test tests/workspace-evolver.test.js",
|
|
440
443
|
"test:watcher": "node --test tests/jsonl-watcher.test.js",
|
|
441
444
|
"test:autoresearch": "node --test tests/autoresearch.test.js",
|
|
@@ -510,6 +513,8 @@
|
|
|
510
513
|
"test:audit-pr-bot-contamination": "node --test tests/audit-pr-bot-contamination.test.js",
|
|
511
514
|
"test:stripe-bootstrap-saas-catalog": "node --test tests/stripe-bootstrap-saas-catalog.test.js",
|
|
512
515
|
"test:bot-detection": "node --test tests/bot-detection.test.js",
|
|
516
|
+
"test:postgres-guard": "node --test tests/postgres-guard.test.js",
|
|
517
|
+
"test:checkout-archived-product-guard": "node --test tests/checkout-archived-product-guard.test.js",
|
|
513
518
|
"test:checkout-bot-guard": "node --test tests/checkout-bot-guard.test.js",
|
|
514
519
|
"test:checkout-pro-confirmation-gate": "node --test tests/checkout-pro-confirmation-gate.test.js",
|
|
515
520
|
"test:revenue-observability-doctor": "node --test tests/revenue-observability-doctor.test.js",
|
|
@@ -634,6 +639,10 @@
|
|
|
634
639
|
"test:competitive-positioning-marketing": "node --test tests/competitive-positioning-marketing.test.js tests/knowledge-graph-guardrails.test.js tests/supply-chain-guardrails.test.js",
|
|
635
640
|
"test:medium-weekly": "node --test tests/medium-weekly.test.js",
|
|
636
641
|
"test:dashboard-deeplink-e2e": "node --test tests/dashboard-deeplink-e2e.test.js",
|
|
642
|
+
"test:e2e:playwright": "playwright test",
|
|
643
|
+
"test:e2e:playwright:headed": "playwright test --headed",
|
|
644
|
+
"test:e2e:playwright:ui": "playwright test --ui",
|
|
645
|
+
"test:e2e:playwright:report": "playwright show-report",
|
|
637
646
|
"test:public-package-parity": "node --test tests/public-package-parity.test.js",
|
|
638
647
|
"prepare": "bash bin/install-hooks.sh >/dev/null 2>&1 || true",
|
|
639
648
|
"install:hooks": "bash bin/install-hooks.sh",
|
|
@@ -646,7 +655,11 @@
|
|
|
646
655
|
"test:enforcement-teeth": "node --test tests/enforcement-teeth.test.js",
|
|
647
656
|
"test:bayes-optimal-gate": "node --test tests/bayes-optimal-gate.test.js",
|
|
648
657
|
"test:actionable-remediations": "node --test tests/actionable-remediations.test.js",
|
|
649
|
-
"test:public-bundle-ratchet": "node --test tests/public-bundle-ratchet.test.js"
|
|
658
|
+
"test:public-bundle-ratchet": "node --test tests/public-bundle-ratchet.test.js",
|
|
659
|
+
"test:stripe-payment-link-update": "node --test tests/stripe-payment-link-update.test.js",
|
|
660
|
+
"test:verify-marketing-pages-deployed": "node --test tests/verify-marketing-pages-deployed.test.js",
|
|
661
|
+
"verify:marketing-pages": "node scripts/verify-marketing-pages-deployed.js",
|
|
662
|
+
"test:install-email-capture": "node --test tests/install-email-capture.test.js"
|
|
650
663
|
},
|
|
651
664
|
"keywords": [
|
|
652
665
|
"mcp",
|
|
@@ -701,7 +714,7 @@
|
|
|
701
714
|
"node": ">=18.18.0"
|
|
702
715
|
},
|
|
703
716
|
"dependencies": {
|
|
704
|
-
"@anthropic-ai/sdk": "0.
|
|
717
|
+
"@anthropic-ai/sdk": "0.96.0",
|
|
705
718
|
"@google/genai": "1.49.0",
|
|
706
719
|
"@huggingface/transformers": "^4.2.0",
|
|
707
720
|
"@lancedb/lancedb": "^0.27.2",
|
|
@@ -709,7 +722,7 @@
|
|
|
709
722
|
"better-sqlite3": "^12.9.0",
|
|
710
723
|
"dotenv": "^17.4.2",
|
|
711
724
|
"playwright-core": "^1.59.1",
|
|
712
|
-
"protobufjs": "^
|
|
725
|
+
"protobufjs": "^8.4.0",
|
|
713
726
|
"stripe": "^22.0.2"
|
|
714
727
|
},
|
|
715
728
|
"overrides": {
|
|
@@ -721,6 +734,7 @@
|
|
|
721
734
|
"devDependencies": {
|
|
722
735
|
"@changesets/changelog-github": "^0.7.0",
|
|
723
736
|
"@changesets/cli": "^2.31.0",
|
|
737
|
+
"@playwright/test": "^1.60.0",
|
|
724
738
|
"c8": "^11.0.0",
|
|
725
739
|
"undici": "^8.2.0"
|
|
726
740
|
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>ThumbGate for the Agent Manager — Pre-Action Checks for Claude Code, Cursor, Codex</title>
|
|
7
|
+
<script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
|
|
8
|
+
<meta name="description" content="Anthropic named the role that owns enterprise Claude Code: the Agent Manager. ThumbGate is the pre-action enforcement layer underneath CLAUDE.md, the plugin marketplace, permissions policy, and which skills ship.">
|
|
9
|
+
<meta property="og:title" content="ThumbGate for the Agent Manager">
|
|
10
|
+
<meta property="og:description" content="The role Anthropic named — Agent Manager — owns CLAUDE.md, the plugin marketplace, permissions, and which skills ship. ThumbGate is the runtime underneath all of that.">
|
|
11
|
+
<meta property="og:type" content="article">
|
|
12
|
+
<meta property="og:image" content="https://thumbgate-production.up.railway.app/og.png">
|
|
13
|
+
<link rel="canonical" href="https://thumbgate-production.up.railway.app/agent-manager">
|
|
14
|
+
<script type="application/ld+json">
|
|
15
|
+
{
|
|
16
|
+
"@context": "https://schema.org",
|
|
17
|
+
"@type": "TechArticle",
|
|
18
|
+
"headline": "ThumbGate for the Agent Manager",
|
|
19
|
+
"description": "Anthropic named the role that owns enterprise Claude Code rollouts: the Agent Manager. ThumbGate is the pre-action enforcement layer underneath CLAUDE.md, the plugin marketplace, permissions policy, and which skills ship.",
|
|
20
|
+
"datePublished": "2026-05-19",
|
|
21
|
+
"dateModified": "2026-05-19",
|
|
22
|
+
"author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
|
|
23
|
+
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate-production.up.railway.app" },
|
|
24
|
+
"about": [
|
|
25
|
+
{ "@type": "Thing", "name": "Agent Manager" },
|
|
26
|
+
{ "@type": "Thing", "name": "Claude Code rollout" },
|
|
27
|
+
{ "@type": "Thing", "name": "Pre-Action Checks" }
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
</script>
|
|
31
|
+
<style>
|
|
32
|
+
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
|
33
|
+
:root { --bg:#0a0a0b; --card:#161618; --border:#222225; --text:#e8e8ec; --muted:#8b8b94; --cyan:#22d3ee; }
|
|
34
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; }
|
|
35
|
+
.container { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
|
|
36
|
+
nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display:flex; gap:1.5rem; flex-wrap:wrap; }
|
|
37
|
+
nav a { color: var(--muted); text-decoration:none; font-size:0.9rem; }
|
|
38
|
+
nav .brand { color: var(--text); font-weight:700; }
|
|
39
|
+
.pill { display:inline-block; font-size:0.75rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--cyan); background:rgba(34,211,238,0.08); border:1px solid rgba(34,211,238,0.2); padding:4px 12px; border-radius:100px; margin-top:1.5rem; font-weight:600; }
|
|
40
|
+
h1 { font-size:2.2rem; line-height:1.15; margin:1rem 0 1rem; }
|
|
41
|
+
h2 { font-size:1.45rem; margin:2.2rem 0 1rem; color:var(--cyan); }
|
|
42
|
+
h3 { margin:0.6rem 0; font-size:1rem; }
|
|
43
|
+
p, li { margin-bottom:0.75rem; }
|
|
44
|
+
ul, ol { padding-left:1.25rem; }
|
|
45
|
+
.card { background: var(--card); border:1px solid var(--border); border-radius:12px; padding:1.25rem; margin:1rem 0; }
|
|
46
|
+
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; margin:1rem 0; }
|
|
47
|
+
.grid .card h3 { color:var(--cyan); }
|
|
48
|
+
.cta { display:inline-block; background:var(--cyan); color:#000; padding:0.8rem 1.2rem; border-radius:8px; text-decoration:none; font-weight:700; }
|
|
49
|
+
.secondary { color:var(--cyan); text-decoration:underline; margin-left:1rem; }
|
|
50
|
+
.quote { border-left:3px solid var(--cyan); padding:0.75rem 1rem; margin:1rem 0; color:var(--muted); font-style:italic; }
|
|
51
|
+
.table-clean { width:100%; border-collapse:collapse; margin:1rem 0; font-size:0.95rem; }
|
|
52
|
+
.table-clean th, .table-clean td { border-bottom:1px solid var(--border); padding:0.6rem 0.5rem; text-align:left; vertical-align:top; }
|
|
53
|
+
.table-clean th { color:var(--cyan); font-weight:600; font-size:0.85rem; text-transform:uppercase; letter-spacing:0.05em; }
|
|
54
|
+
</style>
|
|
55
|
+
</head>
|
|
56
|
+
<body>
|
|
57
|
+
<nav>
|
|
58
|
+
<a href="/" class="brand">ThumbGate</a>
|
|
59
|
+
<a href="/guide">Guide</a>
|
|
60
|
+
<a href="/dashboard">Dashboard demo</a>
|
|
61
|
+
<a href="/#workflow-sprint-intake">Workflow Hardening Sprint</a>
|
|
62
|
+
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
63
|
+
</nav>
|
|
64
|
+
<div class="container">
|
|
65
|
+
<span class="pill">Built for the Agent Manager</span>
|
|
66
|
+
<h1>You own CLAUDE.md, the plugin marketplace, permissions, and which skills ship. ThumbGate is the enforcement layer underneath.</h1>
|
|
67
|
+
<p>Anthropic named the role: the <strong>Agent Manager</strong> — a hybrid PM/engineer single DRI who owns the Claude Code configuration that every developer in the org actually feels. Without that role, enterprise rollouts stall in phase two; with it, the model improving is no longer the bottleneck. ThumbGate is the pre-action runtime that role needs at the tool-call boundary.</p>
|
|
68
|
+
|
|
69
|
+
<h2>What the Agent Manager owns, and what ThumbGate ships for each</h2>
|
|
70
|
+
<table class="table-clean">
|
|
71
|
+
<thead><tr><th>You own</th><th>ThumbGate ships</th></tr></thead>
|
|
72
|
+
<tbody>
|
|
73
|
+
<tr>
|
|
74
|
+
<td><strong>CLAUDE.md hierarchy</strong><br>Keeping the policy that the model reads on every session current and consistent across repos.</td>
|
|
75
|
+
<td>Prevention rules auto-distilled from real <code>👎</code> feedback and written into <code>CLAUDE.md</code> by <code>scripts/feedback-to-rules.js</code>. Org-wide rule library on the hosted dashboard.</td>
|
|
76
|
+
</tr>
|
|
77
|
+
<tr>
|
|
78
|
+
<td><strong>Plugin marketplace</strong><br>Deciding which Claude Code / Cursor / Codex plugins are blessed and which are not.</td>
|
|
79
|
+
<td>ThumbGate ships as a Claude Code plugin, a Cursor extension, a Codex plugin, and a Gemini CLI hook. One install, every supported agent. Adapter compatibility matrix kept current as runtimes change.</td>
|
|
80
|
+
</tr>
|
|
81
|
+
<tr>
|
|
82
|
+
<td><strong>Permissions policy</strong><br>What an agent is allowed to execute, against which surfaces, with which evidence required.</td>
|
|
83
|
+
<td>PreToolUse hooks at the tool-call boundary. Each block carries the rule that fired, the evidence that triggered it, and a reason the agent can use to choose a safer plan. No "tell the model to be more careful."</td>
|
|
84
|
+
</tr>
|
|
85
|
+
<tr>
|
|
86
|
+
<td><strong>Which skills ship</strong><br>The set of in-context skills, prompts, and snippets every developer's agent has access to.</td>
|
|
87
|
+
<td>Skill ship matrix in <code>adapters/*</code> — Claude, Cursor, Codex, Gemini, Amp, Cline, OpenCode. Each adapter is version-pinned and CI-checked against the upstream runtime.</td>
|
|
88
|
+
</tr>
|
|
89
|
+
<tr>
|
|
90
|
+
<td><strong>Keep them current</strong><br>When Claude Code ships a breaking change to hooks or to the plugin API, your rollout cannot wait a quarter.</td>
|
|
91
|
+
<td>24×7 ops on the adapter matrix. SonarCloud regressions fixed in <24h. The hosted tier is the operator the role does not have to be themselves.</td>
|
|
92
|
+
</tr>
|
|
93
|
+
</tbody>
|
|
94
|
+
</table>
|
|
95
|
+
|
|
96
|
+
<h2>Why this role exists in the first place</h2>
|
|
97
|
+
<p>Every enterprise Claude Code rollout hits the same wall: the model gets better, the setup does not, and nobody owns it. The teams that get past phase one and into actual adoption all turn out to have a single DRI behind CLAUDE.md, the plugin policy, the permissions, and the skill ship list. The teams that do not, stall.</p>
|
|
98
|
+
<div class="quote">"The minimum viable version is a DRI: one person with ownership over the Claude Code configuration, the authority to make calls on settings, permissions policy, the plugin marketplace, and CLAUDE.md conventions, and the responsibility to keep them current."</div>
|
|
99
|
+
|
|
100
|
+
<h2>The three-phase pattern, and where ThumbGate fits</h2>
|
|
101
|
+
<div class="grid">
|
|
102
|
+
<div class="card">
|
|
103
|
+
<h3>Phase 1 — Quiet investment</h3>
|
|
104
|
+
<p>Individual engineers install agents. CLAUDE.md is whatever they wrote. The Agent Manager role is unfilled or shared. ThumbGate enters as the free <code>npx thumbgate init</code> wedge — one repo, one repeated failure, one Pre-Action Check.</p>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="card">
|
|
107
|
+
<h3>Phase 2 — Rollout lands</h3>
|
|
108
|
+
<p>Infrastructure is ready; the first wave finds it productive. This is where the Agent Manager becomes a named role. ThumbGate's hosted dashboard, org-wide rule library, and DPO export are what that role uses to keep CLAUDE.md and the permissions policy consistent across repos.</p>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="card">
|
|
111
|
+
<h3>Phase 3 — Adoption spreads</h3>
|
|
112
|
+
<p>The team becomes the harness. The Agent Manager stops being a bottleneck because the policy enforces itself at the tool-call boundary. ThumbGate's Workflow Hardening Sprint locks down the patterns that earned trust in phase two so the next 10x of engineers do not regress them.</p>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<h2>How to start</h2>
|
|
117
|
+
<ol>
|
|
118
|
+
<li><strong>Install free.</strong> <code>npx thumbgate init</code> in one repo. Captures thumbs-up/down feedback locally; auto-promotes repeated failures into prevention rules.</li>
|
|
119
|
+
<li><strong>Wire one Pre-Action Check.</strong> Pick the most-repeated agent mistake your org has felt this month. Promote that one to a rule. Watch the next attempt get blocked at the tool-call boundary, with the rule that fired in the agent's reasoning trace.</li>
|
|
120
|
+
<li><strong>Run the Workflow Hardening Sprint.</strong> When phase 2 hits — when you need shared rules, org dashboard visibility, and adapter coverage you do not have to maintain yourself — the sprint is the path from local proof to managed rollout.</li>
|
|
121
|
+
</ol>
|
|
122
|
+
|
|
123
|
+
<div class="card">
|
|
124
|
+
<p><strong>Anthropic named the role. ThumbGate is the runtime that role needs.</strong> The free CLI is real, MIT-licensed, and the gates work locally without a hosted account. The paid tier is what we operate so the Agent Manager does not have to.</p>
|
|
125
|
+
<p>
|
|
126
|
+
<a href="/#workflow-sprint-intake" class="cta">Start the Workflow Hardening Sprint</a>
|
|
127
|
+
<a href="/checkout/pro?utm_source=website&utm_medium=agent_manager_page&utm_campaign=pro_upgrade&cta_id=agent_manager_pro_checkout&cta_placement=agent_manager_page&plan_id=pro" class="secondary">Or start Pro at $19/mo →</a>
|
|
128
|
+
</p>
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
<h2>Related reading</h2>
|
|
132
|
+
<ul>
|
|
133
|
+
<li><a href="/use-cases/platform-teams">ThumbGate for platform teams</a> — when the Agent Manager role lives in the platform org.</li>
|
|
134
|
+
<li><a href="/use-cases/regulated-workflows">ThumbGate for regulated workflows</a> — DORA / EU AI Act / HIPAA pressure on the same role.</li>
|
|
135
|
+
<li><a href="/compare/ai-experience-orchestration">Orchestration vs enforcement</a> — what the Agent Manager picks <em>under</em> a broader orchestration suite.</li>
|
|
136
|
+
</ul>
|
|
137
|
+
</div>
|
|
138
|
+
</body>
|
|
139
|
+
</html>
|
package/public/compare.html
CHANGED
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
|
|
264
264
|
<div class="card">
|
|
265
265
|
<h3>Evaluating Rein for AI agent governance?</h3>
|
|
266
|
-
<p>Rein is a Python decorator that wraps tool functions with policy checks, audit trails, and circuit breakers — targeted at production apps in trading, healthcare, and legal. ThumbGate is the coding-agent specialist with a learning feedback loop and MIT licensing. Same category (
|
|
266
|
+
<p>Rein is a Python decorator that wraps tool functions with policy checks, audit trails, and circuit breakers — targeted at production apps in trading, healthcare, and legal. ThumbGate is the coding-agent specialist with a learning feedback loop and MIT licensing. Same category (infrastructure firewalls), different layer and stack.</p>
|
|
267
267
|
<p><a href="/compare/rein" class="cta">Read ThumbGate vs Rein</a></p>
|
|
268
268
|
</div>
|
|
269
269
|
|
package/public/dashboard.html
CHANGED
|
@@ -247,9 +247,9 @@
|
|
|
247
247
|
|
|
248
248
|
<!-- STATS -->
|
|
249
249
|
<div class="stats-grid" id="statsGrid">
|
|
250
|
-
<a class="stat-card" data-card-action="all" onclick="selectCard(this,'all')" href="/lessons" style="cursor:pointer;text-decoration:none;color:inherit;display:block;" title="Click to view all feedback → Lessons page"><div class="stat-label">Total Feedback</div><div class="stat-value cyan" id="statTotal">—</div></a>
|
|
251
|
-
<a class="stat-card" data-card-action="up" onclick="selectCard(this,'up')" href="/lessons?signal=
|
|
252
|
-
<a class="stat-card" data-card-action="down" onclick="selectCard(this,'down')" href="/lessons?signal=
|
|
250
|
+
<a class="stat-card" data-card-action="all" onclick="selectCard(this,'all')" href="/lessons?signal=all" style="cursor:pointer;text-decoration:none;color:inherit;display:block;" title="Click to view all feedback → Lessons page"><div class="stat-label">Total Feedback</div><div class="stat-value cyan" id="statTotal">—</div></a>
|
|
251
|
+
<a class="stat-card" data-card-action="up" onclick="selectCard(this,'up')" href="/lessons?signal=up" style="cursor:pointer;text-decoration:none;color:inherit;display:block;" title="Click to view positive feedback → Lessons page"><div class="stat-label">👍 Positive</div><div class="stat-value green" id="statPositive">—</div></a>
|
|
252
|
+
<a class="stat-card" data-card-action="down" onclick="selectCard(this,'down')" href="/lessons?signal=down" style="cursor:pointer;text-decoration:none;color:inherit;display:block;" title="Click to view negative feedback → Lessons page"><div class="stat-label">👎 Negative</div><div class="stat-value red" id="statNegative">—</div></a>
|
|
253
253
|
<a class="stat-card" data-card-action="gates" onclick="selectCard(this,'gates');return false;" href="#" style="cursor:pointer;text-decoration:none;color:inherit;display:block;" title="Click to view active checks"><div class="stat-label">Active Gates</div><div class="stat-value cyan" id="statGates">—</div></a>
|
|
254
254
|
</div>
|
|
255
255
|
|
package/public/guide.html
CHANGED
|
@@ -246,6 +246,29 @@ npx thumbgate init --agent codex
|
|
|
246
246
|
npx thumbgate init --agent cursor
|
|
247
247
|
npx thumbgate init --agent gemini</code></pre>
|
|
248
248
|
|
|
249
|
+
<h3>Install scope: machine-wide vs per-project</h3>
|
|
250
|
+
<p>ThumbGate supports two install scopes. Pick once when you install — you can switch later by re-running with the other flag.</p>
|
|
251
|
+
<table>
|
|
252
|
+
<thead>
|
|
253
|
+
<tr><th>Scope</th><th>Command</th><th>Where lessons + dashboard live</th><th>When to use</th></tr>
|
|
254
|
+
</thead>
|
|
255
|
+
<tbody>
|
|
256
|
+
<tr>
|
|
257
|
+
<td><strong>Machine-wide</strong> (default)</td>
|
|
258
|
+
<td><code>npx thumbgate init</code></td>
|
|
259
|
+
<td><code>~/.claude/memory/feedback/</code> — <strong>one shared dashboard across every repo on the machine</strong></td>
|
|
260
|
+
<td>Solo developer. A lesson learned in <code>repo-A</code> automatically blocks the same mistake in <code>repo-B</code>.</td>
|
|
261
|
+
</tr>
|
|
262
|
+
<tr>
|
|
263
|
+
<td><strong>Per-project</strong></td>
|
|
264
|
+
<td><code>npx thumbgate init --project</code> (run inside the repo)</td>
|
|
265
|
+
<td><code><repo>/.claude/memory/feedback/</code> — <strong>separate dashboard per repo</strong></td>
|
|
266
|
+
<td>Client work, compliance, or multi-tenant. Lessons stay isolated; the audit trail belongs to the repo.</td>
|
|
267
|
+
</tr>
|
|
268
|
+
</tbody>
|
|
269
|
+
</table>
|
|
270
|
+
<p>Both scopes wire the same MCP server and PreToolUse / UserPromptSubmit / PostToolUse / SessionStart hooks — only the storage location differs. Machine-wide is the right default for most developers. Per-project lesson DBs live under each repo's <code>.claude/memory/feedback/</code> and <strong>must stay gitignored</strong>; ThumbGate's bundled <code>.gitignore</code> handles that.</p>
|
|
271
|
+
|
|
249
272
|
<h2>How It Works</h2>
|
|
250
273
|
|
|
251
274
|
<h3>1. You give feedback</h3>
|