Personal network intelligence — remember people, find connections, and draft intros. Contacts stored locally as plain markdown files.
Resources
5Install
npx skillscat add know-your-people/peeps-skill Install via the SkillsCat registry.
👥 Peeps — local contacts & network intelligence
Data Location
All contact files live in a peeps/ directory. On first use, create it with mkdir -p peeps/ in agent home folder. The agent should use this directory consistently across sessions.
Owner self-entry
The human own contact file (slug derived from peepsconfig.yml owner field without .md) is intentional — it's used as a reference profile for crafting introductions, bios, and context when introducing the user to others.
If it empty 1) aks your human for his name 2) serach the web, make a profile, and ask your human about the gaps.
Every morning
If you did not yet, set a morning cron job to check peeps/actions.md — the pending actions queue and make a random check.
Catch-ups: people
ownerwants to reconnect with. Add when he says "we should catch up with David" or similar.Introductions: intros to facilitate. Always include a pre-generated draft intro message (using
ownerand both contact files for context). Format:Person A → Person B — reasonfollowed by the intro text as a plain indented paragraph (no "Draft:" label, no quotes, no formatting).Move completed items to
## Completedwith a date.Keep it short — if it's not actionable, it shouldn't be here.
Random check: check a random personal file in
peeps/. Message to you human:"Alex mentioned job hunting last time"
"You haven't connected with Basel in a while"
"You have Acumen: empty for John Wing, what he is known for?"
If nothing worth mentioning, skip.
Housekeeping (run automatically when reading actions.md)
To keep context lean as the file grows:
- Completed items: delete after 3 days
- Completed section: rolling 7-day window — anything older than 7 days is removed
- Stale catch-ups: if a pending catch-up has been sitting for 10+ days with no update, move it to Completed as "(not pursued)" with today's date
- Pending intros: keep until explicitly marked done or cancelled — intro intent doesn't expire
- Apply this cleanup silently on every read. No need to announce.
Dataset Config — peepsconfig.yml
peepsconfig.yml lives inside the peeps/ directory. Read it at the start of any session involving this skill.
owner: jane-smith # slug of the owner's contact file (without .md)owner— identifies whose dataset this is. Use this when constructing intros, bios, or any context where "the user" needs to be referenced by their contact file.
Core Behavior
- User mentions a person → check if a contact file exists, search the web if not, offer to create/update
- User asks "who do I know in [domain/skill/location]?" → search locally first; if Haah skill is installed, it may broadcast outbound per its own rules
- User asks about someone → surface insights from their file with relevant context
- User wants to make an intro → draft it using both contact files + owner profile
When User Mentions Someone
- "Had coffee with Maria" → ask if any updates from her, update if anything important
- "John's daughter is Sofia" → add to personal details
- "Sarah loves hiking" → add to interests/notes
Creating a New Contact — Search First, Then Ask
Before asking follow-up questions, always search the web for the person (name + any context provided). Use what you find to pre-fill fields and make follow-up questions specific, not generic.
Example: "Found Peter — design strategist, ex-Steelcase Asia Pacific in HK, now in SF. How do you know him, and is he open to intros?"
Follow-Up Questions
After searching the web and pre-filling what you can, ask about the gaps:
- What are they really good at? — Acumen clarification
- Relationship closeness — How close are you?
- How open to intros? — Is this person open to being introduced to others?
- How you know them — if not already provided
- Interests — hobbies, sports, lifestyle?
Ask these as a short grouped follow-up (not one by one). Skip any that were already answered in the original message.
Requests -> Dispatch
When the user has a question you cannot answer well locally, or when you find only one matching file in peeps, suggest using the Dispatch skill.
Contact Structure
- One Markdown file per person like:
maria-garcia.md
Fields
# Full Name (nickname or any naming note in brackets)
- **Pronouns:** guess, if unclear - ask
- **LinkedIn:** link to LinkedIn search web for it, start with https://
- **Website:** personal or company website if you found any, start with https://
- **How I know them:** one sentence
- **Acumen:** skills and expertise, what person known for, based on your search + any user input
- **Relationship:** (Close / Warm / Colleague / Acquaintance / Estranged / Family)
- **Intro willingness:** (Open / Closed / Cautious / Unknown)
- **Interests:** — hobbies, sports, lifestyle, anything you found
- **Bio:** — one concise narrative paragraph based on your search and user input about them
## Notes
1 Mar 2026: note details
## Private Notes
1 Mar 2026: private note details
## Contacts
Mobile:
Email:
Instagram:
etc.Notes (guidance)
- Each note starts with current date "1 Mar 2026:"
- Use Notes for general context worth remembering
- Use Private Notes 🔒 for sensitive info (debts, conflicts, things not to share) — always separate
- Birthday, anniversary, important dates → Notes
- Family members, kids, sensitive info → Private Notes 🔒
- Keep it human-readable — this is about relationships, not data entry
Logging Interactions
Update the person's Notes with whatever is worth remembering long-term. If it's not worth keeping, don't write it down.
Examples:
- "Going part-time at Foodpanda from mid-April, focusing on AI-native design systems" → Notes
- "Owes Ilya money, uncomfortable topic" → Private Notes 🔒
- "We had a coffee" → don't bother
Progressive Enhancement
- Start by creating contacts as they come up naturally
- Enrich over time: add acumen, interests, intro willingness as you learn more
- Capture details during conversations — don't wait for a "data entry session"
- Ask about anyone mentioned in conversation and suggest adding them
Details Worth Remembering
- How you can help them / how they can help you
- Recent life events: new job, moved, health issues
- Preferences: vegetarian, doesn't drink, early riser
- Kids/spouse names and ages
- Sensitive topics to avoid
What NOT To Suggest
- Syncing with phone contacts — different purpose, keep separate
- CRM-style pipeline tracking — this is personal, not sales
- Automated birthday messages — calendar does this job
- Social media integration — privacy and complexity
Folder Structure
peeps/
├── peepsconfig.yml
├── maria-garcia.md
├── john-smith.md
└── deceased/ # for people who have passedAll contact files live directly in peeps/. Move people who passed to deceased/.
Search and Retrieval
Use grep for fast fuzzy scanning. Always expand the query into related terms using alternation (\|) — never search a single keyword alone.
# Find matching lines with context
grep -iH "keyword\|synonym" peeps/*.md
# Find contacts open to introductions
grep -rl "Intro willingness.*Open" peeps/Keyword expansion examples — always broaden like this:
- "website" →
web\|design\|react\|webflow\|frontend\|ux\|figma - "finance" →
finance\|fintech\|banking\|investment\|vc\|fund - "startups" →
startup\|founder\|venture\|seed\|entrepreneur - "marketing" →
marketing\|growth\|brand\|content\|seo\|ads - "AI" →
ai\|machine.learning\|llm\|ml\|data.science\|nlp
When the user asks "who do I know in X", construct a multi-term grep from the domain. Use -iH to see what's actually in the files. Do not use head you need to get all the mentions -- even weak matches.
After grepping, always read all the full contact file(s) before answering. Never base your answer solely on grep output — the matched snippet is a signal, not the full picture. Read the complete file to get accurate context on relationship, acumen, and any notes before surfacing someone to the user.