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.
- package/README.md +17 -1
- package/defaults/skill/cal-grid/SKILL.md +168 -0
- package/defaults/skill/cal-grid/cal-grid-template.md +106 -0
- package/defaults/skill/context-discovery/SKILL.md +253 -0
- package/defaults/skill/context-discovery/discovery.prose +143 -0
- package/defaults/skill/context-onboarding/SKILL.md +370 -0
- package/{dist/defaults/skill/_legacy/email-draft/skill.md → defaults/skill/email-draft/SKILL.md} +33 -30
- package/defaults/skill/evening-close/SKILL.md +93 -61
- package/defaults/skill/evening-close/evening-close-template.md +42 -0
- package/{dist/defaults/skill/_legacy → defaults/skill}/gardener/SKILL.md +3 -3
- package/{dist/defaults/skill/_legacy → defaults/skill}/google-chat-scan/SKILL.md +7 -0
- package/{dist/defaults/skill/_legacy → defaults/skill}/leadership-coach/SKILL.md +9 -8
- package/defaults/skill/mail-triage/SKILL.md +272 -15
- package/defaults/skill/mail-triage/mail-triage-template.md +90 -0
- package/defaults/skill/morning-boot/SKILL.md +214 -25
- package/defaults/skill/morning-boot/daily-log-template.md +98 -0
- package/defaults/skill/morning-boot/morning-boot.prose +98 -0
- package/defaults/skill/{_legacy/onboarding → onboarding}/SKILL.md +7 -6
- package/defaults/skill/open-prose/SKILL.md +373 -0
- package/defaults/skill/open-prose/antipatterns.md +852 -0
- package/defaults/skill/open-prose/docs.md +2676 -0
- package/defaults/skill/open-prose/patterns.md +610 -0
- package/defaults/skill/open-prose/prose.md +950 -0
- package/{dist/defaults/skill/_legacy → defaults/skill}/post-meeting-drill/SKILL.md +90 -95
- package/defaults/skill/post-meeting-drill/examples.md +130 -0
- package/defaults/skill/post-meeting-drill/post-meeting-drill-template.md +111 -0
- package/defaults/skill/skill-generator/SKILL.md +217 -0
- package/defaults/skill/skill-generator/skill-template.md +163 -0
- package/defaults/skill/slack-pulse/SKILL.md +211 -14
- package/defaults/skill/slack-pulse/slack-pulse-template.md +98 -0
- package/defaults/skill/slack-write/skill.md +184 -0
- package/defaults/skill/thought-router/SKILL.md +7 -8
- package/dist/cli.js +137 -3
- package/dist/config/schema.d.ts +0 -2
- package/dist/defaults/skill/cal-grid/SKILL.md +168 -0
- package/dist/defaults/skill/cal-grid/cal-grid-template.md +106 -0
- package/dist/defaults/skill/context-discovery/SKILL.md +253 -0
- package/dist/defaults/skill/context-discovery/discovery.prose +143 -0
- package/dist/defaults/skill/context-onboarding/SKILL.md +370 -0
- package/{defaults/skill/_legacy/email-draft/skill.md → dist/defaults/skill/email-draft/SKILL.md} +33 -30
- package/dist/defaults/skill/evening-close/SKILL.md +93 -61
- package/dist/defaults/skill/evening-close/evening-close-template.md +42 -0
- package/{defaults/skill/_legacy → dist/defaults/skill}/gardener/SKILL.md +3 -3
- package/{defaults/skill/_legacy → dist/defaults/skill}/google-chat-scan/SKILL.md +7 -0
- package/{defaults/skill/_legacy → dist/defaults/skill}/leadership-coach/SKILL.md +9 -8
- package/dist/defaults/skill/mail-triage/SKILL.md +272 -15
- package/dist/defaults/skill/mail-triage/mail-triage-template.md +90 -0
- package/dist/defaults/skill/morning-boot/SKILL.md +214 -25
- package/dist/defaults/skill/morning-boot/daily-log-template.md +98 -0
- package/dist/defaults/skill/morning-boot/morning-boot.prose +98 -0
- package/dist/defaults/skill/{_legacy/onboarding → onboarding}/SKILL.md +7 -6
- package/dist/defaults/skill/open-prose/SKILL.md +373 -0
- package/dist/defaults/skill/open-prose/antipatterns.md +852 -0
- package/dist/defaults/skill/open-prose/docs.md +2676 -0
- package/dist/defaults/skill/open-prose/patterns.md +610 -0
- package/dist/defaults/skill/open-prose/prose.md +950 -0
- package/{defaults/skill/_legacy → dist/defaults/skill}/post-meeting-drill/SKILL.md +90 -95
- package/dist/defaults/skill/post-meeting-drill/examples.md +130 -0
- package/dist/defaults/skill/post-meeting-drill/post-meeting-drill-template.md +111 -0
- package/dist/defaults/skill/skill-generator/SKILL.md +217 -0
- package/dist/defaults/skill/skill-generator/skill-template.md +163 -0
- package/dist/defaults/skill/slack-pulse/SKILL.md +211 -14
- package/dist/defaults/skill/slack-pulse/slack-pulse-template.md +98 -0
- package/dist/defaults/skill/slack-write/skill.md +184 -0
- package/dist/defaults/skill/thought-router/SKILL.md +7 -8
- package/dist/hooks/index.d.ts +0 -1
- package/dist/index.js +14 -201
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/sentinel-service.d.ts +0 -1
- package/dist/sdk/test-harness.d.ts +90 -0
- package/dist/shared/index.d.ts +0 -1
- package/dist/specialization/prompt-sections.d.ts +1 -1
- package/package.json +1 -1
- package/defaults/skill/_legacy/cal-grid/SKILL.md +0 -16
- package/defaults/skill/_legacy/skill-generator/SKILL.md +0 -362
- package/dist/defaults/skill/_legacy/cal-grid/SKILL.md +0 -16
- package/dist/defaults/skill/_legacy/skill-generator/SKILL.md +0 -362
- package/dist/hooks/temporal-awareness.d.ts +0 -31
- package/dist/hooks/temporal-awareness.test.d.ts +0 -1
- /package/defaults/skill/{_legacy/capsule-init → capsule-init}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/cross-linker → cross-linker}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/gardener → gardener}/confidence-tiers.md +0 -0
- /package/defaults/skill/{_legacy/gardener → gardener}/repair-workflow.md +0 -0
- /package/defaults/skill/{_legacy/handover → handover}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/interview-prep → interview-prep}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/link-retrofit → link-retrofit}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/restore-environment → restore-environment}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/scorecard-synthesis → scorecard-synthesis}/SKILL.md +0 -0
- /package/defaults/skill/{_legacy/skill-generator → skill-generator}/testing-protocol.md +0 -0
- /package/defaults/skill/{_legacy/system-init → system-init}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/capsule-init → capsule-init}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/cross-linker → cross-linker}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/gardener → gardener}/confidence-tiers.md +0 -0
- /package/dist/defaults/skill/{_legacy/gardener → gardener}/repair-workflow.md +0 -0
- /package/dist/defaults/skill/{_legacy/handover → handover}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/interview-prep → interview-prep}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/link-retrofit → link-retrofit}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/restore-environment → restore-environment}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/scorecard-synthesis → scorecard-synthesis}/SKILL.md +0 -0
- /package/dist/defaults/skill/{_legacy/skill-generator → skill-generator}/testing-protocol.md +0 -0
- /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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
143
|
+
Fill the template placeholders with scan results:
|
|
21
144
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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}}*
|