communicate
Draft a professional communication (Slack, email, or async doc) with context from the vault
Process raw meeting notes into structured meeting note with in-repo tasks
$ npx -y skills add aleksander-dytko/ai-pm-workspace --skill meeting --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/meetingContext preview
The summary Claude sees to decide when to auto-load this skill.
Process raw meeting notes into structured meeting note with in-repo tasks
name: meeting description: Process raw meeting notes into structured meeting note with in-repo tasks argument-hint: "[meeting file path or 'browse']"
You are helping process raw meeting notes into a structured meeting note. Action items for the user land in `Dashboard/tasks.md`.
The skill operates in one of three modes based on `$ARGUMENTS`:
| Mode | Arguments | When to use | |------|-----------|-------------| | **Browse** | (none) or `browse` | List recent files in `Meetings/` that look unprocessed | | **Specific file** | File path or partial name | Process notes from a specific file | | **Paste** | Pasted text (long string) | Meeting notes pasted directly into the prompt |
---
**If no arguments (Browse mode)**: 1. Use the `Glob` tool with pattern `Meetings/*.md` to list meeting files. Do NOT use `Bash ls` - Glob is quieter and shows results already sorted. 2. Read the top N candidates (up to 5) in parallel and identify files with raw/unstructured notes (no "## Decisions", no structured format). 3. Show a numbered list of unprocessed files. 4. Ask: "Which meeting do you want to process?"
**If specific file path**: 1. Read the file. 2. If already structured (has Decisions, Action Items sections): warn and ask to confirm before overwriting. 3. If raw notes: proceed directly.
**If pasted text**:
---
Extract:
**Show the proposed list and wait for confirmation** before writing.
After confirmation, append the tasks to `Dashboard/tasks.md` under the "This week" section, using this format:
- [ ] Action description - source: [[YYYY-MM-DD - Meeting Title]] - due: YYYY-MM-DD - priority: P3
Priority and due date are optional - include only when meaningful.
---
When reporting results to the user in chat, reference files with **backtick-wrapped paths**, not markdown links with spaces and not `[[wikilinks]]`. Claude Code renders backtick paths as clickable file references; markdown links with unescaped spaces break, and wikilinks only work inside vault files rendered in Obsidian.
In chat:
Meeting note created: `Meetings/YYYY-MM-DD - Meeting Title.md` Linked in journal: `journals/YYYY/MM-Month/DD-MM-YYYY.md` (or "skipped - no journal for that date") Proposed tasks for Dashboard/tasks.md (your action items only): 1. [Task] - due YYYY-MM-DD - P2 2. [Task] - P3 Already in Dashboard/tasks.md (skipping): - [Existing task] Tasks for others (not added to your list): - [Task] - [Person] Confirm: add tasks to Dashboard/tasks.md? (Y / N / pick numbers like 1,3)
After confirmation, append tasks to the "This week" section of `Dashboard/tasks.md`.
**Inside the meeting note file itself** (the Markdown being written to disk), keep using `[[wikilink]]` style for the Related section and task `source:` fields - those are for vault navigation (Obsidian/future tooling), not for chat rendering.
---
A structured, Claude-Code-ready workspace for product managers, designers, and other PM-adjacent roles. Your notes become the persistent memory; Claude Code becomes the executor. This is a template.
Draft a professional communication (Slack, email, or async doc) with context from the vault
Produce a sourced competitive matrix for a focused research question
Turn an idea into a structured epic draft using templates/epic-template.md
Make a product decision with full context from the vault and available sources
Interactive 8-module learning path for the shipped skills, role-adaptive
Structure product discovery with Teresa Torres' Opportunity Solution Tree - outcome, opportunities, solutions, experiments