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.
- package/.agents/skills/article-syndication-pipeline/SKILL.md +37 -0
- package/.agents/skills/ci-gha-buildkite-patterns-not-clone/SKILL.md +72 -0
- package/.agents/skills/comet-session-logger/SKILL.md +59 -0
- package/.agents/skills/datadog-llm-obs-compare-not-clone/SKILL.md +75 -0
- package/.agents/skills/deeppattern-discipline-honesty-not-clone/SKILL.md +73 -0
- package/.agents/skills/thumbgate-board-loop/SKILL.md +72 -0
- package/.agents/skills/thumbgate-daily-discoveries/SKILL.md +57 -0
- package/.agents/skills/typesafe-typed-questions-not-clone/SKILL.md +7 -3
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/forge/forge.yaml +3 -3
- package/adapters/future-agi/.mcp.json +1 -1
- package/adapters/future-agi/config.toml +1 -1
- package/adapters/future-agi/opencode.json +1 -1
- package/adapters/herdr/herdr-plugin.toml +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +132 -4
- package/config/gate-templates.json +48 -0
- package/package.json +36 -9
- package/public/blog/2026-09-23-datadog-llm-obs-four-practices.html +42 -0
- package/public/index.html +2 -2
- package/public/install.html +7 -7
- package/public/numbers.html +2 -2
- package/scripts/ci-gha-buildkite-patterns.js +393 -0
- package/scripts/cli-schema.js +51 -1
- package/scripts/deeppattern-discipline-honesty.js +431 -0
- package/scripts/install-thumbgate-daily-publish-launchd.sh +83 -0
- package/scripts/llm-obs-honesty.js +478 -0
- package/scripts/thumbgate-board-loop.js +432 -0
- package/scripts/thumbgate-daily-discoveries-publish.js +413 -0
- package/scripts/thumbgate-daily-discoveries-publish.sh +18 -0
- package/scripts/typesafe-typed-questions.js +332 -7
- package/server.json +2 -2
- package/skills/article-syndication-pipeline/SKILL.md +37 -0
- package/skills/comet-session-logger/SKILL.md +59 -0
- package/skills/thumbgate-daily-discoveries/SKILL.md +57 -0
- package/src/index.js +10 -0
- 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` /
|
|
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
|
|
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
|
|
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.
|
|
4
|
+
"version": "1.37.3",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Igor Ganapolsky",
|
|
7
7
|
"email": "ig5973700@gmail.com",
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"thumbgate": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--yes", "--package", "thumbgate@1.37.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
26
|
+
- "thumbgate@1.37.3"
|
|
27
27
|
- "thumbgate"
|
|
28
28
|
- "serve"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[plugin]
|
|
2
2
|
id = "thumbgate-approvals"
|
|
3
3
|
name = "ThumbGate Approvals"
|
|
4
|
-
version = "1.37.
|
|
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.
|
|
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.
|
|
337
|
+
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.37.3' };
|
|
338
338
|
const COMMERCE_CATEGORIES = [
|
|
339
339
|
'product_recommendation',
|
|
340
340
|
'brand_compliance',
|