| name | 1on1-prep |
| description | Use when the user says /1on1-prep, "prep for my 1:1", "1:1 with", "capture my 1:1", or wants to prepare for or record notes from a one-on-one meeting. |
| disable-model-invocation | true |
1:1 Prep & Capture
Prep reads the knowledge graph to surface context, commitments, and signal.
Capture writes verbatim observations with deterministic tags.
Announce: "I'm using the 1on1-prep skill to help you prepare for your 1:1."
Flow: Prerequisites โ Invocation โ Person Lookup โ Bootstrap โ Phase Detection โ
Mode Detection โ Prep or Capture.
Reference files (read on demand, not upfront):
- graph-schema.md โ observation format, tags, relations, examples
- pending-sync.md โ file format, parsing, error handling
- capture-form.md โ 6-prompt form, parsing rules, resolution flow
- questions.md โ question bank
- stakeholder-map graph-schema โ extended schema (power, category, coverage, advice) shared when stakeholder-map is in use
Prerequisites
Verify memory MCP: mcp__memory__read_graph. If unavailable, warn and set a
session-wide flag so ALL writes route to pending-sync for the remainder (not just the
current write). Check for existing pending-sync files.
Invocation
/1on1-prep <person-name> [--mode=intake|coaching] [--phase=prep|capture] [--context "..."] [--sync]
--context writes a [context] observation and exits. --sync drains pending-sync
files (see pending-sync.md).
Person Lookup
mcp__memory__search_nodes({ query: "<person-name>" }) โ exact match โ use it,
one substring โ use it, multiple โ ask user, not found โ Bootstrap,
tool error โ stop (prevents duplicate creation).
Bootstrap (New Person)
Requires memory MCP. Four-prompt form: 1) Full name 2) Role/team 3) Background
4) Reports to (optional). Answer #1 = entity name. Others โ [context] observations.
Check name collision. Only create reports_to if manager exists.
Phase Detection
If no --phase, query calendar (-4h to +24h). Upcoming โ Prep. Ended โค4h โ Capture.
Multiple โ ask. None/unavailable โ ask.
Mode Detection
Priority: --mode flag โ explicit [mode:*] marker in graph โ auto-detect.
Intake if <3 [1on1] observations, no [context], no reports_to. Else Coaching.
Note: open_nodes doesn't return relations โ use search_nodes to check reports_to.
Offer graduation nudge if heuristic says coaching but no marker exists.
Prep Phase (Read-Only)
Read Person's full node. Render in order, omit empty sections:
- Header โ
## <Name> [MODE] 1:1 #N with meeting time
- Context โ
[context] observations as bullets
- Open Commitments โ unresolved
[commitment], oldest first, cap 10
- Open Follow-ups โ unresolved
[followup], cap 10
- Recent Signal โ last 2-3 sessions by strategic tag
- What Others Said โ cross-entity
search_nodes (cap 5, never read_graph)
- Suggested Questions โ 3-4 from questions.md, 2+ categories
Capture Phase
Before showing the form, check if user indicates no meeting occurred (e.g.,
"nothing happened", "we didn't meet", "they cancelled"). If so, skip to noshow:
write [YYYY-MM-DD][1on1][<mode>][noshow] No capture recorded. Failed โ pending-sync.
Otherwise, read capture-form.md for form, parsing, and resolution
flow. Tags assigned deterministically by prompt bucket. Write one-at-a-time, failed
writes โ pending-sync.
Common Mistakes
- Summarizing capture observations instead of recording verbatim โ the graph is only useful if entries preserve what was said; paraphrasing loses signal and invents details.
- Auto-resolving open commitments or follow-ups without asking โ always confirm with the user before marking prior items resolved; Prep shows them, it doesn't close them.
- Assigning tags by LLM judgment instead of prompt bucket โ capture tags are deterministic by form prompt; don't re-tag based on content interpretation.
- Skipping the cancelled/no-show path โ if the user indicates no meeting occurred, write the
[noshow] entry instead of showing the capture form.
- Reading the full graph when person lookup suffices โ use
search_nodes for cross-entity lookups; avoid read_graph which pulls the entire corpus into context.