An MCP server that provides on-demand skill loading for AI coding assistants.
BY modbenderUPDATED Oct 27, 2026
INTENDED FOR◈OpenClawInstall in a listed agent.
instructions.md
---
name: people-relationship-map
description: >
Personal CRM and relationship graph for OpenClaw. Tracks people, their
connections to each other, and what you know about them. Stores everything
as Obsidian-friendly Markdown + a JSON graph index. Use when you want to
remember who knows who, prepare for meetings, or get nudged about stale
relationships.
version: 0.1.0
metadata:
openclaw:
requires:
bins:
- python3
homepage: https://github.com/gobiraj/people-relationship-map
---
# People Relationship Map
A lightweight personal CRM that tracks people as nodes and their connections
as edges. Everything is stored as Obsidian-compatible Markdown files (one per
person) with a JSON graph index for fast querying.
## Workspace layout
```
<workspace>/people/
├── _graph.json # Node + edge index (source of truth for connections)
├── _alex-chen.md # One Markdown file per person
├── _jordan-lee.md
└── ...
```
Each person file uses this template:
```markdown
# Alex Chen
- **Tags:** #colleague #engineering
- **Org:** Acme Corp
- **Role:** Staff Engineer
- **Met:** 2025-06-15
- **Last contact:** 2026-02-20
- **Tier:** close
## Notes
- 2026-02-20 — Mentioned looking for a new apartment in Brooklyn
- 2026-01-10 — Helped me debug the auth migration
## Connections
- [[Jordan Lee]] — same team at Acme
- [[Sam Patel]] — college roommates
```
The `_graph.json` file stores the machine-readable graph:
```json
{
"nodes": {
"alex-chen": {
"displayName": "Alex Chen",
"tags": ["colleague", "engineering"],
"org": "Acme Corp",
"role": "Staff Engineer",
"met": "2025-06-15",
"lastContact": "2026-02-20",
"tier": "close",
"file": "_alex-chen.md"
}
},
"edges": [
{
"from": "alex-chen",
"to": "jordan-lee",
"label": "same team at Acme"
}
]
}
```
## Commands
All commands go through the Python script. Run them via:
```bash
python3 {baseDir}/scripts/relmap.py <command> [options]
```
### Add a person
```bash
python3 {baseDir}/scripts/relmap.py add \
--name "Alex Chen" \
--tags colleague,engineering \
--org "Acme Corp" \
--role "Staff Engineer" \
--tier close \
--note "Met at the offsite in Denver"
```
Tiers: `close`, `regular`, `acquaintance` (default: `acquaintance`).
### Link two people
```bash
python3 {baseDir}/scripts/relmap.py link \
--from "Alex Chen" \
--to "Jordan Lee" \
--label "same team at Acme"
```
### Add a note to a person
```bash
python3 {baseDir}/scripts/relmap.py note \
--person "Alex Chen" \
--text "Mentioned looking for a new apartment in Brooklyn"
```
This also bumps `lastContact` to today.
### Touch (update last contact without a note)
```bash
python3 {baseDir}/scripts/relmap.py touch --person "Alex Chen"
```
### Query commands
```bash
# Show everything about a person
python3 {baseDir}/scripts/relmap.py show --person "Alex Chen"
# Find who is connected to a person
python3 {baseDir}/scripts/relmap.py connections --person "Alex Chen"
# Find all people at an org
python3 {baseDir}/scripts/relmap.py query --org "Acme Corp"
# Find by tag
python3 {baseDir}/scripts/relmap.py query --tag engineering
# Find by tier
python3 {baseDir}/scripts/relmap.py query --tier close
# Search notes for a keyword
python3 {baseDir}/scripts/relmap.py search --query "apartment"
# List all people
python3 {baseDir}/scripts/relmap.py list
```
### Relationship staleness report
```bash
python3 {baseDir}/scripts/relmap.py stale \
--close-days 14 \
--regular-days 30 \
--acquaintance-days 90 \
--format message
```
Returns a ready-to-send digest of people you haven't contacted within
their tier threshold.
### Export graph as Mermaid (optional utility)
```bash
python3 {baseDir}/scripts/relmap.py mermaid
```
Prints a Mermaid `graph LR` diagram you can paste into any Markdown
renderer.
## Auto-capture behavior
When the user mentions a person in conversation and provides relational
context, the agent SHOULD silently run the appropriate command:
- "I just had coffee with Alex Chen" → `touch --person "Alex Chen"` +
`note --person "Alex Chen" --text "Had coffee together"`
- "Alex and Jordan work on the same team" → `link --from "Alex" --to "Jordan" --label "same team"`
- "Remember that Sam's birthday is March 12" → `note --person "Sam" --text "Birthday: March 12"`
Only auto-capture when the intent is clear. If ambiguous, ask the user
before persisting. Keep confirmations brief: "Noted for Alex ✓" style.
## Cron — weekly relationship digest
A cron job should run the staleness report weekly and deliver results to
the user's primary channel (WhatsApp/Telegram). Recommended schedule:
every Sunday at 9:00 AM.
```
python3 {baseDir}/scripts/relmap.py stale --format message
```
The `--format message` flag produces a concise, chat-friendly digest.
## Tips for the agent
- Normalize names: "Alex", "Alex Chen", "alex chen" should all resolve
to the same node. The script does fuzzy matching on the stored names.
- When the user says "who do I know at [Company]?", use `query --org`.
- When the user says "tell me about [Person]", use `show --person`.
- When the user says "who is connected to [Person]?", use `connections`.
- Before a meeting, offer to pull up the person's card with `show`.
- The Markdown files are designed for Obsidian — wikilinks, tags, and
frontmatter all work natively if the user syncs the people/ folder.
---
name: people-relationship-map
description: >
Personal CRM and relationship graph for OpenClaw. Tracks people, their
connections to each other, and what you know about them. Stores everything
as Obsidian-friendly Markdown + a JSON graph index. Use when you want to
remember who knows who, prepare for meetings, or get nudged about stale
relationships.
version: 0.1.0
metadata:
openclaw:
requires:
bins:
- python3
homepage: https://github.com/gobiraj/people-relationship-map
---
# People Relationship Map
A lightweight personal CRM that tracks people as nodes and their connections
as edges. Everything is stored as Obsidian-compatible Markdown files (one per
person) with a JSON graph index for fast querying.
## Workspace layout
```
<workspace>/people/
├── _graph.json # Node + edge index (source of truth for connections)
├── _alex-chen.md # One Markdown file per person
├── _jordan-lee.md
└── ...
```
Each person file uses this template:
```markdown
# Alex Chen
- **Tags:** #colleague #engineering
- **Org:** Acme Corp
- **Role:** Staff Engineer
- **Met:** 2025-06-15
- **Last contact:** 2026-02-20
- **Tier:** close
## Notes
- 2026-02-20 — Mentioned looking for a new apartment in Brooklyn
- 2026-01-10 — Helped me debug the auth migration
## Connections
- [[Jordan Lee]] — same team at Acme
- [[Sam Patel]] — college roommates
```
The `_graph.json` file stores the machine-readable graph:
```json
{
"nodes": {
"alex-chen": {
"displayName": "Alex Chen",
"tags": ["colleague", "engineering"],
"org": "Acme Corp",
"role": "Staff Engineer",
"met": "2025-06-15",
"lastContact": "2026-02-20",
"tier": "close",
"file": "_alex-chen.md"
}
},
"edges": [
{
"from": "alex-chen",
"to": "jordan-lee",
"label": "same team at Acme"
}
]
}
```
## Commands
All commands go through the Python script. Run them via:
```bash
python3 {baseDir}/scripts/relmap.py <command> [options]
```
### Add a person
```bash
python3 {baseDir}/scripts/relmap.py add \
--name "Alex Chen" \
--tags colleague,engineering \
--org "Acme Corp" \
--role "Staff Engineer" \
--tier close \
--note "Met at the offsite in Denver"
```
Tiers: `close`, `regular`, `acquaintance` (default: `acquaintance`).
### Link two people
```bash
python3 {baseDir}/scripts/relmap.py link \
--from "Alex Chen" \
--to "Jordan Lee" \
--label "same team at Acme"
```
### Add a note to a person
```bash
python3 {baseDir}/scripts/relmap.py note \
--person "Alex Chen" \
--text "Mentioned looking for a new apartment in Brooklyn"
```
This also bumps `lastContact` to today.
### Touch (update last contact without a note)
```bash
python3 {baseDir}/scripts/relmap.py touch --person "Alex Chen"
```
### Query commands
```bash
# Show everything about a person
python3 {baseDir}/scripts/relmap.py show --person "Alex Chen"
# Find who is connected to a person
python3 {baseDir}/scripts/relmap.py connections --person "Alex Chen"
# Find all people at an org
python3 {baseDir}/scripts/relmap.py query --org "Acme Corp"
# Find by tag
python3 {baseDir}/scripts/relmap.py query --tag engineering
# Find by tier
python3 {baseDir}/scripts/relmap.py query --tier close
# Search notes for a keyword
python3 {baseDir}/scripts/relmap.py search --query "apartment"
# List all people
python3 {baseDir}/scripts/relmap.py list
```
### Relationship staleness report
```bash
python3 {baseDir}/scripts/relmap.py stale \
--close-days 14 \
--regular-days 30 \
--acquaintance-days 90 \
--format message
```
Returns a ready-to-send digest of people you haven't contacted within
their tier threshold.
### Export graph as Mermaid (optional utility)
```bash
python3 {baseDir}/scripts/relmap.py mermaid
```
Prints a Mermaid `graph LR` diagram you can paste into any Markdown
renderer.
## Auto-capture behavior
When the user mentions a person in conversation and provides relational
context, the agent SHOULD silently run the appropriate command:
- "I just had coffee with Alex Chen" → `touch --person "Alex Chen"` +
`note --person "Alex Chen" --text "Had coffee together"`
- "Alex and Jordan work on the same team" → `link --from "Alex" --to "Jordan" --label "same team"`
- "Remember that Sam's birthday is March 12" → `note --person "Sam" --text "Birthday: March 12"`
Only auto-capture when the intent is clear. If ambiguous, ask the user
before persisting. Keep confirmations brief: "Noted for Alex ✓" style.
## Cron — weekly relationship digest
A cron job should run the staleness report weekly and deliver results to
the user's primary channel (WhatsApp/Telegram). Recommended schedule:
every Sunday at 9:00 AM.
```
python3 {baseDir}/scripts/relmap.py stale --format message
```
The `--format message` flag produces a concise, chat-friendly digest.
## Tips for the agent
- Normalize names: "Alex", "Alex Chen", "alex chen" should all resolve
to the same node. The script does fuzzy matching on the stored names.
- When the user says "who do I know at [Company]?", use `query --org`.
- When the user says "tell me about [Person]", use `show --person`.
- When the user says "who is connected to [Person]?", use `connections`.
- Before a meeting, offer to pull up the person's card with `show`.
- The Markdown files are designed for Obsidian — wikilinks, tags, and
frontmatter all work natively if the user syncs the people/ folder.
COMPATIBILITY & REFERENCES
Platform guidance
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Includes source scripts; review them before use. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
Help users make better hiring decisions. Use when someone is evaluating job candidates, making hiring decisions, conducting reference checks, reviewing work samples or take-homes, calibrating their hiring bar, or deciding between finalists.
Help users navigate career changes and pivots. Use when someone is considering a new role, transitioning into product management, evaluating job offers, taking a sabbatical, or feeling stuck in their current position.
Help users build relationships with mentors and sponsors for career growth. Use when someone is looking for career guidance, wants to find a mentor, needs an advocate at work, is trying to build their professional network, or asking how to get advice from senior leaders.