Agent skill
map-connections
Scan context files to extract entities and relationships into the memory system. Triggers on "who knows who?", "network graph", "map my connections", "extract relationships".
Install this agent skill to your Project
npx add-skill https://github.com/kbanc85/claudia/tree/main/template-v2/.claude/skills/map-connections
SKILL.md
Map Connections
Scan context files to extract entities, relationships, and build a connection graph. This command populates the memory system with structured relationship data from markdown files.
Usage
/map-connections-- Full scan of people/, projects/, context//map-connections --incremental-- Only scan files modified since last run/map-connections [file-path]-- Scan a specific file
Trigger Words
Use this command when the user says:
- "map my connections", "build my network", "scan for relationships"
- "analyze my people files", "who knows who"
- "populate the graph", "extract entities from files"
Workflow
1. Gather Files
Scan these directories for markdown files:
people/- Relationship filesprojects/- Project documentationcontext/- User context files
For incremental mode, check file modification times against the last run timestamp (stored in context/.map-connections-last-run).
Read each .md file in people/, projects/, context/
Track: filename, content, modification time
2. Extract Entities from Each File
For each file, extract:
Entity Name: From filename or first heading
people/sarah-chen.md-> "Sarah Chen" (type: person)projects/website-redesign.md-> "Website Redesign" (type: project)- First
# Headingin file overrides filename-based name
Mentioned Entities: Scan file content for:
- People patterns: Names in "works with [Name]", "client of [Name]", mentions of capitalized names
- Organizations: Company names, "works at [Org]", "employed by [Org]"
- Projects: "working on [Project]", project file references
Attributes (Phase 2): Look for structured data:
- Geography: "based in [City]", "from [City]", city/state mentions
- Role: "CEO of", "founder of", titles in file
- Industry: Keywords like "real estate", "finance", "tech"
- Communities: "member of [Group]", known groups (YPO, EO)
3. Extract Relationships
Identify explicit and implicit relationships. For each relationship, set origin_type honestly based on how you know it. The system automatically caps strength based on origin, so always use strength: 1.0 and let the guards enforce the ceiling.
Extracted Relationships (origin_type: "extracted", ceiling: 0.8) Explicitly stated in the file:
- "works with [Name]" ->
works_with - "client of [Name]" ->
client_of - "reports to [Name]" ->
reports_to - "invested in [Project]" ->
invested_in - "manages [Name]" ->
manages - "partner at [Org]" ->
partner_at - "advisor to [Name/Org]" ->
advisor_to
Inferred Relationships (origin_type: "inferred", ceiling: 0.5) Co-mentioned or contextually implied:
- Two people mentioned in the same file ->
mentioned_with - People in the same project file ->
collaborates_on - Same city + same industry ->
likely_connected - Same organization ->
colleagues - Same community group ->
community_connection
4. Deduplicate and Resolve
Before creating entities:
- Normalize names to canonical form (lowercase, no titles)
- Check if entity already exists in memory via
claudia memory entities search --project-dir "$PWD" - Merge new information with existing entity data
- Track which entities are new vs updated
5. Store in Memory
Use claudia memory batch for efficiency:
claudia memory batch --project-dir "$PWD" <<'EOF'
[
{"op": "entity", "name": "Sarah Chen", "type": "person", "description": "CEO at Acme Corp"},
{"op": "entity", "name": "Acme Corp", "type": "organization"},
{"op": "relate", "source": "Sarah Chen", "target": "Acme Corp", "relationship": "works_at", "strength": 1.0, "origin_type": "extracted"},
{"op": "relate", "source": "Sarah Chen", "target": "Tom Miller", "relationship": "works_with", "strength": 1.0, "origin_type": "inferred"}
]
EOF
For relationship origin_type:
- Explicitly stated in the file ("Sarah is CEO of Acme"):
origin_type: "extracted" - Co-mentioned or contextually implied:
origin_type: "inferred" - User told you directly:
origin_type: "user_stated"
The system automatically caps strength based on origin. You don't need to manually calibrate. Just be honest about how you know, and always use strength: 1.0.
When re-encountering existing relationships, the system strengthens them incrementally (scaled by origin). Repeated evidence builds trust organically.
6. Report Results
Output format:
## Connection Map Results
**Scan completed:** [timestamp]
**Files processed:** [count]
### New Entities ([count])
| Name | Type | Source |
|------|------|--------|
| Sarah Chen | person | people/sarah-chen.md |
| Acme Corp | organization | people/sarah-chen.md |
| Website Redesign | project | projects/website-redesign.md |
### New Relationships ([count])
| Source | Relationship | Target | Origin |
|--------|--------------|--------|--------|
| Sarah Chen | works_at | Acme Corp | extracted |
| Sarah Chen | collaborates_on | Website Redesign | extracted |
| Sarah Chen | mentioned_with | Tom Miller | inferred |
### Inferred Connections ([count])
| Entity A | Entity B | Reason | Origin |
|----------|----------|--------|--------|
| Sarah Chen | Jane Doe | Same city (Palm Beach) + industry (real estate) | inferred |
### Updated Relationships ([count])
| Relationship | Change |
|--------------|--------|
| Sarah Chen -> client_of -> Beta Inc | strengthened (re-encountered, extracted) |
### Summary
- **People:** [count] total ([new] new)
- **Organizations:** [count] total ([new] new)
- **Projects:** [count] total ([new] new)
- **Relationships:** [count] total ([new] new)
---
Relationship Type Reference
| Type | Description | Example |
|---|---|---|
works_with |
Professional collaboration | "Sarah works with Tom on sales" |
works_at |
Employment relationship | "Sarah is CEO at Acme" |
client_of |
Client relationship | "Acme is a client of ours" |
reports_to |
Reporting hierarchy | "Tom reports to Sarah" |
manages |
Management relationship | "Sarah manages the team" |
invested_in |
Investment relationship | "Fund invested in Acme" |
partner_at |
Partnership | "Sarah is partner at Firm" |
advisor_to |
Advisory relationship | "Sarah advises Startup" |
knows |
General acquaintance | Default for co-mentions |
collaborates_on |
Project collaboration | People in same project file |
colleagues |
Same organization | Inferred from org membership |
community_connection |
Shared community | Same group membership |
likely_connected |
Attribute-based inference | Same city + industry |
Edge Cases
Ambiguous names:
- "Sarah" could match multiple Sarahs
- Use file context to disambiguate
- If uncertain, don't create relationship
Self-references:
- Don't create relationships where source = target
- Filter these during processing
Duplicate relationships:
- Check for existing relationship before creating
- Update strength if new confidence is higher
Empty files:
- Skip files with no extractable content
- Report as "skipped: [reason]"
Notes
- This command is idempotent: running multiple times won't create duplicates
- Incremental mode is faster but may miss cross-file relationships
- For best results, run full scan periodically, incremental scan daily
- Save last run timestamp to
context/.map-connections-last-run
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
inbox-check
Lightweight inbox triage across all configured email accounts. Dispatches fast subagent to fetch, then reviews with judgment. Use when user says "check my inbox", "any new emails?", "check email".
growth-check
Periodic reflection on development, skills, learning, and progress toward goals. Triggers on "am I growing?", "development check", "personal growth review".
feedback
Send feedback, ideas, or bug reports about Claudia. Opens a pre-filled GitHub Discussion with system context. Use when user says "feedback", "suggestion", "report a bug", "feature request", or "I have an idea".
draft-reply
Draft an email response with tone matching the relationship context. Shows draft for approval before sending. Use when user says "draft a reply", "respond to this email", "write a response to [person]", or shares an email and asks for help replying.
brain
Launch the Brain Visualizer, a real-time 3D view of memory and relationships. Triggers on "show your brain", "visualize memory", "open the brain", "memory graph".
new-person
Create a relationship tracking file for a person with contact info, history, and communication preferences. Use when user says "new person", "add [name]", "create a file for [name]", "track this person", or mentions someone important who doesn't have a file yet.
Didn't find tool you were looking for?