| name | extract-entities |
| description | Umbrella skill for reading a text artefact (chronicle, memo, report, transcript) and extracting candidates to the Ogmios KNOWLEDGE area in one operation. Classifies into 7 entity types: People, Organizations, Places, Events, Concepts, Sources, Research. The user chooses per candidate: create KNOWLEDGE node / archive to vault / skip / save in _inbox.
[WHAT] Complement to atomize-zettel (Cards/Zettelkasten in vault). Atomize works against vault Cards/, extract-entities works against the Ogmios KNOWLEDGE area.
[WHEN] Use when: extract entities, identify people/organizations/places, who is mentioned in this text, mining from text to KNOWLEDGE.
[LANGUAGE] Configurable.
[EXPERTISE] Entity extraction, NER classification, KNOWLEDGE-area routing.
|
| argument-hint | [file path or text] |
| allowed-tools | Read, Grep, Glob, Write, Edit |
Extract Entities
Role: entity extractor that mines text for candidates to the KNOWLEDGE area.
Seven entity types
| Type | Examples |
|---|
| People | Named individuals (with role/affiliation if mentioned) |
| Organizations | Companies, agencies, NGOs, think tanks |
| Places | Cities, countries, regions, sites |
| Events | Specific events with date/location |
| Concepts | Theories, frameworks, technical terms |
| Sources | Books, articles, papers, reports cited |
| Research | Studies, methods, findings referenced |
Workflow
1. Read target
Default: most recent text artefact (chronicle, memo, report, transcript).
Or: explicit file specified by user.
2. Extract candidates per type
Scan for proper nouns, defined terms, citations. Classify each into one of the seven types.
3. Filter
- Remove trivial mentions (one-time, no context)
- Remove already-known entities (search KNOWLEDGE area)
- Keep entities with at least one specific attribute (role, affiliation, date)
4. Present
List candidates per type:
## Extract Entities — for "{filename}"
### People (N)
- {Name} — {role/affiliation}, mentioned in §X
### Organizations (N)
- {Name} — {type}, role in text
### Places (N)
- {Name} — {context}
### Events (N)
- {Name} — {date/location}
### Concepts (N)
- {Term} — {brief def from text}
### Sources (N)
- {Author, year, title} — cited as evidence
### Research (N)
- {Study/method} — referenced
5. Per-row decision
For each candidate the user picks:
- Create KNOWLEDGE node — generates
~/.claude/memory/KNOWLEDGE/{type}/{slug}.md
- Archive to vault — uses the archive-to-vault skill directly
- Skip — not worth saving
- Save in _inbox — temporary save, decide later
6. KNOWLEDGE node format
---
type: {People|Organizations|Places|Events|Concepts|Sources|Research}
slug: {kebab-case}
canonical_name: {Display name}
created: {YYYY-MM-DD}
source: {file path of target}
vault_link:
status: new
---
{One-sentence claim or definition}
{Context from the source text}
- {Fact 1}
- {Fact 2}
- {Direct quote or paraphrase from source}
{Open notes, hypotheses, follow-ups}
Integration
- archive-to-vault — when the user wants the entity in their Obsidian vault
- atomize-zettel — when the entity is a concept worth a Card in the vault
- person-osint / financial-osint — when a Person/Organization needs deeper investigation
Anti-patterns
- Extracting every name (overload)
- Creating KNOWLEDGE nodes without specific attributes
- Duplicating entities already in KNOWLEDGE
- Skipping the user choice step (always interactive)
🎯 COMPLETED: [SKILL:extract-entities] [entities extracted from X]
🗣️ CUSTOM COMPLETED: [SKILL:extract-entities] [Entities extracted]