Help us improve
Share bugs, ideas, or general feedback.
From clotho
Use when the user asks to 'extract from transcript', 'find decisions', 'identify risks', 'what action items', 'extract insights', 'process meeting notes', or wants AI-assisted extraction of structured entities from unstructured content.
npx claudepluginhub colliery-io/clotho --plugin clothoHow this skill is triggered — by the user, by Claude, or both
Slash command
/clotho:extractionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Clotho's extraction pipeline runs within Claude sessions — you ARE the extraction engine. When a user provides a transcript or meeting notes, analyze the content and create structured entities.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Clotho's extraction pipeline runs within Claude sessions — you ARE the extraction engine. When a user provides a transcript or meeting notes, analyze the content and create structured entities.
Look for these patterns in transcripts:
| Speech Act | Signal Patterns | Create As |
|---|---|---|
| Commit | "I'll do X", "I can take that", "Let me handle" | Task (speaker owns) |
| Decide | "We're going with X", "Decision is Y", "We've decided" | Decision |
| Risk | "The concern is...", "Risk here is...", "I'm worried about" | Risk |
| Block | "We're stuck on...", "Blocked by...", "Can't proceed until" | Blocker |
| Question | "We need to figure out...", "Open question:", "How do we..." | Question |
| Insight | "What we learned...", "Key takeaway...", "Interesting finding" | Insight |
| Delegate | "Can you take this?", "Assigning to X" | Task (target owns) |
| Request | "I need X from you", "Can you get me..." | Task (inbound) |
| Follow-up | "Let's schedule a meeting about...", "Set up time for...", "Let's follow up on...", "Circle back on..." | Task |
| Next steps | "Next steps:", "Action items:", "By next week we need..." | Task(s) |
Check the extraction queue:
clotho_list_unprocessed()
If there are multiple unprocessed transcripts, ask the user:
"There are N unprocessed transcripts. Want to process them one at a time, or all at once?"
Default to one at a time for 5+ transcripts — batch extraction tends to overwhelm with questions.
Check for .clotho/extraction-config.toml in the workspace. If it exists, read it for skip patterns:
[extraction]
# Transcripts matching these title patterns are auto-skipped (glob syntax)
skip_titles = ["*1:1*", "*sport*", "*standup - DS Infra*"]
# Mark skipped transcripts as processed so they don't reappear in the queue
mark_skipped = true
When processing, if a transcript title matches any skip pattern, skip it and (if mark_skipped = true) auto-mark as processed. Report skipped items in the summary.
If the user tells you to skip certain meeting types during the session, offer to add them to the config:
"Want me to add 'sport' to your extraction skip patterns so it's automatic next time?"
Read the transcript — Capture it first if not already in the workspace:
clotho_capture(file_path: "transcript.md", entity_type: "transcript", title: "Sprint Planning")
Identify speech acts — Read through the content and identify each speech act.
Create entities — For each identified item:
clotho_create_entity(entity_type: "decision", title: "Go with microservice approach")
clotho_create_entity(entity_type: "risk", title: "Database migration complexity")
clotho_create_entity(entity_type: "task", title: "Write migration RFC")
Create relations — Link extracted entities back to the transcript. Use batch tool for efficiency:
clotho_batch_create_relations(relations: [
{"source_id": "<decision_id>", "relation_type": "extracted_from", "target_id": "<transcript_id>"},
{"source_id": "<task_id>", "relation_type": "extracted_from", "target_id": "<transcript_id>"},
{"source_id": "<task_id>", "relation_type": "belongs_to", "target_id": "<program_id>"}
])
Link people — Create Person entities and MENTIONS relations:
clotho_create_entity(entity_type: "person", title: "Alice")
clotho_batch_create_relations(relations: [
{"source_id": "<transcript_id>", "relation_type": "mentions", "target_id": "<person_id>"}
])
Mark processed — After extraction is complete:
clotho_mark_processed(entity_id: "<transcript_id>", process_name: "extraction")
Before extracting, load the ontology for the relevant program(s):
clotho_get_ontology(entity_id: "<program_id>")
The ontology tells you what to look for AND what to ignore:
If a signal doesn't match any program's keywords or signal types, flag it for the user rather than auto-creating:
"I found a potential risk about 'supply chain delays' but it doesn't match any program's ontology. Should I create it, or is it noise?"
To add ignore rules:
clotho_update_ontology(entity_id: "<program_id>", add_ignore: "office logistics, catering, parking")
MANDATORY: Before creating any entity, search for existing matches:
clotho_search(query: "<abstract theme>")
If a match exists, add an extracted_from relation to the existing entity instead of creating a duplicate. See the debrief-processor agent for the full search-before-create protocol.