Super Collect logo

Super Collect

Community
EricTechPro
super-collect

Find problems in one project and file them as tickets into its super-board Backlog — the board fixes them. Source plug-ins - sentry (app errors), posthog (exceptions, rage/dead clicks, failure events, web vitals, tracking gaps), github (issues not on the board), prs (recurring problems in merged PRs and their review comments), architecture (refactor findings), plus any custom source added in onboard (an MCP server, HTTP API, CLI command or app). Each candidate is checked by one fresh verifier before filing. Dry-run by default. Use when the user says "super-collect", "/super-collect", "/super-collect sentry", "collect tickets", "triage errors onto the board", "what keeps breaking", or "find refactors".

Overview

PublisherEricTechPro
Repositorysuper-board
Skill namesuper-collect
Stars
464
Forks
136
Bundled files
8
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 8 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by EricTechPro on GitHub. Read the source before you install it.

Installation

Install the Super Collect AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/EricTechPro/super-board/tree/main/skills/super-collect
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/EricTechPro/super-board.git /tmp/super-board
mkdir -p .claude/skills
cp -r /tmp/super-board/skills/super-collect .claude/skills/super-collect
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Super Collect in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Super Collect on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Super Collect is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

super-collect — find problems, file them into Backlog

One job: find problems and file tickets into the board's Backlog. The board fixes them. super-collect never builds, never edits app code, and never moves a card to Ready — super-board lint decides that. Per project only: it reads the active project's super-board config and files onto that project's board.

Invocation

CommandDoes
/super-collectevery source enabled in collect.sources
/super-collect <source> [<source>…]just those: sentry, posthog, github, prs, architecture, or a custom source's name
--since 30d / --since 2026-09-01window; default collect.window_days, else 14 days
--yesfile without the confirm step (never skips verify or dedupe)

Default is dry-run: show the plan table, file on confirm.

Scheduler integration

For periodic intake, use scheduled-intake.md: let the owner's scheduler invoke this existing skill, retain source verification and holding-column-only filing, and notify only on meaningful changes or failures. No job, cadence or scheduler is created by this skill.

Setup

  1. Resolve the config: .claude/super-board/active → .claude/super-board/configs/<slug>.json (shape: ../super-board/references/config-schema.json). No config, or no collect block for a requested source → stop and point at /super-board onboard (its collect step sets sources up).
  2. Secrets come only from .env (nearest walking up): SENTRY_AUTH_TOKEN, POSTHOG_PERSONAL_API_KEY. Never print, echo or paste them.
  3. Source .claude/bin/super-board-gh-guard.sh; sb_gh_guard_check 200 before each gh burst.
  4. Snapshot the board through .claude/bin/super-board-github-read.py --kind items -- project item-list <number> --owner <owner> --format json --limit 500. A count mismatch or read failure halts; never treat a partial board as complete. It is the dedupe set for verification and the "not on the board" set for github.

Scripts live in .claude/skills/super-collect/scripts/ (S= below). Every fetcher takes --since and prints JSON; a fetcher that cannot reach its source prints {"status":"unavailable","error":…} and exits 2. Record each source as read (n), empty, unavailable or truncated — never report an unreachable source as empty.

Sources

SourceFetchCandidate → ticket
sentrypython3 $S/collect_sentry.py list --since <w> — Sentry REST, Bearer token (scopes event:read project:read): org issues list, then event <id> / tags <id> for evidenceone unresolved issue → bug, fp `err
posthogpython3 $S/collect_posthog.py list --since <w> — HogQL POST {host}/api/projects/{id}/query/one signal group → see table below
githubRead open candidates with gh issue list --state open --json number,title,body,labels,url --limit 300 (a full 300 is capped coverage, not a complete repo inventory), minus issues on the board and source:* labelsreal work → adopt (--adopt <n>), never copied
prspython3 $S/collect_prs.py list --since <w> — one GraphQL search is:pr is:merged merged:>=DATE, paginated, with comments, reviews and review threads (human and bot), super-review reports flagged (<!-- super-review:report -->)one recurring root cause → fix / refactor / feature, fp `prs
architectureread-only finder sub-agent (below)one finding → refactor, fp `arch
custom (collect.custom[])python3 $S/collect_custom.py list --since <w> — http and cli sources run in the script; an mcp source comes back status: agent: call that server's read/list tool yourself (read-only), then pipe its JSON into collect_custom.py normalize --name <n>one candidate → bug (errors, incidents) or feature (requests), --source custom, fp `custom

custom sources

Added in onboard's "➕ Add another source" (super-board onboard → 📥 Bug sources): the user types a link, an app name, an API URL, an MCP server or a command; collect_custom.py classify decides which, ping proves it can be read (read-only) and add saves {name, kind, target, auth_env?, map?} to this project's config and its name to collect.sources. Here they run like any other source: every candidate goes to the same verifier and the same filer. A source that cannot be reached is unavailable, never empty. A command that looks like it changes something is refused by the script — never work around that.

posthog signals

The signal set is a table in collect_posthog.py (SIGNALS) plus the config's collect.posthog.failure_events; narrow it with collect.posthog.signals.

SignalGrouped byFiles whenTicket
exception$exception by issue_id (follows merges)≥ min_users (5) peoplebug, label error
failure eventseach configured {event, fail} (e.g. push_completed with properties.status = 'failed')≥ 5 people, or failing-people rate ≥ failure_rate (10%)bug, label error
rageclick$rageclick by URL + element≥ 5 peoplebug, label ux
dead_click$dead_click by URL + element≥ 5 peoplebug, labels ux, needs-triage (high false-positive rate)
web_vitalsp75 per pathname≥ 50 samples and p75 LCP > 4 s, INP > 500 ms or CLS > 0.25bug, label perf
surveyraw survey sent responses (only when surveys exist)you theme them; one theme from ≥ 3 peoplefeature

Each candidate carries a replay link (latest $session_id) — put it in Evidence. Funnel drop-off and abandonment spikes are report only: collect_posthog.py funnel --since <w> → <paths.runs_dir>/collect-funnel-<YYYY-MM-DD>.md. No tickets from them.

Tracking gaps (posthog runs only). collect_posthog.py events --since <w> lists every event seen plus silentSignals. Find the app's key user workflows from its routes and existing capture() calls; for each, list the success and failure events that are missing and the signals that return no data (e.g. autocapture off ⇒ no $rageclick). File one feature ticket per workflow with gaps, label analytics, fp gap|<workflow> — Problem, Context (routes, the capture calls found, what is missing), Fix, Acceptance Criteria (named events with their properties), Risk. Suggestions stay perf- and privacy-safe: sampling, clicks only, no input or text capture, no PII in properties. Never edit app code.

prs — what to look for

Read the JSON for problems that recur, not one-off nits:

  1. The same finding shape (same module, same rule) on two or more PRs — from human reviewers, bots or super-review reports.
  2. A super-review finding marked fixed that comes back not fixed in a later report.
  3. Unresolved review threads on merged PRs that point at a real defect.
  4. A skill, prompt or workflow whose reports keep missing the same thing → a feature to refine it.

Cluster by root cause at a shared boundary, not by wording. One ticket per cause with Problem, Context, Evidence (every PR, comment link and finding id), Fix (names the root cause), Acceptance Criteria, Risk. Before proposing Fix and its behavioral AC, follow correction prevention: identify what permitted the recurrence, prefer a fitting structural correction, and retain the actual prior bad witness.

architecture — the finder

Spawn one fresh, read-only sub-agent (it edits nothing and commits nothing). It uses, in order of what is installed: mattpocock improve-codebase-architecture (skip its HTML report and grilling; findings only) or codebase-design (module, interface, depth, seam, deletion test), plus ponytail:ponytail-audit for over-engineering. It reads CONTEXT.md and docs/adr/ and does not re-open a recorded decision; recently changed files weigh higher. It returns {module, problem, finding, files, why, severity}; each finding = one refactor ticket with Problem, Context (files, the shallow interface or duplicated concept), Fix, Acceptance Criteria (observable, plus "existing tests still pass"), Risk. Cap at collect.architecture.max_findings (5).

Verify — one fresh verifier per candidate

Before anything is filed, each candidate goes to one fresh verifier sub-agent. No for/against panel, no debate — one verifier, one verdict. Give it the candidate JSON, the board snapshot path and the window; nothing from other candidates. It checks, in order:

  1. Real — the evidence holds up: open the Sentry event / replay / PR comment / code it cites.
  2. Still happening — collect_sentry.py check <id> --after <window start> (seenAfter), or collect_posthog.py check <signal> <key> --after <date> (stopped, issueStatus).
  3. Already fixed — a closed issue or merged PR that matches (gh pr list --state merged --search "<symptom> in:title,body", plus the fingerprint), and then from the fix's merge date or release: Sentry status: resolved with seenAfterRelease: false; PostHog stopped: true (zero hits and ≥ 3 days of traffic since the merge; with version_property, no hits on versions after the fix). A refactor already landed counts too.
  4. Duplicate — same symptom + same route/module as a card in the snapshot or an open issue.

Verdict schema: {verdict: file | drop-fixed | drop-stale | drop-noise | duplicate | needs-triage, evidence: [links], note}. duplicate names the card; the filer then comments on it. Unclear is not a drop: needs-triage files the card with --label needs-triage. Report every drop with its evidence.

Filing

Every card goes through one script, which routes to the pack's filers:

bash
$S/super-collect-file.sh --config <cfg> --type bug|feature|refactor|fix \
  --source sentry|posthog|github|prs|architecture|custom --title "<one line>" --body-file <md> \
  --fingerprint "<key>" [--priority p] [--area a] [--label needs-triage] [--label ux] [--yes]
$S/super-collect-file.sh --config <cfg> --adopt <n> --type <t> [--yes]
  • bug, feature, fix → super-qa-file-bug.sh (fix files as tech-debt); refactor → super-review-file-refactor.sh. --title is the bare problem: the filers add the <emoji> [<kind>] <scope>: prefix, so never pass one (🐛 [bug] … would appear twice). Every body uses the ticket format in .claude/skills/super-board/references/writing-standard.md § 3: Problem · Context (lettered steps under Where) · Fix · Acceptance Criteria (checklist) · Risk; bugs add the folded 12-row Evidence table (a missing row says n/a — why), fixes add an Evidence section. Evidence is links and counts — never secrets or user PII. The filer refuses a body that misses a section.
  • Fingerprint per source (the filer rejects a mismatch): sentry err|sentry|<id>, posthog posthog|<signal>|<key> (fetchers emit it) or gap|<workflow>, github github|<n>, prs prs|<boundary>|<cause>, architecture arch|<module>|<problem>, custom custom|<name>|<key>.
  • Dedupe uses complete guarded paginated issue history, exact-fingerprint, repo-wide, any label: an open hit gets a "Seen again" comment; a closed-only hit is a recurrence, filed again naming the closed issue.
  • Column is the board's holding column (Backlog, else Todo/To do/Triage/Inbox); none → refused (exit 65).
  • The same-host repository lock serializes collector calls; digest receipts skip identical repeat comments. See state and recovery.
  • Labels: source:collect, collect:<source>, every --label, plus the filer's own.

Dry-run: run each verified item without --yes, show one table (would-file / duplicate / recurrence / would-adopt, plus the verifier's drops), wait for confirm, rerun with --yes.

Report

## super-collect: <filed n | dry-run n> · since 2026-09-18 (14d)
Coverage   sentry: read 42 | posthog: read 9 (silent: rageclick) | github: read 7 | prs: 23 PRs, 6 reports | architecture: 4 | linear: read 12
Filed      #412 bug       Checkout 500 on empty cart              (err|sentry|4411)
Filed      #413 bug       Dead clicks on /pricing  [needs-triage]  (posthog|dead_click|1a2b3c4d5e6f)
Duplicate  #301 ← Sentry 4502 (comment added)
Recurrence #418 fix       Merge gate rebases on lockfile drift     (was #88)
Dropped    Sentry 4490 drop-fixed — resolved in web@1.4.0, not seen since (PR #377)
Gaps       #420 analytics Receipt upload: no failure event         (gap|receipt-upload)
Report     docs/super-board/runs/collect-funnel-2026-10-02.md
Next       /super-board lint  — nothing here is in Ready

Common pitfalls

  • Filing one card per error event. Group by symptom and boundary first.
  • Skipping the verifier because the count looks big. Volume is not proof it is still happening.
  • Dropping an unclear candidate. File it needs-triage.
  • Copying a user's issue into a new one. Adopt it.
  • Treating a reviewer's fixed as proof. Recurrence is decided by the next report.
  • Editing app code, adding instrumentation, or moving anything to Ready. Collect files; lint and run do the rest.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Super Collect AI skill do?

Find problems in one project and file them as tickets into its super-board Backlog — the board fixes them. Source plug-ins - sentry (app errors), posthog (exceptions, rage/dead clicks, failure events, web vitals, tracking gaps), github (issues not on the board), prs (recurring problems in merged PRs and their review comments), architecture (refactor findings), plus any custom source added in onboard (an MCP server, HTTP API, CLI command or app). Each candidate is checked by one fresh verifier before filing. Dry-run by default. Use when the user says "super-collect", "/super-collect", "/supe...

Why use Super Collect on TypingMind?

Because you install it once and use it with any model. Super Collect is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Super Collect in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/EricTechPro/super-board/tree/main/skills/super-collect. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Super Collect?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Super Collect?

As many as you like. As long as a model supports skills, you can use Super Collect with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Super Collect AI skill free?

Yes. It is published on GitHub by EricTechPro under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇