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.decisionsin Supabase - Blog Topic — queue for the
/writeragent - 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:
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.decisionsin Supabase - Add as OPEN with the note as context
- Present for CEO confirmation
Step 4: Move to Processed
After processing each note:
- Remove from Inbox section
- 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