一键导入
fill-participants
Resolve and fill Participants frontmatter + link unlinked names in body. Args: <path>, all.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Resolve and fill Participants frontmatter + link unlinked names in body. Args: <path>, all.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Fetch & embed AI transcripts as Obsidian callouts. Args: <path>, all, refresh <path>. Prompts for URLs if empty.
Stage and commit with flexible intent parsing. Accepts file/folder scope, free-text description, amend, or any combination.
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).
Show when you last had a 1:1 with each direct report / peer, sorted by recency. Flags people who haven't had one in N weeks. Powered by the OneOnOnes view on Meetings.base.
Gmail AI transcript notifications → meeting Notes: URLs + mark read. Args: (none). Invoked standalone or as step 1 of /meeting wrap.
Create or wrap meeting notes. Args: {title} [folder=X], wrap <path>, wrap pending [today|this week|dates]. No args = pick from Google Calendar.
| name | fill-participants |
| description | Resolve and fill Participants frontmatter + link unlinked names in body. Args: <path>, all. |
| license | MIT |
| compatibility | Requires qmd (CLI or MCP) and gws CLI when resolving names from Google Docs (read-only). See [google-workspace-cli](../_shared/google-workspace-cli.md). |
/fill-participants all — Scan all meetings, find those missing Participants, resolve and fill them./fill-participants <path> — Fill participants for a specific meeting note (relative to workspace root, e.g. Meetings/Engineering/Some Meeting.md).See people-resolver for wikilink format and name matching rules.
Participants live in YAML frontmatter as either:
# Single participant
Participants: "[[@Jane Doe]]"
# Multiple participants
Participants:
- "[[@Jane Doe]]"
- "[[@Alex Kim]]"
# Team-wide meetings
Participants: "[[+Engineering]]"
Mode A (all):
Run /note-status pending --step=participants to discover notes missing Participants:, present them, and let the user select which to process.
Mode B (specific file):
For each meeting missing Participants, determine attendees using the resolution priority defined in people-resolver. In summary:
Notes: frontmatter:
Notes:, fetch content with gws (gws docs documents get or gws drive files export to plain text — see google-workspace-cli); Gemini summaries name participants explicitly.Notes: (user pastes JSON; run parse_otter.js or parse inline).X x Y patterns.[[@Name]] references.Meetings/Engineering/Scrum/ → [[+Engineering]].Build a name dictionary per people-resolver. Match names from the transcript source (Google Docs, Otter when enabled, etc.) against the dictionary. Flag any unmatched names for user confirmation.
Present results grouped into:
Also flag if any existing @Person.md files are missing key properties (FullName, Team) that were discovered from Google Docs.
Scan the entire file content (body + AI transcript callouts) for mentions of people that are not already wrapped in [[@Name]] wikilinks. This catches plain-text references from Gemini transcripts and manual notes.
Use the name dictionary and matching rules from people-resolver.
Search the note body for each name variant, following the word boundary and skip rules in people-resolver.
⚠️ MANDATORY: Always prompt the user before replacing. Never auto-replace — false positives are common with first names and nicknames.
Display a numbered table of proposed replacements:
| # | Replace? | Found text | → Link | Context (surrounding text) |
|---|----------|------------|--------|---------------------------|
| 1 | ✅ | Jane Doe | [[@Jane Doe]] | "...assigned Jane Doe a bug ticket..." |
| 2 | ✅ | @Jane | [[@Jane Doe]] | "...recent changes made by @Jane..." |
| 3 | ⬜ | Alex Kim | [[@Alex Kim]] | "...Alex Kim confirmed they have been..." |
| 4 | ⬜ | Alex | — (skip, it's the user) | "...Alex Rivera and Alex agreed..." |
✅ for full-name matches (high confidence).⬜ for first-name-only or nickname matches (need confirmation).USER.md Identity) — these don't need wikilinks.Use StrReplace for each confirmed match. When a name appears multiple times, ask the user if they want to replace all occurrences or specific ones.
For each file, add Participants: to the YAML frontmatter just before the closing ---. Use StrReplace targeting a unique anchor (last line before ---).
For meetings where participants genuinely can't be determined:
[[+QA]], [[+Eng]]).— (em-dash) as the universal "intentionally left blank" marker for true unknowns.See /commit. Skip when called as part of a sequence (e.g. /meeting wrap).
modified: timestamp in frontmatter changes frequently; use other properties as unique anchors for StrReplace.[[@Me]].git status fails, skip the commit step entirely without error.