$npx -y skills add Productfculty-aipm/PM-Copilot-by-Product-Faculty --skill memoryUse this skill when the user asks to "update my PM Copilot memory", "save this to my profile", "remember that", "update my context", "update my product context", "save this decision", "add this to my memory", "track this risk", "mark this risk as resolved", "add a lesson learned"
| 1 | # Memory Layer — Persistent PM Context |
| 2 | |
| 3 | You manage the user's persistent PM memory profile. Your job is to read, write, and maintain `memory/user-profile.md` so that PM Copilot has complete, accurate context without the user needing to re-brief every session. |
| 4 | |
| 5 | ## Reading Memory |
| 6 | |
| 7 | At session start, read `memory/user-profile.md` and extract: |
| 8 | |
| 9 | 1. **Product context** — name, stage, core problem, business model, current bets |
| 10 | 2. **Stack** — which tools are connected (issue tracker, docs, comms, analytics) |
| 11 | 3. **Working style** — PRD format preference, verbosity, preferred frameworks |
| 12 | 4. **Stakeholders** — names, roles, communication styles, sensitivities |
| 13 | 5. **Roadmap state** — what's in Now/Next/Later, what's been decided and why |
| 14 | 6. **Open questions** — unresolved assumptions and risks |
| 15 | 7. **Tracked risks** — active risks with dates flagged |
| 16 | 8. **Lessons learned** — retrospective outcomes from past initiatives |
| 17 | |
| 18 | Apply context to personalize every response. If `last_updated` is more than 7 days ago, note it and prompt for a refresh. |
| 19 | |
| 20 | ## Checking Staleness |
| 21 | |
| 22 | After loading memory, check: |
| 23 | - If `last_updated` > 7 days: "Your product context hasn't been updated in [N] days. What's changed?" |
| 24 | - If any `open_questions` item is > 14 days old: "You flagged '[question]' [N] days ago. Is it resolved or still open?" |
| 25 | - If any `tracked_risks` item is > 7 days old with status "open": "You flagged '[risk]' as a risk [N] days ago. Is it still active?" |
| 26 | - If any `roadmap_state.now` item has a target date within 7 days: "Your roadmap shows '[item]' launching soon. Want to run /stakeholder-update?" |
| 27 | |
| 28 | Surface at most 2 staleness prompts per session to avoid overwhelming the user. |
| 29 | |
| 30 | ## Writing Memory |
| 31 | |
| 32 | When the user asks to update memory (or agrees to after a session), edit `memory/user-profile.md` with the following rules: |
| 33 | |
| 34 | **Add, never replace blindly:** Before updating a field, read its current value. If existing content is still valid, preserve it and append the new information. Don't overwrite unless the user explicitly wants to replace. |
| 35 | |
| 36 | **Date every new entry:** All items in `open_questions`, `tracked_risks`, `lessons_learned`, and `decided_and_why` must include the date added. |
| 37 | |
| 38 | **Resolve, don't delete:** When a risk is resolved or a question is answered, update its status and add a resolution note — don't remove the entry. This preserves institutional knowledge. |
| 39 | |
| 40 | **Always update `last_updated`:** Set it to today's date (ISO format) after every write. |
| 41 | |
| 42 | ## What to Capture Per Session Type |
| 43 | |
| 44 | **After /write-prd:** |
| 45 | - Add to `decided_and_why`: the core decision the PRD represents (what are we building and why) |
| 46 | - Add to `open_questions`: any unresolved questions from the Open Questions section |
| 47 | - Add to `tracked_risks`: any risks identified in the Dependencies & Risks section |
| 48 | - Update `roadmap_state.now` or `roadmap_state.next` if this PRD is for an active initiative |
| 49 | |
| 50 | **After /roadmap:** |
| 51 | - Overwrite `roadmap_state` with the updated Now/Next/Later |
| 52 | - Add to `decided_and_why` any prioritization decisions made |
| 53 | - Add to `tracked_risks` any pre-mortem risks that were surfaced |
| 54 | - Add to `open_questions` any dependencies that are unresolved |
| 55 | |
| 56 | **After /stakeholder-update:** |
| 57 | - Update the stakeholder's `last_contact` date in the stakeholders section |
| 58 | - Add to `decided_and_why` any decisions that surfaced during update preparation |
| 59 | - Update initiative status in `roadmap_state` |
| 60 | |
| 61 | **After /synthesize-research:** |
| 62 | - Update the relevant persona section with any new signals |
| 63 | - Add to `open_questions` any questions the research raised but didn't answer |
| 64 | - Add potential new roadmap items to `roadmap_state.later` |
| 65 | - Add to `lessons_learned` if the research confirmed or invalidated a past assumption |
| 66 | |
| 67 | **After Gossip Mode (informal updates):** |
| 68 | - Parse the informal update and extract: new stakeholder context, roadmap changes, risks surfaced, decisions made |
| 69 | - Add extracted items to the appropriate sections |
| 70 | - Confirm the parsed update with the user before writing |
| 71 | |
| 72 | ## Gossip Mode Parsing |
| 73 | |
| 74 | When the user speaks informally (voice-to-text style, or "you won't believe what just happened..."), parse and extract structured memory updates: |
| 75 | |
| 76 | Look for: |
| 77 | - **People + opinions:** "[Name] said [X]" → potential stakeholder note |
| 78 | - **Blockers:** "[X] is blocked beca |