acp-router
Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi,…
Ingest meeting transcripts from any recorder into Knowledge with attendee enrichment, source notes, supported decisions and commitments, and verification of substance and sequence. Summary-only input is not a verified meeting ingestion.
Claude Code
$ npx -y skills add openclaw/openclaw --skill knowledge-meeting-ingest --agent claude-code
Codex
$ npx skills add openclaw/openclaw --skill knowledge-meeting-ingest -a codex -y
Cursor
$ npx skills add openclaw/openclaw --skill knowledge-meeting-ingest -a cursor -y
Gemini CLI
$ npx skills add openclaw/openclaw --skill knowledge-meeting-ingest -a gemini-cli -y
GitHub Copilot
$ npx skills add openclaw/openclaw --skill knowledge-meeting-ingest -a github-copilot -y
OpenCode
$ npx skills add openclaw/openclaw --skill knowledge-meeting-ingest -a opencode -y
Windsurf
$ npx skills add openclaw/openclaw --skill knowledge-meeting-ingest -a windsurf -y
name: knowledge-meeting-ingest description: Ingest meeting transcripts from any recorder into Knowledge with attendee enrichment, source notes, supported decisions and commitments, and verification of substance and sequence. Summary-only input is not a verified meeting ingestion.
Turn one transcript into a sourced meeting page, updated entity profiles, and structured claims, then verify them. Read a reference only when its step needs it:
through its plugin
claims, not facts.
real signal; leave a speaker unresolved only when there is none.
profile and an `attended` edge whose body is their source note. Invite-list-only names get neither.
about gets a page (found or created), a link from the meeting, and a `discusses` edge (meeting → entity) whose body is its source note. Passing mentions don't. Entity pages get no Timeline line; their Timeline is derived.
commentary.
spread to other pages.
Get the complete transcript. Empty, summary-only or in-progress input fails this step: report it. If the user only wants notes saved, use `knowledge-capture` and say the meeting ingestion is not complete.
Normalize in working context to: source, source_id, title, date, time, duration, attendees (source claims), ordered segments with `speaker`, `speaker_raw` and `text`, source summary, URL. Unknown values are null. Recorder-specific handling ends here; every recorder runs the same steps after this.
Retain the original export and the transcript ([sources](references/sources.md)). Normalized text is a labeled derivative. Report acquisition, retention and publication separately, with real counts ("9/16 originals retained").
Read the normalized transcript once, in sections of about 150 lines. After each section, append to a working digest file: the line range, who spoke, topics, candidate decisions, commitments and facts with exact line citations, quote candidates, and new proper nouns. Later steps draft from the digest. Return to the transcript only for specific line ranges (to check wording or a quote), never for a full reread.
**Done when:** complete transcript retained; evidence receipts in hand; digest covers every line.
Check for a multi-meeting recording, an existing page for this meeting, and the speaker map ([speakers](references/speakers.md)).
**Done when:** each real meeting has its segment range; duplicates found; every speaker label is mapped or explicitly unresolved, with basis.
Check every proposed assertion against the transcript and earlier Knowledge about the same entity.
spelling; otherwise write it as `Name (unverified spelling)` and give it no page or link.
Transcript support is not enough on its own. Also check:
Established content wins by default. Don't write the conflicting claim into profiles; keep it on the meeting page with both citations and list it in the report for the user to resolve. Override only with explicit, verbatim support, and still report the change.
both have started the same project; a company founded last year wasn't acquired five years ago.) An impossibility usually means a garble.
the surprise as a question; don't explain it away.
Inferences and uncertain identities stay labeled on the meeting page and never enter profiles, timelines, metadata or relationships as fact.
**Done when:** each claim is marked publish, label-as-uncertain or withhold.
Order: meeting page → entity pages → claims and edges → link edits. Batch related records ([publish](references/publish.md)).
`knowledge-entities`' SKILL.md: it resolves the entity, decides whether it gets a page, and writes the profile and source note. Its references with the same names as this skill's are identical copies; use the ones you already read and don't reread
OpenClaw is an open-source AI assistant that runs on your own computer and meets you in the channels you already use: Discord, iMessage, Slack, Teams, Telegram, WhatsApp, and 20+ more, plus native apps for macOS, iOS, Android, Windows, and Linux.
Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi,…
Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or…
Present hosted widget documents on a connected macOS panel and control panel visibility or navigation.
Use when asked to open, run, test, or show an app in Crabbox, including native desktops, web previews, and computer use on a…
Use the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
Discord messaging workflows through OpenClaw's message tool.
Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid…
Design and build AI agents for any domain. Use when users: (1) ask to "create an agent", "build an assistant", or "design an AI…
Search and install agent skills from ClawHub, the public skill registry.