thumbgate 1.3.0 → 1.4.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.
Files changed (156) hide show
  1. package/.claude-plugin/README.md +25 -0
  2. package/.claude-plugin/marketplace.json +32 -13
  3. package/.claude-plugin/plugin.json +15 -2
  4. package/.well-known/llms.txt +60 -0
  5. package/.well-known/mcp/server-card.json +1 -1
  6. package/README.md +242 -126
  7. package/adapters/README.md +1 -1
  8. package/adapters/chatgpt/INSTALL.md +59 -4
  9. package/adapters/chatgpt/openapi.yaml +168 -0
  10. package/adapters/claude/.mcp.json +2 -2
  11. package/adapters/codex/config.toml +2 -2
  12. package/adapters/mcp/server-stdio.js +84 -1
  13. package/adapters/opencode/opencode.json +1 -1
  14. package/bin/cli.js +204 -13
  15. package/bin/postinstall.js +8 -2
  16. package/config/budget.json +18 -0
  17. package/config/gates/code-edit.json +61 -0
  18. package/config/gates/db-write.json +61 -0
  19. package/config/gates/default.json +154 -3
  20. package/config/gates/deploy.json +61 -0
  21. package/config/github-about.json +2 -1
  22. package/config/merge-quality-checks.json +23 -0
  23. package/openapi/openapi.yaml +168 -0
  24. package/package.json +47 -11
  25. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
  26. package/plugins/claude-codex-bridge/.mcp.json +1 -1
  27. package/plugins/claude-codex-bridge/scripts/codex-bridge.js +1 -3
  28. package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
  29. package/plugins/codex-profile/.mcp.json +1 -1
  30. package/plugins/codex-profile/INSTALL.md +27 -4
  31. package/plugins/codex-profile/README.md +33 -9
  32. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
  33. package/plugins/opencode-profile/INSTALL.md +1 -1
  34. package/public/blog.html +73 -0
  35. package/public/compare/mem0.html +189 -0
  36. package/public/compare/speclock.html +180 -0
  37. package/public/compare.html +10 -2
  38. package/public/guide.html +2 -2
  39. package/public/guides/claude-code-prevent-repeated-mistakes.html +161 -0
  40. package/public/guides/codex-cli-guardrails.html +158 -0
  41. package/public/guides/cursor-prevent-repeated-mistakes.html +161 -0
  42. package/public/guides/pre-action-gates.html +162 -0
  43. package/public/guides/stop-repeated-ai-agent-mistakes.html +159 -0
  44. package/public/index.html +172 -65
  45. package/public/lessons.html +33 -24
  46. package/public/llm-context.md +140 -0
  47. package/public/pro.html +24 -22
  48. package/scripts/access-anomaly-detector.js +1 -1
  49. package/scripts/adk-consolidator.js +1 -5
  50. package/scripts/agent-security-hardening.js +4 -6
  51. package/scripts/agentic-data-pipeline.js +1 -3
  52. package/scripts/async-job-runner.js +1 -5
  53. package/scripts/audit-trail.js +1 -5
  54. package/scripts/auto-promote-gates.js +5 -3
  55. package/scripts/background-agent-governance.js +2 -10
  56. package/scripts/billing-setup.js +109 -0
  57. package/scripts/billing.js +2 -16
  58. package/scripts/budget-enforcer.js +173 -0
  59. package/scripts/build-claude-mcpb.js +71 -5
  60. package/scripts/build-codex-plugin.js +152 -0
  61. package/scripts/check-congruence.js +132 -14
  62. package/scripts/commercial-offer.js +5 -7
  63. package/scripts/content-engine/linkedin-content-generator.js +154 -0
  64. package/scripts/content-engine/output/linkedin-memento-validation.md +17 -0
  65. package/scripts/content-engine/output/linkedin-posts-2026-04-09.md +175 -0
  66. package/scripts/content-engine/reddit-thread-finder.js +154 -0
  67. package/scripts/context-engine.js +21 -6
  68. package/scripts/contextfs.js +1 -21
  69. package/scripts/dashboard.js +20 -0
  70. package/scripts/decision-journal.js +341 -0
  71. package/scripts/delegation-runtime.js +1 -5
  72. package/scripts/distribution-surfaces.js +54 -0
  73. package/scripts/document-intake.js +927 -0
  74. package/scripts/ephemeral-agent-store.js +1 -8
  75. package/scripts/evolution-state.js +1 -5
  76. package/scripts/experiment-tracker.js +1 -5
  77. package/scripts/export-databricks-bundle.js +1 -5
  78. package/scripts/export-hf-dataset.js +1 -5
  79. package/scripts/export-training.js +1 -5
  80. package/scripts/feedback-attribution.js +1 -16
  81. package/scripts/feedback-history-distiller.js +1 -16
  82. package/scripts/feedback-loop.js +1 -5
  83. package/scripts/feedback-root-consolidator.js +2 -21
  84. package/scripts/feedback-session.js +49 -0
  85. package/scripts/feedback-to-rules.js +215 -36
  86. package/scripts/filesystem-search.js +1 -9
  87. package/scripts/fs-utils.js +104 -0
  88. package/scripts/gates-engine.js +200 -11
  89. package/scripts/github-about.js +32 -8
  90. package/scripts/gtm-revenue-loop.js +1 -5
  91. package/scripts/harness-selector.js +148 -0
  92. package/scripts/hosted-config.js +2 -0
  93. package/scripts/hosted-job-launcher.js +1 -5
  94. package/scripts/hybrid-feedback-context.js +33 -49
  95. package/scripts/intervention-policy.js +58 -1
  96. package/scripts/lesson-db.js +3 -18
  97. package/scripts/lesson-inference.js +194 -16
  98. package/scripts/lesson-retrieval.js +60 -24
  99. package/scripts/llm-client.js +59 -0
  100. package/scripts/managed-lesson-agent.js +183 -0
  101. package/scripts/marketing-experiment.js +8 -22
  102. package/scripts/meta-agent-loop.js +624 -0
  103. package/scripts/metered-billing.js +1 -1
  104. package/scripts/money-watcher.js +1 -4
  105. package/scripts/obsidian-export.js +1 -5
  106. package/scripts/operational-integrity.js +15 -3
  107. package/scripts/operational-summary.js +41 -5
  108. package/scripts/org-dashboard.js +6 -1
  109. package/scripts/per-step-scoring.js +2 -4
  110. package/scripts/pr-manager.js +201 -19
  111. package/scripts/pro-features.js +3 -2
  112. package/scripts/prompt-dlp.js +3 -3
  113. package/scripts/prove-adapters.js +1 -5
  114. package/scripts/prove-attribution.js +1 -5
  115. package/scripts/prove-automation.js +1 -3
  116. package/scripts/prove-cloudflare-sandbox.js +1 -3
  117. package/scripts/prove-data-pipeline.js +1 -3
  118. package/scripts/prove-intelligence.js +1 -3
  119. package/scripts/prove-lancedb.js +1 -5
  120. package/scripts/prove-local-intelligence.js +1 -3
  121. package/scripts/prove-packaged-runtime.js +75 -9
  122. package/scripts/prove-predictive-insights.js +1 -3
  123. package/scripts/prove-training-export.js +1 -3
  124. package/scripts/prove-workflow-contract.js +1 -5
  125. package/scripts/ralph-loop.js +376 -0
  126. package/scripts/ralph-mode-ci.js +331 -0
  127. package/scripts/rate-limiter.js +3 -1
  128. package/scripts/reddit-dm-outreach.js +14 -4
  129. package/scripts/rotate-stripe-webhook-secret.js +314 -0
  130. package/scripts/schedule-manager.js +3 -5
  131. package/scripts/security-scanner.js +448 -0
  132. package/scripts/self-distill-agent.js +579 -0
  133. package/scripts/semantic-dedup.js +115 -0
  134. package/scripts/skill-exporter.js +1 -3
  135. package/scripts/skill-generator.js +1 -5
  136. package/scripts/social-analytics/engagement-audit.js +1 -18
  137. package/scripts/social-analytics/pollers/linkedin.js +26 -16
  138. package/scripts/social-analytics/publishers/linkedin.js +1 -1
  139. package/scripts/social-analytics/publishers/zernio.js +51 -0
  140. package/scripts/social-pipeline.js +1 -3
  141. package/scripts/social-post-hourly.js +47 -4
  142. package/scripts/statusline-links.js +6 -5
  143. package/scripts/statusline.sh +29 -153
  144. package/scripts/sync-branch-protection.js +340 -0
  145. package/scripts/tessl-export.js +1 -3
  146. package/scripts/thumbgate-search.js +32 -1
  147. package/scripts/tool-kpi-tracker.js +1 -1
  148. package/scripts/tool-registry.js +106 -2
  149. package/scripts/vector-store.js +1 -5
  150. package/scripts/weekly-auto-post.js +1 -1
  151. package/scripts/workflow-sentinel.js +91 -0
  152. package/skills/thumbgate/SKILL.md +1 -1
  153. package/src/api/server.js +296 -7
  154. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  155. package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
  156. /package/scripts/social-analytics/db/{social-analytics.db-wal → analytics.sqlite} +0 -0
package/public/index.html CHANGED
@@ -19,12 +19,12 @@
19
19
  <meta charset="UTF-8">
20
20
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
21
21
  __GOOGLE_SITE_VERIFICATION_META__
22
- <title>ThumbGate — Self-improving AI coding agents that learn from every mistake</title>
23
- <meta name="description" content="Pre-action gates, a learned intervention policy, and workflow governance for self-improving AI coding agents. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Team adds shared lessons and org visibility.">
24
- <meta property="og:title" content="ThumbGate — Self-improving AI coding agents that learn from every mistake">
25
- <meta property="og:description" content="Pre-action gates, a learned intervention policy, and workflow governance for self-improving AI coding agents. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Team adds shared lessons and org visibility.">
22
+ <title>ThumbGate — Your AI agent just made that mistake again. One thumbs-down. It never happens again.</title>
23
+ <meta name="description" content="CLI-first agent governance for teams shipping AI-generated changes. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Pre-action gates, workflow governance, shared lessons and org visibility, release confidence, and isolated execution guidance turn vibe coding mistakes into shared enforcement and proof-ready rollout.">
24
+ <meta property="og:title" content="ThumbGate — Your AI agent just made that mistake again. One thumbs-down. It never happens again.">
25
+ <meta property="og:description" content="CLI-first agent governance for teams shipping AI-generated changes. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Pre-action gates, workflow governance, shared lessons and org visibility, release confidence, and isolated execution guidance turn vibe coding mistakes into shared enforcement and proof-ready rollout.">
26
26
  <meta property="og:type" content="website">
27
- <meta name="keywords" content="ThumbGate, thumbgate, self-improving AI agents, AI agent self-improvement, AI agent learning, AI agent memory, pre-action gates, human-in-the-loop, MCP server, Claude Code, Cursor, Codex, Gemini, Amp, OpenCode, vibe coding safety, SpecLock alternative, Mem0 alternative, AI coding agent feedback loop, PreToolUse hooks, prevention rules, feedback enforcement, context engineering">
27
+ <meta name="keywords" content="ThumbGate, thumbgate, agent governance, AI coding workflow governance, workflow hardening sprint, pre-action gates, CLI-first agent safety, Claude Code, Cursor, Codex, Gemini, Amp, OpenCode, approval policies, audit trail, release confidence, Docker Sandboxes, feedback enforcement, context engineering, AI authenticity, prevent AI slop, human-led AI, AI agent standards enforcement, brand authenticity AI">
28
28
 
29
29
  <!-- Privacy-friendly analytics by Plausible -->
30
30
  <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
@@ -44,14 +44,14 @@ __GA_BOOTSTRAP__
44
44
  "@type": "SoftwareApplication",
45
45
  "name": "ThumbGate",
46
46
  "alternateName": "thumbgate",
47
- "description": "Make your AI coding agent self-improving. Every mistake becomes a prevention rule and trains a local intervention policy. Every correction strengthens future recall, verification, and enforcement. ThumbGate adds workflow governance and isolated execution guidance so high-risk runs do not have to happen directly on the host.",
47
+ "description": "ThumbGate is a CLI-first agent governance control plane for AI coding workflows. Every repeated failure can become shared enforcement, every risky rollout can carry approval and audit boundaries, and high-risk local autonomy can be routed toward isolated execution instead of running directly on the host.",
48
48
  "applicationCategory": "DeveloperApplication",
49
49
  "operatingSystem": "Cross-platform, Node.js >=18.18.0",
50
50
  "license": "https://opensource.org/licenses/MIT",
51
51
  "url": "https://github.com/IgorGanapolsky/ThumbGate",
52
52
  "downloadUrl": "https://www.npmjs.com/package/thumbgate",
53
53
  "installUrl": "https://www.npmjs.com/package/thumbgate",
54
- "dateModified": "2026-04-03",
54
+ "dateModified": "2026-04-09",
55
55
  "creator": {
56
56
  "@type": "Person",
57
57
  "name": "Igor Ganapolsky",
@@ -71,7 +71,8 @@ __GA_BOOTSTRAP__
71
71
  "Prompt-Level DLP — scans tool call inputs before execution",
72
72
  "Per-Step Scoring — every gate decision becomes a DPO/KTO training signal",
73
73
  "HuggingFace Export — share PII-redacted agent traces as open training datasets",
74
- "Unified Context — one-call context assembly with session, lessons, guards, and code-graph"
74
+ "Unified Context — one-call context assembly with session, lessons, guards, and code-graph",
75
+ "AI Authenticity Enforcement — every gate reflects your team's actual standards, not generic AI patterns"
75
76
  ],
76
77
  "offers": [
77
78
  {
@@ -81,12 +82,20 @@ __GA_BOOTSTRAP__
81
82
  "priceCurrency": "USD",
82
83
  "description": "Local enforcement — captures, recalls, gates, and PreToolUse hook blocking for solo devs"
83
84
  },
85
+ {
86
+ "@type": "Offer",
87
+ "name": "Team",
88
+ "price": "99",
89
+ "priceCurrency": "USD",
90
+ "description": "Intake-led team rollout with a workflow hardening sprint, shared enforcement memory, org dashboard visibility, approval boundaries, release confidence, Docker Sandboxes guidance for risky local autonomy, and pilot support for teams shipping AI-generated changes",
91
+ "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake"
92
+ },
84
93
  {
85
94
  "@type": "Offer",
86
95
  "name": "Pro Monthly",
87
96
  "price": "19",
88
97
  "priceCurrency": "USD",
89
- "description": "Personal local dashboard, DPO export, advanced data exports, and founder-license support for individual operators",
98
+ "description": "Self-serve side lane for solo operators who want a personal local dashboard, DPO export, and proof-ready exports",
90
99
  "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F"
91
100
  },
92
101
  {
@@ -96,14 +105,6 @@ __GA_BOOTSTRAP__
96
105
  "priceCurrency": "USD",
97
106
  "description": "Annual Pro for individual operators who want the personal local dashboard and proof-ready exports",
98
107
  "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2F"
99
- },
100
- {
101
- "@type": "Offer",
102
- "name": "Team",
103
- "price": "12",
104
- "priceCurrency": "USD",
105
- "description": "Intake-led team rollout with a workflow hardening sprint, shared enforcement memory, org dashboard visibility, Docker Sandboxes guidance for risky local autonomy, and pilot support for teams shipping AI-generated changes",
106
- "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake"
107
108
  }
108
109
  ]
109
110
  }
@@ -120,7 +121,7 @@ __GA_BOOTSTRAP__
120
121
  "@type": "HowToStep",
121
122
  "position": 1,
122
123
  "name": "Install ThumbGate",
123
- "text": "Run: npx thumbgate init --agent claude-code. This adds the MCP server to your agent. No API key needed everything runs locally."
124
+ "text": "Run: npx thumbgate init --agent claude-code. This installs the local CLI gateway and wires the agent's MCP transport automatically. No API key needed and the core path stays local."
124
125
  },
125
126
  {
126
127
  "@type": "HowToStep",
@@ -199,6 +200,14 @@ __GA_BOOTSTRAP__
199
200
  "text": "Prompt rules are suggestions agents can ignore. Pre-Action Gates are enforcement — they block the action before execution via PreToolUse hooks. Gates are auto-generated from feedback and use Thompson Sampling to adapt."
200
201
  }
201
202
  },
203
+ {
204
+ "@type": "Question",
205
+ "name": "How does ThumbGate prevent AI slop and protect brand authenticity?",
206
+ "acceptedAnswer": {
207
+ "@type": "Answer",
208
+ "text": "AI slop happens when agents act without human judgment as a hard gate — generating repetitive, generic outputs that erode trust and dilute your brand. ThumbGate inserts human thumbs-up/down between AI intent and execution. Every thumbs-down becomes a prevention rule that blocks the bad pattern permanently. Every thumbs-up reinforces what 'good' looks like for your specific context. Your agent's outputs reflect your actual standards, not generic AI patterns. This is authenticity enforcement at the tool-call level."
209
+ }
210
+ },
202
211
  {
203
212
  "@type": "Question",
204
213
  "name": "How is ThumbGate different from SpecLock?",
@@ -416,6 +425,14 @@ __GA_BOOTSTRAP__
416
425
  .proof-bar .dot { display: none; }
417
426
  }
418
427
  </style>
428
+ <!-- PostHog Analytics -->
429
+ <script>
430
+ !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=u._i.push([i,s,a]),u._i.push([i,s,a]),u.init=function(t,e,i){g(u,"capture"),u.push(["init",t,e,i])},u.capture=function(t,e,i,o){u.push(["capture",t,e,i,o])},u.identify=function(t,e,i){u.push(["identify",t,e,i])},u.alias=function(t,e){u.push(["alias",t,e])},u.people={set:function(t,e,i){u.push(["people.set",t,e,i])}},u.featureFlags={},u.onFeatureFlags=function(t){u.push(["onFeatureFlags",t])},u.toString=function(t){var e="posthog";return a&&a!==e&&(e+="."+a),t||(e+=" (stub)"),e},u.people.set_once=function(t,e,i){u.push(["people.set_once",t,e,i])},u.group=function(t,e,i){u.push(["group",t,e,i])},u.setPersonPropertiesForFlags=function(t){u.push(["setPersonPropertiesForFlags",t])},u.resetGroupPropertiesForFlags=function(t){u.push(["resetGroupPropertiesForFlags",t])},u.setGroupPropertiesForFlags=function(t){u.push(["setGroupPropertiesForFlags",t])},u.reloadFeatureFlags=function(){u.push(["reloadFeatureFlags"])},u.capture=function(t,e,i,o){u.push(["capture",t,e,i,o])},u.identify=function(t,e,i){u.push(["identify",t,e,i])},0===t.indexOf(".")){var s=t.substring(1);u=e[s]=[],u._i=[]}e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
431
+ posthog.init('__POSTHOG_API_KEY__', {
432
+ api_host: 'https://us.i.posthog.com',
433
+ person_profiles: 'identified_only',
434
+ });
435
+ </script>
419
436
  </head>
420
437
  <body>
421
438
 
@@ -434,7 +451,7 @@ __GA_BOOTSTRAP__
434
451
  <a href="/learn">Learn</a>
435
452
  <a href="/compare">Compare</a>
436
453
  <a href="/dashboard">Dashboard Demo</a>
437
- <a href="#workflow-sprint-intake" class="nav-cta">Start Sprint</a>
454
+ <a href="#workflow-sprint-intake" onclick="posthog.capture('workflow_sprint')" class="nav-cta">Start Sprint</a>
438
455
  </div>
439
456
  </div>
440
457
  </nav>
@@ -443,33 +460,55 @@ __GA_BOOTSTRAP__
443
460
  <section class="hero">
444
461
  <div class="container">
445
462
  <div class="hero-thumbs">👍👎</div>
446
- <div class="hero-badge">● Workflow Hardening Sprint for teams shipping AI-generated changes</div>
447
- <h1>Make one AI workflow<br>safe enough to ship team-wide.</h1>
463
+ <div class="hero-badge">● Your AI agent just made that mistake again</div>
464
+ <h1>Your AI agent just made<br>that mistake again.<br><span style="color:var(--cyan)">One thumbs-down.<br>It never happens again.</span></h1>
465
+ <p style="font-size:18px;color:var(--text-muted);max-width:560px;margin:0 auto 20px;line-height:1.6;">Session 1: your agent force-pushes, skips tests, or runs a DROP on prod.<br>You give it a 👎.<br><strong style="color:var(--text)">Session 2: gate fires. Action blocked before execution.</strong></p>
448
466
  <div class="hero-signals">
449
467
  <div class="signal-pill signal-down">👎 Repeated failure becomes enforcement before the next run</div>
450
- <div class="signal-pill signal-up">👍 Safe pattern reinforced across the shared workflow</div>
451
- </div>
452
- <p class="hero-persona">For consultancies, platform teams, and AI product teams with one workflow owner, one repeated failure, and one buyer who needs proof before a wider rollout.</p>
453
- <p><strong>Best first paid motion:</strong> start with one repo, one workflow, and one repeat failure. ThumbGate turns the blocker into enforcement, routes risky runs toward isolated execution, and gives the buyer a proof-ready story around shared memory, approval boundaries, release confidence, and auditability.</p>
454
- <div class="hero-actions">
455
- <a href="#workflow-sprint-intake" class="btn-team">Start Workflow Hardening Sprint</a>
456
- <a href="/pro?utm_source=website&utm_medium=homepage_hero&utm_campaign=pro_page" class="btn-pro-page">See Pro for solo operators</a>
457
- <a href="/dashboard?utm_source=website&utm_medium=homepage_hero&utm_campaign=demo" class="btn-demo-link">Open dashboard demo</a>
468
+ <div class="signal-pill signal-up">✅ Safe pattern reinforced across the shared workflow</div>
469
+ <div class="signal-pill">🔁 Works with Claude Code · Cursor · Codex · Gemini · Amp</div>
458
470
  </div>
459
- <p class="hero-paid-note"><strong>Start free as an individual.</strong> Pro stays the self-serve lane for personal dashboard and DPO export. Team pricing anchors at <strong>$12/seat/mo with a 3-seat minimum</strong>, but the team path starts intake-first with the Workflow Hardening Sprint so buyers see proof before a wider rollout.</p>
460
- <div class="hero-install" onclick="copyInstall(this)" title="Click to copy">
461
- <span class="prompt">$</span>
462
- <span class="cmd">npx thumbgate init</span>
463
- <span class="copy-hint">click to copy</span>
471
+ <p class="hero-persona" style="display:none">For consultancies, platform teams, and AI product teams with one workflow owner, one repeated failure, and one buyer who needs proof before a wider rollout.</p>
472
+ <div class="hero-actions" style="margin-top:32px;">
473
+ <div class="hero-install" onclick="copyInstall(this)" title="Click to copy" style="margin-bottom:0;">
474
+ <span class="prompt">$</span>
475
+ <span class="cmd">npx thumbgate init</span>
476
+ <span class="copy-hint">click to copy</span>
477
+ </div>
478
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener" class="btn-free" style="display:inline-flex;align-items:center;gap:6px;padding:11px 20px;border-radius:999px;">⭐ Star on GitHub</a>
479
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/adapters/chatgpt/INSTALL.md" class="btn-install-link" target="_blank" rel="noopener" style="font-size:13px;color:var(--text-muted);text-decoration:none;padding:8px 14px;">Use in ChatGPT →</a>
480
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" class="btn-install-link" target="_blank" rel="noopener" style="font-size:13px;color:var(--text-muted);text-decoration:none;padding:8px 14px;">Install Codex plugin →</a>
464
481
  </div>
482
+ <p style="font-size:13px;color:var(--text-muted);margin:16px auto 0;max-width:480px;">Free to install. No cloud account needed. Works in 30 seconds.</p>
483
+ <p style="font-size:13px;color:var(--text-muted);margin:8px auto 28px;max-width:480px;">Team plan is intake-first — one workflow, one repeat failure, proof before wider rollout. Stop vibe coding mistakes from repeating. <a href="#pricing" style="color:var(--cyan);text-decoration:none;">See pricing →</a></p>
465
484
  <div class="proof-bar">
466
- <a href="https://www.npmjs.com/package/thumbgate" target="_blank" rel="noopener">1,000+ npm downloads →</a>
485
+ <a href="/guide" rel="noopener">CLI-first setup guide →</a>
486
+ <span class="dot"></span>
487
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" target="_blank" rel="noopener">Claude plugin bundle →</a>
488
+ <span class="dot"></span>
489
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/CLAUDE_DESKTOP_EXTENSION.md" target="_blank" rel="noopener">Claude submission packet →</a>
490
+ <span class="dot"></span>
491
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/.claude-plugin/README.md" target="_blank" rel="noopener">Claude marketplace install →</a>
492
+ <span class="dot"></span>
493
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/adapters/chatgpt/INSTALL.md" target="_blank" rel="noopener">ChatGPT GPT Actions →</a>
494
+ <span class="dot"></span>
495
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip" target="_blank" rel="noopener">Codex plugin download →</a>
467
496
  <span class="dot"></span>
468
- <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">1,500+ tests passing →</a>
497
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence →</a>
498
+ <span class="dot"></span>
499
+ <a href="https://arxiv.org/abs/2603.18743" target="_blank" rel="noopener">Research-backed (Memento-Skills, arXiv 2603.18743) →</a>
500
+ <span class="dot"></span>
501
+ <a href="https://blog.langchain.dev/continual-learning-for-ai-agents/" target="_blank" rel="noopener">Three-layer continual learning (LangChain) →</a>
502
+ <span class="dot"></span>
503
+ <a href="https://cloud.google.com/blog/topics/healthcare-life-sciences/ensuring-safety-and-quality-in-healthcare-qa-agents" target="_blank" rel="noopener">Google Cloud safety framework architecture →</a>
469
504
  <span class="dot"></span>
470
505
  <a href="https://www.producthunt.com/products/thumbgate" target="_blank" rel="noopener">Product Hunt →</a>
471
506
  <span class="dot"></span>
472
- <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/LICENSE" target="_blank" rel="noopener">MIT licensed</a>
507
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">Proof-backed CI →</a>
508
+ <span class="dot"></span>
509
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/RELEASE_CONFIDENCE.md" target="_blank" rel="noopener">Release confidence →</a>
510
+ <span class="dot"></span>
511
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">CI and proof lanes →</a>
473
512
  <span class="dot"></span>
474
513
  <a href="#compatibility">Claude Code · Cursor · Codex · Gemini · Amp · OpenCode</a>
475
514
  </div>
@@ -486,9 +525,19 @@ __GA_BOOTSTRAP__
486
525
  <p>Claude Code, Claw-code, Codex, Gemini CLI, Amp, and OpenCode all use the same gateway and memory model. Any MCP-compatible agent gets pre-action gates, feedback memory, and enforcement out of the box.</p>
487
526
  <div class="card-arrow">View setup guide →</div>
488
527
  </a>
528
+ <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/plugins/codex-profile/INSTALL.md" target="_blank" rel="noopener">
529
+ <h3>🧩 Codex plugin</h3>
530
+ <p>Codex ships with a published standalone ThumbGate plugin bundle plus a repo-local plugin profile. Download the zip, extract it, and install without wiring MCP by hand.</p>
531
+ <div class="card-arrow">Get the Codex plugin →</div>
532
+ </a>
533
+ <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/adapters/chatgpt/INSTALL.md" target="_blank" rel="noopener">
534
+ <h3>💬 ChatGPT GPT Actions</h3>
535
+ <p>Regular users reply with 👍/👎 or "thumbs up/down" on ChatGPT answers, save the lesson, prevent repeated bad answers, and reinforce the answer patterns that worked.</p>
536
+ <div class="card-arrow">Use in ChatGPT →</div>
537
+ </a>
489
538
  <a class="compat-card" href="/guides/claude-desktop">
490
539
  <h3>🧩 Claude Desktop plugin</h3>
491
- <p>One command install. No build step, no cloud account. Grab the <code>.mcpb</code> bundle or run <code>npx thumbgate init --claude-desktop</code>.</p>
540
+ <p>Install the published <code>.mcpb</code> bundle today, point buyers at the submission packet, and let Claude Code users add the repo marketplace while the official directory review is still pending.</p>
492
541
  <div class="card-arrow">Get the Claude plugin →</div>
493
542
  </a>
494
543
  <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/plugins" target="_blank" rel="noopener">
@@ -498,7 +547,7 @@ __GA_BOOTSTRAP__
498
547
  </a>
499
548
  <a class="compat-card seo-card" href="https://github.com/IgorGanapolsky/ThumbGate/tree/main/.claude/skills/thumbgate" target="_blank" rel="noopener">
500
549
  <h3>⚡ Claude Code Skill</h3>
501
- <p>Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on "gate", "feedback", "block mistake". Free skill with Pro upgrade path built in.</p>
550
+ <p>Type <code>/thumbgate</code> in any Claude Code session. Auto-triggers on "gate", "feedback", "block mistake". Free skill on top of the same local gateway teams later harden into a shared workflow.</p>
502
551
  <div class="card-arrow">View skill on GitHub →</div>
503
552
  </a>
504
553
  </div>
@@ -520,8 +569,8 @@ __GA_BOOTSTRAP__
520
569
  <p>Every block explains why: which pattern matched, what evidence triggered it, and whether the rule came from your own corrections.</p>
521
570
  </div>
522
571
  <div class="agent-card">
523
- <h3>📊 Org Dashboard (Pro)</h3>
524
- <p>See which agents are creating review churn, which gates are saving time, and where rollout risk is still concentrated.</p>
572
+ <h3>📊 Org Dashboard (Team)</h3>
573
+ <p>See which agents are creating review churn, which gates are saving time, and where rollout risk is still concentrated across the shared workflow.</p>
525
574
  </div>
526
575
  <div class="agent-card">
527
576
  <h3>🧱 Isolated Execution Lanes</h3>
@@ -599,7 +648,7 @@ __GA_BOOTSTRAP__
599
648
  <!-- HOW IT WORKS -->
600
649
  <section class="how-it-works" id="how-it-works">
601
650
  <div class="container">
602
- <div class="section-label">New in v1.3.0</div>
651
+ <div class="section-label">New in v1.4.0</div>
603
652
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
604
653
  <div class="steps">
605
654
  <div class="step">
@@ -682,17 +731,73 @@ __GA_BOOTSTRAP__
682
731
  </div>
683
732
  </section>
684
733
 
734
+ <section id="install" style="padding: 60px 40px; max-width: 900px; margin: 0 auto;">
735
+ <h2 style="font-size: 2em; text-align: center; margin-bottom: 40px;">Install for Your Agent</h2>
736
+
737
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 24px;">
738
+ <div style="background: #161b22; border-radius: 12px; padding: 24px; border: 1px solid #30363d;">
739
+ <h3>Claude Code</h3>
740
+ <code style="display: block; background: #0d1117; padding: 12px; border-radius: 8px; color: #58a6ff; margin: 12px 0;">npx thumbgate init --agent claude-code</code>
741
+ <p style="color: #8b949e; font-size: 14px;">Wires PreToolUse hooks automatically</p>
742
+ </div>
743
+
744
+ <div style="background: #161b22; border-radius: 12px; padding: 24px; border: 1px solid #30363d;">
745
+ <h3>Cursor</h3>
746
+ <code style="display: block; background: #0d1117; padding: 12px; border-radius: 8px; color: #58a6ff; margin: 12px 0;">npx thumbgate init --agent cursor</code>
747
+ <p style="color: #8b949e; font-size: 14px;">4 skills: feedback, rules, search, recall</p>
748
+ </div>
749
+
750
+ <div style="background: #161b22; border-radius: 12px; padding: 24px; border: 1px solid #30363d;">
751
+ <h3>Codex</h3>
752
+ <code style="display: block; background: #0d1117; padding: 12px; border-radius: 8px; color: #58a6ff; margin: 12px 0;">npx thumbgate init --agent codex</code>
753
+ <p style="color: #8b949e; font-size: 14px;">6 skills including adversarial review</p>
754
+ </div>
755
+
756
+ <div style="background: #161b22; border-radius: 12px; padding: 24px; border: 1px solid #30363d;">
757
+ <h3>Gemini CLI</h3>
758
+ <code style="display: block; background: #0d1117; padding: 12px; border-radius: 8px; color: #58a6ff; margin: 12px 0;">npx thumbgate init --agent gemini</code>
759
+ <p style="color: #8b949e; font-size: 14px;">Gemini CLI integration</p>
760
+ </div>
761
+
762
+ <div style="background: #161b22; border-radius: 12px; padding: 24px; border: 1px solid #30363d;">
763
+ <h3>Amp</h3>
764
+ <code style="display: block; background: #0d1117; padding: 12px; border-radius: 8px; color: #58a6ff; margin: 12px 0;">npx thumbgate init --agent amp</code>
765
+ <p style="color: #8b949e; font-size: 14px;">Amp agent integration</p>
766
+ </div>
767
+
768
+ <div style="background: #161b22; border-radius: 12px; padding: 24px; border: 1px solid #30363d;">
769
+ <h3>Any MCP Client</h3>
770
+ <code style="display: block; background: #0d1117; padding: 12px; border-radius: 8px; color: #58a6ff; margin: 12px 0;">npx thumbgate serve</code>
771
+ <p style="color: #8b949e; font-size: 14px;">MCP stdio server for any compatible client</p>
772
+ </div>
773
+ </div>
774
+
775
+ <div style="text-align: center; margin-top: 40px;">
776
+ <h3>Claude Desktop</h3>
777
+ <p style="color: #8b949e;">Add to your <code>claude_desktop_config.json</code>:</p>
778
+ <pre style="background: #0d1117; padding: 16px; border-radius: 8px; color: #58a6ff; text-align: left; display: inline-block; margin: 12px auto;">{
779
+ "mcpServers": {
780
+ "thumbgate": {
781
+ "command": "npx",
782
+ "args": ["--yes", "--package", "thumbgate", "thumbgate", "serve"]
783
+ }
784
+ }
785
+ }</pre>
786
+ <p style="color: #8b949e; max-width: 760px; margin: 16px auto 0;">Official directory review is separate. Claude Code users can install immediately with <code>/plugin marketplace add IgorGanapolsky/ThumbGate</code> and <code>/plugin install thumbgate@thumbgate-marketplace</code>.</p>
787
+ </div>
788
+ </section>
789
+
685
790
  <!-- PRICING -->
686
791
  <section class="pricing" id="pricing">
687
792
  <div class="container">
688
793
  <div class="section-label">Pricing</div>
689
- <h2 class="section-title">Start free. Use the workflow hardening sprint to prove team value. Keep Pro as the self-serve lane for individual operators.</h2>
794
+ <h2 class="section-title">Install free. Buy with the workflow hardening sprint. Keep Pro as the solo side lane.</h2>
690
795
  <div class="pricing-grid">
691
796
  <div class="price-card">
692
797
  <div class="tier">Free</div>
693
798
  <div class="price">$0</div>
694
- <div class="price-sub">Forever free · Local enforcement for one developer</div>
695
- <p style="font-size:13px;color:#aaa;margin-bottom:16px;">For solo developers who want to stop the same agent mistake from showing up twice.</p>
799
+ <div class="price-sub">Forever free · CLI-first local enforcement for one developer</div>
800
+ <p style="font-size:13px;color:#aaa;margin-bottom:16px;">For solo developers who want to stop the same agent mistake from showing up twice and prove value before a team rollout conversation exists.</p>
696
801
  <ul>
697
802
  <li>3 feedback captures/day · 5 lesson searches/day · unlimited recall</li>
698
803
  <li>5 auto-promoted gates plus the core safety policy</li>
@@ -705,12 +810,12 @@ __GA_BOOTSTRAP__
705
810
  <a href="https://www.npmjs.com/package/thumbgate" target="_blank" rel="noopener" class="btn-free">Install Free</a>
706
811
  </div>
707
812
  <div class="price-card pro" data-price-dollars="__PRO_PRICE_DOLLARS__">
708
- <div class="tier">Pro</div>
813
+ <div class="tier">Solo Pro</div>
709
814
  <div class="price">$19<span style="font-size:16px;color:var(--text-dim)">/mo</span></div>
710
815
  <div class="price-sub">or $149/yr (save 35%) · Personal dashboard + exports</div>
711
- <p style="font-size:13px;color:var(--cyan);margin-bottom:16px;font-weight:500;">For individual operators who need review-ready evidence, faster debugging, and a dashboard of exactly what got blocked.</p>
816
+ <p style="font-size:13px;color:var(--cyan);margin-bottom:16px;font-weight:500;">For an individual operator who wants a personal dashboard and proof-ready exports without starting the team rollout motion.</p>
712
817
  <div class="pro-upgrade-triggers" style="font-size:12px;color:#aaa;margin-bottom:12px;">
713
- <strong style="color:#fff;">Go Pro when:</strong> you want review-ready evidence, need your own dashboard, or keep correcting the same failure modes.
818
+ <strong style="color:#fff;">Choose Pro when:</strong> you want review-ready evidence, need your own dashboard, or are still operating solo.
714
819
  </div>
715
820
  <div class="dashboard-preview" style="margin-bottom:16px;border:1px solid #333;border-radius:8px;overflow:hidden;">
716
821
  <div style="background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);padding:16px;text-align:center;">
@@ -731,7 +836,7 @@ __GA_BOOTSTRAP__
731
836
  <li><strong>HuggingFace dataset export</strong> — share PII-redacted agent traces as open training datasets (<code>npm run export:hf</code>)</li>
732
837
  <li><strong>Model Hardening Advisor</strong> — get recommendations on when and how to fine-tune your model to natively avoid recurring failures</li>
733
838
  <li>Personal local dashboard — every Pro user gets a localhost dashboard without extra cloud setup</li>
734
- <li>Founder-license support — we help you wire the riskiest flows first: migrations, force-pushes, deploys, and CI</li>
839
+ <li>Review-ready workflow support — we help you wire the riskiest flows first: migrations, force-pushes, deploys, and CI</li>
735
840
  </ul>
736
841
  <a href="/checkout/pro?utm_source=website&utm_medium=homepage_pricing&utm_campaign=pro_pack&cta_id=homepage_pricing_trial&cta_placement=pricing&plan_id=pro&landing_path=%2F" class="btn-pro" style="display:none" id="pro-checkout-link">Start Free Trial — then $19/mo</a>
737
842
  <div class="trial-badge" style="background:var(--cyan);color:#000;display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:700;margin-bottom:12px;">7-DAY FREE TRIAL</div>
@@ -739,14 +844,13 @@ __GA_BOOTSTRAP__
739
844
  <input type="email" id="pro-email" data-buyer-email placeholder="Your email to start trial" style="width:100%;padding:10px 14px;border:1px solid #333;border-radius:6px;background:#1a1a2e;color:#fff;font-size:14px;">
740
845
  </div>
741
846
  <button class="btn-pro" id="pro-trial-btn" onclick="handleProTrial()" style="width:100%;cursor:pointer;border:none;">Start 7-Day Free Trial</button>
742
- <p style="font-size:11px;color:#666;margin-top:8px;">Founder pricing <a href="https://buy.stripe.com/aFa4gz1M84r419v7mb3sI05" style="color:var(--cyan);text-decoration:underline;">preserved $49 one-time founder link</a> for early buyers who still want that path.</p>
743
- <p style="font-size:12px;color:var(--cyan);margin-top:6px;">Mem0 Pro: $249/mo. ThumbGate Pro: $19/mo.</p>
847
+ <p style="font-size:11px;color:#666;margin-top:8px;">Solo Pro stays available for operators who want a personal dashboard and export-ready evidence without the team rollout motion.</p>
744
848
  </div>
745
849
  <div class="price-card team">
746
850
  <div class="tier">Team</div>
747
- <div class="price">$12<span style="font-size:16px;color:var(--text-dim)">/seat/mo</span></div>
851
+ <div class="price">$99<span style="font-size:16px;color:var(--text-dim)">/seat/mo</span></div>
748
852
  <div class="price-sub">3-seat minimum · intake-led rollout for the first workflow</div>
749
- <p style="font-size:13px;color:var(--green);margin-bottom:16px;font-weight:500;">For teams shipping AI-generated changes across shared repos who need one correction to protect every reviewer and runtime. The first team step is a workflow hardening sprint, not a blind org-wide rollout.</p>
853
+ <p style="font-size:13px;color:var(--green);margin-bottom:16px;font-weight:500;">For teams shipping AI-generated changes across shared repos who need one correction to protect every reviewer and runtime. This is the primary buying motion.</p>
750
854
  <div class="pro-upgrade-triggers" style="font-size:12px;color:#aaa;margin-bottom:12px;">
751
855
  <strong style="color:#fff;">Best first paid motion:</strong> one workflow, one owner, one proof review. Qualify the blocker first, then expand into seats.
752
856
  </div>
@@ -762,7 +866,7 @@ __GA_BOOTSTRAP__
762
866
  <li>Proof pack — attach verification evidence and rollout diagnostics so the buyer does not have to trust a demo</li>
763
867
  </ul>
764
868
  <a href="#workflow-sprint-intake" class="btn-team">Start Workflow Hardening Sprint</a>
765
- <p style="font-size:11px;color:#666;margin-top:8px;">Team pricing anchors at $12/seat/mo with a 3-seat minimum after qualification. The first step is a 30-minute intake around one real blocker.</p>
869
+ <p style="font-size:11px;color:#666;margin-top:8px;">Team pricing anchors at $99/seat/mo with a 3-seat minimum after qualification. The first step is a 30-minute intake around one real blocker.</p>
766
870
  </div>
767
871
  </div>
768
872
  </div>
@@ -811,7 +915,7 @@ __GA_BOOTSTRAP__
811
915
  </div>
812
916
  <div class="faq-item">
813
917
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What AI agents and editors does this work with?</div>
814
- <div class="faq-a">ThumbGate works with Claude Code, Cursor, Codex, Gemini CLI, Amp, OpenCode, and any other MCP-compatible agent. Cursor ships with a plugin bundle in this repo. Codex ships with a repo-local app plugin profile. VS Code works when you run an MCP-compatible agent inside it, but this repo does not ship a standalone VS Code extension today.</div>
918
+ <div class="faq-a">ThumbGate works with Claude Code, Cursor, Codex, Gemini CLI, Amp, OpenCode, and any other MCP-compatible agent. Cursor ships with a plugin bundle in this repo. Codex now ships both a standalone plugin bundle and a repo-local app plugin profile, and the published download is linked directly from this page. VS Code works when you run an MCP-compatible agent inside it, but this repo does not ship a standalone VS Code extension today.</div>
815
919
  </div>
816
920
  <div class="faq-item">
817
921
  <button class="faq-q" type="button" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How do we keep high-risk autonomous runs off the host?</button>
@@ -823,7 +927,7 @@ __GA_BOOTSTRAP__
823
927
  </div>
824
928
  <div class="faq-item">
825
929
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Do I need a cloud account?</div>
826
- <div class="faq-a">No. Free keeps local enforcement on your machine with 3 daily feedback captures, 5 lesson searches, unlimited recall, gates, and hook blocking. No cloud account is required. Pro adds a personal local dashboard plus DPO export. Team is the hosted rollout lane when your group wants a shared lesson database, hosted review views, org dashboard visibility, and team-wide proof.</div>
930
+ <div class="faq-a">No. Free keeps local enforcement on your machine with 3 daily feedback captures, 5 lesson searches, unlimited recall, gates, and hook blocking. No cloud account is required. The business starts when a team wants shared rules, approval boundaries, hosted review views, org dashboard visibility, and proof that survives handoffs. Pro is the optional solo side lane for a personal dashboard and DPO export.</div>
827
931
  </div>
828
932
  <div class="faq-item">
829
933
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What if my thumbs-down is vague?</div>
@@ -835,7 +939,7 @@ __GA_BOOTSTRAP__
835
939
  </div>
836
940
  <div class="faq-item">
837
941
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What does Pro cost?</div>
838
- <div class="faq-a">Pro is $19/mo or $149/yr (save 35%) for individual operators. Team pricing anchors at $12/seat/mo with a 3-seat minimum, and team buyers start with the workflow sprint intake instead of a blind org-wide rollout.</div>
942
+ <div class="faq-a">Pro is $19/mo or $149/yr (save 35%) for individual operators. Team pricing anchors at $99/seat/mo with a 3-seat minimum, and team buyers start with the workflow sprint intake instead of a blind org-wide rollout.</div>
839
943
  </div>
840
944
  </div>
841
945
  </div>
@@ -845,11 +949,11 @@ __GA_BOOTSTRAP__
845
949
  <section class="compatibility" id="newsletter" style="padding: 48px 0;">
846
950
  <div class="container" style="text-align: center;">
847
951
  <div class="section-label">Buyer Follow-Up</div>
848
- <h2 class="section-title" style="margin-bottom: 16px;">Not ready to buy today? Keep the sprint brief, demo, and checkout path one click away.</h2>
849
- <p style="color: var(--text-dim); margin-bottom: 24px; max-width: 560px; margin-left: auto; margin-right: auto;">Save your work email for launch updates, new gate patterns, the workflow sprint brief, and the paid demo path. We also keep it on this device so the Pro checkout can open prefilled instead of making you type it again.</p>
952
+ <h2 class="section-title" style="margin-bottom: 16px;">Not ready to buy today? Keep the sprint brief, demo, and discovery notes one click away.</h2>
953
+ <p style="color: var(--text-dim); margin-bottom: 24px; max-width: 560px; margin-left: auto; margin-right: auto;">Save your work email for the workflow sprint brief, new gate patterns, and buyer-facing proof updates. If you later choose the solo Pro checkout, we keep that path prefilled on this device too.</p>
850
954
  <form action="/api/newsletter" method="POST" data-newsletter-form data-page="homepage" data-intent="buyer_follow_up" style="display: flex; gap: 8px; max-width: 480px; margin: 0 auto; flex-wrap: wrap; justify-content: center;">
851
955
  <input type="email" name="email" data-buyer-email placeholder="you@company.com" required style="flex: 1; min-width: 220px; padding: 12px 16px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-raised); color: var(--text); font-size: 15px;">
852
- <button type="submit" style="padding: 12px 24px; background: var(--cyan); color: #000; border: none; border-radius: 8px; font-weight: 600; font-size: 15px; cursor: pointer;">Get updates + keep checkout ready</button>
956
+ <button type="submit" style="padding: 12px 24px; background: var(--cyan); color: #000; border: none; border-radius: 8px; font-weight: 600; font-size: 15px; cursor: pointer;">Get sprint brief + updates</button>
853
957
  </form>
854
958
  <p data-newsletter-status style="min-height:20px;font-size:12px;color:var(--text-dim);margin-top:10px;" aria-live="polite"></p>
855
959
  </div>
@@ -859,10 +963,10 @@ __GA_BOOTSTRAP__
859
963
  <section class="final-cta">
860
964
  <div class="container">
861
965
  <h2>Start with one workflow you actually need to defend.</h2>
862
- <p>Use the workflow hardening sprint for team rollout, or choose Pro if you are the solo operator who needs a personal dashboard and review-ready exports.</p>
966
+ <p>Use the workflow hardening sprint for team rollout. Install the free CLI if you are still evaluating alone. Pro remains the solo side lane for a personal dashboard and review-ready exports.</p>
863
967
  <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;">
864
968
  <a href="#workflow-sprint-intake" class="btn-team" style="background:var(--green);">Start Workflow Hardening Sprint</a>
865
- <a href="/checkout/pro?utm_source=website&utm_medium=homepage_final&utm_campaign=pro_pack&cta_id=homepage_final_trial&cta_placement=final&plan_id=pro&landing_path=%2F" class="btn-pro">Try Pro free for 7 days → $19/mo</a>
969
+ <a href="/guide?utm_source=website&utm_medium=homepage_final&utm_campaign=install_free" class="btn-pro btn-install-link">Install Free CLI</a>
866
970
  </div>
867
971
  </div>
868
972
  </section>
@@ -873,11 +977,12 @@ __GA_BOOTSTRAP__
873
977
  <div class="footer-links">
874
978
  <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
875
979
  <a href="https://www.npmjs.com/package/thumbgate" target="_blank" rel="noopener">npm</a>
980
+ <a href="https://www.producthunt.com/products/thumbgate" target="_blank" rel="noopener">Product Hunt</a>
876
981
  <a href="https://x.com/IgorGanapolsky" target="_blank" rel="noopener">X / Twitter</a>
877
982
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
878
983
  <a href="/blog">Blog</a>
879
984
  </div>
880
- <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.3.0</span>
985
+ <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.4.0</span>
881
986
  </div>
882
987
  </footer>
883
988
 
@@ -892,6 +997,7 @@ function initializeBuyerIntentForms() {
892
997
  }
893
998
 
894
999
  function resolvePricingClickTier(el) {
1000
+ if (el.classList.contains('btn-install-link')) return 'install';
895
1001
  if (el.classList.contains('btn-pro')) return 'pro';
896
1002
  if (el.classList.contains('btn-pro-page')) return 'pro_page';
897
1003
  if (el.classList.contains('btn-team')) return 'team';
@@ -935,7 +1041,8 @@ function copyInstall(el) {
935
1041
 
936
1042
  /* CTA clicks */
937
1043
  trackClick('.btn-pro', 'checkout_start', { tier: 'pro', price: 19, billing: 'monthly' });
938
- trackClick('.btn-pro-page', 'pro_page_click', { tier: 'pro', source: 'hero' });
1044
+ trackClick('.btn-pro-page:not(.btn-install-link)', 'pro_page_click', { tier: 'pro', source: 'hero' });
1045
+ trackClick('.btn-install-link', 'install_guide_click', { tier: 'free', source: 'homepage_cta' });
939
1046
  trackClick('.btn-team', 'workflow_sprint_intake_click', { tier: 'team', offer: 'workflow_hardening_sprint' });
940
1047
  trackClick('.btn-free', 'install_click', { tier: 'free' });
941
1048
  trackClick('.btn-demo-link', 'demo_click', { source: 'homepage' });
@@ -943,7 +1050,7 @@ function copyInstall(el) {
943
1050
 
944
1051
  /* Pricing CTA conversion tracking — fires on every Get Started / Pro / Team button click
945
1052
  with section context so we can distinguish pricing section vs final CTA section clicks */
946
- document.querySelectorAll('.btn-pro, .btn-pro-page, .btn-team, .btn-free, .btn-demo-link, .nav-cta').forEach(function(el) {
1053
+ document.querySelectorAll('.btn-pro, .btn-pro-page, .btn-install-link, .btn-team, .btn-free, .btn-demo-link, .nav-cta').forEach(function(el) {
947
1054
  el.addEventListener('click', function() {
948
1055
  var section = el.closest('section');
949
1056
  var sectionId = section ? (section.id || section.className.split(' ')[0] || 'unknown') : 'unknown';