thumbgate 0.9.10

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.
Files changed (364) hide show
  1. package/.claude-plugin/README.md +134 -0
  2. package/.claude-plugin/bundle/icon.png +0 -0
  3. package/.claude-plugin/bundle/icon.svg +18 -0
  4. package/.claude-plugin/bundle/server/index.js +24 -0
  5. package/.claude-plugin/marketplace.json +36 -0
  6. package/.claude-plugin/plugin.json +21 -0
  7. package/.well-known/mcp/server-card.json +231 -0
  8. package/LICENSE +21 -0
  9. package/README.md +375 -0
  10. package/adapters/README.md +9 -0
  11. package/adapters/amp/skills/thumbgate-feedback/SKILL.md +22 -0
  12. package/adapters/chatgpt/INSTALL.md +83 -0
  13. package/adapters/chatgpt/openapi.yaml +1281 -0
  14. package/adapters/claude/.mcp.json +14 -0
  15. package/adapters/codex/config.toml +9 -0
  16. package/adapters/gemini/function-declarations.json +224 -0
  17. package/adapters/mcp/server-stdio.js +788 -0
  18. package/adapters/opencode/opencode.json +15 -0
  19. package/bin/cli.js +1484 -0
  20. package/bin/memory.sh +64 -0
  21. package/bin/obsidian-sync.sh +20 -0
  22. package/bin/postinstall.js +37 -0
  23. package/config/build-metadata.json +4 -0
  24. package/config/e2e-critical-flows.json +45 -0
  25. package/config/gate-templates.json +77 -0
  26. package/config/gates/claim-verification.json +29 -0
  27. package/config/gates/computer-use.json +39 -0
  28. package/config/gates/default.json +117 -0
  29. package/config/github-about.json +25 -0
  30. package/config/mcp-allowlists.json +135 -0
  31. package/config/model-tiers.json +33 -0
  32. package/config/partner-routing.json +132 -0
  33. package/config/policy-bundles/constrained-v1.json +64 -0
  34. package/config/policy-bundles/default-v1.json +91 -0
  35. package/config/rubrics/default-v1.json +52 -0
  36. package/config/skill-packs/react-testing.json +23 -0
  37. package/config/skill-packs/stripe-integration/references/api-spec.json +1 -0
  38. package/config/skill-packs/stripe-integration/references/webhook-guide.md +3 -0
  39. package/config/skill-specs/pr-reviewer.json +9 -0
  40. package/config/skill-specs/release-status.json +9 -0
  41. package/config/skill-specs/ticket-triage.json +9 -0
  42. package/config/subagent-profiles.json +32 -0
  43. package/config/tessl-tiles.json +29 -0
  44. package/config/thumbgate-settings.managed.json +12 -0
  45. package/openapi/openapi.yaml +1281 -0
  46. package/package.json +283 -0
  47. package/plugins/amp-skill/INSTALL.md +52 -0
  48. package/plugins/amp-skill/SKILL.md +64 -0
  49. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +22 -0
  50. package/plugins/claude-codex-bridge/.mcp.json +12 -0
  51. package/plugins/claude-codex-bridge/INSTALL.md +43 -0
  52. package/plugins/claude-codex-bridge/README.md +46 -0
  53. package/plugins/claude-codex-bridge/scripts/codex-bridge.js +288 -0
  54. package/plugins/claude-codex-bridge/skills/adversarial-review/SKILL.md +24 -0
  55. package/plugins/claude-codex-bridge/skills/result/SKILL.md +22 -0
  56. package/plugins/claude-codex-bridge/skills/review/SKILL.md +28 -0
  57. package/plugins/claude-codex-bridge/skills/second-pass/SKILL.md +27 -0
  58. package/plugins/claude-codex-bridge/skills/setup/SKILL.md +21 -0
  59. package/plugins/claude-codex-bridge/skills/status/SKILL.md +19 -0
  60. package/plugins/claude-skill/INSTALL.md +55 -0
  61. package/plugins/claude-skill/SKILL.md +46 -0
  62. package/plugins/codex-profile/.codex-plugin/plugin.json +43 -0
  63. package/plugins/codex-profile/.mcp.json +12 -0
  64. package/plugins/codex-profile/AGENTS.md +20 -0
  65. package/plugins/codex-profile/INSTALL.md +66 -0
  66. package/plugins/codex-profile/README.md +37 -0
  67. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +23 -0
  68. package/plugins/cursor-marketplace/CHANGELOG.md +30 -0
  69. package/plugins/cursor-marketplace/LICENSE +21 -0
  70. package/plugins/cursor-marketplace/README.md +124 -0
  71. package/plugins/cursor-marketplace/agents/reliability-reviewer.md +31 -0
  72. package/plugins/cursor-marketplace/assets/logo-400x400.png +0 -0
  73. package/plugins/cursor-marketplace/commands/capture-feedback.md +33 -0
  74. package/plugins/cursor-marketplace/commands/check-gates.md +25 -0
  75. package/plugins/cursor-marketplace/commands/show-lessons.md +27 -0
  76. package/plugins/cursor-marketplace/hooks/hooks.json +10 -0
  77. package/plugins/cursor-marketplace/mcp.json +12 -0
  78. package/plugins/cursor-marketplace/rules/feedback-capture.mdc +34 -0
  79. package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +30 -0
  80. package/plugins/cursor-marketplace/rules/session-continuity.mdc +28 -0
  81. package/plugins/cursor-marketplace/scripts/gate-check.sh +11 -0
  82. package/plugins/cursor-marketplace/skills/capture-feedback/SKILL.md +47 -0
  83. package/plugins/cursor-marketplace/skills/prevention-rules/SKILL.md +31 -0
  84. package/plugins/cursor-marketplace/skills/recall-context/SKILL.md +30 -0
  85. package/plugins/cursor-marketplace/skills/search-lessons/SKILL.md +33 -0
  86. package/plugins/gemini-extension/INSTALL.md +92 -0
  87. package/plugins/gemini-extension/gemini_prompt.txt +14 -0
  88. package/plugins/gemini-extension/tool_contract.json +45 -0
  89. package/plugins/opencode-profile/INSTALL.md +57 -0
  90. package/public/assets/instagram-card.png +0 -0
  91. package/public/assets/tiktok-agent-memory.mp4 +0 -0
  92. package/public/blog.html +400 -0
  93. package/public/dashboard.html +1093 -0
  94. package/public/guide.html +317 -0
  95. package/public/index.html +1014 -0
  96. package/public/learn/agent-harness-pattern.html +180 -0
  97. package/public/learn/ai-agent-persistent-memory.html +202 -0
  98. package/public/learn/learn.css +45 -0
  99. package/public/learn/mcp-pre-action-gates-explained.html +172 -0
  100. package/public/learn/stop-ai-agent-force-push.html +134 -0
  101. package/public/learn/vibe-coding-safety-net.html +142 -0
  102. package/public/learn.html +213 -0
  103. package/public/lessons.html +650 -0
  104. package/public/vercel.json +8 -0
  105. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  106. package/scripts/a2ui-engine.js +73 -0
  107. package/scripts/access-anomaly-detector.js +12 -0
  108. package/scripts/adk-consolidator.js +266 -0
  109. package/scripts/agent-readiness.js +220 -0
  110. package/scripts/agent-security-hardening.js +227 -0
  111. package/scripts/agentic-data-pipeline.js +847 -0
  112. package/scripts/analytics-report.js +328 -0
  113. package/scripts/analytics-window.js +158 -0
  114. package/scripts/async-job-runner.js +1001 -0
  115. package/scripts/audit-trail.js +398 -0
  116. package/scripts/auto-promote-gates.js +299 -0
  117. package/scripts/auto-wire-hooks.js +312 -0
  118. package/scripts/autonomous-sales-agent.js +39 -0
  119. package/scripts/autoresearch-runner.js +216 -0
  120. package/scripts/background-agent-governance.js +237 -0
  121. package/scripts/behavioral-extraction.js +97 -0
  122. package/scripts/belief-update.js +84 -0
  123. package/scripts/billing.js +2438 -0
  124. package/scripts/bot-detector.js +50 -0
  125. package/scripts/budget-guard.js +173 -0
  126. package/scripts/build-claude-mcpb.js +189 -0
  127. package/scripts/build-metadata.js +97 -0
  128. package/scripts/check-congruence.js +322 -0
  129. package/scripts/cli-feedback.js +135 -0
  130. package/scripts/cli-telemetry.js +87 -0
  131. package/scripts/cloudflare-dynamic-sandbox.js +315 -0
  132. package/scripts/code-reasoning.js +350 -0
  133. package/scripts/codegraph-context.js +466 -0
  134. package/scripts/commercial-offer.js +56 -0
  135. package/scripts/computer-use-firewall.js +250 -0
  136. package/scripts/context-engine.js +694 -0
  137. package/scripts/contextfs.js +1287 -0
  138. package/scripts/conversation-context.js +119 -0
  139. package/scripts/creator-campaigns.js +239 -0
  140. package/scripts/daemon-manager.js +108 -0
  141. package/scripts/daily-digest.js +11 -0
  142. package/scripts/dashboard-render-spec.js +395 -0
  143. package/scripts/dashboard.js +1058 -0
  144. package/scripts/data-governance.js +173 -0
  145. package/scripts/delegation-runtime.js +900 -0
  146. package/scripts/deploy-gcp.sh +44 -0
  147. package/scripts/deploy-policy.js +263 -0
  148. package/scripts/disagreement-mining.js +315 -0
  149. package/scripts/dispatch-brief.js +159 -0
  150. package/scripts/distribution-surfaces.js +44 -0
  151. package/scripts/dpo-optimizer.js +209 -0
  152. package/scripts/ephemeral-agent-store.js +219 -0
  153. package/scripts/eval-harness.js +56 -0
  154. package/scripts/evolution-state.js +241 -0
  155. package/scripts/experiment-tracker.js +267 -0
  156. package/scripts/export-databricks-bundle.js +242 -0
  157. package/scripts/export-dpo-pairs.js +345 -0
  158. package/scripts/export-kto-pairs.js +310 -0
  159. package/scripts/export-training.js +448 -0
  160. package/scripts/failure-diagnostics.js +558 -0
  161. package/scripts/feedback-attribution.js +313 -0
  162. package/scripts/feedback-fallback.js +111 -0
  163. package/scripts/feedback-history-distiller.js +391 -0
  164. package/scripts/feedback-inbox-read.js +162 -0
  165. package/scripts/feedback-loop.js +1887 -0
  166. package/scripts/feedback-paths.js +145 -0
  167. package/scripts/feedback-quality.js +139 -0
  168. package/scripts/feedback-root-consolidator.js +238 -0
  169. package/scripts/feedback-schema.js +426 -0
  170. package/scripts/feedback-session.js +286 -0
  171. package/scripts/feedback-to-memory.js +185 -0
  172. package/scripts/feedback-to-rules.js +163 -0
  173. package/scripts/filesystem-search.js +404 -0
  174. package/scripts/funnel-analytics.js +35 -0
  175. package/scripts/gate-satisfy.js +42 -0
  176. package/scripts/gate-stats.js +116 -0
  177. package/scripts/gate-templates.js +70 -0
  178. package/scripts/gates-engine.js +816 -0
  179. package/scripts/generate-paperbanana-diagrams.sh +99 -0
  180. package/scripts/generate-pretool-hook.sh +40 -0
  181. package/scripts/github-about.js +350 -0
  182. package/scripts/github-outreach.js +65 -0
  183. package/scripts/gtm-revenue-loop.js +520 -0
  184. package/scripts/hallucination-detector.js +226 -0
  185. package/scripts/hf-papers.js +317 -0
  186. package/scripts/history-distiller.js +200 -0
  187. package/scripts/hook-auto-capture.sh +95 -0
  188. package/scripts/hook-stop-pr-thread-check.sh +68 -0
  189. package/scripts/hook-stop-self-score.sh +51 -0
  190. package/scripts/hook-stop-verify-deploy.sh +31 -0
  191. package/scripts/hook-thumbgate-cache-updater.js +48 -0
  192. package/scripts/hook-verify-before-done.sh +20 -0
  193. package/scripts/hosted-config.js +170 -0
  194. package/scripts/hybrid-feedback-context.js +676 -0
  195. package/scripts/install-mcp.js +159 -0
  196. package/scripts/intent-router.js +392 -0
  197. package/scripts/internal-agent-bootstrap.js +490 -0
  198. package/scripts/jsonl-watcher.js +155 -0
  199. package/scripts/lesson-db.js +613 -0
  200. package/scripts/lesson-inference.js +315 -0
  201. package/scripts/lesson-retrieval.js +95 -0
  202. package/scripts/lesson-rotation.js +137 -0
  203. package/scripts/lesson-search.js +644 -0
  204. package/scripts/lesson-synthesis.js +196 -0
  205. package/scripts/license.js +50 -0
  206. package/scripts/local-model-profile.js +383 -0
  207. package/scripts/markdown-escape.js +12 -0
  208. package/scripts/marketing-experiment.js +671 -0
  209. package/scripts/mcp-config.js +149 -0
  210. package/scripts/mcp-policy.js +99 -0
  211. package/scripts/memalign-recall.js +111 -0
  212. package/scripts/memory-firewall.js +222 -0
  213. package/scripts/memory-migration.js +296 -0
  214. package/scripts/meta-policy.js +194 -0
  215. package/scripts/metered-billing.js +16 -0
  216. package/scripts/model-tier-router.js +301 -0
  217. package/scripts/money-watcher.js +71 -0
  218. package/scripts/multi-hop-recall.js +240 -0
  219. package/scripts/natural-language-harness.js +330 -0
  220. package/scripts/obsidian-export.js +712 -0
  221. package/scripts/operational-dashboard.js +103 -0
  222. package/scripts/operational-summary.js +93 -0
  223. package/scripts/optimize-context.js +17 -0
  224. package/scripts/org-dashboard.js +201 -0
  225. package/scripts/partner-orchestration.js +146 -0
  226. package/scripts/per-step-scoring.js +165 -0
  227. package/scripts/perplexity-marketing.js +466 -0
  228. package/scripts/pii-scanner.js +153 -0
  229. package/scripts/plan-gate.js +154 -0
  230. package/scripts/post-everywhere.js +308 -0
  231. package/scripts/post-to-x-retry.sh +22 -0
  232. package/scripts/post-to-x.js +369 -0
  233. package/scripts/pr-manager.js +236 -0
  234. package/scripts/predictive-insights.js +356 -0
  235. package/scripts/principle-extractor.js +162 -0
  236. package/scripts/pro-features.js +40 -0
  237. package/scripts/pro-local-dashboard.js +174 -0
  238. package/scripts/problem-detail.js +53 -0
  239. package/scripts/product-feedback.js +134 -0
  240. package/scripts/profile-router.js +245 -0
  241. package/scripts/prompt-dlp.js +221 -0
  242. package/scripts/prompt-guard.js +83 -0
  243. package/scripts/prove-adapters.js +863 -0
  244. package/scripts/prove-attribution.js +365 -0
  245. package/scripts/prove-automation.js +653 -0
  246. package/scripts/prove-autoresearch.js +304 -0
  247. package/scripts/prove-claim-verification.js +277 -0
  248. package/scripts/prove-cloudflare-sandbox.js +163 -0
  249. package/scripts/prove-data-pipeline.js +410 -0
  250. package/scripts/prove-data-quality.js +227 -0
  251. package/scripts/prove-evolution.js +352 -0
  252. package/scripts/prove-harnesses.js +287 -0
  253. package/scripts/prove-intelligence.js +259 -0
  254. package/scripts/prove-lancedb.js +371 -0
  255. package/scripts/prove-local-intelligence.js +342 -0
  256. package/scripts/prove-loop-closure.js +263 -0
  257. package/scripts/prove-predictive-insights.js +357 -0
  258. package/scripts/prove-runtime.js +350 -0
  259. package/scripts/prove-seo-gsd.js +234 -0
  260. package/scripts/prove-settings.js +279 -0
  261. package/scripts/prove-subway-upgrades.js +277 -0
  262. package/scripts/prove-tessl.js +229 -0
  263. package/scripts/prove-training-export.js +327 -0
  264. package/scripts/prove-workflow-contract.js +116 -0
  265. package/scripts/prove-xmemory.js +332 -0
  266. package/scripts/publish-decision.js +133 -0
  267. package/scripts/pulse.js +80 -0
  268. package/scripts/rate-limiter.js +125 -0
  269. package/scripts/reddit-dm-outreach.js +182 -0
  270. package/scripts/reddit-monitor-cron.sh +26 -0
  271. package/scripts/reflector-agent.js +221 -0
  272. package/scripts/reminder-engine.js +132 -0
  273. package/scripts/revenue-status.js +472 -0
  274. package/scripts/risk-scorer.js +458 -0
  275. package/scripts/rlaif-self-audit.js +129 -0
  276. package/scripts/rubric-engine.js +230 -0
  277. package/scripts/schedule-manager.js +251 -0
  278. package/scripts/secret-scanner.js +414 -0
  279. package/scripts/self-heal.js +147 -0
  280. package/scripts/self-healing-check.js +188 -0
  281. package/scripts/semantic-layer.js +98 -0
  282. package/scripts/seo-gsd.js +1153 -0
  283. package/scripts/settings-hierarchy.js +214 -0
  284. package/scripts/shieldcortex-memory-firewall-runner.mjs +53 -0
  285. package/scripts/skill-exporter.js +262 -0
  286. package/scripts/skill-generator.js +446 -0
  287. package/scripts/skill-materializer.js +134 -0
  288. package/scripts/skill-packs.js +136 -0
  289. package/scripts/skill-proposer.js +99 -0
  290. package/scripts/skill-quality-tracker.js +284 -0
  291. package/scripts/slo-alert-engine.js +14 -0
  292. package/scripts/slow-loop.js +72 -0
  293. package/scripts/social-analytics/db/schema.sql +32 -0
  294. package/scripts/social-analytics/digest.js +256 -0
  295. package/scripts/social-analytics/generate-instagram-card.js +97 -0
  296. package/scripts/social-analytics/instagram-thumbgate-post.js +73 -0
  297. package/scripts/social-analytics/mcp-server.js +289 -0
  298. package/scripts/social-analytics/normalizer.js +580 -0
  299. package/scripts/social-analytics/notify.js +162 -0
  300. package/scripts/social-analytics/poll-all.js +107 -0
  301. package/scripts/social-analytics/pollers/github.js +195 -0
  302. package/scripts/social-analytics/pollers/instagram.js +253 -0
  303. package/scripts/social-analytics/pollers/linkedin.js +330 -0
  304. package/scripts/social-analytics/pollers/plausible.js +247 -0
  305. package/scripts/social-analytics/pollers/reddit.js +306 -0
  306. package/scripts/social-analytics/pollers/threads.js +233 -0
  307. package/scripts/social-analytics/pollers/tiktok.js +203 -0
  308. package/scripts/social-analytics/pollers/x.js +227 -0
  309. package/scripts/social-analytics/pollers/youtube.js +304 -0
  310. package/scripts/social-analytics/pollers/zernio.js +180 -0
  311. package/scripts/social-analytics/publish-instagram-thumbgate.js +85 -0
  312. package/scripts/social-analytics/publishers/devto.js +122 -0
  313. package/scripts/social-analytics/publishers/instagram.js +317 -0
  314. package/scripts/social-analytics/publishers/linkedin.js +294 -0
  315. package/scripts/social-analytics/publishers/reddit.js +390 -0
  316. package/scripts/social-analytics/publishers/threads.js +275 -0
  317. package/scripts/social-analytics/publishers/tiktok.js +217 -0
  318. package/scripts/social-analytics/publishers/x.js +259 -0
  319. package/scripts/social-analytics/publishers/youtube.js +223 -0
  320. package/scripts/social-analytics/publishers/zernio.js +209 -0
  321. package/scripts/social-analytics/run-digest.js +34 -0
  322. package/scripts/social-analytics/store.js +257 -0
  323. package/scripts/social-analytics/utm.js +143 -0
  324. package/scripts/social-pipeline.js +2628 -0
  325. package/scripts/social-quality-gate.js +18 -0
  326. package/scripts/social-reply-monitor.js +445 -0
  327. package/scripts/status-dashboard.js +155 -0
  328. package/scripts/statusline-lesson.js +16 -0
  329. package/scripts/statusline-tower.js +8 -0
  330. package/scripts/statusline.sh +116 -0
  331. package/scripts/stripe-live-status.js +115 -0
  332. package/scripts/subagent-profiles.js +79 -0
  333. package/scripts/sync-gh-secrets-from-env.sh +70 -0
  334. package/scripts/sync-github-about.js +52 -0
  335. package/scripts/sync-version.js +451 -0
  336. package/scripts/synthetic-dpo.js +234 -0
  337. package/scripts/telemetry-analytics.js +821 -0
  338. package/scripts/tessl-export.js +371 -0
  339. package/scripts/test-coverage.js +120 -0
  340. package/scripts/thompson-sampling.js +417 -0
  341. package/scripts/thumbgate-search.js +189 -0
  342. package/scripts/tool-kpi-tracker.js +12 -0
  343. package/scripts/tool-registry.js +811 -0
  344. package/scripts/train_from_feedback.py +910 -0
  345. package/scripts/user-profile.js +78 -0
  346. package/scripts/validate-feedback.js +580 -0
  347. package/scripts/validate-workflow-contract.js +287 -0
  348. package/scripts/vector-store.js +198 -0
  349. package/scripts/verification-loop.js +291 -0
  350. package/scripts/verify-obsidian-setup.sh +269 -0
  351. package/scripts/verify-run.js +269 -0
  352. package/scripts/webhook-delivery.js +62 -0
  353. package/scripts/weekly-auto-post.js +124 -0
  354. package/scripts/workflow-runs.js +154 -0
  355. package/scripts/workflow-sprint-intake.js +475 -0
  356. package/scripts/workspace-evolver.js +374 -0
  357. package/scripts/x-autonomous-marketing.js +139 -0
  358. package/scripts/xmemory-lite.js +405 -0
  359. package/skills/agent-memory/SKILL.md +97 -0
  360. package/skills/solve-architecture-autonomy/SKILL.md +17 -0
  361. package/skills/solve-architecture-autonomy/tool.js +33 -0
  362. package/skills/thumbgate/SKILL.md +114 -0
  363. package/skills/thumbgate-feedback/SKILL.md +49 -0
  364. package/src/api/server.js +4208 -0
@@ -0,0 +1,134 @@
1
+ # ThumbGate for Claude Desktop
2
+
3
+ `thumbgate` gives Claude Desktop a local-first **Reliability Gateway** and **Pre-Action Gates** for workflow hardening.
4
+
5
+ The extension path is useful when a team wants Claude Desktop to keep one workflow sharper over time without adding another orchestration layer. The MCP server captures explicit feedback, recalls past failures, distills lessons from the recent conversation window when a thumbs signal is vague, promotes reusable prevention rules, and produces proof-backed rollout artifacts.
6
+
7
+ ## Features
8
+
9
+ - Workflow hardening for Claude-first engineering and ops workflows
10
+ - Pre-Action Gates that block repeated mistakes before tool use
11
+ - History-aware lesson distillation from the last ~10 messages and failed tool calls
12
+ - Reliability memory and recall across long sessions
13
+ - Bounded context packs, provenance, and diagnostics
14
+ - DPO export and analytics bundle generation after runtime reliability lands
15
+ - Submission-ready MCPB packaging for Claude Desktop review and local installs
16
+
17
+ ## Installation
18
+
19
+ ### Local install today
20
+
21
+ Use the portable npm launcher:
22
+
23
+ ```bash
24
+ claude mcp add thumbgate -- npx -y thumbgate serve
25
+ ```
26
+
27
+ Or use the project bootstrap:
28
+
29
+ ```bash
30
+ npx thumbgate init
31
+ ```
32
+
33
+ ### Direct bundle download
34
+
35
+ Download the latest packaged Claude Desktop bundle from GitHub Releases:
36
+
37
+ https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb
38
+
39
+ That bundle is built from the same `.claude-plugin` metadata in this repo and is meant for people who want a ready-to-install artifact instead of building locally.
40
+
41
+ ### Anthropic directory path
42
+
43
+ If Anthropic approves the listing, install from Claude Desktop via `Settings -> Extensions`.
44
+
45
+ Directory inclusion is an external review process. Do not claim listing or approval before it is real.
46
+
47
+ ### MCPB bundle build
48
+
49
+ Maintainers can build the local Claude Desktop bundle directly from this repo:
50
+
51
+ ```bash
52
+ npm run build:claude-mcpb
53
+ ```
54
+
55
+ That command stages a clean bundle, installs production dependencies, packs a `.mcpb`, and validates it with Anthropic's official MCPB CLI.
56
+
57
+ ## Configuration
58
+
59
+ The local OSS path needs no API key.
60
+
61
+ Optional hosted path:
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "thumbgate": {
67
+ "command": "npx",
68
+ "args": ["-y", "thumbgate", "serve"],
69
+ "env": {
70
+ "THUMBGATE_BASE_URL": "https://thumbgate-production.up.railway.app",
71
+ "THUMBGATE_API_KEY": "tg_YOUR_KEY_HERE"
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## Examples
79
+
80
+ ### Example 1: PR review hardening
81
+
82
+ **User prompt:** "Review this PR and tell me if any blocker would stop merge."
83
+ **Expected behavior:**
84
+ - Claude Desktop inspects the workflow context instead of relying on one-shot memory
85
+ - The extension recalls prior blocker patterns when they exist
86
+ - The Pre-Action Gates can promote the missed blocker into a reusable gate
87
+
88
+ ### Example 2: Code modernization workflow
89
+
90
+ **User prompt:** "Help me modernize this service, but keep the migration constraints and verification steps across sessions."
91
+ **Expected behavior:**
92
+ - Claude Desktop recalls prior migration notes and architecture constraints
93
+ - The extension keeps the context pack bounded instead of replaying full history
94
+ - Verification steps stay attached to the workflow across sessions
95
+
96
+ ### Example 3: Internal ops or release workflow
97
+
98
+ **User prompt:** "Run the release checklist, capture what went wrong, and stop the same mistake next time."
99
+ **Expected behavior:**
100
+ - Claude Desktop records explicit operator feedback and proof artifacts
101
+ - The extension keeps the workflow history local-first and searchable
102
+ - Repeated release failures can be turned into prevention rules before the next run
103
+
104
+ ### Example 4: Bare thumbs-down with automatic lesson proposal
105
+
106
+ **User prompt:** "👎 That was wrong."
107
+ **Expected behavior:**
108
+ - Claude Desktop can pass the last ~10 messages and the failed tool call into `capture_feedback`
109
+ - ThumbGate distills a proposed `whatWentWrong` and `whatToChange` from recent history
110
+ - A linked follow-up note can refine the same feedback record with `relatedFeedbackId`
111
+
112
+ ## Privacy Policy
113
+
114
+ For complete privacy information, see: https://thumbgate-production.up.railway.app/privacy
115
+
116
+ ### Data Collection
117
+
118
+ - Local installs store workflow memory, feedback entries, and proof artifacts in local project files.
119
+ - Optional hosted mode sends feedback and memory data to the configured `THUMBGATE_BASE_URL`.
120
+ - Optional CLI telemetry is best-effort and can be disabled with `THUMBGATE_NO_TELEMETRY=1`.
121
+ - We do not sell customer data; retention and deletion details live in the public privacy policy.
122
+
123
+ ## Support
124
+
125
+ - GitHub Issues: https://github.com/IgorGanapolsky/ThumbGate/issues
126
+ - Security Advisories: https://github.com/IgorGanapolsky/ThumbGate/security
127
+ - Verification evidence: https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md
128
+ - Product Hunt: https://www.producthunt.com/products/thumbgate
129
+
130
+ ## Notes For Submission
131
+
132
+ - Local Claude metadata lives in `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`.
133
+ - The MCPB bundle is built with `npm run build:claude-mcpb`.
134
+ - Anthropic directory requirements and the internal publish checklist live in `docs/CLAUDE_DESKTOP_EXTENSION.md`.
Binary file
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
2
+ <title>ThumbGate</title>
3
+ <desc>Gateway icon for the Claude Desktop workflow hardening extension.</desc>
4
+ <defs>
5
+ <linearGradient id="bg" x1="0%" x2="100%" y1="0%" y2="100%">
6
+ <stop offset="0%" stop-color="#111827"/>
7
+ <stop offset="100%" stop-color="#1f2937"/>
8
+ </linearGradient>
9
+ <linearGradient id="gate" x1="0%" x2="100%" y1="0%" y2="100%">
10
+ <stop offset="0%" stop-color="#f97316"/>
11
+ <stop offset="100%" stop-color="#fb7185"/>
12
+ </linearGradient>
13
+ </defs>
14
+ <rect width="512" height="512" rx="96" fill="url(#bg)"/>
15
+ <path fill="url(#gate)" d="M152 128h208c17.7 0 32 14.3 32 32v64h-64v-32H184v128h144v-32h64v64c0 17.7-14.3 32-32 32H152c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32Z"/>
16
+ <path fill="#fff4ed" d="M248 180h96v48h-48v56h48v48h-96z"/>
17
+ <circle cx="196" cy="256" r="26" fill="#fef3c7"/>
18
+ </svg>
@@ -0,0 +1,24 @@
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
+ });
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "thumbgate",
3
+ "version": "0.9.10",
4
+ "plugins": [
5
+ {
6
+ "name": "thumbgate",
7
+ "description": "Pre-action gates that block AI coding agents from repeating known mistakes. Captures feedback, auto-promotes failures into prevention rules, and enforces them via PreToolUse hooks.",
8
+ "type": "mcp",
9
+ "source": {
10
+ "type": "npm",
11
+ "package": "thumbgate",
12
+ "command": "npx",
13
+ "args": [
14
+ "-y",
15
+ "thumbgate",
16
+ "serve"
17
+ ]
18
+ },
19
+ "metadata": {
20
+ "author": "Igor Ganapolsky",
21
+ "homepage": "https://thumbgate-production.up.railway.app",
22
+ "license": "MIT",
23
+ "keywords": [
24
+ "claude-desktop",
25
+ "desktop-extension",
26
+ "pre-action-gates",
27
+ "ai-agent-safety",
28
+ "mcp",
29
+ "memory",
30
+ "workflow-hardening"
31
+ ],
32
+ "category": "developer-tools"
33
+ }
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "thumbgate",
3
+ "description": "Pre-action gates that block AI coding agents from repeating known mistakes. Captures feedback, auto-promotes failures into prevention rules, and enforces them via PreToolUse hooks.",
4
+ "version": "0.9.10",
5
+ "author": {
6
+ "name": "Igor Ganapolsky"
7
+ },
8
+ "homepage": "https://thumbgate-production.up.railway.app",
9
+ "repository": "https://github.com/IgorGanapolsky/ThumbGate",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "claude-desktop",
13
+ "desktop-extension",
14
+ "mcp",
15
+ "pre-action-gates",
16
+ "ai-agent-safety",
17
+ "memory",
18
+ "guardrails",
19
+ "workflow-hardening"
20
+ ]
21
+ }
@@ -0,0 +1,231 @@
1
+ {
2
+ "name": "thumbgate",
3
+ "version": "0.9.10",
4
+ "description": "ThumbGate — 👍👎 feedback that teaches your AI agent. Thumbs down a mistake, it never happens again.",
5
+ "homepage": "https://github.com/IgorGanapolsky/thumbgate",
6
+ "transport": "stdio",
7
+ "configSchema": {
8
+ "type": "object",
9
+ "properties": {
10
+ "mcpProfile": {
11
+ "type": "string",
12
+ "description": "MCP profile to use (default, readonly, locked)",
13
+ "default": "default"
14
+ }
15
+ },
16
+ "required": []
17
+ },
18
+ "tools": [
19
+ {
20
+ "name": "capture_feedback",
21
+ "description": "Capture thumbs up/down feedback and promote actionable memory",
22
+ "inputSchema": {
23
+ "type": "object",
24
+ "required": [
25
+ "signal",
26
+ "context"
27
+ ],
28
+ "properties": {
29
+ "signal": {
30
+ "type": "string",
31
+ "enum": [
32
+ "up",
33
+ "down"
34
+ ]
35
+ },
36
+ "context": {
37
+ "type": "string"
38
+ },
39
+ "whatWentWrong": {
40
+ "type": "string"
41
+ },
42
+ "whatToChange": {
43
+ "type": "string"
44
+ },
45
+ "whatWorked": {
46
+ "type": "string"
47
+ },
48
+ "tags": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "string"
52
+ }
53
+ },
54
+ "skill": {
55
+ "type": "string"
56
+ }
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "name": "feedback_summary",
62
+ "description": "Get summary of recent feedback",
63
+ "inputSchema": {
64
+ "type": "object",
65
+ "properties": {
66
+ "recent": {
67
+ "type": "number"
68
+ }
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "name": "feedback_stats",
74
+ "description": "Get feedback stats and recommendations",
75
+ "inputSchema": {
76
+ "type": "object",
77
+ "properties": {}
78
+ }
79
+ },
80
+ {
81
+ "name": "list_intents",
82
+ "description": "List available intent plans and whether each requires human approval in the active profile",
83
+ "inputSchema": {
84
+ "type": "object",
85
+ "properties": {
86
+ "mcpProfile": {
87
+ "type": "string"
88
+ },
89
+ "bundleId": {
90
+ "type": "string"
91
+ }
92
+ }
93
+ }
94
+ },
95
+ {
96
+ "name": "plan_intent",
97
+ "description": "Generate an intent execution plan with policy checkpoints",
98
+ "inputSchema": {
99
+ "type": "object",
100
+ "required": [
101
+ "intentId"
102
+ ],
103
+ "properties": {
104
+ "intentId": {
105
+ "type": "string"
106
+ },
107
+ "context": {
108
+ "type": "string"
109
+ },
110
+ "mcpProfile": {
111
+ "type": "string"
112
+ },
113
+ "bundleId": {
114
+ "type": "string"
115
+ },
116
+ "approved": {
117
+ "type": "boolean"
118
+ }
119
+ }
120
+ }
121
+ },
122
+ {
123
+ "name": "prevention_rules",
124
+ "description": "Generate prevention rules from repeated mistake patterns",
125
+ "inputSchema": {
126
+ "type": "object",
127
+ "properties": {
128
+ "minOccurrences": {
129
+ "type": "number"
130
+ },
131
+ "outputPath": {
132
+ "type": "string"
133
+ }
134
+ }
135
+ }
136
+ },
137
+ {
138
+ "name": "export_dpo_pairs",
139
+ "description": "Export DPO preference pairs from local memory log",
140
+ "inputSchema": {
141
+ "type": "object",
142
+ "properties": {
143
+ "memoryLogPath": {
144
+ "type": "string"
145
+ }
146
+ }
147
+ }
148
+ },
149
+ {
150
+ "name": "construct_context_pack",
151
+ "description": "Construct a bounded context pack from contextfs",
152
+ "inputSchema": {
153
+ "type": "object",
154
+ "properties": {
155
+ "query": {
156
+ "type": "string"
157
+ },
158
+ "maxItems": {
159
+ "type": "number"
160
+ },
161
+ "maxChars": {
162
+ "type": "number"
163
+ },
164
+ "namespaces": {
165
+ "type": "array",
166
+ "items": {
167
+ "type": "string"
168
+ }
169
+ }
170
+ }
171
+ }
172
+ },
173
+ {
174
+ "name": "evaluate_context_pack",
175
+ "description": "Record evaluation outcome for a context pack",
176
+ "inputSchema": {
177
+ "type": "object",
178
+ "required": [
179
+ "packId",
180
+ "outcome"
181
+ ],
182
+ "properties": {
183
+ "packId": {
184
+ "type": "string"
185
+ },
186
+ "outcome": {
187
+ "type": "string"
188
+ },
189
+ "signal": {
190
+ "type": "string"
191
+ },
192
+ "notes": {
193
+ "type": "string"
194
+ }
195
+ }
196
+ }
197
+ },
198
+ {
199
+ "name": "context_provenance",
200
+ "description": "Get recent context/provenance events",
201
+ "inputSchema": {
202
+ "type": "object",
203
+ "properties": {
204
+ "limit": {
205
+ "type": "number"
206
+ }
207
+ }
208
+ }
209
+ },
210
+ {
211
+ "name": "recall",
212
+ "description": "Recall relevant past feedback, memories, and prevention rules for the current task",
213
+ "inputSchema": {
214
+ "type": "object",
215
+ "required": [
216
+ "query"
217
+ ],
218
+ "properties": {
219
+ "query": {
220
+ "type": "string",
221
+ "description": "Describe the current task or context to find relevant past feedback"
222
+ },
223
+ "limit": {
224
+ "type": "number",
225
+ "description": "Max memories to return (default 5)"
226
+ }
227
+ }
228
+ }
229
+ }
230
+ ]
231
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Igor Ganapolsky
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.