Ppl
Claude + Obsidian knowledge companion. A persistent, compounding wiki vault based on Karpathy's LLM Wiki pattern — drop sources, ask questions, knowledge compounds.
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.
One thing to look at
- 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
11.7 KB, 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.