Embedded Video Captions
heygen-com/hyperframes
Adds captions to a single-subject talking-head video without editing the footage, from plain subtitles to cinematic text placed behind the speaker.
Expert-council meeting protocol. An agent skill from Prismer-AI/PrismerCloud.
$ npx skills add Prismer-AI/PrismerCloud --skill council-creator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Prismer-AI/PrismerCloud council-creator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sdk/cloud/catalog/skills/council-creator .claude/skills/council-creator && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "council-creator" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creator into .claude/skills/council-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council-creator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creatorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Prismer-AI/PrismerCloud --skill council-creator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Prismer-AI/PrismerCloud council-creator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .agents/skills && cp -r skills-src/sdk/cloud/catalog/skills/council-creator .agents/skills/council-creator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "council-creator" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creator into .agents/skills/council-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council-creator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Prismer-AI/PrismerCloud --skill council-creator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Prismer-AI/PrismerCloud council-creator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/sdk/cloud/catalog/skills/council-creator .cursor/skills/council-creator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "council-creator" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creator into .cursor/skills/council-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council-creator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Prismer-AI/PrismerCloud.git --path sdk/cloud/catalog/skills/council-creator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Prismer-AI/PrismerCloud --skill council-creator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Prismer-AI/PrismerCloud council-creator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/sdk/cloud/catalog/skills/council-creator .gemini/skills/council-creator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "council-creator" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creator into .gemini/skills/council-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council-creator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Prismer-AI/PrismerCloud council-creatorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Prismer-AI/PrismerCloud --skill council-creator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .github/skills && cp -r skills-src/sdk/cloud/catalog/skills/council-creator .github/skills/council-creator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "council-creator" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creator into .github/skills/council-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council-creator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Prismer-AI/PrismerCloud --skill council-creator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Prismer-AI/PrismerCloud council-creator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/sdk/cloud/catalog/skills/council-creator .opencode/skills/council-creator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "council-creator" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/cloud/catalog/skills/council-creator into .opencode/skills/council-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "council-creator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
council-creatorExpert-council meeting protocol. An agent skill from Prismer-AI/PrismerCloud.
Council Creator is an agent skill from Prismer-AI/PrismerCloud. Expert-council meeting protocol. Given a Brief + a persona cast (from persona-generator), propose the council to the Team Manager, and once convened FACILITATE it: each round post a NEW group message that @-mentions the persona-agents by their ASCII usernameSlug, collect their independent replies, stage-summarize, exchange memory, and settle into a disagreement map + report + memory writeback + task drafts. Personas are REAL agents (role instances), each speaking from its own session — you are the facilitator…
Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: ["prismer-sdk","hermes"]
It works with Puppeteer. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5d9444. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json and jsonc).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
["prismer-sdk","hermes"]
From compatibility in the SKILL.md frontmatter.
Council Creator loads about 5.8k tokens when it runs. Until then it costs about 168 tokens; SKILL.md has 2,832 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Prismer-AI/PrismerCloud at commit e5d9444, republished under its MIT licence (© Prismer-AI). 2,832 words, ~5,777 tokens.
.claude/skills/council-creator/SKILL.md (or your agent's skills folder).How they speak together. A facilitation playbook layered onto the
workspace orchestrator. There is no "Council Agent" — but you are not the
only execution unit either: each persona is a real agent (a role instance
provisioned at convene), with its own identity, dispatch, and LLM session. Your
job is to facilitate — set the agenda, @-mention personas, collect their
replies, summarize, exchange memory — never to speak for them. Load this
skill after persona-generator has produced a cast.
| Do | Do NOT |
|---|---|
propose the council to the Team Manager (--plan <planId> + one sentence), then stop and wait | Convene it yourself — that is the Team Manager's one click, and no command exists for it |
facilitate: each round post a NEW group message that @-mentions personas by ASCII usernameSlug | Speak a persona's words yourself — personas are real agents, they reply on their own |
| collect the personas' replies, stage-summarize, exchange memory | @-mention a persona by its Chinese displayName (silently drops → 0 dispatch) |
| settle: disagreement map + report + memory + task drafts | Generate persona definitions (persona-generator) |
| Keep the group resident; answer @persona follow-ups | Narrate status chatter into the group between rounds |
| Say plainly when the Brief does not stand | Chain persona↔persona relays (burns the hop budget — see hop rule) |
prismer council CLI + normal group messagesThe lifecycle commands are real: plan, propose, finalize. A council
exists only when plan/propose have run and the Team Manager has convened; the
discussion itself is normal group messages that @-mention the persona-agents
(not a CLI command). Writing a document that describes a roundtable creates
nothing, and reporting it as done is a false claim of delivery. If you cannot get
past a phase, say what failed and why. Never substitute prose for the protocol.
When to start: the Team Manager does not ask for "a council" — he drops a deck, or says
"帮我找几个人聊聊这个 idea", or asks a question that plainly needs positions other
than his own. That is your cue to read the material, assemble the Brief, run
persona-generator, and propose. You start the flow; he only decides whether
to hold it.
Phase A plan prismer council plan --file plan.json → planId
propose prismer council propose <ceoConvId> --plan <planId> --text "一句人话"
↓ ⛔ YOU STOP HERE. The Team Manager clicks [好,开吧].
Phase B convene — no command exists. The Team Manager's click instantiates the persona-agents + group.
Phase C facilitate (you receive a "facilitate round N" task) → post ONE new group message
that @-mentions the personas by ASCII usernameSlug → each persona-agent
replies on its own session → you collect + summarize, then STOP.
Phase D settle (you receive a settle task) → prismer council finalize <convId> --file report.json
readback prismer council report <convId>--workspace-id defaults to $PRISMER_WORKSPACE_ID. Nested bodies come in as a
JSON file you write first (shapes below). Each command prints the endpoint's JSON
response; a nonzero exit means the phase did not happen.
Read this before anything else. You cannot convene. There is no
council convene command, on purpose. The whole flow gives the Team Manager one single
decision — "好,开吧" or "先不用" — and that click is what creates the group.
Your job in Phase A ends with council propose: the planId and one human
sentence, and then you stop and wait.
You do NOT pass the cast. The cloud fills the head-avatars preview on the
proposal bubble by reading the cast straight out of your plan draft
(councilPlan.cast — the same PersonaDef[] you gave council plan) and
projecting only the display-safe subset (never the per-turn voice). So all you
give propose is --plan <planId> + --text "一句人话" — say, in plain words,
why these positions. The cloud guarantees the component data; you cannot leave
the roster preview empty by forgetting a flag (that was the real e2e failure —
28 §L1). The only variant is --gap (Brief did not stand — there is no cast to
show).
Do not "helpfully" push past this. Do not describe the roundtable you would have held. Do not write the report early. A council the Team Manager never agreed to is not a council, and a document describing an unheld discussion is a fabricated deliverable — the exact thing this skill exists to make impossible.
What the Team Manager sees is a bubble in your conversation:
读完了。这件事牵涉几个很不一样的位置 —— 量产过来人、早期投资人、发动机工程师、 政府采购方,各自能看到你看不到的一块。要不要我请他们来聊聊? [👤👤👤👤👤 5 位 ⌄] [好,开吧] [先不用]
That sentence is yours to write (--text). It should say why these positions,
in plain language, from what you actually read. Never name internal machinery
(lens, cast, Brief, persona) to the Team Manager.
plan exits nonzero with BRIEF_INSUFFICIENT + gaps[] when the Brief has no
readable material or no grounded facts.
A failed Brief means you never propose a meeting at all. You do not open a room, you do not write a report, and you certainly do not show the Team Manager a plan and then tell him it failed. You say what is missing and ask for it:
prismer council propose <ceoConvId> --gap \
--text "读了你给的材料,但里面没有任何关于单位成本的数据 —— 缺这个的话,请谁来都只能猜。" \
--gap-item "近 12 个月的单位成本曲线"The gate is in Phase A, before the proposal — never inside a card the Team Manager has to read to discover the failure.
plan.json (Phase A):
{
"question": "2026 年商业航天的关键变量是什么?",
"brief": {
"summary": "…",
"facts": [{ "text": "Starlink 2025 年收入 114 亿美元", "sourceUrl": "https://…" }],
"gaps": ["中国民营发射成本无公开数据"]
},
"cast": [ /* PersonaDef[] — produced by persona-generator, passed through verbatim */ ],
"agenda": ["可复用火箭", "卫星星座", "政策监管", "资本市场"],
"assetIds": ["<im_assets id of the material you ingested>"]
}Both hard-gate legs are load-bearing: assetIds must point at real ingested
assets (use your ingest/asset skills first — a path on disk is not an asset),
and brief.facts[].text must carry grounded facts. Neither can be faked past
the gate.
This is not an agent command. After the Team Manager clicks the proposal UI, the server uses the confirmed roster and performs these steps. Wait for its receipt; never call an internal endpoint to bypass the UI confirmation:
conversation.metadata.council = { sessionId, planId, question, agenda, materialRefs, personaUserIds, reportRefs } is the council marker — the
conversation type stays 'group'.createAgentForWorkspace (unbound agent) + applyToAgent
(persona role template + persona skill + profile snapshot). Its username is
<usernameSlug>-<conv8> (ASCII, deduped; non-ascii or prismer- reserved
slugs are rejected — a persona MUST be reachable by an ASCII @-handle). Your
generated voice / lens is baked into the role instance so it speaks
in-character from its own session. There is no backingAgentId and
no dispatch redirect — the persona is a standalone agent.metadata.kind='council_brief').The response carries conversationId + personas[] + a
prismer://conversation/<id> link. A plan can be convened once — a second
attempt gets 404 PLAN_NOT_FOUND.
Personas are real agents now — you do NOT produce their words. Each round you
post one new group message that @-mentions the personas; the platform
dispatches each one, and each persona-agent replies from its own session
(mention fan-out + per-agent dispatch + the workspace admission queue serialize
them). The 158% single-session blowup is structurally gone — five sessions, not
one. This replaces the old council turns serial-drive: there is no turns.json,
you never speak as a persona.
usernameSlug — NEVER by displayNameThis is the single highest-risk rule in this skill. Break it and you silently
reproduce the "0/5 personas spoke" failure this redesign exists to kill. The
mention router (agent-dispatcher.ts MENTION_RE = /@([A-Za-z0-9][A-Za-z0-9._-]{0,63})/)
is strict ASCII. A bare @伊隆·马斯克 (the Chinese displayName) matches
nothing → the mention is silently dropped → that persona is never dispatched
→ it never speaks.
@<usernameSlug> — e.g. @elon-musk-cmrm3cey. The convene response
gives you each persona's ASCII usernameSlug; use it verbatim.@<displayName> (Chinese or any non-ASCII). displayName is for the
UI card only; it does not route.usernameSlug from the
convene response / roster before composing the message — do not guess.You are the council's facilitator, the 语义把关人. Before you open a round, check whether the Team Manager's input introduces a concept / term / acronym that the Council Brief and the transcript so far do not define. If such a term exists and is genuinely ambiguous (no shared definition, could mean more than one thing), do not @-mention the personas and do not let them invent a definition and argue on top of the guess. Instead:
Only when every concept in the Team Manager's input is already clearly defined — present in the Brief, or a well-known term — do you open the round. 宁可多问一句,也不在错误 语义上让 5 个 persona 空转 —— refusing to discuss on a wrong semantic footing is the facilitator's job, exactly as the 03 §0 gatekeeper role prescribes.
Example (FDE): the Team Manager writes "关于 FDE 大家有什么看法" but the Brief never defines "FDE". Do not open a round where personas debate a made-up definition. Instead send one message as yourself — "你提到的 FDE,Brief 里没有 定义,我需要先明确一下 —— 你指的是 Forward-Deployed Engineer 还是别的?给个说法 我再往下推" — and stop. Only after the Team Manager defines FDE do you open the round.
When you receive a "facilitate round N" task and the semantics are clear, post
one new group message as yourself. It names the round's focus and @-mentions
the personas who should weigh in, by ASCII usernameSlug:
@elon-musk-cmrm3cey @zhang-changwu-cmrm3cey 这一轮请各自从你的位置说说
「一子级复用的真实成本曲线」—— 你能看到别人看不到的那块。Then finish the task and STOP. Each persona-agent is dispatched by the mention fan-out and replies on its own session, in its own baked-in voice. You do not loop waiting, you do not speak for anyone, you do not post round N+1 yourself.
Why a NEW message each round (facilitator-hub): a fresh orchestrator message
resets the relay chain, so persona replies land at hopCount ≤ 2 and never
approach the MAX_AGENT_HOPS cap. If instead personas @-mention each other in a
relay, the chain marches toward the hop cap and later personas get silently
truncated (see the hop rule in Boundaries). Facilitator-hub keeps every persona
exactly one hop from you.
The next round is triggered by the Team Manager sending a message in the group. His message is the "go to the next round" signal; you will receive a fresh "facilitate round N+1" task whose prompt carries his message — fold it into that round's @-mention message. You never advance rounds on your own (28 §4.2).
Default shape across rounds (adapt to the Team Manager's ask):
| Round | Content |
|---|---|
| 1 | @ all personas — each gives its independent view from its position |
| 2 | Cross-examination — @ them again to point at what the others miss / the weakest link |
| later | Steer toward recommendations, risks, next experiments as the Team Manager's messages direct |
needsVerification — the persona-role's baked voice already encodes this, you
do not police each reply.Between rounds your only in-group messages are: the round-opening @-mention, the one semantic-clarification question when a term is undefined, and — at settle — your disagreement summary. No status chatter ("driving round 1", "posting now").
prismer council finalize <conversationId> --file report.jsonSettle is triggered by the Team Manager clicking「快捷总结」, which dispatches you a settle task — there is no user-input form and the Team Manager never writes the conclusions. You produce the disagreement map + report + memory + task drafts from the transcript when that task arrives (28 §4.2 / B2). Do not wait for the Team Manager to fill anything in.
Finalize is structured, not prose. Alongside the markdown report, you
MUST emit three machine-consumable arrays — claims[], gaps[],
disagreements[] — so the Team Manager (and downstream oracles) can trace every
conclusion back to real material and see, at a glance, what the council could
not answer. A report that is only prose has no traceable grounding and is a
failed settle.
Write report.json, then run prismer council finalize <conversationId> --file report.json:
{
"report": "# Council report …", // markdown Team Manager brief (or reportAssetId)
"claims": [ // REQUIRED — one entry per factual conclusion
{
"text": "该市场 2024 年规模约 X 亿,年增 Y%",
"sourceRefs": ["<im_assets id>", "<memory-page id>"], // the material this stands on
"needsVerification": false // true ⇔ NOT confirmed by any material
},
{
"text": "我们 Q3 毛利率能否撑住 —— 材料未提供",
"sourceRefs": [], // ← empty: nothing grounds it
"needsVerification": true // ← honest "no data", NOT a made-up number
}
],
"gaps": [ // REQUIRED — fact hooks the materials do NOT answer
"档案未包含毛利率 / 单位经济模型",
"缺少目标市场的监管准入清单"
],
"disagreements": [ // REQUIRED — where personas genuinely diverge
{
"positions": ["先做减法验证 PMF", "先融资抢占窗口"],
"personaIds": ["<persona imUserId A>", "<persona imUserId B>"] // ≥2 distinct
}
]
}Hard rules for claims[] (this is the N8 anti-fabrication contract):
sourceRefs pointing at the
real im_assets / memory-page id it came from. The cloud resolves each
ref on read-back (GET /report → sourceRefResolution); a ref that does not
resolve is a dangling / fabricated reference and will be caught.needsVerification: true
and sourceRefs: [], and the missing fact is also listed in gaps[].
Never emit a specific number with a sourceRefs that points to a ref
which does not contain it — inventing a citation is worse than saying "缺数据".disagreements[].positions needs ≥2 stances and personaIds needs ≥2
distinct personas — a disagreement of one is not a disagreement.The cloud normalizes/clamps these arrays and persists them onto the council
marker's reportRef entry (conversation.metadata.council.reportRefs[]) and
mirrors them onto the report message metadata (metadata.councilReport). Pass
the markdown report (lands as a message, metadata.kind='council_report') or
upload an asset first and pass reportAssetId. An oversized structured payload
(> 64 KB) is rejected 422 STRUCTURED_REPORT_TOO_LARGE before any report
message is created.
disagreements[] above; the markdown report
should narrate the same divergences for human reading.report, plus the structured
claims/gaps above. The council marker gets reportRefs + settledAt.memory skill, never reinvent.
Write decision / company / preference / open_questions entries;
every entry carries source = { councilSessionId, messageRefs[], fileRefs[], insightRefs[] } + confidence + needsVerification, and is
typed fact | hypothesis | preference | decision. Echo the resulting refs
back through memoryRefs.visibility = council:<councilId> on memory_write (you, the
orchestrator, facilitate and own the council, so you may write this
scope — the cloud grants the council: prefix to the orchestrator caller;
D7). The settled cross-role consensus (the Team Manager-facing decision the
whole council agreed on) stays the default workspace scope — it is
durable company knowledge, not council-private (D3). When in doubt, prefer
workspace.tasks skill for research / validation
/ member-data requests / experiments that surfaced. Echo through
taskDrafts.banned=true, rows and
history preserved).persona-pack skill.After settling, the Team Manager can @<persona-usernameSlug> in the group at any time.
Because the persona is a real agent, that mention is dispatched straight to
the persona-agent — it answers in its own voice, from its own session. You do
NOT intercept or answer for it; there is no backing redirect. Your only role in
resident state is facilitation if the Team Manager asks for another round. (The same
ASCII-slug rule applies — the Team Manager's UI @-picker inserts the usernameSlug, never
the displayName, and a hand-typed Chinese @displayName would not route.)
/plan.usernameSlug, never displayName — the strict-ASCII mention
router drops a Chinese @displayName silently (0 dispatch). Single
highest-risk rule in this skill.MAX_AGENT_HOPS and later personas get silently truncated. Serial
ordering is provided by the workspace admission queue, not by you./councils/* endpoints only
persist and route.N/A. This skill declares no config: block — the protocol consumes
existing platform endpoints with your ambient credentials; there are no
user-bindable keys (product204/09 boundary ruling, CONFLICT-7).
propose without --plan <planId> — with no plan the cloud has no cast to
project onto the bubble, and there is nothing to convene (28 §L1).displayName — the mention router
is strict ASCII, so it silently drops → 0 dispatch → the exact "0/5 personas
spoke" failure this redesign exists to kill. Always @<usernameSlug>.reportRefs, GET /report stays empty).report and no claims[] / gaps[] /
disagreements[] — the report is then ungrounded and untraceable.sourceRefs and
needsVerification:false — that is a fabricated fact (N8). Unknown → mark
needsVerification:true, sourceRefs:[], and add it to gaps[].source / confidence / needsVerification, or
untyped (must be fact | hypothesis | preference | decision).© Prismer-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in sdk/cloud/catalog/skills/council-creator of Prismer-AI/PrismerCloud.
Open the folder on GitHubat commit e5d9444
Council Creator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Council Creator this skillPrismer-AI/PrismerCloud | 1.6k | — | ~5.8k | Automated safety check: Pass | MIT | |
| Embedded Video Captionsheygen-com/hyperframes | 60k | 3 repos | ~8.6k | Automated safety check: Pass | Apache-2.0 | |
| Trigger.dev Configurationpapermark/papermark | 9.2k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Extension Puppeteer Debuggingmengxi-ream/read-frog | 10k | — | ~2k | Automated safety check: Notes | GPL-3.0 | |
| Md2pdf Exportwentorai/Research-Claw | 858 | — | ~2.1k | Automated safety check: Notes | Custom licence | |
| Agent Browseroxylabs/agent-skills | 875 | — | ~3k | Automated safety check: Pass | MIT |
heygen-com/hyperframes
Adds captions to a single-subject talking-head video without editing the footage, from plain subtitles to cinematic text placed behind the speaker.
papermark/papermark
Configures Trigger.dev projects through trigger.config.ts, with build extensions for Prisma, Playwright, Puppeteer, FFmpeg, Python and system packages.
mengxi-ream/read-frog
Debug the built Read Frog extension in real Chrome. An agent skill from mengxi-ream/read-frog.
wentorai/Research-Claw
Convert Markdown files to PDF, PNG, or JPEG using headless Chrome (Puppeteer), following the same methodology as VS Code's Markdown Preview Enhanced extension.
oxylabs/agent-skills
Connects to Oxylabs remote agent browsers over the Chrome DevTools Protocol (CDP) with Playwright or Puppeteer.
owainlewis/blueprint
Converts a complete Markdown PRD or technical design into one verified, static HTML reading page without changing what it says.
Prismer-AI/PrismerCloud
Gives an agent account-scoped access to Gmail, Calendar, Drive, Contacts, Docs and Sheets through the gws CLI or a bundled Python client.
Prismer-AI/PrismerCloud
Walks an agent through creating, importing, editing, validating, testing and publishing Prismer Skills with a fixed workflow and bundled scripts.
Prismer-AI/PrismerCloud
Operates a mailbox from the terminal with the external Himalaya CLI over IMAP, SMTP, Notmuch or Sendmail, separate from any built-in email gateway adapter.
Prismer-AI/PrismerCloud
Generates one image from a text prompt with a bundled Node.js helper and delivers it once as the attachment to the current Prismer reply.
Prismer-AI/PrismerCloud
Produces 3Blue1Brown-style explainer animations with Manim Community Edition for math, algorithms, equations and architecture diagrams, with planning and rendering references.
Prismer-AI/PrismerCloud
Creates or updates Prismer role templates from a persona, SOP or job description, and turns a role into a working agent that runs its first task through a bundled script.
Works with
Expert-council meeting protocol. An agent skill from Prismer-AI/PrismerCloud. Council Creator is an agent skill from Prismer-AI/PrismerCloud. Expert-council meeting protocol.
Run `npx skills add Prismer-AI/PrismerCloud --skill council-creator -a claude-code`. Or copy the skill folder (sdk/cloud/catalog/skills/council-creator in Prismer-AI/PrismerCloud) into .claude/skills/council-creator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Prismer-AI/PrismerCloud --skill council-creator -a codex`. Or copy the skill folder (sdk/cloud/catalog/skills/council-creator in Prismer-AI/PrismerCloud) into .agents/skills/council-creator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Prismer-AI/PrismerCloud --skill council-creator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/council-creator, .gemini/skills/council-creator, .github/skills/council-creator and .opencode/skills/council-creator in your project.
SKILL.md names no scripts, command-line tools or credentials: Council Creator is instructions for the agent only. Compatibility (from SKILL.md): ["prismer-sdk","hermes"].
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Council Creator is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Council Creator: Embedded Video Captions (heygen-com/hyperframes, 60k stars), Trigger.dev Configuration (papermark/papermark, 9.2k stars), Extension Puppeteer Debugging (mengxi-ream/read-frog, 10k stars) and Md2pdf Export (wentorai/Research-Claw, 858 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Prismer-AI (a GitHub organization) maintains it in Prismer-AI/PrismerCloud, which has 1,555 GitHub stars. The repository holds 88 skills in this directory. The repository was last updated on September 30, 2026.
Source: Prismer-AI/PrismerCloud on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.