Skip to content

Add spam risk reviewer skill#146

Open
Li-AmG wants to merge 79 commits into
runxhq:mainfrom
Li-AmG:li-amg/spam-risk-reviewer-62
Open

Add spam risk reviewer skill#146
Li-AmG wants to merge 79 commits into
runxhq:mainfrom
Li-AmG:li-amg/spam-risk-reviewer-62

Conversation

@Li-AmG

@Li-AmG Li-AmG commented Jun 25, 2026

Copy link
Copy Markdown

What this does

Adds a read-only spam-risk-reviewer runx skill for campaign send-risk preflight.

How to use it

Run the local harness:

runx harness ./skills/spam-risk-reviewer

The skill accepts campaign_draft, list_metadata, and sender_auth_posture, then emits send_risk_verdict, evidence_json, and report_md.

How it works

The runner compares sender authentication and list hygiene against bounded policy thresholds. Clear sends return risk_level: pass; authentication or list hygiene failures return risk_level: hold, preflight_clear: false, blockers, and needs_human escalation for send-as approval.

Testing

Manual node dogfood completed for both harness fixtures:

  • low-risk-verified-sender -> risk_level: pass, preflight_clear: true
  • high-risk-incomplete-auth-poor-list -> risk_level: hold, preflight_clear: false, needs_human

Local runx harness could not be executed on this Windows host because the 0.6.13 native runx.exe package was blocked by the OS with EPERM/missing executable after install. The package files and fixtures are included for hosted harness review.

auscaster and others added 30 commits June 19, 2026 19:55
default to the /internal/thread-outbox pending cursor (drops the fragile client cursor-cache that re-walked history on a fresh runner) and listen for a board-sync repository_dispatch so the venue can trigger the drain low-latency.
a no-ua, no-browser-headers, http1.1 client is an obvious bot signature. the fetch tool now presents a current chrome ua + the browser header set and negotiates http2 with gzip/brotli, applied as overridable defaults. configurable via RUNX_HTTP_USER_AGENT and RUNX_HTTP_BROWSER=0; the anthropic and registry transports stay plain; all transport guards unchanged. tls (ja3/ja4) and http2 fingerprint matching are out of scope.
Conventional follow-up for the pushed lockfile refresh.
Adds the dependency-cve-audit runx skill and registers it in the official catalog.

Verified:
- CI green on PR runxhq#82
- node --check skills/dependency-cve-audit/run.mjs
- runx doctor skills/dependency-cve-audit --json
- runx harness skills/dependency-cve-audit --receipt-dir <tmp> --json
- packages/cli/src/skill-refs.test.ts
Adds the structured-extraction runx skill and completes the paid follow-up integration work.

Maintainer cleanup added:
- deterministic tool fixture for structured.extract
- SKILL.md frontmatter for official catalog generation
- official skill lock/Rust table/catalog allowlist entries

Verified:
- CI green on PR runxhq#80
- local merge simulation after runxhq#82
- node --check skills/structured-extraction/tools/structured/extract/run.mjs
- runx doctor skills/structured-extraction --json
- runx harness skills/structured-extraction --receipt-dir <tmp> --json
- runx dev tools/structured/extract --json with RUNX_PROJECT_DIR set to the skill root
- packages/cli/src/skill-refs.test.ts
auscaster and others added 28 commits June 21, 2026 12:23
Remove the user-facing installation-id flag from add/registry flows, keep native command help aligned, and update registry fixtures/docs to use versioned runx add plus runx skill execution commands.
Rename the bundled runx operator skill to ops-desk, remove product-specific fixture names, keep newer maturing skills internal until they meet the public catalog bar, and make graph skills fail closed when required graph inputs are missing.
Update the native CLI skill execution/export surfaces, add governed data-plane contracts and fixtures, refresh official skill catalog coverage, and remove local .ai state from Git tracking.

Validation: pnpm bindings:check; pnpm exec tsc --noEmit --allowJs --checkJs --module NodeNext --moduleResolution NodeNext --target ES2022 --skipLibCheck scripts/check-upstream-skill-bindings.mjs; git diff --check
Replace the frantic-specific event-replay driver with a generic, stateless
reconcile engine: consume a tenant's desired thread state, diff against live
GitHub, apply only the difference via the provider primitives. Drop the cursor
and the frantic_thread_outbox translator; generalize label ensure.
Reconcile read each issue thread once per run (state, labels, comment markers)
and write only actual differences, instead of re-fetching the whole thread per
comment. Steady state is now one read per thread and zero writes; cut redundant
per-run observations to newly-created threads only.
Signed-off-by: Li-AmG <288224810+Li-AmG@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants