一键导入
one-on-one-prep
Prepare 1:1 meeting notes by synthesizing a team member's recent activity into a structured meeting agenda
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Prepare 1:1 meeting notes by synthesizing a team member's recent activity into a structured meeting agenda
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Definitive reference for how Claude Code works — disambiguates skills vs hooks vs subagents vs MCPs vs slash commands vs memory vs settings. Use when asked "how does Claude Code X work", "what's the difference between X and Y", "where should this live", "build me a [skill|hook|agent|mcp|slash command]", "configure Claude Code", or when picking the right surface for a new capability.
Scribe — the project-documentation skill. Generate or maintain a project's Claude-facing documentation (CLAUDE.md, .claude/docs/*, project-context.md, README) from verified facts. Use when the user says "document this project", "write the docs for X", "the docs are stale", "fill in the .claude docs", or "/scribe". Detects existing doc state and routes between from-scratch and update. Verify-before-assert is the core discipline — confirmed facts go to committed docs, inferred/uncertain ones go to a separate hazards artifact, never silently into the repo.
Speak content aloud via Kokoro neural TTS (local, offline). Use when the user says "read it for me", "read it to me", "play it in audio", "say it", "speak it", "read that aloud", "/say-it", or asks to hear something spoken instead of reading it.
Install a local neural voice interface for Claude Code on macOS Apple Silicon. Wires mlx-whisper (STT) + Kokoro TTS (offline neural voices) into voice-claude and vtranscribe CLI scripts. Two voice contexts — personal (af_heart) and tech (af_bella). Multi-session safe — concurrent sessions speak in turn (global lock) and announce their name. No cloud APIs, no API keys.
Collect the user's daily work activity from Slack, Jira, Confluence, GitHub, and Google Drive with source links
Collect a team member's daily work activity from Slack, Jira, Confluence, and GitHub
| name | one-on-one-prep |
| description | Prepare 1:1 meeting notes by synthesizing a team member's recent activity into a structured meeting agenda |
| user_invocable | true |
| args | Member name and optional time range. Examples: 'Alice Chen', 'Alice Chen last 2 weeks', 'Bob Smith 2026-03-28 to 2026-04-11'. Defaults to last 1 week. |
Synthesize a team member's recent activity from daily activity files into a structured meeting prep document. This is a synthesis skill — it reads raw data collected by /collect-team-activity, it does not collect data itself.
Input files under <workspace>/collected/ may contain private Slack channel content, internal Jira tickets, and other non-public material gathered by /collect-team-activity. The synthesised prep document this skill produces lands on the caller's local disk under <workspace>/artifacts/one-on-one-prep/. Intended for the caller's own 1:1 preparation with their direct reports — do not generate prep for members outside your direct report scope, and treat the output as confidential.
Setup — Resolve <workspace>: The skill's base directory is <workspace>/.claude/skills/one-on-one-prep/; walk up three directory levels and validate that <workspace>/.claude/.workspace exists. Use this <workspace> for all path references below (identity, team, activity input, output). Abort with a setup-broken error if validation fails.
Role guard: Read <workspace>/me/identity.md and check the user's title/role.
This skill is for leadership roles with direct reports.
Load team roster: Read <workspace>/me/team.md.
No team roster found at <workspace>/me/team.md
Create one with your direct reports and their platform IDs.
member-slug: the matched member's full name lowercased, with non-alphanumerics replaced by - (e.g., "Alice Chen" → alice-chen). Used in input and output paths.**Level**: field (e.g., L5).
"No level set for {Member Name} in team.md. What level are they? (e.g., L4)". After user responds, write the level back to team.md (fill-missing-only — never overwrite an existing value). Continue./log with status=WARNING detail=Level missing for {member-slug} in team.md — synthesis ran without level calibration. Continue without the level-context block.Load writing style: Read the Writing Style section from <workspace>/me/identity.md. Apply it to all output. If no style is defined, default to clear and concise.
Load level identity anchor: Read .claude/docs/level-expectations.md (project-scoped, shared reference).
## Identity anchors table (one line). Used in the prep header alongside a link to the full file.WARNING via /log and continue.Determine time range: Parse the arguments for a date range.
YYYY-MM-DD to YYYY-MM-DD): use as-is.Read activity files: For each date in the range, look for:
<workspace>/collected/collect-team-activity/<member-slug>/YYYY-MM-DD-<member-slug>-activity.mdFor each file found: parse the Markdown to extract the Status: header, the ## Summary text, and each ## Activity item with its category, time, sources, and context.
Source-file ## Gaps are collection metadata — which sources were inaccessible at fetch time, runtime issues, "out of scope" notes. Do not propagate them into the prep. They are not 1:1 content. The activity items themselves are the synthesis material.
Files with Status: PARTIAL contribute their captured items to the synthesis exactly like SUCCESS files. PARTIAL is a coverage signal, not a discussion point — surface it in the output's **Activity data**: header (e.g., 5/5 dates covered (partial coverage on 2026-04-29: Confluence)). Do not fabricate concerns about the failed source.
Track missing dates — dates in the range where no file exists. Quiet days, PTO, weekends, and "not collected" are all the same to this skill: the file isn't there.
Status semantics:
team.md, no activity files exist anywhere in the requested period, or the output path is unwritable. If no activity files exist at all, stop and report:
No activity data found for {member} in the requested period.
Run /collect-team-activity {member} for the missing dates first.
Synthesize: Analyze all collected activity across the date range and produce four sections.
Item-count discipline (applies to all sections): Aim for the 5–10 most material items per section, not an exhaustive log. A 1:1 prep is a starting point for conversation. If a section would exceed 10 items, group more aggressively or drop the lowest-impact ones.
Descriptive-only constraint (applies to Patterns & Observations and Discussion Candidates): This skill surfaces patterns visible in the data; it does not prescribe actions. Do not write recommendations like "raise a ticket", "loop in X", "rotate the credentials first", "escalate to Y". The skill lacks the surrounding context (who's already on a thread, what the team member has been told, what their current priorities are, who owns what) to make those judgements. Describe what the data shows; the manager decides the action.
Completed Tasks & Achievements
In Progress / Open Items
execution flag from the ## Jira — Owned (assignee) section to interpret assignee tickets:
execution: status-change — include as delivery evidence; the member drove thisexecution: commented — lighter engagement signal; include if the comment shaped the outcomeexecution: none — awareness/planning signal only. Do NOT surface as stalled delivery or "no movement." For leadership roles, tickets are frequently assigned for routing, awareness, or sprint-queue purposes, not for the assignee to execute personally. State the ticket is in queue if relevant; do not imply the member should have acted.## Jira — Filed (reporter-only) or ## Filed (reporter-only) sections in the activity file) must NOT appear in Completed or In Progress. Surface them in a separate Sprint Portfolio section after Discussion Candidates — a brief table (key, summary, assignee, status). These are planning/oversight signals: the member created the work and delegated it to an IC. Delivery credit belongs on the IC's report.Patterns & Observations
Discussion Candidates
Formatting rules:
Time: stamps. Use the local-date portion (the date in the timezone offset shown), not the UTC date. For an item at 2026-04-12T01:30:00+04:00, the date is 2026-04-12, not 2026-04-11.[PLAT-808](url)). Weave the title into the bullet text or context line where useful. Embedding full key+title in link text bloats bullets when titles are long.?thread_ts=<parent_ts>&cid=<channel_id> — never reconstruct or shorten them. A bare p<timestamp> URL without ?thread_ts= will not navigate to the reply in Slack.identity.md — if not set, default to direct and clear.Write the output file: Write to <workspace>/artifacts/one-on-one-prep/<member-slug>/YYYY-MM-DD_to_YYYY-MM-DD.md where <member-slug> is the slug computed in step 2 and the dates are the start and end of the activity period. Create parent directories if missing.
Re-run on the same (member, period): overwrite the file. Add a header line **Re-synthesis**: previous run superseded YYYY-MM-DD HH:MM:SS (UTC) below the title so the user can see this is not a fresh first run.
# 1:1 Prep: {Member Name}
**Generated**: YYYY-MM-DD
**Period**: YYYY-MM-DD to YYYY-MM-DD
**Level**: {Level} — {Identity Anchor} · [L&E](.claude/docs/level-expectations.md)
**Activity data**: {X}/{Y} dates covered ({list missing dates, if any})
## Completed Tasks & Achievements
### {Project / Theme}
- **{What was accomplished}** ({date})
- Sources: [PROJ-123](url), [Slack thread](permalink)
- {Why it matters}
## In Progress / Open Items
### {Project / Theme}
- **{Current state}** ({date})
- Sources: [PROJ-456](url) (assigned to {Name})
- Next: {what's visible from the data}
## Patterns & Observations
- **{Observation}** — descriptive, no prescriptions
- Evidence: {source links, dates, counts}
## Discussion Candidates
1. {Topic surfaced by the data — manager decides whether to raise}
2. {Second}
3. {Third}
If Level: is missing for the member or .claude/docs/level-expectations.md is not found, omit the identity anchor and link from the header — the rest of the prep stays useful.
Report to user (skip if invoked by another agent):
1:1 prep ready: {Member Name} ({Level})
──────────────────────────────
Period: YYYY-MM-DD to YYYY-MM-DD
Coverage: {X}/{Y} dates with activity data
Missing: {dates without data, or "none"}
File: <workspace>/artifacts/one-on-one-prep/<member-slug>/YYYY-MM-DD_to_YYYY-MM-DD.md
Logging: On completion, invoke the /log skill:
/log run_id=<run_id> skill=one-on-one-prep status=<SUCCESS|FAILED|WARNING> detail={member name}: {period}, {coverage}
Use manual as run_id if invoked directly by the user. Use WARNING if the prep was produced but the level header is incomplete (missing Level: in team.md or missing local mirror).
collected/ files. It never queries Slack, Jira, or any other data source directly.