--- name: process-notes description: Process CEO notes from docs/CEO_NOTES.md into GitHub issues, design decisions, blog topics, and sprint items. Reads raw thoughts and turns them into actionable work. allowed-tools: Bash, Read, Write, Edit, Grep, Glob, Task argument-hint: [--dry-run] --- # Process Notes — Turn Thoughts Into Action ## Overview Reads `docs/CEO_NOTES.md` Inbox section and processes each note into one or more of: - **GitHub Issue** — feature requests, bugs, technical tasks - **Design Decision** — write to `intel.decisions` in Supabase - **Blog Topic** — queue for the `/writer` agent - **Sprint Item** — tag for next sprint planning - **Question** — needs more context, ask the CEO ## Workflow ### Step 0: Harvest Scratchpad Ideas (Auto) Before reading CEO_NOTES.md, check `.claude/SCRATCH.md` for pending ideas: ``` Read .claude/SCRATCH.md Find the "### Ideas → CEO Notes" section Extract any non-empty bullet items (lines starting with "- " that aren't just "- ") If items found: 1. Append each item as a new bullet under "## Inbox" in docs/CEO_NOTES.md 2. Clear the "### Ideas → CEO Notes" section back to a single blank placeholder: ### Ideas → CEO Notes - 3. Print: "Harvested N idea(s) from SCRATCH.md → CEO_NOTES.md Inbox" If no items found: skip silently ``` This keeps the scratchpad ephemeral while ensuring ideas aren't lost. Items are moved, not copied. ### Step 1: Read the Notes ``` Read docs/CEO_NOTES.md Extract all items from the ## Inbox section (between --- markers) Skip empty lines and HTML comments ``` ### Step 2: Categorize Each Note For each note, determine category using this logic: | Signal | Category | Action | |--------|----------|--------| | "bug", "broken", "wrong", "fix" | Bug | Create `[FIX]` GitHub issue, label `type:fix` | | "idea", "feature", "should", "need", "want" | Feature | Create `[FEAT]` GitHub issue, label `type:feature` | | "decide", "should we", "option", "vs" | Decision | Write to `intel.decisions` in Supabase as OPEN | | "blog", "write about", "article", "post" | Blog | Add to `.claude/content/blog-queue.md` | | "priority", "important", "urgent", "p0" | Priority Shift | Flag for `/pm` review | | "question", "?", "ask", "wonder" | Question | Present to user via AskUserQuestion | ### Step 3: Execute Actions **For GitHub Issues:** ```bash gh issue create --title "[TYPE] Description" \ --body "Source: CEO Notes ($(date +%Y-%m-%d))\n\n$NOTE_TEXT" \ --label "type:feature,source:ceo-notes" ``` **For Blog Topics:** - Append to `.claude/content/blog-queue.md` - Include: topic, angle, key points, target platform (LinkedIn/Medium/blog) **For Design Decisions:** - Find next decision number in `intel.decisions` in Supabase - Add as OPEN with the note as context - Present for CEO confirmation ### Step 4: Move to Processed After processing each note: 1. Remove from Inbox section 2. Add to Processed section with timestamp and links: ``` - [2026-02-25] "Original note text" → #500 (issue), blog queue ``` ### Step 5: Summary Present a summary: ``` Processed 7 notes: 3 → GitHub issues (#500, #501, #502) 2 → Blog queue (Medium articles) 1 → Design decision (OPEN #265) 1 → Question (asked above) ``` ## Dry Run Mode With `--dry-run`, show what WOULD be created without actually creating anything. Useful for reviewing categorization before committing. ## Safety - Never deletes notes — moves them to Processed - Never creates duplicate issues (checks existing titles first) - Always shows what it will do before doing it - Commits the updated CEO_NOTES.md after processing