thoth-plugin 1.2.4 → 1.2.6

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 +12 -9
  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 +12 -9
  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
@@ -0,0 +1,217 @@
1
+ ---
2
+ name: skill-generator
3
+ description: Use when creating a new skill, editing an existing skill, or when asked to document a reusable process or technique
4
+ triggers:
5
+ created: 2026-01-07
6
+ updated: 2026-01-10
7
+ ---
8
+
9
+ <!--
10
+ ARCHITECTURE REFERENCE: docs/concepts/skill-architecture.md
11
+ AUTHORING GUIDE: docs/guides/skill-authoring-guide.md
12
+ TEMPLATES: skill-template.md (in this folder)
13
+ -->
14
+
15
+ # Skill Generator
16
+
17
+ **Core principle:** No skill without baseline failure first. TDD for process documentation.
18
+
19
+ **Violating the letter of this process is violating the spirit of this process.**
20
+
21
+ ---
22
+
23
+ ## The Iron Law
24
+
25
+ ```
26
+ NO SKILL FILE CREATED UNTIL RED PHASE SUBAGENT COMPLETES
27
+ ```
28
+
29
+ If you create SKILL.md before documenting a baseline failure, delete it. Start over. No exceptions.
30
+
31
+ ---
32
+
33
+ ## Quick Reference: The Phases
34
+
35
+ | Phase | Action | Gate |
36
+ |-------|--------|------|
37
+ | 0 | Check exists, classify type | — |
38
+ | 1 RED | Subagent WITHOUT skill → document failure | Must have failure |
39
+ | 2 GREEN | Write skill in thoth-core | — |
40
+ | 3 GREEN | Subagent WITH skill → verify fix | Must pass |
41
+ | 4 REFACTOR | Symlink, build, quality checks | All pass |
42
+
43
+ ---
44
+
45
+ ## Phase 0: Setup
46
+
47
+ **Check exists:** `ls defaults/skill/ | grep -i {name}`
48
+
49
+ **Classify type:**
50
+ - **Discipline** — Rules resisting rationalization
51
+ - **Workflow** — Multi-step with checkpoints
52
+ - **Technique** — Concrete method
53
+ - **Reference** — API docs
54
+
55
+ **Determine requirements:**
56
+ - Structured output? → Create template file
57
+ - Needs user email? → Add context discovery
58
+ - Needs config? → Add `config:` frontmatter
59
+
60
+ ---
61
+
62
+ ## Phase 1: RED — Baseline Test (MANDATORY)
63
+
64
+ Dispatch subagent WITHOUT the skill:
65
+
66
+ ```
67
+ task(
68
+ subagent_type="general",
69
+ description="Baseline test for {skill-name}",
70
+ prompt="""
71
+ You are testing baseline behavior WITHOUT a skill.
72
+
73
+ **Task:** {Describe the task}
74
+ **Context:** {Relevant context}
75
+
76
+ Complete the task using your best judgment. Do NOT load any skills.
77
+
78
+ **Report:** What approach? What output? What assumptions?
79
+ """
80
+ )
81
+ ```
82
+
83
+ **Document:** What went wrong? What rationalizations? What must skill teach?
84
+
85
+ **GATE:** Do not proceed without documented failure.
86
+
87
+ ---
88
+
89
+ ## Phase 2: GREEN — Write Skill
90
+
91
+ ### Location: thoth-core (MANDATORY)
92
+
93
+ ```bash
94
+ cd /path/to/thoth-core
95
+ mkdir -p defaults/skill/{skill-name}
96
+ ```
97
+
98
+ Never create directly in thoth-kb. Symlink comes in Phase 4.
99
+
100
+ ### Create SKILL.md
101
+
102
+ See `skill-template.md` in this folder for the complete template.
103
+
104
+ **Required frontmatter:**
105
+ ```yaml
106
+ ---
107
+ name: skill-name
108
+ description: Use when [triggers]. No workflow summary.
109
+ triggers:
110
+ - "phrase that activates"
111
+ created: YYYY-MM-DD
112
+ updated: YYYY-MM-DD
113
+ ---
114
+ ```
115
+
116
+ **Required sections:** Core principle, When to Use, Quick Reference, Process, Common Mistakes, Red Flags, Verification Checklist
117
+
118
+ **If skill produces output:** Create `skill-name-template.md` with `{{PLACEHOLDER}}` syntax.
119
+
120
+ ---
121
+
122
+ ## Phase 3: GREEN — Verify (MANDATORY)
123
+
124
+ Dispatch subagent WITH the skill:
125
+
126
+ ```
127
+ task(
128
+ subagent_type="general",
129
+ description="Skill-guided test for {skill-name}",
130
+ prompt="""
131
+ You are testing a skill.
132
+
133
+ **REQUIRED SKILL:**
134
+ ---
135
+ {Paste skill content}
136
+ ---
137
+
138
+ **Task:** {Same as baseline}
139
+
140
+ Follow the skill exactly. Report: What approach? Did you follow completely?
141
+ """
142
+ )
143
+ ```
144
+
145
+ **Verify:** Avoided baseline mistakes? New rationalizations? Ambiguities?
146
+
147
+ **GATE:** Do not proceed until agent performs correctly.
148
+
149
+ ---
150
+
151
+ ## Phase 4: REFACTOR — Deploy
152
+
153
+ ### Symlink to thoth-kb
154
+
155
+ ```bash
156
+ cd /path/to/thoth-kb/.opencode/skill
157
+ ln -s ../../../thoth-core/defaults/skill/{skill-name} {skill-name}
158
+ ```
159
+
160
+ ### Build and verify
161
+
162
+ ```bash
163
+ cd /path/to/thoth-core && bun run build
164
+ ```
165
+
166
+ ### Quality Checklist
167
+
168
+ - [ ] Baseline failure documented (Phase 1)
169
+ - [ ] Skill-guided test passed (Phase 3)
170
+ - [ ] Name: lowercase, hyphens only
171
+ - [ ] Description: "Use when...", no workflow summary
172
+ - [ ] Triggers: list of activation phrases
173
+ - [ ] Architecture comment after frontmatter
174
+ - [ ] Template file if structured output
175
+ - [ ] Under 500 lines (under 200 if frequent)
176
+ - [ ] Symlink created and verified
177
+ - [ ] Build succeeds
178
+
179
+ ---
180
+
181
+ ## Rationalization Table
182
+
183
+ | Excuse | Reality |
184
+ |--------|---------|
185
+ | "Too simple for structure" | Simple skills need discoverability. Follow format. |
186
+ | "I'll add sections later" | Later never comes. Add now. |
187
+ | "Baseline is overkill" | Baseline reveals what you'll skip. Mandatory. |
188
+ | "I already know what will fail" | You're guessing. Run the subagent. |
189
+ | "I'll test after writing" | That's not TDD. RED before GREEN. |
190
+ | "Description can summarize workflow" | Claude follows descriptions instead of reading. Never summarize. |
191
+
192
+ ---
193
+
194
+ ## Red Flags - STOP
195
+
196
+ - Creating SKILL.md before RED phase completes
197
+ - Skipping baseline for ANY skill type
198
+ - Description summarizes workflow
199
+ - Missing `triggers:` in frontmatter
200
+ - Hardcoded user email (use context-discovery)
201
+ - Skill created in thoth-kb instead of thoth-core
202
+ - Proceeding to Phase 4 without Phase 3 verification
203
+
204
+ **All mean: STOP. Go back.**
205
+
206
+ ---
207
+
208
+ ## Related
209
+
210
+ - `skill-template.md` — SKILL.md and output templates
211
+ - `testing-protocol.md` — Detailed testing by skill type
212
+ - `docs/concepts/skill-architecture.md` — Architecture reference
213
+ - `docs/guides/skill-authoring-guide.md` — Comprehensive guide
214
+
215
+ ---
216
+
217
+ *Skill Generator v3.1 | Condensed TDD enforcement*
@@ -0,0 +1,163 @@
1
+ ---
2
+ created: 2026-01-10
3
+ updated: 2026-01-10
4
+ ---
5
+
6
+ # Skill Templates
7
+
8
+ Reference templates for creating new skills. Copy and customize.
9
+
10
+ ---
11
+
12
+ ## SKILL.md Template
13
+
14
+ ```markdown
15
+ ---
16
+ name: skill-name
17
+ description: Use when [triggers]. Third person. No workflow summary.
18
+ triggers:
19
+ - "trigger phrase"
20
+ - "another phrase"
21
+ template: skill-name-template.md # If produces output
22
+ config: # If needs external config
23
+ - path: work/operations/config.md
24
+ as: config_name
25
+ created: YYYY-MM-DD
26
+ updated: YYYY-MM-DD
27
+ ---
28
+
29
+ <!--
30
+ ARCHITECTURE REFERENCE: docs/concepts/skill-architecture.md
31
+ This skill can be invoked standalone OR as a subagent context template.
32
+ -->
33
+
34
+ # Skill Name
35
+
36
+ **Core principle:** {one sentence}
37
+
38
+ ---
39
+
40
+ ## Context Requirements (If Needed)
41
+
42
+ **Step 0 — Get Identity:**
43
+
44
+ 1. **Check if passed in context**: If `context.identity.email` exists, use it.
45
+ 2. **If not passed**: Call `skill({ name: "context-discovery" })`.
46
+
47
+ **If discovery fails**: Stop and report error.
48
+
49
+ ---
50
+
51
+ ## When to Use
52
+
53
+ - {symptom or trigger}
54
+
55
+ **Do NOT use when:**
56
+ - {exclusion}
57
+
58
+ ---
59
+
60
+ ## Quick Reference
61
+
62
+ | Task | Command/Action |
63
+ |------|----------------|
64
+ | {task} | {how} |
65
+
66
+ ---
67
+
68
+ ## Process
69
+
70
+ {Main content — address failures from baseline test}
71
+
72
+ ---
73
+
74
+ ## Output Format (If Template)
75
+
76
+ **Template:** `skill-name-template.md`
77
+ **Output path:** `{path}`
78
+
79
+ | Placeholder | Value |
80
+ |-------------|-------|
81
+ | `{{DATE}}` | Today's date |
82
+
83
+ ---
84
+
85
+ ## Common Mistakes
86
+
87
+ | Mistake | Prevention |
88
+ |---------|------------|
89
+ | {from baseline} | {fix} |
90
+
91
+ ---
92
+
93
+ ## Red Flags - STOP
94
+
95
+ - {warning sign}
96
+
97
+ ---
98
+
99
+ ## Verification Checklist
100
+
101
+ - [ ] {check}
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Output Template Example
107
+
108
+ For skills that produce structured output:
109
+
110
+ ```markdown
111
+ ---
112
+ type: {output-type}
113
+ created: {{DATE}}
114
+ updated: {{DATE}}
115
+ tags: [{tags}]
116
+ summary: "{Summary} — {{DATE}}"
117
+ ---
118
+
119
+ # Title — {{DATE}}
120
+
121
+ **Generated:** {{TIME}}
122
+
123
+ ---
124
+
125
+ ## Section
126
+
127
+ {{CONTENT}}
128
+
129
+ ## Data
130
+
131
+ | Column A | Column B |
132
+ |----------|----------|
133
+ {{DATA_TABLE}}
134
+
135
+ ---
136
+
137
+ *Generated by {skill-name} skill*
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Placeholder Conventions
143
+
144
+ | Pattern | Purpose | Example |
145
+ |---------|---------|---------|
146
+ | `{{UPPER_SNAKE}}` | Simple value | `{{DATE}}`, `{{TIME}}` |
147
+ | `{{*_TABLE}}` | Multi-row table | `{{ACTION_ITEMS_TABLE}}` |
148
+ | `{{*_COUNT}}` | Numeric count | `{{EMAIL_COUNT}}` |
149
+ | `{{#if COND}}...{{/if}}` | Conditional | `{{#if COUNT > 0}}` |
150
+
151
+ ---
152
+
153
+ ## Frontmatter Quick Reference
154
+
155
+ | Field | Required | Rules |
156
+ |-------|----------|-------|
157
+ | `name` | Yes | lowercase, hyphens, max 64 chars |
158
+ | `description` | Yes | "Use when...", third person, no workflow summary |
159
+ | `triggers` | Yes | Phrases that auto-invoke skill |
160
+ | `template` | If output | Filename in skill folder |
161
+ | `config` | If external config | `path` + `as` |
162
+ | `created` | Yes | YYYY-MM-DD (hook-enforced) |
163
+ | `updated` | Yes | YYYY-MM-DD (hook-enforced) |
@@ -1,26 +1,223 @@
1
1
  ---
2
2
  name: slack-pulse
3
- version: 1.0.0
4
- description: Lookback window in hours
3
+ description: Scan Slack for mentions, DMs, and high-value channel activity requiring attention.
5
4
  triggers:
6
- inputs:
7
- - name: hours
8
- type: markdown
9
- required: false
10
- default: 4
11
- output:
5
+ template: slack-pulse-template.md
6
+ config:
7
+ - path: work/operations/slack-map.md
8
+ as: slack_config
12
9
  created: 2026-01-09
13
10
  updated: 2026-01-09
14
11
  ---
15
12
 
13
+ <!--
14
+ ARCHITECTURE REFERENCE: docs/concepts/skill-architecture.md
15
+ This skill can be invoked standalone OR as a subagent context template.
16
+ -->
17
+
16
18
  # Slack Pulse Skill
17
19
 
18
- You are the Real-Time Pulse Monitor for Zeus's Chief of Staff.
20
+ You are the Real-Time Pulse Monitor. Your mission is to scan Slack for messages requiring attention and surface what matters.
21
+
22
+ ---
23
+
24
+ ## Context Requirements (EXECUTE FIRST)
25
+
26
+ This skill requires the user's identity AND Slack channel configuration.
27
+
28
+ **Step 0 — Get Identity:**
29
+
30
+ 1. **Check if passed in context**: If you received `context.identity`, use it directly.
31
+
32
+ 2. **If not passed, invoke context-discovery skill**: Call `skill({ name: "context-discovery" })` and use the returned context.
33
+
34
+ 3. **Store `kb_root`** for loading Slack config in Step 1.
35
+
36
+ **If discovery fails**: Stop and report the error from context-discovery.
37
+
38
+ **Step 1 — Load Slack Configuration:**
39
+
40
+ Read the Slack channel map:
41
+ ```
42
+ Read: {kb_root}/work/operations/slack-map.md
43
+ ```
44
+
45
+ Parse the configuration to extract:
46
+ - **Priority Channels**: Channel IDs to always scan (e.g., `C09QGBFUR4G`)
47
+ - **Tier 0 DMs**: Leadership chain usernames (scan 7 days)
48
+ - **Team DM Anchors**: Team member usernames (scan 2 days)
49
+ - **Stakeholder DM Anchors**: Key stakeholder usernames (scan 2 days)
50
+ - **Exclusion Patterns**: Patterns to skip (e.g., `#in-*`, `#alerts-*`)
51
+
52
+ **If slack-map.md not found**: Fall back to basic mention scanning only.
53
+
54
+ ---
55
+
56
+ ## When to Use
57
+
58
+ - Morning boot Slack scan
59
+ - "Check my Slack"
60
+ - "Any messages I need to respond to?"
61
+ - "What's happening on Slack?"
62
+
63
+ ---
64
+
65
+ ## Tools Required
66
+
67
+ | Action | Tool | Parameters |
68
+ |--------|------|------------|
69
+ | List channels | slack_channels_list | `channel_types: "public_channel,private_channel,im,mpim"` |
70
+ | Get channel history | slack_conversations_history | `channel_id`, `limit: "1d"` or `"7d"` |
71
+ | Get thread replies | slack_conversations_replies | `channel_id`, `thread_ts` |
72
+ | Search messages | slack_conversations_search_messages | `filter_date_during: "today"` |
73
+ | Write output | write | `work/operations/daily-log/YYYY-MM-DD/slack-pulse.md` |
74
+
75
+ ---
76
+
77
+ ## Execution Protocol
78
+
79
+ ### Phase 1: Identify Channels to Scan
80
+
81
+ Use the parsed `slack-map.md` configuration:
82
+
83
+ | Source | Config Section | Lookback |
84
+ |--------|----------------|----------|
85
+ | Priority Channels | `Priority Channels` table | 1 day |
86
+ | Leadership DMs | `Tier 0: Critical DMs` table | 7 days |
87
+ | Team DMs | `Team DM Anchors` table | 2 days |
88
+ | Stakeholder DMs | `Stakeholder DM Anchors` table | 2 days |
89
+ | All mentions | Search | 1 day |
90
+
91
+ **For Priority Channels** (those with Channel IDs):
92
+ ```
93
+ slack_conversations_history(
94
+ channel_id={channel_id}, # e.g., "C09QGBFUR4G"
95
+ limit="1d"
96
+ )
97
+ ```
98
+
99
+ **For DMs** (use @username):
100
+ ```
101
+ slack_conversations_history(
102
+ channel_id="@{username}", # e.g., "@vasco.taveira"
103
+ limit="7d" # or "2d" for team/stakeholder
104
+ )
105
+ ```
106
+
107
+ ### Phase 2: Scan for Mentions
108
+
109
+ Search for messages mentioning the user:
110
+ ```
111
+ slack_conversations_search_messages(
112
+ filter_date_during="today",
113
+ filter_users_with="@me"
114
+ )
115
+ ```
116
+
117
+ ### Phase 3: Scan Priority DMs
118
+
119
+ For each Tier 0/1 DM or channel:
120
+ ```
121
+ slack_conversations_history(
122
+ channel_id={channel_id},
123
+ limit="1d"
124
+ )
125
+ ```
126
+
127
+ ### Phase 4: Fetch Thread Context
128
+
129
+ For items needing response, get full thread:
130
+ ```
131
+ slack_conversations_replies(
132
+ channel_id={channel_id},
133
+ thread_ts={thread_ts}
134
+ )
135
+ ```
136
+
137
+ ### Phase 5: Classify Messages
138
+
139
+ For each message, determine action needed:
140
+
141
+ | Classification | Criteria | Action |
142
+ |----------------|----------|--------|
143
+ | **RESPOND** | Direct question, request, blocking issue | Needs reply |
144
+ | **MONITOR** | FYI, discussion to track | Watch but no action |
145
+ | **IGNORE** | Noise, already handled | Skip |
146
+
147
+ **Priority Boosters:**
148
+
149
+ | Signal | Boost |
150
+ |--------|-------|
151
+ | From manager or skip-level | +2 |
152
+ | From direct report | +1 |
153
+ | Contains "urgent", "blocker", "help" | +1 |
154
+ | Unanswered >4 hours | +1 |
155
+ | Thread with multiple replies | +1 |
156
+
157
+ ---
158
+
159
+ ## Output Format
160
+
161
+ **Template:** Read `slack-pulse-template.md` from this skill folder.
162
+
163
+ **Output path:** `work/operations/daily-log/YYYY-MM-DD/slack-pulse.md`
164
+
165
+ Fill the template placeholders with scan results:
166
+
167
+ | Placeholder | Value |
168
+ |-------------|-------|
169
+ | `{{DATE}}` | Today's date (YYYY-MM-DD) |
170
+ | `{{TIME}}` | Scan completion time (HH:MM) |
171
+ | `{{CHANNELS_SCANNED}}` | Number of channels scanned |
172
+ | `{{DMS_CHECKED}}` | Number of DMs checked |
173
+ | `{{RESPOND_COUNT}}` | Items needing response |
174
+ | `{{MONITOR_COUNT}}` | Items to monitor |
175
+ | `{{NOISE_COUNT}}` | Items filtered as noise |
176
+ | `{{RESPOND_ITEMS_TABLE}}` | Table rows for RESPOND items |
177
+ | `{{MONITOR_ITEMS_TABLE}}` | Table rows for MONITOR items |
178
+ | `{{ANCHOR_CANDIDATES_TABLE}}` | Table rows for anchor candidates |
179
+ | `{{PRIORITY_CHANNELS_TABLE}}` | Scan summary per priority channel |
180
+ | `{{TIER0_DMS_TABLE}}` | Scan summary per leadership DM |
181
+ | `{{TEAM_DMS_TABLE}}` | Scan summary per team DM |
182
+ | `{{STAKEHOLDER_DMS_TABLE}}` | Scan summary per stakeholder DM |
183
+ | `{{IMMEDIATE_ACTIONS}}` | Bulleted list of urgent responses |
184
+ | `{{WATCH_LIST}}` | Bulleted list of items to monitor |
185
+ | `{{CHANNEL_HEALTH_NOTES}}` | Any observations about channel usage |
186
+
187
+ **Critical:** Output MUST include `## SCAN_DATA_START` and `## SCAN_DATA_END` markers for parsing.
188
+
189
+ ---
190
+
191
+ ## Completion Checklist
192
+
193
+ - [ ] Context discovery completed
194
+ - [ ] Channels listed and prioritized
195
+ - [ ] Mentions scanned
196
+ - [ ] Priority DMs checked
197
+ - [ ] Thread context fetched for RESPOND items
198
+ - [ ] Messages classified (RESPOND/MONITOR/IGNORE)
199
+ - [ ] Output written to `work/operations/daily-log/YYYY-MM-DD/slack-pulse.md`
200
+ - [ ] SCAN_DATA markers included
201
+
202
+ ---
203
+
204
+ ## Error Handling
205
+
206
+ | Error | Action |
207
+ |-------|--------|
208
+ | No Slack access | Report OAuth/token needed, stop |
209
+ | Rate limited | Wait and retry with smaller batch |
210
+ | Channel not found | Skip and note in output |
211
+
212
+ ---
19
213
 
20
- ## Protocol Execution
214
+ ## Channel Discovery
21
215
 
22
- 1. **Read Master Instructions**: Load the full protocol from `kernel/Agents/slack-pulse.md`.
23
- 2. **Execute**: Follow the protocol exactly as defined in the master file.
24
- 3. **Synthesize**: Provide the pulse report and the required raw data block.
216
+ If you encounter high-signal messages from unknown channels, flag them as "Anchor Candidates" for future Tier 1 monitoring:
25
217
 
26
- **MANDATORY**: Ensure the output includes the `## SCAN_DATA_START` and `## SCAN_DATA_END` markers as specified in the master instructions.
218
+ ```markdown
219
+ ### Anchor Candidates
220
+ | Channel | Reason | Recommendation |
221
+ |---------|--------|----------------|
222
+ | #new-project | Multiple relevant discussions | Add to Tier 1 |
223
+ ```
@@ -0,0 +1,98 @@
1
+ ---
2
+ type: operations
3
+ hemisphere: work
4
+ created: {{DATE}}
5
+ updated: 2026-01-09
6
+ tags: [slack-pulse, daily-log]
7
+ summary: Slack Pulse — {{DATE}}
8
+ ---
9
+
10
+ # Slack Pulse — {{DATE}}
11
+
12
+ **Scan Time:** {{TIME}}
13
+ **Channels Scanned:** {{CHANNELS_SCANNED}}
14
+ **DMs Checked:** {{DMS_CHECKED}}
15
+
16
+ ---
17
+
18
+ ## Summary
19
+
20
+ | Metric | Count |
21
+ |--------|-------|
22
+ | **Needs Response** | {{RESPOND_COUNT}} |
23
+ | **Monitor/Review** | {{MONITOR_COUNT}} |
24
+ | **Noise Filtered** | {{NOISE_COUNT}} |
25
+
26
+ ---
27
+
28
+ ## SCAN_DATA_START
29
+
30
+ ### RESPOND_ITEMS
31
+
32
+ | Priority | Source | From | Preview | Action Needed |
33
+ |----------|--------|------|---------|---------------|
34
+ {{RESPOND_ITEMS_TABLE}}
35
+
36
+ ### MONITOR_ITEMS
37
+
38
+ | Source | From | Preview | Relevance |
39
+ |--------|------|---------|-----------|
40
+ {{MONITOR_ITEMS_TABLE}}
41
+
42
+ ### ANCHOR_CANDIDATES
43
+
44
+ | Channel/Topic | Reason | Recommendation |
45
+ |---------------|--------|----------------|
46
+ {{ANCHOR_CANDIDATES_TABLE}}
47
+
48
+ ## SCAN_DATA_END
49
+
50
+ ---
51
+
52
+ ## Scan Coverage
53
+
54
+ ### Priority Channels
55
+
56
+ | Channel | Messages | Items Found |
57
+ |---------|----------|-------------|
58
+ {{PRIORITY_CHANNELS_TABLE}}
59
+
60
+ ### Leadership DMs (Tier 0)
61
+
62
+ | Person | Role | Messages | Status |
63
+ |--------|------|----------|--------|
64
+ {{TIER0_DMS_TABLE}}
65
+
66
+ ### Team DMs
67
+
68
+ | Person | Domain | Messages | Status |
69
+ |--------|--------|----------|--------|
70
+ {{TEAM_DMS_TABLE}}
71
+
72
+ ### Stakeholder DMs
73
+
74
+ | Person | Context | Messages | Status |
75
+ |--------|---------|----------|--------|
76
+ {{STAKEHOLDER_DMS_TABLE}}
77
+
78
+ ---
79
+
80
+ ## Action Items
81
+
82
+ ### Immediate Response Needed
83
+
84
+ {{IMMEDIATE_ACTIONS}}
85
+
86
+ ### Watch List
87
+
88
+ {{WATCH_LIST}}
89
+
90
+ ---
91
+
92
+ ## Channel Health
93
+
94
+ {{CHANNEL_HEALTH_NOTES}}
95
+
96
+ ---
97
+
98
+ *Generated by slack-pulse skill at {{TIME}}*