thumbgate 1.37.2 → 1.37.3

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 (40) hide show
  1. package/.agents/skills/article-syndication-pipeline/SKILL.md +37 -0
  2. package/.agents/skills/ci-gha-buildkite-patterns-not-clone/SKILL.md +72 -0
  3. package/.agents/skills/comet-session-logger/SKILL.md +59 -0
  4. package/.agents/skills/datadog-llm-obs-compare-not-clone/SKILL.md +75 -0
  5. package/.agents/skills/deeppattern-discipline-honesty-not-clone/SKILL.md +73 -0
  6. package/.agents/skills/thumbgate-board-loop/SKILL.md +72 -0
  7. package/.agents/skills/thumbgate-daily-discoveries/SKILL.md +57 -0
  8. package/.agents/skills/typesafe-typed-questions-not-clone/SKILL.md +7 -3
  9. package/.claude-plugin/plugin.json +1 -1
  10. package/.well-known/mcp/server-card.json +1 -1
  11. package/adapters/claude/.mcp.json +2 -2
  12. package/adapters/forge/forge.yaml +3 -3
  13. package/adapters/future-agi/.mcp.json +1 -1
  14. package/adapters/future-agi/config.toml +1 -1
  15. package/adapters/future-agi/opencode.json +1 -1
  16. package/adapters/herdr/herdr-plugin.toml +2 -2
  17. package/adapters/mcp/server-stdio.js +1 -1
  18. package/adapters/opencode/opencode.json +1 -1
  19. package/bin/cli.js +132 -4
  20. package/config/gate-templates.json +48 -0
  21. package/package.json +36 -9
  22. package/public/blog/2026-09-23-datadog-llm-obs-four-practices.html +42 -0
  23. package/public/index.html +2 -2
  24. package/public/install.html +7 -7
  25. package/public/numbers.html +2 -2
  26. package/scripts/ci-gha-buildkite-patterns.js +393 -0
  27. package/scripts/cli-schema.js +51 -1
  28. package/scripts/deeppattern-discipline-honesty.js +431 -0
  29. package/scripts/install-thumbgate-daily-publish-launchd.sh +83 -0
  30. package/scripts/llm-obs-honesty.js +478 -0
  31. package/scripts/thumbgate-board-loop.js +432 -0
  32. package/scripts/thumbgate-daily-discoveries-publish.js +413 -0
  33. package/scripts/thumbgate-daily-discoveries-publish.sh +18 -0
  34. package/scripts/typesafe-typed-questions.js +332 -7
  35. package/server.json +2 -2
  36. package/skills/article-syndication-pipeline/SKILL.md +37 -0
  37. package/skills/comet-session-logger/SKILL.md +59 -0
  38. package/skills/thumbgate-daily-discoveries/SKILL.md +57 -0
  39. package/src/index.js +10 -0
  40. package/src/integrations/ideabrowser-connector.js +190 -0
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: article-syndication-pipeline
3
+ description: Technical article syndication pipeline for cross-posting Dev.to articles to CoderLegion and other developer platforms with canonical URL preservation, UTM parameter attribution, and contributor onboarding compliance.
4
+ ---
5
+
6
+ # ✍️ Article Syndication & Contributor Pipeline
7
+
8
+ This skill guides the autonomous syndication of ThumbGate technical discoveries, security postmortems, and engineering deep dives across developer platforms (Dev.to, CoderLegion, Hashnode, Medium).
9
+
10
+ ---
11
+
12
+ ## 🎯 Architecture & Operating Directives
13
+
14
+ 1. **Canonical SEO Integrity:**
15
+ - Always preserve the primary origin as the canonical URL (e.g. `https://dev.to/igorganapolsky/...`).
16
+ - Syndicated copies on CoderLegion or elsewhere must link back to avoid search engine duplicate-content penalties.
17
+ 2. **First-Party Revenue Attribution:**
18
+ - All inbound links to `thumbgate.ai` must include UTM campaign tags (`utm_source=coderlegion`, `utm_medium=community`, `utm_campaign=guest-post`).
19
+ - Conversion links (Pro license checkout) must route through `/go/pro` (`https://thumbgate.ai/go/pro?utm_source=...`) to ensure server-side redirect logging.
20
+ 3. **CoderLegion Contributor Compliance:**
21
+ - URL import endpoint: `https://coderlegion.com/import-post`.
22
+ - Supports 2 imported Dev.to articles with full attribution.
23
+ - Contributor checklist: `https://coderlegion.com/guest-blog-checklists`.
24
+ - All imported posts undergo editorial review before appearing on the main feed.
25
+
26
+ ---
27
+
28
+ ## 🛠️ Step-by-Step Workflow
29
+
30
+ 1. **Verify Original Article:**
31
+ Verify original URL exists, returns HTTP 200, and has correct canonical tags.
32
+ 2. **Fetch via Platform Parser:**
33
+ Submit `import_url` to `https://coderlegion.com/import-post`.
34
+ 3. **Review & Confirm Metadata:**
35
+ Confirm title, tags (`ai`, `security`, `architecture`, `opensource`), and backlink to canonical source.
36
+ 4. **Publish & Track:**
37
+ Submit publication step and record post URL in session log and Comet browser tab.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: ci-gha-buildkite-patterns-not-clone
3
+ description: >
4
+ Buildkite pipeline architecture is FORMAT, not a ThumbGate CI vendor.
5
+ Steal first-fail step identity, PR fail-fast, needs:/wait honesty, skip
6
+ conditions, and GITHUB_STEP_SUMMARY annotations onto existing GitHub
7
+ Actions. Never add Buildkite Pipelines, agents, Test Engine, or a second
8
+ required check. Slash: /ci-gha-buildkite-patterns-not-clone.
9
+ ---
10
+
11
+ # CI GHA Buildkite patterns — compare, do not clone
12
+
13
+ ## Goal
14
+
15
+ Fail-closed GitHub Actions diagnosis for whom: ThumbGate public CI — so a
16
+ red PR names the **first failed step**, cancels leftover PR runs, and never
17
+ grows a Buildkite bill.
18
+
19
+ ## Constraints
20
+
21
+ | NEVER | ALWAYS |
22
+ | --- | --- |
23
+ | Migrate this public repo to Buildkite | Keep the required GHA contexts on `ubuntu-latest` |
24
+ | Dump `--log-failed` first | `npx thumbgate ci-gha-buildkite-patterns --jobs-json=…` |
25
+ | `gh run rerun` a queued job | Wait for Actions to drain |
26
+ | Test Engine auto-quarantine | First fail is a regression until proven otherwise |
27
+ | `cancel-in-progress: true` on `main` | Cancel PR reruns only |
28
+
29
+ HARD fail closed. REFUSE SKU clones. This is **not a Buildkite clone**.
30
+ Never migrate this public repo to Buildkite.
31
+
32
+ ## Reference
33
+
34
+ - https://buildkite.com/docs/pipelines/best-practices/pipeline-design-and-structure
35
+ - https://buildkite.com/docs/pipelines/configure/annotations
36
+ - `scripts/ci-gha-buildkite-patterns.js`
37
+ - Complements `/ci-first-fail` (same FORMAT, global copy)
38
+
39
+ ## Examples (show, don't tell)
40
+
41
+ Weak: "Buildkite is faster, add it as a required check."
42
+
43
+ Gold:
44
+
45
+ ```bash
46
+ $ npx thumbgate ci-gha-buildkite-patterns --json --map-only
47
+ ok: true
48
+ $ npx thumbgate ci-gha-buildkite-patterns --json --migrate
49
+ ok: false # migrate_vendor
50
+ ```
51
+
52
+ ## Procedures
53
+
54
+ ```bash
55
+ npx thumbgate ci-gha-buildkite-patterns --json --map-only
56
+ npx thumbgate ci-gha-buildkite-patterns --json --workflow=.github/workflows/ci.yml
57
+ npx thumbgate ci-gha-buildkite-patterns --json --jobs-json=jobs.json
58
+ npm run test:ci-gha-buildkite-patterns
59
+ ```
60
+
61
+ 1. Name `first_fail.step` before opening logs.
62
+ 2. Absent required contexts → githubstatus.com, not a code blame.
63
+ 3. E2E shards stay `fail-fast: false` so merge-reports can still annotate (Buildkite `wait` + `continue_on_failure`).
64
+ 4. Do not vendor `buildkite-agent`.
65
+
66
+ ## Rubric
67
+
68
+ - `--map-only` → `ok=true`
69
+ - `--clone-buildkite` / `--migrate` / `--quarantine` / `--rerun-queued` → fail
70
+ - live `ci.yml` concurrency excludes `main`
71
+ - doctor tests PASS
72
+ - evidence: `--json` in the same turn
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: comet-session-logger
3
+ description: Live session logger and observability dashboard driver for Comet browser. Ensures every PR, deployment status check, CoderLegion/Dev.to publication, and Railway production health metric is actively logged and visualized in Comet tabs.
4
+ ---
5
+
6
+ # ☄️ Comet Session Logger & Visual HUD
7
+
8
+ This skill governs the automated logging, tab orchestration, and visual tracking of all ThumbGate agentic tasks inside the **Comet** browser on macOS.
9
+
10
+ ---
11
+
12
+ ## 🎯 Purpose & Directives
13
+
14
+ 1. **CEO Visual Observability:** The CEO monitors agent progress via open tabs in Comet. Every major milestone must be reflected in Comet tabs without disrupting existing work.
15
+ 2. **Deterministic Tab Management:** Uses macOS AppleScript (`osascript`) to inspect, activate, create, or update Comet tabs.
16
+ 3. **Fail-Safe & Non-Destructive:** Never closes existing tabs; always reuses matching URLs or opens clean dedicated monitoring tabs.
17
+
18
+ ---
19
+
20
+ ## 🧭 Standard Tab Targets
21
+
22
+ | Surface | Target URL | Trigger Milestone |
23
+ |---------|------------|-------------------|
24
+ | **Pull Requests** | `https://github.com/IgorGanapolsky/ThumbGate/pull/<NUM>` | After creating or advancing a PR |
25
+ | **CI / Checks** | `https://github.com/IgorGanapolsky/ThumbGate/actions` | During workflow verification |
26
+ | **Production Health** | `https://thumbgate-production.up.railway.app/health` | After deployment gate verification |
27
+ | **Railway Console** | `https://railway.com/project/thumbgate-production` | When inspecting infrastructure |
28
+ | **CoderLegion** | `https://coderlegion.com/import-post` | When onboarding or syndicating articles |
29
+ | **Dev.to Dashboard** | `https://dev.to/dashboard` | When tracking article reach & analytics |
30
+
31
+ ---
32
+
33
+ ## 🛠️ AppleScript Orchestration Helpers
34
+
35
+ ```bash
36
+ # Check existing Comet tabs
37
+ osascript -e '
38
+ tell application "Comet"
39
+ set outList to ""
40
+ repeat with w in windows
41
+ repeat with t in tabs of w
42
+ set outList to outList & (URL of t) & " | " & (title of t) & linefeed
43
+ end repeat
44
+ end repeat
45
+ return outList
46
+ end tell'
47
+
48
+ # Open or focus a specific URL in Comet
49
+ open_comet_url() {
50
+ local target_url="$1"
51
+ osascript -e "
52
+ tell application \"Comet\"
53
+ activate
54
+ tell front window
55
+ make new tab with properties {URL:\"${target_url}\"}
56
+ end tell
57
+ end tell"
58
+ }
59
+ ```
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: datadog-llm-obs-compare-not-clone
3
+ description: >
4
+ Datadog LLM Observability eBook is FORMAT, not a ThumbGate clone. Steal four
5
+ practices (operational metrics, injection+PII scrub, quality evals, e2e
6
+ parented spans) onto existing receipts/redaction/feedback/audit-trace.
7
+ Never vendor dd-trace, DatadogAgentObservability, or OTLP. Never dual-edit
8
+ PR #3881. Slash: /datadog-llm-obs-compare-not-clone.
9
+ ---
10
+
11
+ # Datadog LLM-obs — compare, do not clone
12
+
13
+ ## Goal
14
+
15
+ Produce fail-closed honesty for whom: ThumbGate agents claiming an LLM/agent
16
+ run is observed — so errors, latency, tokens, injection/PII, quality, and
17
+ parented spans exist on **existing** rails before any "we have observability" claim.
18
+
19
+ ## Constraints
20
+
21
+ | NEVER | ALWAYS |
22
+ | --- | --- |
23
+ | Clone Datadog Agent Observability / SDS / Clusters | Map 4 practices onto existing rails |
24
+ | `npm install dd-trace` / `DD_API_KEY` LLM obs | `scripts/secret-redaction.js` + `agent-audit-trace.js` |
25
+ | Dual-edit PR #3881 Datadog-style engine | Complement; orchestrator overlap is board-loop #3883 |
26
+ | Dual-edit PR #3883 board-loop | Leave PR drain there |
27
+ | OTLP-export prompt traces | Local receipts + redaction |
28
+ | Quote Datadog MTTR as ours | Measure ThumbGate latency-budget / task-outcomes |
29
+ | Hero Continuity / net-new obs SKU | ECI: maintenance of existing surfaces |
30
+
31
+ HARD fail closed. REFUSE SKU clones.
32
+
33
+ ## Reference
34
+
35
+ - https://lp.datadoghq.com/rs/875-UVY-685/images/eBook-LLMObservabilityBestPractices.pdf
36
+ - `scripts/llm-obs-honesty.js`
37
+ - `scripts/latency-budget.js` · `action-receipts.js` · `secret-redaction.js` · `agent-audit-trace.js` · `task-outcomes.js`
38
+ - `/high-roi-steal-and-finish` · `/eci-thumbgate-ip-wall`
39
+
40
+ ## Examples (show, don't tell)
41
+
42
+ Weak: Summarize the eBook and add a DatadogAgentObservability class.
43
+
44
+ Gold:
45
+
46
+ ```bash
47
+ $ npx thumbgate llm-obs-honesty --json
48
+ ok: true
49
+ status: ready
50
+ $ npx thumbgate llm-obs-honesty --clone-datadog --json
51
+ datadog_clone_refused
52
+ ```
53
+
54
+ ## Procedures
55
+
56
+ ```bash
57
+ npx thumbgate llm-obs-honesty --json
58
+ npx thumbgate llm-obs-honesty --map-only
59
+ npx thumbgate llm-obs-honesty --trace=tests/fixtures/llm-obs-honesty-blind.json --json
60
+ npm run test:llm-obs-honesty
61
+ ```
62
+
63
+ 1. Require operational counts + latency + tokens + budget alert.
64
+ 2. Require prompt-injection check + `secret-redaction.js` scrub.
65
+ 3. Require failure-to-answer, topic relevancy, toxicity (+ thumbs).
66
+ 4. Require parented retrieve/llm/tool spans with evidenceIds.
67
+ 5. Refuse `--clone-datadog`.
68
+
69
+ ## Rubric
70
+
71
+ - gold default → `ok=true`
72
+ - empty `{}` or blind fixture → `ok=false`
73
+ - `--clone-datadog` → `datadog_clone_refused`
74
+ - doctor: `npm run test:llm-obs-honesty` PASS
75
+ - evidence: command output in the same turn
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: deeppattern-discipline-honesty-not-clone
3
+ description: >
4
+ DeepPattern Agent Quality Gates + Decision Engine are neighbors, not a
5
+ ThumbGate clone. Steal layer-check (same-layer substitutes only) and
6
+ evidence-closeout (six required items before "done") onto existing rails.
7
+ Never install AQG/DE/dp-install or unpark a cross-vendor audit SKU.
8
+ Slash: /deeppattern-discipline-honesty-not-clone.
9
+ ---
10
+
11
+ # DeepPattern discipline honesty — compare, do not clone
12
+
13
+ ## Goal
14
+
15
+ Fail-closed comparative analysis and completion claims for whom: ThumbGate
16
+ FORMAT steals and Completion Claim Contract — so L4 API gateways / hosted
17
+ multi-model panels cannot be treated as PreToolUse substitutes, and "done"
18
+ cannot pass without six evidence items.
19
+
20
+ ## Constraints
21
+
22
+ | NEVER | ALWAYS |
23
+ | --- | --- |
24
+ | Install AQG, Decision Engine, `dp-install` | `npx thumbgate deeppattern-discipline-honesty --json` |
25
+ | Treat OpenRouter / LiteLLM / token pools as ThumbGate competitors | Tag L1–L8; same job-to-be-done only |
26
+ | Claim done without evidence heading + six items | `--closeout=path.md --strict` |
27
+ | Unpark LLM adjudicator / cross-vendor panel SKU | Deterministic local gates; hosted panel stays external |
28
+
29
+ HARD fail closed. REFUSE SKU clones.
30
+
31
+ ## Reference
32
+
33
+ - https://github.com/deeppatternai/agent-quality-gates (evidence-closeout)
34
+ - https://github.com/deeppatternai/decision-engine (`/layer-check`)
35
+ - ThumbGate Completion Claim Contract in `AGENTS.md` / `CLAUDE.md`
36
+ - `scripts/deeppattern-discipline-honesty.js`
37
+
38
+ ## Examples (show, don't tell)
39
+
40
+ Weak: "LiteLLM commoditizes ThumbGate because both route models."
41
+
42
+ Gold:
43
+
44
+ ```bash
45
+ $ npx thumbgate deeppattern-discipline-honesty --json --map-only
46
+ ok: true
47
+ $ npx thumbgate deeppattern-discipline-honesty --json \
48
+ --claim='LiteLLM replaces ThumbGate PreToolUse'
49
+ ok: false # cross_layer_substitute
50
+ ```
51
+
52
+ ## Procedures
53
+
54
+ ```bash
55
+ npx thumbgate deeppattern-discipline-honesty --json --map-only
56
+ npx thumbgate deeppattern-discipline-honesty --json --claim='DE replaces ThumbGate'
57
+ npx thumbgate deeppattern-discipline-honesty --json --closeout=pr-body.md --strict
58
+ npm run test:deeppattern-discipline-honesty
59
+ ```
60
+
61
+ 1. Tag subject + every cited product L1–L8 before competitive claims.
62
+ 2. Drop cross-layer substitutes; keep dependency language when honest.
63
+ 3. Before saying done/fixed/shipped: Evidence/Closeout heading + six items.
64
+ 4. Do not vendor AQG/DE.
65
+
66
+ ## Rubric
67
+
68
+ - `--map-only` → `ok=true`
69
+ - substitute claim naming L4/L2/L5 vs ThumbGate → `cross_layer_substitute`
70
+ - `--clone-deeppattern` / `dp-install` → fail
71
+ - closeout missing heading or item / placeholder → fail
72
+ - doctor tests PASS
73
+ - evidence: `--json` in the same turn
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: thumbgate-board-loop
3
+ description: >
4
+ Autonomous ThumbGate Issues+PR wall loop. Classifies every open Issue and PR,
5
+ update-branches BEHIND green Dependabot, submits READY via pr:manage/Trunk,
6
+ comments DIRTY and ECI/umbrella issues. Never approve. Never --admin.
7
+ Auto-invoke on holdup screenshots, 18 open PRs, 4 open issues, 4/4 green
8
+ Dependabot wall, "what's the holdup". Slash: /thumbgate-board-loop.
9
+ ---
10
+
11
+ # ThumbGate board loop
12
+
13
+ ## Goal
14
+
15
+ Drain the GitHub Issues + PR wall without a CEO screenshot. The list-view
16
+ **4/4** badge is not mergeable — those Dependabot PRs are usually `SUCCESS` +
17
+ `BEHIND` after a Trunk land.
18
+
19
+ ## Constraints
20
+
21
+ | NEVER | ALWAYS |
22
+ | --- | --- |
23
+ | Approve a PR / `--admin` / `gh pr merge --auto` | `npx thumbgate board-loop --apply --json` |
24
+ | Treat 4/4 as READY | Classify `mss` + required checks (`test`, CodeQL, changeset, Socket, GitGuardian) |
25
+ | Re-`pr:manage` a live `trunk-merge/pr-N` | Skip; that PR is already queued |
26
+ | Close DIRTY <30d | Comment needs-rebase once (marker `<!-- thumbgate-board-loop -->`) |
27
+ | Implement #3690/#3687 LLM adjudicator | ECI pause |
28
+ | Dual-edit DIRTY #3650 graph layer | Leave it DIRTY |
29
+ | GHA `schedule:` | Event-driven `workflow_run` + local LaunchAgent (CodeQL-only schedule policy) |
30
+
31
+ ## Reference
32
+
33
+ - `scripts/thumbgate-board-loop.js`
34
+ - `scripts/pr-manager.js`
35
+ - `.github/workflows/agent-automerge.yml` (must resolve `workflow_run.head_sha` + `dependabot/*`)
36
+ - `/thumbgate-pr-queue-autopilot` · `/thumbgate-issues-board-hygiene` · `/eci-thumbgate-ip-wall`
37
+
38
+ ## Examples (show, don't tell)
39
+
40
+ Weak: Paste the 18-open screenshot and ask which PR to merge.
41
+
42
+ Gold:
43
+
44
+ ```bash
45
+ $ npx thumbgate board-loop --json
46
+ counts.behind=8 counts.dirty=8 trunkQueued=[3874]
47
+ $ npx thumbgate board-loop --apply --max-update-branch=1 --json
48
+ # gh pr update-branch 3873
49
+ ```
50
+
51
+ ## Procedures
52
+
53
+ ```bash
54
+ npx thumbgate board-loop --json
55
+ npx thumbgate board-loop --apply --json
56
+ npm run test:board-loop
57
+ ```
58
+
59
+ 1. Inventory open PRs + Issues.
60
+ 2. Skip trunk-merge drafts.
61
+ 3. One BEHIND green `update-branch` per tick (serial — each land re-BEHINDs siblings).
62
+ 4. One READY `pr-manager` / Trunk submit per tick.
63
+ 5. Comment Issues: ECI pause vs IMPLEMENT residual vs umbrella.
64
+ 6. Never approve.
65
+
66
+ ## Rubric
67
+
68
+ - gold classify: SUCCESS+BEHIND → `update_branch`
69
+ - trunk-merge draft → `skip`
70
+ - `--apply` never emits `APPROVE` / `--admin` / `--auto`
71
+ - doctor: `npm run test:board-loop` PASS
72
+ - evidence: command output in the same turn
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: thumbgate-daily-discoveries
3
+ description: Autonomous daily publishing engine and monitoring skill for ThumbGate news and technical discoveries. Generates high-density engineering posts with full UTM attribution, synchronizes to Obsidian, schedules dual cron/launchd runs at 9:00 AM EST, and tracks publication ledgers.
4
+ ---
5
+
6
+ # 📰 ThumbGate Daily Technical Discoveries & News Engine
7
+
8
+ This skill automates the daily harvesting, synthesis, UTM attribution, and multi-channel publication of ThumbGate engineering discoveries and release news.
9
+
10
+ ---
11
+
12
+ ## 🎯 Architecture & Operating Principles
13
+
14
+ 1. **Daily Cadence (9:00 AM EST):** Runs once per calendar day. Avoids spam while establishing consistent technical authority.
15
+ 2. **Dual Scheduling Redundancy:**
16
+ - Primary: macOS crontab (`0 9 * * * /bin/bash scripts/thumbgate-daily-discoveries-publish.sh ...`)
17
+ - Fallback: macOS LaunchAgent (`~/Library/LaunchAgents/com.thumbgate.daily-publish.plist`)
18
+ - Note: GitHub Actions `schedule:` is strictly limited to `codeql.yml` per repo hygiene tests.
19
+ 3. **Full UTM Attribution & Tracked Redirects:**
20
+ - All outbound links to `thumbgate.ai` must use `buildUTMLink` from `scripts/social-analytics/utm.js`.
21
+ - Outbound pro/checkout links must route through `/go/pro` (`serveTrackedLinkRedirect` in `src/api/server.js`) to capture first-party funnel telemetry.
22
+ 4. **Multi-Surface Staging & Sync:**
23
+ - Staged locally at `docs/marketing/daily-discoveries/YYYY-MM-DD-<slug>.md`.
24
+ - Synchronized to the CEO's Obsidian Vault at `~/Documents/Igor/Research/Daily-Discoveries/`.
25
+ - Logged idempotently to `.thumbgate/daily-discoveries-ledger.jsonl`.
26
+ - Dispatches to Dev.to / Zernio if API keys are configured.
27
+
28
+ ---
29
+
30
+ ## 🛠️ CLI Commands & Usage
31
+
32
+ ```bash
33
+ # Preview today's technical discovery without making mutations or network calls
34
+ node scripts/thumbgate-daily-discoveries-publish.js --dry-run
35
+
36
+ # Output structured JSON report
37
+ node scripts/thumbgate-daily-discoveries-publish.js --json
38
+
39
+ # Force publish/restage today's discovery even if already logged in ledger
40
+ node scripts/thumbgate-daily-discoveries-publish.js --force
41
+
42
+ # Shell wrapper (used by crontab / launchd)
43
+ ./scripts/thumbgate-daily-discoveries-publish.sh
44
+
45
+ # Run test suite
46
+ node --test tests/thumbgate-daily-discoveries-publish.test.js
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 📋 Pre-Flight Verification Checklist
52
+
53
+ - [ ] Verify `node --test tests/thumbgate-daily-discoveries-publish.test.js` passes.
54
+ - [ ] Verify outbound links contain valid UTM parameters (`utm_source=daily_discoveries`, `utm_campaign=daily_technical_discoveries`).
55
+ - [ ] Verify `launchctl list | grep thumbgate` reports exit code 0.
56
+ - [ ] Verify `crontab -l | grep thumbgate` contains the 9:00 AM daily trigger.
57
+ - [ ] Check `.thumbgate/daily-discoveries-ledger.jsonl` for recent execution receipts.
@@ -21,14 +21,16 @@ not a SKU, not an LLM adjudicator.
21
21
 
22
22
  | NEVER | ALWAYS |
23
23
  | --- | --- |
24
- | Install `typesafe-sdk` / call `api.typesafe.ai` | `npx thumbgate typesafe-typed-questions --json` |
24
+ | Install `typesafe-sdk` / wire Jev as the PreToolUse gate | `npx thumbgate typesafe-typed-questions --json` |
25
+ | `--use-typesafe-api` (gate) | `--live` shadow vs `POST /v1/systemone`; code still owns `route()` |
25
26
  | Clone Jev / System One as the gate | Deterministic matchers answer the battery |
26
27
  | Unpark LLM adjudicator (#3690/#3687) | Code owns `route()`; model does not emit the verdict |
27
28
  | One free-form "should we allow this?" judge | Atomic noul per hazard + score for severity |
28
29
  | Dual-edit untracked `llm-adjudicator` theater | Map onto existing `gate-check` rails |
30
+ | N HTTP calls (one question each) | One POST with the whole battery (`parallel_questions`) |
29
31
 
30
32
  HARD fail closed. REFUSE SKU clones. ECI: no net-new governance product.
31
- Do NOT install `typesafe-sdk`. Do NOT call `api.typesafe.ai` from PreToolUse.
33
+ Do NOT install `typesafe-sdk`. Do NOT let Jev emit `permissionDecision`. `--live` is a shadow scorer (grok-fleet key), not the gate.
32
34
 
33
35
  Complementary to trading `/typesafe-system-one-not-clone` (AGENT-651 claim gate). Do **not** dual-edit `IgorGanapolsky/trading` `scripts/typesafe_claim_gate.py`. This skill is ThumbGate PreToolUse only.
34
36
 
@@ -36,6 +38,7 @@ Complementary to trading `/typesafe-system-one-not-clone` (AGENT-651 claim gate)
36
38
 
37
39
  - https://console.typesafe.ai/hook (signed-in intro / Replay intro)
38
40
  - https://docs.typesafe.ai/cookbooks/llm_guardrails.md
41
+ - https://docs.typesafe.ai/cookbooks/parallel_questions
39
42
  - https://docs.typesafe.ai/patterns/confidence-routing.md
40
43
  - Playground "Support agent audit" (noul battery + choice + score over one state)
41
44
  - `scripts/typesafe-typed-questions.js`
@@ -69,7 +72,8 @@ npm run test:typesafe-typed-questions
69
72
  2. Ask independent typed questions (noul per hazard, choice for family, score for severity).
70
73
  3. Answer them with deterministic matchers — never Jev.
71
74
  4. `route()` in code: action threshold → block, review threshold → review, severity ≥ 2 promotes review to block.
72
- 5. Refuse `--clone-jev`, `--use-typesafe-api`, `--llm-adjudicate`, and model-emitted verdicts.
75
+ 5. Refuse `--clone-jev`, `--use-typesafe-api` (gate), `--llm-adjudicate`, and model-emitted verdicts.
76
+ 6. Optional `--live` shadows the same battery against Jev in **one** POST. `--fan-out-questions` fails. Receipt is estimated N× input tokens, not the cookbook's 12.2×.
73
77
 
74
78
  ## Rubric
75
79
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
3
  "description": "One 👎 becomes a hard rule the agent cannot bypass. Captures thumbs-down feedback, distills it into PreToolUse Pre-Action Checks, enforced across every future Claude Code session.",
4
- "version": "1.37.2",
4
+ "version": "1.37.3",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky",
7
7
  "email": "ig5973700@gmail.com",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.37.2",
3
+ "version": "1.37.3",
4
4
  "description": "ThumbGate — 👍👎 feedback that teaches your AI agent. Thumbs down a mistake, it never happens again.",
5
5
  "homepage": "https://thumbgate.ai",
6
6
  "transport": "stdio",
@@ -2,13 +2,13 @@
2
2
  "mcpServers": {
3
3
  "thumbgate": {
4
4
  "command": "npx",
5
- "args": ["--yes", "--package", "thumbgate@1.37.2", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.37.3", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.37.2", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.37.3", "thumbgate", "gate-check"]
12
12
  }
13
13
  }
14
14
  }
@@ -9,12 +9,12 @@ version: "1"
9
9
  skills:
10
10
  thumbgate-gate-check:
11
11
  description: "ThumbGate PreToolUse gate — blocks known-bad tool calls"
12
- command: "npx --yes --package thumbgate@1.37.2 thumbgate gate-check"
12
+ command: "npx --yes --package thumbgate@1.37.3 thumbgate gate-check"
13
13
  trigger: pre_tool_use
14
14
 
15
15
  thumbgate-feedback:
16
16
  description: "ThumbGate feedback capture — logs user prompt context"
17
- command: "npx --yes --package thumbgate@1.37.2 thumbgate hook-auto-capture"
17
+ command: "npx --yes --package thumbgate@1.37.3 thumbgate hook-auto-capture"
18
18
  trigger: user_prompt
19
19
 
20
20
  mcp:
@@ -23,6 +23,6 @@ mcp:
23
23
  args:
24
24
  - "--yes"
25
25
  - "--package"
26
- - "thumbgate@1.37.2"
26
+ - "thumbgate@1.37.3"
27
27
  - "thumbgate"
28
28
  - "serve"
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "thumbgate": {
4
4
  "command": "npx",
5
- "args": ["--yes", "--package", "thumbgate@1.37.2", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.37.3", "thumbgate", "serve"]
6
6
  }
7
7
  }
8
8
  }
@@ -1,3 +1,3 @@
1
1
  [mcp.servers.thumbgate]
2
2
  command = "npx"
3
- args = ["--yes", "--package", "thumbgate@1.37.2", "thumbgate", "serve"]
3
+ args = ["--yes", "--package", "thumbgate@1.37.3", "thumbgate", "serve"]
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "thumbgate": {
4
4
  "command": "npx",
5
- "args": ["--yes", "--package", "thumbgate@1.37.2", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.37.3", "thumbgate", "serve"]
6
6
  }
7
7
  }
8
8
  }
@@ -1,7 +1,7 @@
1
1
  [plugin]
2
2
  id = "thumbgate-approvals"
3
3
  name = "ThumbGate Approvals"
4
- version = "1.37.2"
4
+ version = "1.37.3"
5
5
  minHerdrVersion = "0.7.0"
6
6
  description = "Pre-action governance, spend guard, and safety approval gates for multi-agent terminal sessions in Herdr."
7
7
  platforms = ["linux", "macos", "windows"]
@@ -12,7 +12,7 @@ category = "Security & Governance"
12
12
 
13
13
  [mcp_server]
14
14
  command = "npx"
15
- args = ["--yes", "--package", "thumbgate@1.37.2", "thumbgate", "serve"]
15
+ args = ["--yes", "--package", "thumbgate@1.37.3", "thumbgate", "serve"]
16
16
 
17
17
  [mcp_server.env]
18
18
  THUMBGATE_ENFORCE_ENTITLEMENTS = "1"
@@ -334,7 +334,7 @@ const {
334
334
  finalizeSession: finalizeFeedbackSession,
335
335
  } = require('../../scripts/feedback-session');
336
336
 
337
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.37.2' };
337
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.37.3' };
338
338
  const COMMERCE_CATEGORIES = [
339
339
  'product_recommendation',
340
340
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.37.2",
10
+ "thumbgate@1.37.3",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],