/install javis-brainstorming
Brainstorming
Turn a brainstorm-worthy voice/keyboard unit into a generic to-do card whose
prompthands off to Claude'scontent-brainstormingskill. The skill does no brainstorming itself — it detects a discernible goal/request in a transcript, composes a ready-to-paste Claude prompt, and writes atype="todo"card. iOS renders that card generically (calendar-style, Confirm / Discard) in the Calendar tab; Confirm copiespayload.promptto the clipboard so you can paste it into Claude. Fetch the last 24 hours of transcript data by default.
When to use
- "brainstorm this"
- "整理成簡報" (organize this into a presentation)
- "帮我腦力激盪" (help me brainstorm)
- A natural ask like "help me organize my thoughts on X" or "turn this into a deck".
- Automatically, when the javis-server session dispatcher auto-runs this skill after a completed unit matches the
brainstormroute — no approve-to-run card (see "How this skill is invoked").
Core commands
\x3CuserId>is optional. Omit it and it defaults toself. Each HiJavis user runs in their own openclaw container, soselfis correctly isolated; the gateway token (not the userId) authenticates every server call.
# Step 1 — fetch recent transcripts as JSON (the agent reads this and composes a card)
node scripts/brainstorming.js fetch [--hours N] [--limit N]
# Step 1 (dispatcher run) — fetch ONE completed unit (the auto-run dispatcher unit)
node scripts/brainstorming.js fetch --session \x3CsessionId> [--hours N] # audio unit
node scripts/brainstorming.js fetch --kbd-input \x3CinputId> [--hours N] # keyboard unit
# Step 2 — push: pipe the composed to-do-card JSON to stdin; dedups (seen) + writes type=todo pending
echo '\x3Ctodo-card-json>' | node scripts/brainstorming.js push
Workflow
A two-step pipeline mirroring calendar-extractor: the script does the I/O
(fetch transcripts, dedup, write the card), the agent/LLM does the reasoning
(decide there is a brainstorm-worthy unit, extract its goal/request, and compose the
hand-off prompt). Nothing is hardcoded — the agent reads the fetched transcript and
emits one to-do-card JSON object.
-
Fetch —
node scripts/brainstorming.js \x3CuserId> fetchissuesGET http://javis-server:8000/api/transcripts/recent?since=…&limit=…with theOPENCLAW_GATEWAY_TOKENbearer and prints{ "reference_time": LOCAL-wall-clock (zoneless, in tz), "reference_date": "YYYY-MM-DD", "reference_weekday": "Thursday", "reference_time_utc": ISO8601, "tz": IANA, "sessions": [ { session_id, started_at, ended_at, transcript, source } ] }. If fetch fails, returns invalid JSON, or yields zero sessions, output nothing and do not push; report the failure only if the user asked for a diagnostic. -
Compose — the agent reads that JSON and decides whether there is a discernible goal and request. If there is none, emit no card (silence is a valid detector outcome). If there is, produce one to-do-card JSON object:
{ "title": "Intro Javis to the OpenClaw community", "goal": "introduce Javis to the OpenClaw community, for non-engineer users", "subtitle": "Brainstorm · 2 sessions", "request": [ "an attention hook", "a step-by-step demo/onboarding flow", "an explanation for the open-source community", "concise skill examples & use cases" ], "key_points": ["…optional notes the agent pulled from the transcript…"], "source_refs": ["\x3Csession_id>", "\x3Csession_id>"] }title,goal,request[], andsource_refs[]are the bracketed fields. Thepushscript composes the ready-to-pastepromptfrom them using the fixed template below (the agent may instead supply an explicitpromptfield to override it; if absent, the template is used).icondefaults to🧠;subtitledefaults toBrainstorm/Brainstorm · N sessions. -
Push — pipe the card JSON into
node scripts/brainstorming.js \x3CuserId> push. The script:- dedups against per-user local state (
data/users/\x3CuserId>.json→seenmap, 30-day TTL), - validates + writes the new card to
POST /api/skill/datawithtype="todo",merge="upsert",status="pending", andpayload = { icon, title, subtitle?, prompt, source_refs[] }(icon/title/prompt required) — seereferences/todo-card-contract.mdfor the general contract, - optionally posts a tiny
POST /api/agent/pushnudge so the user notices the new card in the Calendar tab.
- dedups against per-user local state (
The ready-to-paste prompt (the per-skill payload.prompt)
push composes this from the card's bracketed fields; the rest is literal. This is
what Confirm copies to the clipboard:
I want to \x3CGOAL — e.g. introduce Javis to the OpenClaw community, for non-engineer users>.
Source: my Javis voice note(s), session_id(s): \x3Cid…>. Before we start, pull the full
transcript via the javis_mcp connector (get_transcript_tool / search_transcripts_tool).
Please produce:
- \x3CREQUEST item 1 — e.g. an attention hook>
- \x3CREQUEST item 2 — e.g. a step-by-step demo/onboarding flow>
- \x3CREQUEST item 3 — e.g. an explanation for the open-source community>
- \x3CREQUEST item 4 — e.g. concise skill examples & use cases>
Run the content-brainstorming flow: ask me clarifying questions one at a time,
inventory the source material, then produce a structured brief before drafting.
This closes the loop: the openclaw brainstorming skill hands off to the Claude-side
content-brainstorming skill, with javis_mcp pulling the source transcript.
How this skill is invoked
This skill has two triggers (dispatcher auto-run and manual).
- Dispatcher auto-run (automatic). When a unit of input completes (an audio
session ends or a keyboard input is saved), the javis-server session dispatcher
classifies the transcript. If it finds brainstorm-worthy content (ideation,
"help me organize", presentation/deck planning) and an enabled
brainstormroute matches, the server claims run-once (DispatchRouteExecuted (user, unit, route)) and AUTO-RUNS this skill directly — there is no approve-to-run proposal card. It runs in the user's container with a prompt of the formRun /brainstorming for \x3Cunit>. Deliverable: …, where the deliverable text is the dispatcher's classification carried as an advisory HINT. The agent parses\x3Cunit>(audio:\x3Csession_id>orkbd:\x3Ckeyboard_input.id>), runsfetch --session \x3Cid>/fetch --kbd-input \x3Cid>, composes the card, and pushes it. The human gate is not running the skill — it is Confirm/Discard on the produced to-do card. The skill does not self-gate — the server owns run-once. - Manual ("brainstorm this"). On demand, the agent runs the windowed
fetch(last 24h by default) → composes → pushes. Repeating the ask re-runs composition on the window; theseenmap still prevents writing the same card twice.
The route contract the javis-server team must satisfy is declared in this file's
metadata.routes block and documented in references/todo-card-contract.md (which
also carries the general to-do card contract shared by all to-do-emitting skills).
Notes
- Runtime dependencies — the scripts use Node 18+ built-ins only (
fetch,fs,path); nonpm installis needed for the script runtime. - Does no brainstorming. This skill detects + composes + writes a card. The actual
brainstorming happens on Claude when the user taps Confirm (which copies
payload.prompt) and pastes it into the interactivecontent-brainstormingflow. - The card is written PENDING. The row mirrored to
/api/skill/datacarriesstatus: "pending"; iOS renders it dashed (purple accent) in the Calendar tab with Confirm · Discard. Confirm copiespayload.promptto the clipboard and marks the row confirmed; Discard deletes it. There is no approve-to-run proposal card. - Dedup is local-state-authoritative. The container's gateway token can WRITE to
/api/skill/databut cannot read it back (GET /api/skill/datarequires a Clerk JWT), so novelty is decided by the localseenmap ({ "\x3Cdedup_key>": "\x3Cts>" }indata/users/\x3CuserId>.json, 30-day TTL-pruned); the server write is a best-effort mirror. The to-dodedup_keyistitle|hash(goal)— re-brainstorming the same unit toward a new goal is a genuinely new card. - Timezone: there is no prefs file. tz resolves in order: the
tzfield on the fetch payload → theTZenvironment variable → the system zone. To-do rows carry no date (start_at/end_atabsent), so the anchor is informational only — it lets the agent resolve "today" coherently if the goal references it. - The shared write side.
scripts/todo-card.jsis the reusable Layer-1 helper: any future skill canrequireit to build + POST atype="todo"card without re-implementing the contract.brainstorming.jsis its first consumer. - User IDs only allow letters, digits,
-,_(path-traversal guard indata.js).
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install javis-brainstorming - 安装完成后,直接呼叫该 Skill 的名称或使用
/javis-brainstorming触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Brainstorming 是什么?
Creates a to-do card with a ready-to-paste prompt that hands off recent transcript data to Claude’s content-brainstorming skill for idea organization. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 38 次。
如何安装 Brainstorming?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install javis-brainstorming」即可一键安装,无需额外配置。
Brainstorming 是免费的吗?
是的,Brainstorming 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Brainstorming 支持哪些平台?
Brainstorming 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Brainstorming?
由 SamuelWei(@samuel-wei)开发并维护,当前版本 v0.1.1。