Skip to content
cccskills
FreePublished on GitHub

people-stubs

Batch-create Teams/People/@Name.md stubs from unresolved [[@*]] wikilinks across the vault. Each stub is minimal frontmatter; the user fills team/role/details later.

The English summary is being prepared. Showing the original description.

Works withObsidian
See how to install

Files included (1)

  • SKILL.md3.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

People Stubs

Usage

  • /people-stubs — Scan unresolved [[@*]] links, present a creation list, prompt to confirm each.
  • /people-stubs --auto — Create stubs for every unresolved [[@*]] link without per-name confirmation. Useful after a big batch of new interviews.

Why this skill exists

When meeting notes are wrapped via /fill-participants, names get linked as [[@Jane Doe]], [[@John Smith]], etc. If the corresponding Teams/People/@Name.md file doesn't exist yet, Obsidian shows a dead-link indicator and the name doesn't appear in People.base. This skill creates the missing stubs in one pass.

Stubs are intentionally minimal — they're placeholders. The user (or a future /onboard-person skill) fills in the real metadata (Team, Location, FullName, Start Date, etc.).

Workflow

Step 1: Discover unresolved [[@*]] links

Run obsidian unresolved format=json and filter to entries where the link target starts with @. Aggregate by target — one stub per unique target, with a list of files where it's referenced.

Step 2: Present the creation list

Display a numbered table sorted by reference count descending:

| # | Stub to create | Referenced in (count) | Sample file |
|---|----------------|----------------------|-------------|
| 1 | Teams/People/@Jane Doe.md | 6 | Meetings/Interviews/Interview Alex Kim... |
| 2 | Teams/People/@John Smith.md | 3 | Meetings/Engineering/Weekly Team Leads... |
| 3 | Teams/People/@Alex Kim.md | 2 | Meetings/Engineering/Weekly Team Leads... |

Ask the user: "all", "1,2", "none", or per-line skips.

Step 3: Create stubs

For each confirmed stub, write Teams/People/@<Name>.md with this minimal frontmatter:

---
FullName:
Team:
Location:
created: <ISO 8601 with offset>
---

Use obsidian create path="Teams/People/@<Name>.md" content="<frontmatter>" so Obsidian indexes it immediately (the next /vault-health run won't show the link as unresolved any more).

Leave FullName, Team, Location empty — the stub is a placeholder. The agent can fill in FullName if it can infer from the wikilink display text (e.g. [[@Jane Doe]] → FullName: Jane Doe).

Step 4: Report

Print a summary:

Created 3 stubs:
  Teams/People/@Jane Doe.md
  Teams/People/@John Smith.md
  Teams/People/@Alex Kim.md

Next steps:
- Open each stub and fill in Team / Location / Start Date.
- Or run /onboard-person <name> to pull metadata from external sources.

Step 5: Commit

See /commit. Commit message: chore(people): add N stubs (Jane Doe, John Smith, ...).

Important Notes

  • Don't create stubs for the user's own aliases — they're handled by USER.md aliases.
  • Don't create stubs for candidate names (someone interviewed once but never hired). The /vault-health report should let the user skip those manually. If a name has only 1-2 references and they're all from an interviews folder, surface a hint that this might be a candidate.
  • Filename collision: if Teams/People/@<Name>.md exists already (even empty), don't overwrite. Skip and note in the report.
  • Stubs make subsequent /vault-health runs cleaner — the unresolved-links count drops as stubs are created.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Fetch & embed AI transcripts as Obsidian callouts. Args: <path>, all, refresh <path>. Prompts for URLs if empty.

The English summary is being prepared. Showing the original description.

benoror/obsidianos_work165Updated Jun 11, 2026

commit

Free

Stage and commit with flexible intent parsing. Accepts file/folder scope, free-text description, amend, or any combination.

The English summary is being prepared. Showing the original description.

benoror/obsidianos_work165Updated Jun 11, 2026

Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page.

The English summary is being prepared. Showing the original description.

benoror/obsidianos_work165Updated Jun 11, 2026

Resolve and fill Participants frontmatter + link unlinked names in body. Args: <path>, all.

The English summary is being prepared. Showing the original description.

benoror/obsidianos_work165Updated Jun 11, 2026

Extract action items as plain markdown bullets (with confirmation). Args: <path>. No args = run [/note-status pending --step=todos](../note-status/SKILL.md#pending-mode).

The English summary is being prepared. Showing the original description.

benoror/obsidianos_work165Updated Jun 11, 2026

Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.

The English summary is being prepared. Showing the original description.

benoror/obsidianos_work165Updated Jun 11, 2026

See all skills by benoror

Report a problem with this skill