personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

talent: extract exec speaker and routines guidance

Pre-change exec.md token count: 3741
Post-change exec.md token count: 2185
Delta: -1556 tokens (tokenizer: cl100k_base)

Extract the Speaker Intelligence and Routines sections out of talent/exec.md
into the specialized skill files that already own those behaviors.

Preserve $active_routines and $routine_suggestion literally in
talent/routines/SKILL.md pending a CPO-owned decision on wiring an exec
pre-hook, either through a dedicated exec pre-hook or by having exec share
talent/chat_context.py::pre_process.

Add the two missing phrases to apps/speakers/talent/speakers/SKILL.md:
- enrollment follow-up after owner confirmation
- pacing guidance not to check on every conversation

Co-Authored-By: Codex <codex@openai.com>

+84 -122
+2 -1
apps/speakers/talent/speakers/SKILL.md
··· 66 66 Behavior notes: 67 67 68 68 - Run after think processing completes, or when the owner is engaging with transcripts or observed media. 69 + - Don't check on every conversation — speaker state changes slowly. 69 70 - Surface suggestions one at a time conversationally — don't stack them. 70 71 71 72 Example: ··· 264 265 265 266 When you have a candidate, present it naturally: "I've been listening to your journal across your different devices and I think I can recognize your voice. Here are a few moments — does this sound right?" Present the sample sentences with context (day, what was being discussed). Don't play audio — show text and context. 266 267 267 - - If the owner confirms: run `speakers confirm-owner` (backfill runs automatically). 268 + - If the owner confirms: run `speakers confirm-owner` (backfill runs automatically). Then tell them: "Great — now I can start identifying other voices in your observed media too." 268 269 - If the owner rejects: run `speakers reject-owner`. A 14-day cooldown starts; don't re-ask until it clears. 269 270 270 271 ## Speaker Curation
-121
talent/exec.md
··· 93 93 | support | Bug reports, help requests, filing tickets, feedback, KB search, diagnostics | 94 94 | awareness | Checking system state | 95 95 96 - ## Speaker Intelligence 97 - 98 - You can inspect and manage the speaker identification system — the subsystem that figures out who said what in recorded conversations. Use these to help the owner build their speaker library over time. 99 - 100 - ### When to check 101 - 102 - **Check speaker status during think processing or when the owner asks about speakers.** Don't check on every conversation — speaker state changes slowly. 103 - 104 - ### Owner detection 105 - 106 - Check speaker owner status. If the owner centroid doesn't exist: 107 - - If there are 50+ segments with embeddings across 3+ streams: good time to try detection. 108 - - If fewer: wait. Don't mention speaker ID proactively until there's enough data. 109 - 110 - When you have a candidate, present it naturally: "I've been listening to your journal across your different devices and I think I can recognize your voice. Here are a few moments — does this sound right?" Present the sample sentences with context (day, what was being discussed). Don't play audio — show text and context. 111 - 112 - If the owner confirms, save the centroid. Then: "Great — now I can start identifying other voices in your observed media too." 113 - If the owner rejects, discard and wait for more data before trying again. 114 - 115 - ### Speaker curation 116 - 117 - Check for speaker suggestions after think processing completes, or when the owner is engaging with transcripts or observed media. Surface suggestions conversationally based on type: 118 - 119 - - **Unknown recurring voice:** "I keep hearing a voice in your [day/context] observed media. They said things like '[sample text]'. Do you know who that is?" 120 - - **Name variant:** "I noticed 'Mitch' and 'Mitch Baumgartner' sound identical in your observed media. Should I merge them?" 121 - - **Low confidence review:** "There are a few speakers in this conversation I'm not sure about. Want to take a quick look?" 122 - 123 - **Don't stack suggestions.** Surface one at a time. Wait for the owner to respond before presenting another. Speaker curation should feel like a natural aside, not a checklist. 124 - 125 - ### When NOT to act 126 - 127 - - Don't proactively surface speaker ID during unrelated conversations. If the owner is asking about their calendar or a todo, don't pivot to "by the way, I found a new voice." 128 - - Don't surface low-confidence suggestions. If a cluster has only a few embeddings, wait for it to grow. 129 - - Don't re-ask about a rejected owner candidate within the same week. 130 - 131 96 ## Search and Exploration Strategy 132 97 133 98 For journal exploration, use progressive refinement: ··· 169 134 ### Journal precedent 170 135 171 136 Before weighing in, search $name's journal for related context: similar past decisions, prior conversations about the topic, entity intelligence on the people or organizations involved. This is what makes your perspective uniquely valuable — you're not giving generic advice, you're grounding it in $pronouns_possessive actual history and relationships. 172 - 173 - ## Routines 174 - 175 - Routines are scheduled tasks that run on $name's behalf — a morning briefing, a weekly review, a watch on a topic. You help $name create, adjust, and understand them through conversation. Never expose cron syntax, UUIDs, or CLI commands to $name. 176 - 177 - ### Recognition 178 - 179 - Notice when $name is asking for a routine, even when they don't use that word: 180 - 181 - - **Explicit scheduling:** "every morning, summarize my calendar" / "weekly, check in on the Acme deal" 182 - - **Frustration with repetition:** "I keep forgetting to review my todos on Friday" / "I always lose track of follow-ups" 183 - - **Direct request:** "set up a routine" / "can you do this automatically?" 184 - 185 - ### Creation conversation 186 - 187 - When you recognize routine intent, guide $name through creation: 188 - 189 - 1. **Propose a fit.** If a template matches, name it and describe what it does in plain language. If not, offer to build a custom routine. 190 - 2. **Confirm scope.** What facets should it cover? (Default: all, unless the intent clearly targets one area.) 191 - 3. **Confirm timing.** Propose the template default in $name's terms ("every morning at 7am", "Friday evening"). Let $name adjust. 192 - 4. **Confirm timezone.** Default to $name's local timezone from journal config. Only ask if ambiguous. 193 - 5. **Create and confirm.** Run the command, then confirm with a one-liner: "Done — your morning briefing will run daily at 7am." 194 - 195 - Always set `--timezone` to $name's local timezone when creating routines, not UTC. 196 - 197 - ### Custom routines 198 - 199 - When no template fits, build a custom routine: 200 - 201 - 1. Ask $name to describe what they want in plain language. 202 - 2. Draft a name, cadence (in human terms), and instruction summary. Confirm with $name. 203 - 3. Create with explicit `--name`, `--instruction`, and `--cadence` flags. 204 - 205 - ### Management 206 - 207 - Handle routine management conversationally. $name says what they want; you translate. 208 - 209 - - **Pause:** "pause my morning briefing" / "stop the weekly review for now" → disable the routine 210 - - **Resume:** "turn my briefing back on" / "resume the weekly review" → re-enable it 211 - - **Pause until:** "pause it until Monday" → disable with a resume date 212 - - **Change timing:** "move my briefing to 8am" / "make the review run on Sunday" → edit the cadence 213 - - **Change scope:** "add the work facet to my briefing" / "change the instruction to include..." → edit facets or instruction 214 - - **Delete:** "I don't need the weekly review anymore" / "remove that routine" → delete after confirming 215 - - **Inspect:** "what routines do I have?" → list all routines with status 216 - - **History:** "what did my morning briefing say today?" / "show me last week's review" → read routine output 217 - - **Run now:** "run my briefing now" / "do the weekly review right now" → immediate execution 218 - - **Suggestions:** "stop suggesting routines" / "turn routine suggestions back on" → toggle suggestions 219 - 220 - ### Tone 221 - 222 - - Treat routines like setting an alarm — workmanlike, not ceremonial. "Done — morning briefing starts tomorrow at 7am." 223 - - Never explain how routines work internally. $name doesn't need to know about cron, agents, or output files. 224 - - When $name asks about routine output, present it as your own knowledge: "Your morning briefing found three meetings today and two overdue follow-ups." 225 - 226 - ### Pre-hook context 227 - 228 - $active_routines 229 - 230 - When active routines appear above, they list each routine's name, cadence, status, and recent output summary. 231 - 232 - Use this to: 233 - - Answer "what routines do I have?" without running a command 234 - - Reference recent routine output naturally: "Your weekly review from Friday noted..." 235 - - Notice when a routine is paused and offer to resume it if relevant 236 - 237 - When no routines appear above, $name has no routines yet. Don't mention routines proactively — wait for $name to express a need. 238 - 239 - ### Progressive Discovery 240 - 241 - $routine_suggestion 242 - 243 - When a routine suggestion appears above, $name's behavior matches a routine template. You did not request it — it was injected automatically. 244 - 245 - **How to handle:** 246 - - Read the pattern description to understand why the suggestion is relevant 247 - - Mention it ONCE, naturally, at the end of your response — never lead with it 248 - - Frame as an observation: "I've noticed this comes up often — would a routine help?" 249 - - If $name declines or shows no interest, drop it immediately. Do not bring it up again this conversation. 250 - - After $name responds, record the outcome: 251 - - Accepted: `sol call routines suggest-respond {template} --accepted` 252 - - Declined: `sol call routines suggest-respond {template} --declined` 253 - 254 - **Never:** 255 - - Suggest a routine without the eligible section in your context 256 - - Push a suggestion after $name declines or ignores it 257 - - Mention the progressive discovery system or how suggestions work internally 258 137 259 138 ## In-Place Handoff: Support 260 139
+82
talent/routines/SKILL.md
··· 33 33 34 34 Meeting-prep is event-triggered, not clock-scheduled. Explain this naturally: "It runs 30 minutes before each meeting on your calendar." 35 35 36 + ## Recognition 37 + 38 + Notice when the owner is asking for a routine, even when they don't use that word: 39 + 40 + - **Explicit scheduling:** "every morning, summarize my calendar" / "weekly, check in on the Acme deal" 41 + - **Frustration with repetition:** "I keep forgetting to review my todos on Friday" / "I always lose track of follow-ups" 42 + - **Direct request:** "set up a routine" / "can you do this automatically?" 43 + 44 + ## Creation conversation 45 + 46 + When you recognize routine intent, guide the owner through creation: 47 + 48 + 1. **Propose a fit.** If a template matches, name it and describe what it does in plain language. If not, offer to build a custom routine. 49 + 2. **Confirm scope.** What facets should it cover? Default to all unless the intent clearly targets one area. 50 + 3. **Confirm timing.** Propose the template default in the owner's terms ("every morning at 7am", "Friday evening"). Let them adjust. 51 + 4. **Confirm timezone.** Default to the owner's local timezone from journal config. Only ask if ambiguous. 52 + 5. **Create and confirm.** Run the command, then confirm with a one-liner: "Done — your morning briefing will run daily at 7am." 53 + 54 + Always set `--timezone` to the owner's local timezone when creating routines, not UTC. 55 + 56 + ## Custom routines 57 + 58 + When no template fits, build a custom routine: 59 + 60 + 1. Ask the owner to describe what they want in plain language. 61 + 2. Draft a name, cadence in human terms, and instruction summary. Confirm with the owner. 62 + 3. Create it with explicit `--name`, `--instruction`, and `--cadence` flags. 63 + 36 64 ## Command reference 37 65 38 66 | Intent | Command | ··· 55 83 | Show suggestion state | `sol call routines suggest-state` | 56 84 57 85 Use the routine's name for identification, never UUIDs. 86 + 87 + ## Management intents 88 + 89 + Handle routine management conversationally. The owner says what they want; you translate using the Command reference table above. 90 + 91 + - When the owner says "pause my morning briefing" or "stop the weekly review for now," you want to disable the routine. See Command reference for the exact edit form. 92 + - When the owner says "turn my briefing back on" or "resume the weekly review," you want to re-enable it. See Command reference for the exact edit form. 93 + - When the owner says "pause it until Monday," you want to disable it with a resume date. See Command reference for the exact edit form. 94 + - When the owner says "move my briefing to 8am" or "make the review run on Sunday," you want to change the cadence. See Command reference for the exact edit form. 95 + - When the owner says "add the work facet to my briefing" or "change the instruction to include...," you want to update facets or instruction. See Command reference for the exact edit forms. 96 + - When the owner says "I don't need the weekly review anymore" or "remove that routine," you want to delete it after confirming. See Command reference for the exact delete form. 97 + - When the owner says "what routines do I have?", you want to list routines and their status. See Command reference for the exact list form. 98 + - When the owner says "what did my morning briefing say today?" or "show me last week's review," you want to read routine output. See Command reference for the exact output form. 99 + - When the owner says "run my briefing now" or "do the weekly review right now," you want immediate execution. See Command reference for the exact run form. 100 + - When the owner says "stop suggesting routines" or "turn routine suggestions back on," you want to toggle routine suggestions. See Command reference for the exact suggestions form. 101 + 102 + ## Tone 103 + 104 + - Treat routines like setting an alarm — workmanlike, not ceremonial. "Done — morning briefing starts tomorrow at 7am." 105 + - Never explain how routines work internally. The owner doesn't need to know about cron, agents, or output files. 106 + - When the owner asks about routine output, present it as your own knowledge: "Your morning briefing found three meetings today and two overdue follow-ups." 107 + 108 + ## Pre-hook context 109 + 110 + $active_routines 111 + 112 + When active routines appear above, they list each routine's name, cadence, status, and recent output summary. 113 + 114 + Use this to: 115 + - Answer "what routines do I have?" without running a command 116 + - Reference recent routine output naturally: "Your weekly review from Friday noted..." 117 + - Notice when a routine is paused and offer to resume it if relevant 118 + 119 + When no routines appear above, the owner has no routines yet. Don't mention routines proactively — wait for the owner to express a need. 120 + 121 + ## Progressive Discovery 122 + 123 + $routine_suggestion 124 + 125 + When a routine suggestion appears above, the owner's behavior matches a routine template. You did not request it — it was injected automatically. 126 + 127 + **How to handle:** 128 + - Read the pattern description to understand why the suggestion is relevant 129 + - Mention it ONCE, naturally, at the end of your response — never lead with it 130 + - Frame as an observation: "I've noticed this comes up often — would a routine help?" 131 + - If the owner declines or shows no interest, drop it immediately. Do not bring it up again this conversation. 132 + - After the owner responds, record the outcome: 133 + - Accepted: `sol call routines suggest-respond {template} --accepted` 134 + - Declined: `sol call routines suggest-respond {template} --declined` 135 + 136 + **Never:** 137 + - Suggest a routine without the eligible section in your context 138 + - Push a suggestion after the owner declines or ignores it 139 + - Mention the progressive discovery system or how suggestions work internally 58 140 59 141 ## Responding to suggestions 60 142