thoth-plugin 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +17 -1
  2. package/defaults/skill/cal-grid/SKILL.md +168 -0
  3. package/defaults/skill/cal-grid/cal-grid-template.md +106 -0
  4. package/defaults/skill/context-discovery/SKILL.md +253 -0
  5. package/defaults/skill/context-discovery/discovery.prose +143 -0
  6. package/defaults/skill/context-onboarding/SKILL.md +370 -0
  7. package/{dist/defaults/skill/_legacy/email-draft/skill.md → defaults/skill/email-draft/SKILL.md} +33 -30
  8. package/defaults/skill/evening-close/SKILL.md +93 -61
  9. package/defaults/skill/evening-close/evening-close-template.md +42 -0
  10. package/{dist/defaults/skill/_legacy → defaults/skill}/gardener/SKILL.md +3 -3
  11. package/{dist/defaults/skill/_legacy → defaults/skill}/google-chat-scan/SKILL.md +7 -0
  12. package/{dist/defaults/skill/_legacy → defaults/skill}/leadership-coach/SKILL.md +9 -8
  13. package/defaults/skill/mail-triage/SKILL.md +272 -15
  14. package/defaults/skill/mail-triage/mail-triage-template.md +90 -0
  15. package/defaults/skill/morning-boot/SKILL.md +214 -25
  16. package/defaults/skill/morning-boot/daily-log-template.md +98 -0
  17. package/defaults/skill/morning-boot/morning-boot.prose +98 -0
  18. package/defaults/skill/{_legacy/onboarding → onboarding}/SKILL.md +7 -6
  19. package/defaults/skill/open-prose/SKILL.md +373 -0
  20. package/defaults/skill/open-prose/antipatterns.md +852 -0
  21. package/defaults/skill/open-prose/docs.md +2676 -0
  22. package/defaults/skill/open-prose/patterns.md +610 -0
  23. package/defaults/skill/open-prose/prose.md +950 -0
  24. package/{dist/defaults/skill/_legacy → defaults/skill}/post-meeting-drill/SKILL.md +90 -95
  25. package/defaults/skill/post-meeting-drill/examples.md +130 -0
  26. package/defaults/skill/post-meeting-drill/post-meeting-drill-template.md +111 -0
  27. package/defaults/skill/skill-generator/SKILL.md +217 -0
  28. package/defaults/skill/skill-generator/skill-template.md +163 -0
  29. package/defaults/skill/slack-pulse/SKILL.md +211 -14
  30. package/defaults/skill/slack-pulse/slack-pulse-template.md +98 -0
  31. package/defaults/skill/slack-write/skill.md +184 -0
  32. package/defaults/skill/thought-router/SKILL.md +7 -8
  33. package/dist/cli.js +137 -3
  34. package/dist/config/schema.d.ts +0 -2
  35. package/dist/defaults/skill/cal-grid/SKILL.md +168 -0
  36. package/dist/defaults/skill/cal-grid/cal-grid-template.md +106 -0
  37. package/dist/defaults/skill/context-discovery/SKILL.md +253 -0
  38. package/dist/defaults/skill/context-discovery/discovery.prose +143 -0
  39. package/dist/defaults/skill/context-onboarding/SKILL.md +370 -0
  40. package/{defaults/skill/_legacy/email-draft/skill.md → dist/defaults/skill/email-draft/SKILL.md} +33 -30
  41. package/dist/defaults/skill/evening-close/SKILL.md +93 -61
  42. package/dist/defaults/skill/evening-close/evening-close-template.md +42 -0
  43. package/{defaults/skill/_legacy → dist/defaults/skill}/gardener/SKILL.md +3 -3
  44. package/{defaults/skill/_legacy → dist/defaults/skill}/google-chat-scan/SKILL.md +7 -0
  45. package/{defaults/skill/_legacy → dist/defaults/skill}/leadership-coach/SKILL.md +9 -8
  46. package/dist/defaults/skill/mail-triage/SKILL.md +272 -15
  47. package/dist/defaults/skill/mail-triage/mail-triage-template.md +90 -0
  48. package/dist/defaults/skill/morning-boot/SKILL.md +214 -25
  49. package/dist/defaults/skill/morning-boot/daily-log-template.md +98 -0
  50. package/dist/defaults/skill/morning-boot/morning-boot.prose +98 -0
  51. package/dist/defaults/skill/{_legacy/onboarding → onboarding}/SKILL.md +7 -6
  52. package/dist/defaults/skill/open-prose/SKILL.md +373 -0
  53. package/dist/defaults/skill/open-prose/antipatterns.md +852 -0
  54. package/dist/defaults/skill/open-prose/docs.md +2676 -0
  55. package/dist/defaults/skill/open-prose/patterns.md +610 -0
  56. package/dist/defaults/skill/open-prose/prose.md +950 -0
  57. package/{defaults/skill/_legacy → dist/defaults/skill}/post-meeting-drill/SKILL.md +90 -95
  58. package/dist/defaults/skill/post-meeting-drill/examples.md +130 -0
  59. package/dist/defaults/skill/post-meeting-drill/post-meeting-drill-template.md +111 -0
  60. package/dist/defaults/skill/skill-generator/SKILL.md +217 -0
  61. package/dist/defaults/skill/skill-generator/skill-template.md +163 -0
  62. package/dist/defaults/skill/slack-pulse/SKILL.md +211 -14
  63. package/dist/defaults/skill/slack-pulse/slack-pulse-template.md +98 -0
  64. package/dist/defaults/skill/slack-write/skill.md +184 -0
  65. package/dist/defaults/skill/thought-router/SKILL.md +7 -8
  66. package/dist/hooks/index.d.ts +0 -1
  67. package/dist/index.js +14 -201
  68. package/dist/sdk/index.d.ts +1 -1
  69. package/dist/sdk/sentinel-service.d.ts +0 -1
  70. package/dist/sdk/test-harness.d.ts +90 -0
  71. package/dist/shared/index.d.ts +0 -1
  72. package/dist/specialization/prompt-sections.d.ts +1 -1
  73. package/package.json +1 -1
  74. package/defaults/skill/_legacy/cal-grid/SKILL.md +0 -16
  75. package/defaults/skill/_legacy/skill-generator/SKILL.md +0 -362
  76. package/dist/defaults/skill/_legacy/cal-grid/SKILL.md +0 -16
  77. package/dist/defaults/skill/_legacy/skill-generator/SKILL.md +0 -362
  78. package/dist/hooks/temporal-awareness.d.ts +0 -31
  79. package/dist/hooks/temporal-awareness.test.d.ts +0 -1
  80. /package/defaults/skill/{_legacy/capsule-init → capsule-init}/SKILL.md +0 -0
  81. /package/defaults/skill/{_legacy/cross-linker → cross-linker}/SKILL.md +0 -0
  82. /package/defaults/skill/{_legacy/gardener → gardener}/confidence-tiers.md +0 -0
  83. /package/defaults/skill/{_legacy/gardener → gardener}/repair-workflow.md +0 -0
  84. /package/defaults/skill/{_legacy/handover → handover}/SKILL.md +0 -0
  85. /package/defaults/skill/{_legacy/interview-prep → interview-prep}/SKILL.md +0 -0
  86. /package/defaults/skill/{_legacy/link-retrofit → link-retrofit}/SKILL.md +0 -0
  87. /package/defaults/skill/{_legacy/restore-environment → restore-environment}/SKILL.md +0 -0
  88. /package/defaults/skill/{_legacy/scorecard-synthesis → scorecard-synthesis}/SKILL.md +0 -0
  89. /package/defaults/skill/{_legacy/skill-generator → skill-generator}/testing-protocol.md +0 -0
  90. /package/defaults/skill/{_legacy/system-init → system-init}/SKILL.md +0 -0
  91. /package/dist/defaults/skill/{_legacy/capsule-init → capsule-init}/SKILL.md +0 -0
  92. /package/dist/defaults/skill/{_legacy/cross-linker → cross-linker}/SKILL.md +0 -0
  93. /package/dist/defaults/skill/{_legacy/gardener → gardener}/confidence-tiers.md +0 -0
  94. /package/dist/defaults/skill/{_legacy/gardener → gardener}/repair-workflow.md +0 -0
  95. /package/dist/defaults/skill/{_legacy/handover → handover}/SKILL.md +0 -0
  96. /package/dist/defaults/skill/{_legacy/interview-prep → interview-prep}/SKILL.md +0 -0
  97. /package/dist/defaults/skill/{_legacy/link-retrofit → link-retrofit}/SKILL.md +0 -0
  98. /package/dist/defaults/skill/{_legacy/restore-environment → restore-environment}/SKILL.md +0 -0
  99. /package/dist/defaults/skill/{_legacy/scorecard-synthesis → scorecard-synthesis}/SKILL.md +0 -0
  100. /package/dist/defaults/skill/{_legacy/skill-generator → skill-generator}/testing-protocol.md +0 -0
  101. /package/dist/defaults/skill/{_legacy/system-init → system-init}/SKILL.md +0 -0
@@ -193,7 +193,7 @@ CHECK: Every entity file has at least one incoming link
193
193
 
194
194
  ## Mode 2: Repair Plan
195
195
 
196
- See [repair-workflow.md](repair-workflow.md) for detailed repair plan generation and execution protocol.
196
+ See [repair-workflow.md](thoth/thoth-core/defaults/skill/gardener/repair-workflow.md) for detailed repair plan generation and execution protocol.
197
197
 
198
198
  ---
199
199
 
@@ -201,7 +201,7 @@ See [repair-workflow.md](repair-workflow.md) for detailed repair plan generation
201
201
 
202
202
  **CRITICAL: Require explicit approval for each phase.**
203
203
 
204
- See [repair-workflow.md](repair-workflow.md) for execution protocol.
204
+ See [repair-workflow.md](thoth/thoth-core/defaults/skill/gardener/repair-workflow.md) for execution protocol.
205
205
 
206
206
  ---
207
207
 
@@ -240,7 +240,7 @@ For each file, search for mentions of OTHER files' entities:
240
240
 
241
241
  ### Step 3: Apply Confidence Tiers
242
242
 
243
- See [confidence-tiers.md](confidence-tiers.md) for detailed tier definitions.
243
+ See [confidence-tiers.md](thoth/thoth-core/defaults/skill/gardener/confidence-tiers.md) for detailed tier definitions.
244
244
 
245
245
  **Quick Reference:**
246
246
 
@@ -1,8 +1,15 @@
1
1
  ---
2
2
  name: google-chat-scan
3
3
  description: Use when needing to scan Google Chat spaces for messages, extract action items, summarize conversations, or find specific information in chat history
4
+ triggers:
5
+ created: 2026-01-07
6
+ updated: 2026-01-10
4
7
  ---
5
8
 
9
+ <!--
10
+ ARCHITECTURE REFERENCE: docs/concepts/skill-architecture.md
11
+ -->
12
+
6
13
  # Google Chat Scan
7
14
 
8
15
  Scan Google Chat spaces to extract actionable information from conversations.
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  name: leadership-coach
3
- description: IC-to-Manager coaching for new leaders. Use for leadership challenges, team operations, stakeholder management, 1:1 prep, performance conversations, or when feeling overwhelmed as a new manager.
4
- triggers:
5
- - help me with leadership
6
- - manager coaching
7
- - prep for 1:1
8
- - performance conversation
9
- - feeling overwhelmed as manager
10
- - team challenge
3
+ description: "IC-to-Manager coaching for new leaders. Use for leadership challenges, team operations, stakeholder management, 1:1 prep, performance conversations, or when feeling overwhelmed as a new manager."
4
+ triggers:
5
+ - "prep for 1: 1"
6
+ created: 2026-01-07
7
+ updated: 2026-01-10
11
8
  ---
12
9
 
10
+ <!--
11
+ ARCHITECTURE REFERENCE: docs/concepts/skill-architecture.md
12
+ -->
13
+
13
14
  ## Role
14
15
 
15
16
  You are a Pragmatic Performance Coach — a "Catalyst Leader" who guides new managers through the IC-to-Manager mindset shift. You are a former engineering/product leader who has mastered becoming a multiplier who builds high-performing, autonomous teams.
@@ -1,26 +1,283 @@
1
1
  ---
2
2
  name: mail-triage
3
- version: 1.0.0
4
- description: Max emails to process
3
+ description: Use when Zeus asks to check email, process inbox, or scan for messages. Exhaustively drains inbox and outputs structured triage report with meeting notes detection.
5
4
  triggers:
6
- inputs:
7
- - name: limit
8
- type: markdown
9
- required: false
10
- default: 20
11
- output:
5
+ template: mail-triage-template.md
12
6
  created: 2026-01-09
13
- updated: 2026-01-09
7
+ updated: 2026-01-10
14
8
  ---
15
9
 
10
+ <!--
11
+ ARCHITECTURE REFERENCE: docs/concepts/skill-architecture.md
12
+ This skill can be invoked standalone OR as a subagent context template.
13
+ -->
14
+
16
15
  # Mail Triage Skill
17
16
 
18
- You are the Lead Triage Specialist for Zeus's Chief of Staff.
17
+ **Core principle:** Exhaust the inbox, classify everything, detect meeting notes for handoff, persist structured output. Never improvise.
18
+
19
+ ---
20
+
21
+ ## Context Requirements (EXECUTE FIRST)
22
+
23
+ This skill requires the user's email address for API calls.
24
+
25
+ **Step 0 — Get Identity:**
26
+
27
+ 1. **Check if passed in context**: If you received `context.identity.email`, use it directly.
28
+
29
+ 2. **If not passed, invoke context-discovery skill**: Call `skill({ name: "context-discovery" })` and use the returned `email` value.
30
+
31
+ 3. **Store as `EMAIL`** for use in all API calls below.
32
+
33
+ **If discovery fails**: Stop and report the error from context-discovery.
34
+
35
+ ---
36
+
37
+ ## When to Use
38
+
39
+ - Zeus asks to check email or process inbox
40
+ - Morning boot routine (mail-triage is a component)
41
+ - Any request about what's in the inbox
42
+
43
+ **Do NOT use when:**
44
+ - Zeus asks to read a specific email (just read it)
45
+ - Zeus asks to send/draft an email (use email-draft skill)
46
+ - Processing meeting notes deeply (that's post-meeting-drill)
47
+
48
+ ---
49
+
50
+ ## Quick Reference
51
+
52
+ | Task | Tool | Command |
53
+ |------|------|---------|
54
+ | Query inbox | google-workspace_search_gmail_messages | `query: "label:inbox"` |
55
+ | Read threads batch | google-workspace_get_gmail_threads_content_batch | `thread_ids: [...]` |
56
+ | Read single message | google-workspace_get_gmail_message_content | `message_id: "..."` |
57
+ | Persist output | write | `work/operations/daily-log/YYYY-MM-DD/mail-triage.md` |
58
+
59
+ **Email:** Use `{EMAIL}` from Context Discovery (Step 0)
60
+
61
+ ---
62
+
63
+ ## Process
64
+
65
+ ### Phase 1: Query Inbox
66
+
67
+ ```
68
+ google-workspace_search_gmail_messages(
69
+ query="label:inbox",
70
+ user_google_email={EMAIL},
71
+ page_size=25
72
+ )
73
+ ```
74
+
75
+ Paginate until inbox is exhausted.
76
+
77
+ ### Phase 2: Batch Read Threads
78
+
79
+ ```
80
+ google-workspace_get_gmail_threads_content_batch(
81
+ thread_ids=[...],
82
+ user_google_email={EMAIL}
83
+ )
84
+ ```
85
+
86
+ Process in batches of 25 max.
87
+
88
+ ### Phase 3: Classify Each Item
89
+
90
+ | Classification | Definition | Action |
91
+ |----------------|------------|--------|
92
+ | **ACTION** | Requires Zeus's decision/response | Add to ACTION_ITEMS table |
93
+ | **FYI** | Contextually relevant, no immediate action | Add to FYI_ITEMS table |
94
+ | **ARCHIVE** | Noise, automated, redundant | Add to ARCHIVED table |
95
+ | **MEETING_NOTES** | From `gemini-notes@google.com` or contains meeting notes | Add to MEETING_NOTES_DETECTED table |
96
+
97
+ #### Priority Boosters (for ACTION items)
98
+
99
+ | Signal | Boost |
100
+ |--------|-------|
101
+ | From: Direct report | +1 |
102
+ | From: Manager or skip-level | +2 |
103
+ | Contains "urgent", "blocker", "ASAP" | +1 |
104
+ | Contains deadline language | +1 |
105
+ | In TO: (not CC:) | +1 |
106
+ | Unanswered >24h | +1 |
107
+
108
+ ### Phase 4: MEETING_NOTES Detection
109
+
110
+ **CRITICAL GATE: Meeting notes trigger AUTO-HANDOFF to post-meeting-drill.**
111
+
112
+ #### Detection Rules
113
+
114
+ | Pattern | Classification |
115
+ |---------|----------------|
116
+ | From: `gemini-notes@google.com` | MEETING_NOTES |
117
+ | Subject contains "Notes from" + meeting context | MEETING_NOTES |
118
+ | Subject contains "shared a document" + "meeting"/"notes" | MEETING_NOTES |
119
+
120
+ #### When Detected — Extract Doc ID
121
+
122
+ 1. **STOP** — Do NOT read the Google Doc content
123
+ 2. **STOP** — Do NOT extract action items
124
+ 3. **Extract the Google Doc ID** from the email body:
125
+ - Look for link pattern: `docs.google.com/document/d/{DOC_ID}/`
126
+ - Extract `DOC_ID` from the URL
127
+ 4. Extract metadata:
128
+ - Meeting title (from subject)
129
+ - Meeting date (from email date)
130
+ - **Doc ID** (extracted from link)
131
+ - Message ID (for reference)
132
+ 5. Add to `MEETING_NOTES_DETECTED` table with doc_id
133
+ 6. Continue to next email
134
+
135
+ **The auto-handoff happens AFTER triage is complete (Phase 7).**
136
+
137
+ ### Phase 5: Output (MANDATORY FORMAT)
138
+
139
+ **Template:** Read `mail-triage-template.md` from this skill folder.
140
+
141
+ **Output path:** `work/operations/daily-log/YYYY-MM-DD/mail-triage.md`
19
142
 
20
- ## Protocol Execution
143
+ Fill the template placeholders with scan results:
21
144
 
22
- 1. **Read Master Instructions**: Load the full protocol from `kernel/Agents/mail-triage.md`.
23
- 2. **Execute**: Follow the protocol exactly as defined in the master file.
24
- 3. **Synthesize**: Provide the high-resolution executive report and the required raw data block.
145
+ | Placeholder | Value |
146
+ |-------------|-------|
147
+ | `{{DATE}}` | Today's date (YYYY-MM-DD) |
148
+ | `{{TIME}}` | Scan completion time (HH:MM) |
149
+ | `{{TOTAL_ITEMS}}` | Total emails processed |
150
+ | `{{EXECUTIVE_SUMMARY}}` | 2-3 sentences: What needs attention? |
151
+ | `{{ACTION_ITEMS_TABLE}}` | Table rows for ACTION items |
152
+ | `{{ACTION_COUNT}}` | Count of ACTION items |
153
+ | `{{FYI_ITEMS_TABLE}}` | Table rows for FYI items |
154
+ | `{{FYI_COUNT}}` | Count of FYI items |
155
+ | `{{MEETING_NOTES_TABLE}}` | Table rows for detected meeting notes (must include doc_id column) |
156
+ | `{{MEETING_NOTES_COUNT}}` | Count of meeting notes |
157
+ | `{{ARCHIVED_TABLE}}` | Table rows for archived items |
158
+ | `{{ARCHIVED_COUNT}}` | Count of archived items |
159
+ | `{{RECOMMENDATIONS}}` | Specific follow-up actions |
160
+
161
+ **Critical:** Output MUST include `## SCAN_DATA_START` and `## SCAN_DATA_END` markers for parsing.
162
+
163
+ ### Phase 6: Report to Zeus
164
+
165
+ After persisting, return verbal summary:
166
+
167
+ ```
168
+ Processed [N] emails.
169
+
170
+ **ACTION (N):** [Brief list]
171
+ **FYI (N):** [Brief list]
172
+ **MEETING_NOTES (N):** Auto-processing via post-meeting-drill
173
+ **ARCHIVED (N):** [Count]
174
+
175
+ Persisted to: work/operations/daily-log/YYYY-MM-DD/mail-triage.md
176
+ ```
177
+
178
+ ### Phase 7: Auto-Handoff to Post-Meeting-Drill
179
+
180
+ **If MEETING_NOTES_COUNT > 0**, automatically invoke post-meeting-drill:
181
+
182
+ ```
183
+ For each meeting note detected:
184
+ skill({
185
+ name: "post-meeting-drill",
186
+ context: { doc_id: "{DOC_ID}", title: "{TITLE}", date: "{DATE}" }
187
+ })
188
+ ```
189
+
190
+ **Do NOT ask Zeus** — auto-process. This is the whole point of extracting doc_id in Phase 4.
191
+
192
+ **Loop prevention:** If `context.caller == "post-meeting-drill"`, skip this phase.
193
+
194
+ ---
195
+
196
+ ## Common Mistakes
197
+
198
+ | Mistake | Prevention |
199
+ |---------|------------|
200
+ | Reading Gemini docs during triage | MEETING_NOTES = metadata only. Handoff to post-meeting-drill. |
201
+ | Not persisting to file | Output MUST be written to `mail-triage.md`. Not optional. |
202
+ | Missing SCAN_DATA markers | These are parsing anchors. Always include `## SCAN_DATA_START` and `## SCAN_DATA_END`. |
203
+ | Improvising output format | Use the exact template. Tables must have correct columns. |
204
+ | Processing meeting notes "since I'm already here" | No. Flag and handoff. That's the whole point. |
205
+ | Forgetting message IDs | Every item needs Message ID for downstream tools. |
206
+ | Stopping before inbox exhausted | Paginate until `page_token` is empty. |
207
+
208
+ ---
209
+
210
+ ## Red Flags - STOP
211
+
212
+ - About to call `drive-synapsis_read_google_drive_file` for a Gemini doc → STOP. That's post-meeting-drill's job.
213
+ - Output doesn't have `SCAN_DATA_START` marker → STOP. Use the template.
214
+ - Not writing to file → STOP. Persistence is mandatory.
215
+ - Skipping MEETING_NOTES_DETECTED table → STOP. This enables handoff.
216
+ - Using wrong email address → STOP. Use `{EMAIL}` from Context Discovery.
217
+
218
+ ---
219
+
220
+ ## Verification Checklist
221
+
222
+ Before reporting complete:
223
+
224
+ - [ ] All inbox items processed (paginated to exhaustion)
225
+ - [ ] Each item classified into exactly one category
226
+ - [ ] MEETING_NOTES items have message_id (not processed deeply)
227
+ - [ ] Output written to `work/operations/daily-log/YYYY-MM-DD/mail-triage.md`
228
+ - [ ] Output has `## SCAN_DATA_START` and `## SCAN_DATA_END` markers
229
+ - [ ] All tables have correct columns per template
230
+ - [ ] Handoff section lists meeting notes count and processing instruction
231
+ - [ ] Verbal summary provided to Zeus
232
+
233
+ ---
234
+
235
+ ## Edge Cases
236
+
237
+ ### Empty Inbox
238
+ ```markdown
239
+ # Mail Triage — [Date]
240
+
241
+ **Items Processed:** 0
242
+
243
+ Inbox clear. No items to process.
244
+
245
+ (Still check for meeting notes in last 24h that may have been auto-archived)
246
+ ```
247
+
248
+ ### High Volume (>50 items)
249
+ - Process in batches of 25
250
+ - Prioritize ACTION classification first
251
+ - Aggregate ARCHIVE items: "12 PIM notifications archived"
252
+
253
+ ### Ambiguous Classification
254
+ - Default to FYI with note: "Review recommended"
255
+ - Never auto-archive if sender is in Team or Stakeholders
256
+
257
+ ---
258
+
259
+ ## Integration: Bidirectional with Post-Meeting-Drill
260
+
261
+ ### mail-triage → post-meeting-drill (Auto)
262
+
263
+ When mail-triage detects meeting notes:
264
+ 1. Extract doc_id from email body (Google Doc link)
265
+ 2. After triage complete, auto-invoke post-meeting-drill with doc_id
266
+ 3. No user confirmation needed — this is the default flow
267
+
268
+ ### post-meeting-drill → mail-triage (On Demand)
269
+
270
+ When post-meeting-drill is invoked manually without doc_id:
271
+ 1. post-meeting-drill calls mail-triage with `context.caller = "post-meeting-drill"`
272
+ 2. mail-triage scans for meeting notes, returns doc_ids
273
+ 3. mail-triage skips Phase 7 (no recursive handoff)
274
+ 4. post-meeting-drill processes the returned doc_ids
275
+
276
+ This bidirectional design means:
277
+ - **mail-triage always hands off** to post-meeting-drill automatically
278
+ - **post-meeting-drill can trigger** mail-triage to find notes
279
+ - **No infinite loops** via `context.caller` check
280
+
281
+ ---
25
282
 
26
- **MANDATORY**: Ensure the output includes the `## SCAN_DATA_START` and `## SCAN_DATA_END` markers as specified in the master instructions.
283
+ *Mail Triage Skill v2.1 | Auto-handoff with doc_id extraction*
@@ -0,0 +1,90 @@
1
+ ---
2
+ type: operations
3
+ hemisphere: work
4
+ created: {{DATE}}
5
+ updated: 2026-01-10
6
+ tags: [mail-triage, daily-log]
7
+ summary: Mail Triage — {{DATE}}
8
+ ---
9
+
10
+ # Mail Triage — {{DATE}}
11
+
12
+ **Scan Time:** {{TIME}}
13
+ **Query:** label:inbox
14
+ **Items Processed:** {{TOTAL_ITEMS}}
15
+ **Items Remaining:** 0
16
+
17
+ ---
18
+
19
+ ## Executive Summary
20
+
21
+ {{EXECUTIVE_SUMMARY}}
22
+
23
+ ---
24
+
25
+ ## SCAN_DATA_START
26
+
27
+ ### ACTION_ITEMS
28
+
29
+ | Priority | Subject | Sender | Action Needed | Message ID |
30
+ |----------|---------|--------|---------------|------------|
31
+ {{ACTION_ITEMS_TABLE}}
32
+
33
+ **Total:** {{ACTION_COUNT}} items requiring response
34
+
35
+ ### FYI_ITEMS
36
+
37
+ | Subject | Sender | Summary | Message ID |
38
+ |---------|--------|---------|------------|
39
+ {{FYI_ITEMS_TABLE}}
40
+
41
+ **Total:** {{FYI_COUNT}} informational items
42
+
43
+ ### MEETING_NOTES_DETECTED
44
+
45
+ | Meeting Title | Date | Doc ID | Message ID | Status |
46
+ |---------------|------|--------|------------|--------|
47
+ {{MEETING_NOTES_TABLE}}
48
+
49
+ **Total:** {{MEETING_NOTES_COUNT}} meeting notes for auto-processing
50
+
51
+ ### ARCHIVED
52
+
53
+ | Subject | Sender | Reason |
54
+ |---------|--------|--------|
55
+ {{ARCHIVED_TABLE}}
56
+
57
+ **Total:** {{ARCHIVED_COUNT}} items archived
58
+
59
+ ## SCAN_DATA_END
60
+
61
+ ---
62
+
63
+ ## Priority Breakdown
64
+
65
+ | Classification | Count | Percentage |
66
+ |----------------|-------|------------|
67
+ | ACTION | {{ACTION_COUNT}} | {{ACTION_PCT}}% |
68
+ | FYI | {{FYI_COUNT}} | {{FYI_PCT}}% |
69
+ | MEETING_NOTES | {{MEETING_NOTES_COUNT}} | {{MEETING_NOTES_PCT}}% |
70
+ | ARCHIVED | {{ARCHIVED_COUNT}} | {{ARCHIVED_PCT}}% |
71
+
72
+ ---
73
+
74
+ ## Handoff: Meeting Notes
75
+
76
+ {{MEETING_NOTES_COUNT}} meeting notes detected.
77
+
78
+ {{#if MEETING_NOTES_COUNT > 0}}
79
+ **Auto-processing:** post-meeting-drill invoked automatically with doc_ids.
80
+ {{/if}}
81
+
82
+ ---
83
+
84
+ ## Recommendations
85
+
86
+ {{RECOMMENDATIONS}}
87
+
88
+ ---
89
+
90
+ *Generated by mail-triage skill at {{TIME}}*