banodoco/hivemind/docs

Claude Code and agent skill by banodoco/hivemind

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Search the Banodoco knowledge corpus — a public PostgREST endpoint combining a Discord message feed, external resources, and curated distillations. Covers generative video/image tooling (Wan, Wan Animate, VACE, LTX, Comfy, Kijai's nodes, SCAIL, InfiniteTalk, training, etc.). Use this whenever the user asks "what does Banodoco say about X", "best practices for a model", "what are people doing with a tool", "what settings did a named person recommend", or wants real-world tips that aren't on the model card / README. Channels like daily_summaries, wan_chatter, wan_comfyui, ltx_chatter, comfyui, *_resources are the goldmine. For contributing back, use the write path via the contribute edge function.

Install

npx vskill@latest install banodoco/hivemind/docs

SKILL.md

hivemind

A read-only public endpoint exposing the Banodoco knowledge corpus — community knowledge about video/image generation you can't get from official docs: workflow tips, model comparisons, settings tweaks, gotchas, and links to Kijai/Ablejones/community workflows. It layers three things into one searchable feed: messages (raw Discord), resources (articles, transcripts, workflows), and distillations (curated Q&A with cited sources). Distillations make the corpus self-improving — every researched answer you submit becomes permanently searchable.

Quick start

Endpoint: https://ujlwuvkrxlvoswwkerdf.supabase.co/rest/v1
Key (anon publishable, safe to commit):
apikey: sb_publishable_O38oPBafrBoFrpi_rlWJvA_UJrulFsx

Smoke test (raw search surface — per-token OR on message content; do NOT text-search unified_feed, the UNION scan times out with 57014):

bash
curl -s "https://ujlwuvkrxlvoswwkerdf.supabase.co/rest/v1/message_feed?select=message_id,content,author_name,channel_name,created_at&limit=5&order=created_at.desc&or=(content.ilike.*wan*,content.ilike.*animate*)" \
-H "apikey: sb_publishable_O38oPBafrBoFrpi_rlWJvA_UJrulFsx"
Surfaces at a glance — pick by what you want
You want to…UseWhy
Search curated Q&A (distillations)distillations + or=(question.ilike.*T*,answer.ilike.*T*,conditions.ilike.*T*)flywheel, highest signal; status pending,approved
Search resources (workflows, articles)external_resources?kind=eq.<resource-kind>&or=(title.ilike.*T*)raw table, kind btree + trigram GIN
Search message content (free text)message_feed + or=(content.ilike.*T1*,content.ilike.*T2*)per-token OR is index-friendly; unified_feed ilike times out (57014)
Just search everything at oncepython3 -m hivemind.executors.search.run --query "wan animate workflow"the pack executor: 3 scopes in parallel, per-token predicates, client-ranked merge
Search one Discord channelpython3 -m hivemind.executors.search.run --query "lora" --channel wan_chatterchannel-scoped message search
Search one person's messagespython3 -m hivemind.executors.search.run --query "lora" --author Kijaiauthor-scoped message search
Search inside a threadpython3 -m hivemind.executors.search.run --query "context" --thread <snowflake>index-backed message_filters thread surface
Page through results--limit 10 --offset 10 (response has total/has_more)deterministic ranked pool; stable pages
Filter messages by a field (pinned, thread, reply, attachment, channel)message_filtersindex-backed, ~0.1–0.25s
Fetch a full row by idget_item (executor)complete body + metadata + cites; message ids stay lossless strings
Refresh an expiring media URLrefresh-media-urls edge functionfresh Discord CDN URL

More on each below. The golden rule: match the surface to the question (gotchas in the next section).

The surfaces

unified_feed — the results feed (distillations + resources; NOT text search)

unified_feed is a UNION of three layers with one common shape. Use it kind-scoped for single-row fetches (get_item) of distillations and resources; message get_item uses the indexed message_feed surface. Do NOT use it for text search of any kind (a per-token OR over the UNION scan times out with 57014). For text search use the raw tables (message_feed / external_resources / distillations) or the pack's hivemind.search executor, which does exactly that.

kindsourcewhat it is
messagebanodoco-discordRaw Discord messages (use message_feed/message_filters to query)
article, transcript, workflow, …variesExternal resources — kind carries the concrete kind
distillationhivemindCurated Q&A pairs with cited sources (pending or approved)

Common columns: kind, source, item_id, title, body, author, context, url, metadata, created_at. Distillations have a lifecycle pending → approved; prefer approved, then pending, then raw items.

Message metadata (the Discord envelope)

unified_feed message rows carry the full Discord envelope in metadata:

keytypenotes
channel_idnumberlegacy numeric (pre-dates the stringification rule)
guild_idstringDiscord ids are strings (snowflakes exceed 2⁵³)
reactionsjsonactive reactions only (removed filtered) — sparse (~7%)
author_idstringauthor's members.member_id
avatar_urltextauthor's avatar, when known (~75% of authors)
reference_idstringthe message this one replies to (Discord reply/cite)
thread_idstringthread/forum id the message belongs to
message_typetexte.g. DEFAULT, reply
edited_attimestamptzlast edit
is_pinnedboolpinned/curated
reaction_countinthistorical total incl. removed — the reliable popularity signal
embedsjsonbDiscord link previews (title/description/source URL)
attachmentsjsonbthe resource signal — non-empty = contains a file/media
channel_typetexttext, forum, news, thread, … (now ~100% populated)

Scope + semantics:

  • These envelope keys appear only on `kind=message` rows. Resource and

distillation rows carry their own metadata (tags/status) — they do NOT have these keys.

  • Deleted messages are filtered out of every surface (view, message_feed,

search, and direct discord_messages reads via RLS) — they never appear.

The two resource signals (attachments + citations)

Attachments → skip the noise, find the resources. A message that actually contains/shows something (image, video, workflow .json, PDF) has a non-empty attachments array; prose-only messages have []. ~188k messages carry attachments. Each element:

json
{ "filename": "image.png", "url": "https://cdn.discordapp.com/attachments/..." }

filename is always present — infer the type from its extension (image/*, video/*, .json, .pdf). content_type (MIME) is present on only ~3–5% of attachments, so treat it as a bonus, not a guarantee. Use refresh-media-urls for a fresh CDN URL before using one.

`reference_id` → build chains. It is the snowflake of the message this one replies to. Walk it both directions to reconstruct threads of thoughts: read a reply's reference_id, get_item the parent, repeat. A message with a reference_id is a response/correction/elaboration; without one it's a root.

message_feed — raw message content search (the fast text surface)

Each row: message_id, content, author_name, channel_name, channel_id, guild_id, reactions, created_at (deleted already filtered). This is the surface for message content `ilike` — it's index-backed and fast, where unified_feed ilike is not. Scope by channel for speed.

message_filters — structured filtering (schema/036)

A simple, index-backed view over discord_messages with the hot filter columns exposed top-level (not buried in jsonb metadata), so PostgREST filters push to indexes:

GET /rest/v1/message_filters?is_pinned=eq.true&limit=20 # pinned canon
GET /rest/v1/message_filters?channel_name=eq.minimax_h3_resources # by channel (note: channel_name is NOT unique — use channel_id for exactly one)
GET /rest/v1/message_filters?thread_id=eq.<tid> # whole thread
GET /rest/v1/message_filters?reference_id=eq.<id> # replies TO a message (chains)
GET /rest/v1/message_filters?attachments=cs.[{"content_type":"video/mp4"}] # has typed attachment (GIN)
GET /rest/v1/message_filters?attachments=cs.[{"filename":"x.png"}] # exact file

Columns: message_id, channel_id, guild_id, author_id, thread_id, reference_id, is_pinned, reaction_count, attachments, embeds, content, created_at, channel_name. All filters index-backed (is_pinned ~0.1s, reference_id ~0.1s, attachments containment ~0.1–0.6s). Attachments uses PostgREST's cs operator (jsonb @>). Note: attachments=cs.[{"filename":"wan"}] substring does NOT work — it's exact match; and filtering by content_type only finds attachments the archive typed (~5% of videos, ~3% of images).

get_item — full rows
python3 -m hivemind.executors.get_item.run --kind message|resource|distillation --id <id>
# or: unified_feed?item_id=eq.<id>

Returns the full row + metadata + (for distillations) cites / cited-by.

How to answer a question (the workflow)

  1. Distillations first — distillations?status=in.(pending,approved)&or=(question.ilike.*T1*,answer.ilike.*T1*,question.ilike.*T2*,answer.ilike.*T2*) (per-token, not one phrase — a phrase never occurs verbatim and a multi-token OR over unified_feed times out). Hit → relay the answer + its cites.
  2. Then the pinned canon — message_filters?is_pinned=eq.true (~72 pins, mostly in wan_resources/ltx_resources; the community's highest-signal artifacts).
  3. Then channel-scoped message search — message_feed?channel_name=in.(…)&content=ilike.*term*, starting from the channel map.
  4. Verify + deepen — get_item promising ids (pass Discord snowflakes as

decimal strings); walk reply chains (message_filters?reference_id=eq.<id>); pull a whole thread (thread_id=eq.<tid>).

  1. Assemble a cited answer — name authors, include Discord/permalink + source links, prefer concrete settings over abstractions.

Paging a big result set — the search response carries has_more, page/pages, and next_offset. When has_more is true, fetch the next page by re-running the same query with --offset <next_offset> — the next offset is given, so do not compute it yourself. total is the ranked pool (~100–300 rows), not the full corpus match count; to dig further than the pool, narrow with --channel/--author/--since/--thread instead of deep offsets.

Ordering — default --sort relevance: score (distinctive tokens in title weigh more than body; approved distillations and parseable workflows float), then recency as tiebreak. Use --sort recent for newest-first.

Let channel flavor guide you — wan_chatter = chat/experience, wan_comfyui = technical/errors, *_gens/*_resources = showcases/files, training_* = training, updates = announcements/essays, daily_summaries = orientation (starts 2024-12-20; before that use topic channels).

Gotchas (the traps)

  • `unified_feed` text search times out (HTTP 500 code 57014) for

message-content ilike AND for multi-word / per-token ORs over the UNION (the derived-view scan exceeds the anon role's 3s statement budget). 57014 = statement timeout — NOT bad data. The pack search executor never touches unified_feed: it queries message_feed, external_resources, and distillations directly with per-token predicates and ranks client-side. Use that executor, or the raw tables, or message_filters.

  • Do NOT filter on `unified_feed.metadata` jsonb paths — same timeout. Read

the fields from result rows instead, or filter the source columns.

  • Rank with `reaction_count`, not `reactions` — reactions is active-only

(~7% of messages); reaction_count is the historical total (~16%) and the reliable popularity signal.

  • Snowflakes are strings at the JSON boundary (author_id,

reference_id, thread_id, guild_id). item_id and cite item_id too — never send them as JSON numbers.

  • `content_type` on attachments is sparse (~3–5%) — infer type from the

filename extension; cs filters by content_type only find typed ones.

  • `channel_name` is not unique — multiple channels can share a name; use

channel_id for exactly one.

Reference

Channel map

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/banodoco/hivemind/docs/badge)](https://verified-skill.com/skills/banodoco/hivemind/docs)

Something wrong with this skill or its page? Tell us.