Ppl
Add and maintain people you interacts with as person entities in the wiki vault. Each person becomes a page in `wiki/entities/people/<Full Name>.md` with structured frontmatter (role, relationship, team, tags). After a person is filed, every future wiki write MUST wikilink mentions of them as `[[Full Name]]`. Triggers on: "/ppl", "/digital-brain:ppl", "add this person", "file <name> as a person", "remember <name> works with me", "<name> is my manager/teammate/cofounder". Subcommands: add (default), list, lookup, edit.From its SKILL.md
npx -y skills add eliransu/digital-brain --skill pplAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- skips confirmationTells the agent to proceed without asking first, 2 times: "Folder doesn't exist → create it. Don't ask." and 1 more.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `Glob wiki/entities/people/*.md` and 1 more.
SKILL.md
11.7 KB, ~2.9k tokens by cl100k_base, as published. Nobody here has run it
ppl: People Manager for the Brain Vault
you works with a lot of people. This skill turns "Alice Perl is a Security Researcher in my team" into a permanent, cross-referenced wiki entity. Once filed, every future synthesis, daily sync, save, or ingest links the mention to the person's page.
The wiki compounds. People compound too.
Vault Layout
- Vault root:
~/digital-brain/ - People folder:
wiki/entities/people/(create if missing) - People index:
wiki/entities/people/_index.md(create if missing — the canonical roster) - Wiki index:
wiki/index.md— has an## Entitiessection; person rows live there too - Log:
wiki/log.md— append applentry at the TOP after every add/edit - Hot cache:
wiki/hot.md— touch only if the person is currently active in recent threads
Why a sub-folder under
entities/? Existing entity pages (Your Organization.md) live inwiki/entities/directly. Keep organizations and tools there; group people underwiki/entities/people/so the roster is greppable as one set.
Invocation Forms
| Form | Action |
|---|---|
/ppl <Name> <free-text role / context> | add (default) — create new person page |
/ppl add <Name> <free-text> | same as above, explicit |
/ppl edit <Name> | update existing person page |
/ppl list | show the roster from _index.md |
/ppl lookup <Name or alias> | display the person's page |
If $ARGUMENTS is empty, show the four forms and ask which one.
Parsing /ppl <Name> <tail>
- Split tokens. The Name is the leading run of
[A-Z][a-z']+tokens (capitalized words). Take the first 2 capitalized tokens by default. If only one capitalized token, take 1. If 3+ consecutive capitalized tokens before a lowercase word (e.g.Mary Jane Watson), take 3. - The tail is everything after the name — that's role + relationship + free context.
- Heuristics on the tail (do not over-fit, but capture what's obvious):
- Role — the noun phrase before "in/at/on/of" or before "my". Examples:
Security Researcher in my team→ roleSecurity Researcher;head of engineering→ roleHead of Engineering. - Relationship to you — look for:
my manager,my team,co founder/cofounder/co-founder,cpo,cto,ceo,head of …,peer,report,direct report,reports to me. Map to a shortrelationshipvalue:manager,teammate,direct-report,cofounder,executive,peer,external. If multiple apply, store the closest to you (e.g.cofounderoverexecutive). - Team — capture
<role> in my team→ teamYour Organizationunless tail says otherwise. - Company — default
Your Organizationif no other company is named; if the tail names a different company, use that.
- Role — the noun phrase before "in/at/on/of" or before "my". Examples:
- Anything unparsed stays as free-form
contextin the page body. Don't drop it.
If parsing is ambiguous (e.g. lowercase first name, missing role), proceed with best-effort and add a > [!todo] Confirm callout at the bottom of the page listing the fields you weren't confident about.
add Workflow
- Resolve the Full Name (parsing above). Slug = the Full Name verbatim (Obsidian filenames allow spaces).
- Duplicate check:
Glob wiki/entities/people/*.mdand also check_index.mdaliases. If a match exists (exact name, alias, or a single capitalized-token match like "Alice"):- Offer: "Already filed as [[Full Name]]. Run
/ppl edit <Name>to update, or use a different name." - Stop unless the user typed
/ppl addexplicitly with a clearly distinct full name.
- Offer: "Already filed as [[Full Name]]. Run
- Ensure folder + index exist. If
wiki/entities/people/is missing, create it. If_index.mdis missing, create it from the template in this skill (see "Templates" below). - Create
wiki/entities/people/<Full Name>.mdfrom the Person Page Template. Fill:title,entity_type: personrole,relationship,team,companycreated,updatedto today (ISOYYYY-MM-DD)aliases: include the first name and any obvious short formtags:[entity, person, <relationship>, <team-slug>]
- Update
_index.md: add a row to the table under the matching relationship section (Team / Leadership / External / Other). Sort each section alphabetically by first name. - Update
wiki/index.md: under the## Entitiessection, add or update a bullet:
Keep the existing- [[<Full Name>]] - <role>, <relationship>[[Your Organization]]line in place; people append below organizations. - Append to
wiki/log.mdat the TOP (under the header):## [YYYY-MM-DD] ppl | <Full Name> - Role: <role> - Relationship: <relationship> - Location: wiki/entities/people/<Full Name>.md - From: /ppl invocation - Hot cache: only touch
wiki/hot.mdif the user explicitly says they're working with this person right now ("we're on a call", "we just shipped X together"). Default = no hot update. - Confirm: "Filed [[<Full Name>]] — <role>, <relationship>. Future mentions will link to this page."
edit <Name> Workflow
- Resolve
<Name>against filenames inwiki/entities/people/and aliases in_index.md. If ambiguous, list candidates and ask. - Read the current page. Show the user the current frontmatter + body.
- Ask what changed (role, relationship, team, context).
- Apply edits. Bump
updated:to today. - If a quick-reference field changed (role / relationship), also update the
_index.mdrow and thewiki/index.mdbullet. - Append a brief log entry:
[YYYY-MM-DD] ppl edit | <Full Name> — <what changed>.
list Workflow
- Read
wiki/entities/people/_index.md. - Render the tables as-is. Show total count.
- If
_index.mddoesn't exist yet, report "No people filed yet — try/ppl <Name> <role>".
lookup <Name or alias> Workflow
- Find a match by filename or by
aliasesin_index.md. If multiple, ask. - Read and display the page. Highlight role, relationship, recent context.
- Also surface recent log entries that mention
[[<Full Name>]](grep -l "[[<Full Name>]]" wiki/log.md wiki/hot.md). - If not found, suggest
/ppl <Name> <role>.
Cross-Reference Rule (the whole reason this skill exists)
Once a person is filed, every wiki write must wikilink them. That includes:
/save(synthesis, source, decision, session notes)/sync(daily mentions, topics, calendar)wiki-ingest(any extracted person whose name matches an existing people page)- Manual edits to
wiki/hot.md,wiki/index.md, etc.
The rule: when writing any wiki content, before saving, scan the draft for substrings matching (?:^|[^\[])<First>(?: <Last>)?(?:[^\]]|$) for each person in _index.md. If a match isn't already inside a wikilink, wrap it: [[Full Name]] (or [[Full Name|alias]] if you want display text to differ).
This is non-negotiable. The compounding value of the wiki is the link graph — an unlinked mention is a dead branch.
If a draft has 3+ mentions of the same person, link only the first mention to keep prose clean.
Templates
Person Page Template
---
type: entity
entity_type: person
title: "<Full Name>"
role: "<Role>"
relationship: "<relationship>"
team: "<Team or — >"
company: "<Company>"
aliases:
- <First Name>
created: <YYYY-MM-DD>
updated: <YYYY-MM-DD>
tags:
- entity
- person
- <relationship>
status: filed
related:
- "[[entities/people/_index|People Index]]"
- "[[Your Organization]]"
sources:
---
# <Full Name>
**Role:** <Role>
**Relationship to you:** <relationship description in plain English>
**Team / Company:** <Team>, <Company>
## Context
<free-form notes captured from the /ppl tail and any subsequent conversation>
## Recent Threads
<!-- Filled in over time by /sync, /save, and ingests. Each line: a date + a brief note + wikilink to the source page. -->
## Related
- [[Your Organization]]
- [[entities/people/_index]]
_index.md Template (create on first add if missing)
---
type: meta
title: "People Index"
updated: <YYYY-MM-DD>
tags: [meta, index, people]
status: evergreen
related:
- "[[index]]"
- "[[Your Organization]]"
---
# People
Navigation: [[index]] | [[hot]]
Everyone you interacts with at work. Add via `/ppl <Name> <role/relationship>`.
---
## Team (Your Organization)
| Name | Role | Relationship | Aliases |
| ---- | ---- | ------------ | ------- |
## Leadership
| Name | Role | Relationship | Aliases |
| ---- | ---- | ------------ | ------- |
## External
| Name | Role | Company | Aliases |
| ---- | ---- | ------- | ------- |
## Other
| Name | Role | Notes | Aliases |
| ---- | ---- | ----- | ------- |
The four sections are fixed. New rows go into the section that matches the person's relationship:
teammate,direct-report,peer→ Team (Your Organization)manager,cofounder,executive→ Leadership- anyone at a different company → External
- everything else → Other
Examples
Example 1 — /ppl Alice Perl Security Researcher in my team
- Name:
Alice Perl - Role:
Security Researcher - Relationship:
teammate - Team:
Your Organization - Creates
wiki/entities/people/Alice Perl.md, adds row to Team section of_index.md, adds- [[Alice Perl]] - Security Researcher, teammatetowiki/index.mdunder Entities, logs the operation.
Example 2 — /ppl Carol Chen my manager co founder cpo
- Name:
Carol Chen - Role:
CPO - Relationship:
cofounder(closer to you thanmanagerorexecutive, all three flagged but only the closest wins) - Aliases:
Carol - Body context preserves "manager + cofounder + CPO" verbatim.
- Goes into Leadership section.
Example 3 — /ppl Dave Park head of engineering
- Name:
Dave Park - Role:
Head of Engineering - Relationship:
executive - Goes into Leadership section.
Example 4 — /ppl list
Reads _index.md, renders all four section tables, reports total count.
Error Handling
- Folder doesn't exist → create it. Don't ask.
_index.mdmissing → create from template. Don't ask.- Duplicate name → offer
/ppl editor a distinct full name. Don't overwrite silently. - Lowercase or single-word name → ask for confirmation: "Did you mean
<Name>as a full name? Add a last name or confirm." - Empty tail (no role) → create page with
role: "—", add a> [!todo] Confirm rolecallout in the body, and remind the user to/ppl editlater.
Don'ts
- Don't write to
wiki/hot.mdunless explicitly told the person is in active context right now. - Don't create a page under
wiki/entities/root — people go inwiki/entities/people/. - Don't strip the original tail text from the body — keep verbatim under
## Contextso nothing the user typed is lost. - Don't auto-delete the stray
~/digital-brain/Alice P.mdat the vault root — flag it and ask.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.