dot-agents 0.4.1 → 0.6.0

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 (140) hide show
  1. package/README.md +239 -122
  2. package/dist/cli/commands/channel.d.ts +19 -0
  3. package/dist/cli/commands/channel.d.ts.map +1 -1
  4. package/dist/cli/commands/channel.js +152 -13
  5. package/dist/cli/commands/channel.js.map +1 -1
  6. package/dist/cli/commands/check.d.ts.map +1 -1
  7. package/dist/cli/commands/check.js +61 -1
  8. package/dist/cli/commands/check.js.map +1 -1
  9. package/dist/cli/commands/index.d.ts +2 -0
  10. package/dist/cli/commands/index.d.ts.map +1 -1
  11. package/dist/cli/commands/index.js +2 -0
  12. package/dist/cli/commands/index.js.map +1 -1
  13. package/dist/cli/commands/personas.d.ts +3 -0
  14. package/dist/cli/commands/personas.d.ts.map +1 -0
  15. package/dist/cli/commands/personas.js +402 -0
  16. package/dist/cli/commands/personas.js.map +1 -0
  17. package/dist/cli/commands/projects.d.ts +3 -0
  18. package/dist/cli/commands/projects.d.ts.map +1 -0
  19. package/dist/cli/commands/projects.js +138 -0
  20. package/dist/cli/commands/projects.js.map +1 -0
  21. package/dist/cli/commands/run.d.ts.map +1 -1
  22. package/dist/cli/commands/run.js +4 -5
  23. package/dist/cli/commands/run.js.map +1 -1
  24. package/dist/cli/index.js +5 -12
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/lib/runner.d.ts +2 -0
  27. package/dist/cli/lib/runner.d.ts.map +1 -1
  28. package/dist/cli/lib/runner.js +102 -25
  29. package/dist/cli/lib/runner.js.map +1 -1
  30. package/dist/daemon/api/server.d.ts.map +1 -1
  31. package/dist/daemon/api/server.js +4 -2
  32. package/dist/daemon/api/server.js.map +1 -1
  33. package/dist/daemon/daemon.d.ts +12 -3
  34. package/dist/daemon/daemon.d.ts.map +1 -1
  35. package/dist/daemon/daemon.js +138 -35
  36. package/dist/daemon/daemon.js.map +1 -1
  37. package/dist/daemon/lib/executor.d.ts +12 -2
  38. package/dist/daemon/lib/executor.d.ts.map +1 -1
  39. package/dist/daemon/lib/executor.js +52 -34
  40. package/dist/daemon/lib/executor.js.map +1 -1
  41. package/dist/daemon/lib/watcher.d.ts +14 -2
  42. package/dist/daemon/lib/watcher.d.ts.map +1 -1
  43. package/dist/daemon/lib/watcher.js +43 -3
  44. package/dist/daemon/lib/watcher.js.map +1 -1
  45. package/dist/lib/channel.d.ts +53 -1
  46. package/dist/lib/channel.d.ts.map +1 -1
  47. package/dist/lib/channel.js +221 -30
  48. package/dist/lib/channel.js.map +1 -1
  49. package/dist/lib/channel.test.d.ts +2 -0
  50. package/dist/lib/channel.test.d.ts.map +1 -0
  51. package/dist/lib/channel.test.js +33 -0
  52. package/dist/lib/channel.test.js.map +1 -0
  53. package/dist/lib/daemon-status.d.ts +26 -0
  54. package/dist/lib/daemon-status.d.ts.map +1 -0
  55. package/dist/lib/daemon-status.js +64 -0
  56. package/dist/lib/daemon-status.js.map +1 -0
  57. package/dist/lib/environment.d.ts +87 -0
  58. package/dist/lib/environment.d.ts.map +1 -0
  59. package/dist/lib/environment.js +224 -0
  60. package/dist/lib/environment.js.map +1 -0
  61. package/dist/lib/frontmatter.d.ts +8 -0
  62. package/dist/lib/frontmatter.d.ts.map +1 -1
  63. package/dist/lib/frontmatter.js +16 -3
  64. package/dist/lib/frontmatter.js.map +1 -1
  65. package/dist/lib/frontmatter.test.d.ts +2 -0
  66. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  67. package/dist/lib/frontmatter.test.js +60 -0
  68. package/dist/lib/frontmatter.test.js.map +1 -0
  69. package/dist/lib/index.d.ts +8 -0
  70. package/dist/lib/index.d.ts.map +1 -1
  71. package/dist/lib/index.js +8 -0
  72. package/dist/lib/index.js.map +1 -1
  73. package/dist/lib/integration.test.d.ts +2 -0
  74. package/dist/lib/integration.test.d.ts.map +1 -0
  75. package/dist/lib/integration.test.js +445 -0
  76. package/dist/lib/integration.test.js.map +1 -0
  77. package/dist/lib/invoke.d.ts +23 -0
  78. package/dist/lib/invoke.d.ts.map +1 -0
  79. package/dist/lib/invoke.js +158 -0
  80. package/dist/lib/invoke.js.map +1 -0
  81. package/dist/lib/invoke.test.d.ts +2 -0
  82. package/dist/lib/invoke.test.d.ts.map +1 -0
  83. package/dist/lib/invoke.test.js +82 -0
  84. package/dist/lib/invoke.test.js.map +1 -0
  85. package/dist/lib/persona.d.ts +41 -0
  86. package/dist/lib/persona.d.ts.map +1 -1
  87. package/dist/lib/persona.js +233 -31
  88. package/dist/lib/persona.js.map +1 -1
  89. package/dist/lib/persona.test.d.ts +2 -0
  90. package/dist/lib/persona.test.d.ts.map +1 -0
  91. package/dist/lib/persona.test.js +324 -0
  92. package/dist/lib/persona.test.js.map +1 -0
  93. package/dist/lib/processor.d.ts +50 -0
  94. package/dist/lib/processor.d.ts.map +1 -0
  95. package/dist/lib/processor.js +135 -0
  96. package/dist/lib/processor.js.map +1 -0
  97. package/dist/lib/processor.test.d.ts +2 -0
  98. package/dist/lib/processor.test.d.ts.map +1 -0
  99. package/dist/lib/processor.test.js +134 -0
  100. package/dist/lib/processor.test.js.map +1 -0
  101. package/dist/lib/registry.d.ts +109 -0
  102. package/dist/lib/registry.d.ts.map +1 -0
  103. package/dist/lib/registry.js +192 -0
  104. package/dist/lib/registry.js.map +1 -0
  105. package/dist/lib/registry.test.d.ts +2 -0
  106. package/dist/lib/registry.test.d.ts.map +1 -0
  107. package/dist/lib/registry.test.js +236 -0
  108. package/dist/lib/registry.test.js.map +1 -0
  109. package/dist/lib/session-thread.d.ts +75 -0
  110. package/dist/lib/session-thread.d.ts.map +1 -0
  111. package/dist/lib/session-thread.js +132 -0
  112. package/dist/lib/session-thread.js.map +1 -0
  113. package/dist/lib/session-thread.test.d.ts +2 -0
  114. package/dist/lib/session-thread.test.d.ts.map +1 -0
  115. package/dist/lib/session-thread.test.js +235 -0
  116. package/dist/lib/session-thread.test.js.map +1 -0
  117. package/dist/lib/session.d.ts +150 -0
  118. package/dist/lib/session.d.ts.map +1 -0
  119. package/dist/lib/session.js +183 -0
  120. package/dist/lib/session.js.map +1 -0
  121. package/dist/lib/session.test.d.ts +2 -0
  122. package/dist/lib/session.test.d.ts.map +1 -0
  123. package/dist/lib/session.test.js +336 -0
  124. package/dist/lib/session.test.js.map +1 -0
  125. package/dist/lib/types/channel.d.ts +4 -0
  126. package/dist/lib/types/channel.d.ts.map +1 -1
  127. package/dist/lib/types/persona.d.ts +51 -0
  128. package/dist/lib/types/persona.d.ts.map +1 -1
  129. package/dist/lib/types/triggers.d.ts +11 -0
  130. package/dist/lib/types/triggers.d.ts.map +1 -1
  131. package/dist/lib/version.d.ts +26 -0
  132. package/dist/lib/version.d.ts.map +1 -0
  133. package/dist/lib/version.js +61 -0
  134. package/dist/lib/version.js.map +1 -0
  135. package/internal/personas/_base/PERSONA.md +251 -0
  136. package/internal/skills/channels/list/SKILL.md +76 -0
  137. package/internal/skills/channels/publish/SKILL.md +129 -0
  138. package/internal/skills/channels/read/SKILL.md +124 -0
  139. package/internal/skills/channels/reply/SKILL.md +138 -0
  140. package/package.json +7 -2
@@ -0,0 +1,251 @@
1
+ ---
2
+ name: _base
3
+ description: dot-agents system knowledge inherited by all personas
4
+ skills:
5
+ - channels/list
6
+ - channels/publish
7
+ - channels/read
8
+ - channels/reply
9
+ ---
10
+
11
+ # dot-agents System
12
+
13
+ You operate within a dot-agents system. This document describes the core capabilities available to you.
14
+
15
+ ## Mental Model
16
+
17
+ Three primitives work together:
18
+
19
+ | Primitive | Purpose |
20
+ | ------------- | -------------------------------------- |
21
+ | **Personas** | HOW - Agent configuration and behavior |
22
+ | **Workflows** | WHAT - Tasks with triggers and inputs |
23
+ | **Channels** | COORDINATION - Messaging and sessions |
24
+
25
+ You are running in a **session** right now (a thread in `#sessions`). Your behavior is defined by a **persona**. You coordinate via **channels**.
26
+
27
+ ## Channels
28
+
29
+ Channels are the messaging backbone for coordination. Two types exist:
30
+
31
+ | Prefix | Type | Purpose |
32
+ | ------ | ------------------- | -------------------------------- |
33
+ | `@` | DM (Direct Message) | Private inbox for a persona |
34
+ | `#` | Public Channel | Shared topic-based communication |
35
+
36
+ ### Publishing Messages
37
+
38
+ ```bash
39
+ npx dot-agents channels publish <channel> <message> [options]
40
+ ```
41
+
42
+ **Options:**
43
+
44
+ - `--thread <id>` - Add to existing thread (default: creates new thread)
45
+ - `--from <sender>` - Override sender identifier
46
+ - `--tags <tags>` - Comma-separated tags
47
+
48
+ **Output:** Always returns Message ID and Thread ID.
49
+
50
+ **Examples:**
51
+
52
+ ```bash
53
+ # Start a new conversation (thread created automatically)
54
+ npx dot-agents channels publish "#status" "Deployment complete"
55
+
56
+ # Continue an existing thread
57
+ npx dot-agents channels publish "#status" "Rollback needed" --thread <thread-id>
58
+
59
+ # Post to a persona's DM
60
+ npx dot-agents channels publish "@developer" "Please review PR #123"
61
+ ```
62
+
63
+ ### Reading Messages
64
+
65
+ ```bash
66
+ npx dot-agents channels read <channel> [options]
67
+ ```
68
+
69
+ **Options:**
70
+
71
+ - `--thread <id>` - Filter to specific thread
72
+ - `--since <duration>` - Filter by time (e.g., `24h`, `7d`, `1m`)
73
+ - `-l, --limit <n>` - Number of messages (default: 10)
74
+
75
+ **Examples:**
76
+
77
+ ```bash
78
+ # Read recent messages
79
+ npx dot-agents channels read "#status"
80
+
81
+ # Read a specific conversation thread
82
+ npx dot-agents channels read "#status" --thread <thread-id>
83
+
84
+ # Read last 24 hours
85
+ npx dot-agents channels read "@human" --since 24h
86
+ ```
87
+
88
+ ### Replying to Messages
89
+
90
+ ```bash
91
+ npx dot-agents channels reply <channel> <messageId> <reply>
92
+ ```
93
+
94
+ Adds a reply to a specific message (creates a sub-thread within the message).
95
+
96
+ ## Personas
97
+
98
+ Personas are agent configurations with inherited context and capabilities.
99
+
100
+ ### Running Personas
101
+
102
+ ```bash
103
+ npx dot-agents personas run <name> [options]
104
+ ```
105
+
106
+ **Options:**
107
+
108
+ - `-p, --prompt <text>` - Initial prompt/task
109
+ - `--headless` - Non-interactive mode
110
+ - `--interactive` - Interactive mode (default)
111
+
112
+ ### Inheritance
113
+
114
+ Personas inherit automatically via directory structure:
115
+
116
+ 1. **Root persona** (`.agents/PERSONA.md`) provides project-wide context
117
+ 2. **Child personas** in `.agents/personas/` inherit from root implicitly
118
+ 3. **All personas** inherit from the built-in `_base` persona (this document)
119
+
120
+ No explicit `inherits:` field needed - inheritance is convention-based.
121
+
122
+ ## Workflows
123
+
124
+ Workflows are multi-step processes defined in `.agents/workflows/`.
125
+
126
+ ```bash
127
+ npx dot-agents run <workflow-name>
128
+ npx dot-agents list workflows
129
+ ```
130
+
131
+ ## Projects
132
+
133
+ Projects are registered dot-agents installations that can communicate with each other.
134
+
135
+ ```bash
136
+ npx dot-agents projects list # Registered projects
137
+ ```
138
+
139
+ ### Cross-Project Communication
140
+
141
+ Delegate to another project using `@project` syntax:
142
+
143
+ ```bash
144
+ # Delegate to another project's entry point
145
+ npx dot-agents channels publish "@other-project" "Please handle this task"
146
+
147
+ # Read from another project's channel
148
+ npx dot-agents channels read "@other-project" --since 24h
149
+ ```
150
+
151
+ ## Discovery
152
+
153
+ ```bash
154
+ npx dot-agents projects list # Registered projects
155
+ npx dot-agents channels list # Available channels
156
+ npx dot-agents list personas # Available personas
157
+ npx dot-agents list workflows # Available workflows
158
+ ```
159
+
160
+ **Proactively discover your environment** - Run discovery commands at session start to understand available resources before diving into work.
161
+
162
+ Note: Skills are implementation details of workflows and personas. Access capabilities through workflows and personas rather than invoking skills directly.
163
+
164
+ ---
165
+
166
+ ## Sessions
167
+
168
+ Sessions are threads in the `#sessions` channel. When you start running, the system automatically creates a session thread and posts a "Session Started" message. When the session ends, a "Session Ended" message is posted with duration and exit status.
169
+
170
+ ### Environment Variables
171
+
172
+ - `SESSION_ID` - Your session thread ID (ISO timestamp, e.g., `2025-12-23T15:30:45.000Z`)
173
+ - `SESSION_THREAD_ID` - Same as SESSION_ID (alias for clarity)
174
+ - `SESSION_WORKSPACE` - Path to your session's workspace directory for working files
175
+
176
+ ### Posting Session Updates
177
+
178
+ For **interactive sessions**, post updates to your session thread to maintain an observable log of your work. This is especially important for:
179
+
180
+ - Major decisions or milestones
181
+ - Delegating to other personas/projects
182
+ - Receiving updates from delegated work
183
+ - Encountering blockers
184
+
185
+ **Pattern for updates:**
186
+
187
+ ```bash
188
+ npx dot-agents channels publish "#sessions" "Brief update message" --thread $SESSION_ID
189
+ ```
190
+
191
+ **Examples:**
192
+
193
+ ```bash
194
+ # Log a major action
195
+ npx dot-agents channels publish "#sessions" "Starting implementation of feature X" --thread $SESSION_ID
196
+
197
+ # Log delegation
198
+ npx dot-agents channels publish "#sessions" "Delegating to @scoutos for backend changes" --thread $SESSION_ID
199
+
200
+ # Log receiving results
201
+ npx dot-agents channels publish "#sessions" "Received: Backend changes complete, tests passing" --thread $SESSION_ID
202
+ ```
203
+
204
+ ### Checking for Updates
205
+
206
+ When you've delegated work to another persona or project, periodically check your session thread for updates:
207
+
208
+ ```bash
209
+ npx dot-agents channels read "#sessions" --thread $SESSION_ID
210
+ ```
211
+
212
+ Delegates should post their status updates to the upstream session thread, keeping the parent informed of progress.
213
+
214
+ ### Cross-Project Delegation Callbacks
215
+
216
+ When you receive a delegated task via DM, the system automatically provides callback routing:
217
+
218
+ **Environment variables (set automatically):**
219
+
220
+ - `FROM_ADDRESS` - Full callback address (e.g., `#docs/sessions:2026-01-02T21:00:00.000Z`)
221
+ - `FROM_CHANNEL` - Channel portion (e.g., `#docs/sessions`)
222
+ - `FROM_THREAD` - Thread ID portion (e.g., `2026-01-02T21:00:00.000Z`)
223
+
224
+ **Posting callbacks:**
225
+
226
+ ```bash
227
+ # Reply directly using FROM_ADDRESS (includes channel + thread)
228
+ npx dot-agents channels publish "$FROM_ADDRESS" "Task complete: implemented feature X"
229
+
230
+ # This is equivalent to:
231
+ # npx dot-agents channels publish "$FROM_CHANNEL" "..." --thread "$FROM_THREAD"
232
+ ```
233
+
234
+ **Your outgoing messages also include callback info automatically.** When you publish, your `FROM_ADDRESS` is included in the `from` field, so receivers can reply back to your session.
235
+
236
+ ### Workspace Directory
237
+
238
+ Use `$SESSION_WORKSPACE` for any working files needed during the session:
239
+
240
+ - Scratch notes
241
+ - Temporary artifacts
242
+ - Files to preserve for later reference
243
+
244
+ The workspace persists with the session thread and can be accessed later.
245
+
246
+ ### Why Sessions-as-Threads Matter
247
+
248
+ - **Cross-machine coordination** - Channels sync across machines, so you can see session history from anywhere
249
+ - **Observable audit trail** - Anyone can read the session thread to understand what happened
250
+ - **Delegation callbacks** - Delegates post to the parent's thread, no polling required
251
+ - **Natural resumption** - Read the thread to reconstruct context for any session
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: channels/list
3
+ description: List all available channels. Use when discovering what channels exist or checking channel metadata.
4
+ license: MIT
5
+ ---
6
+
7
+ # List Channels
8
+
9
+ List all channels to discover available communication streams.
10
+
11
+ ## When to Use This Skill
12
+
13
+ Use this skill when you need to:
14
+
15
+ - Discover what channels exist
16
+ - Check channel metadata (creator, creation date)
17
+ - Find the right channel to publish to
18
+ - Get an overview of communication streams
19
+
20
+ ## Process
21
+
22
+ ### Step 1: List All Channels
23
+
24
+ ```bash
25
+ npx dot-agents channels list
26
+ ```
27
+
28
+ ### Step 2: Review Output
29
+
30
+ The output shows all channels with their metadata:
31
+
32
+ ```text
33
+ Channels (4):
34
+
35
+ #status
36
+ Progress updates and milestone notifications
37
+ created by system at 2025-12-10T08:00:00.000Z
38
+
39
+ #issues
40
+ Problems, blockers, and errors
41
+ created by system at 2025-12-10T08:00:00.000Z
42
+
43
+ @developer
44
+ created by human:tnez at 2025-12-12T09:00:00.000Z
45
+ ```
46
+
47
+ ## Examples
48
+
49
+ ### Example 1: Check Available Channels
50
+
51
+ ```bash
52
+ npx dot-agents channels list
53
+ ```
54
+
55
+ ### Example 2: Filter Public Channels
56
+
57
+ ```bash
58
+ npx dot-agents channels list | grep "^ #"
59
+ ```
60
+
61
+ ### Example 3: Filter DM Channels
62
+
63
+ ```bash
64
+ npx dot-agents channels list | grep "^ @"
65
+ ```
66
+
67
+ ## Channel Types
68
+
69
+ - `#channel-name` - Public channels for topic-based communication
70
+ - `@persona-name` - Direct message inboxes for personas
71
+
72
+ ## Notes
73
+
74
+ - Channels are created automatically when first message is published
75
+ - Empty result means no channels have been created yet
76
+ - Use this before publishing to discover the right channel
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: channels/publish
3
+ description: Publish a message to a channel or DM. Use this to post updates, session summaries, issues, or direct messages to personas.
4
+ license: MIT
5
+ ---
6
+
7
+ # Publish to Channel
8
+
9
+ Post a message to a public channel (`#channel-name`) or direct message a persona (`@persona-name`).
10
+
11
+ ## When to Use This Skill
12
+
13
+ Use this skill when:
14
+
15
+ - Posting a session summary to `#sessions`
16
+ - Reporting an issue or blocker to `#issues`
17
+ - Sending a direct message to another persona
18
+ - Escalating to `@human` for human intervention
19
+ - Broadcasting status updates or notifications
20
+
21
+ ## Process
22
+
23
+ ### Step 1: Determine Channel
24
+
25
+ Choose the appropriate channel:
26
+
27
+ | Channel | Purpose |
28
+ | --------------- | ---------------------------------------- |
29
+ | `#sessions` | Session summaries and completion reports |
30
+ | `#issues` | Errors, blockers, and problems |
31
+ | `@human` | Human escalation (use sparingly) |
32
+ | `@persona-name` | Direct message to another persona |
33
+ | `#custom` | Any custom channel you've created |
34
+
35
+ ### Step 2: Compose Message
36
+
37
+ Format your message appropriately for the channel type.
38
+
39
+ ### Step 3: Publish
40
+
41
+ ```bash
42
+ npx dot-agents channels publish "<channel>" "<message>"
43
+ ```
44
+
45
+ For multi-line messages, use a heredoc:
46
+
47
+ ```bash
48
+ npx dot-agents channels publish "<channel>" "$(cat <<'EOF'
49
+ Your multi-line
50
+ message here
51
+ EOF
52
+ )"
53
+ ```
54
+
55
+ Optional flags:
56
+
57
+ - `--from <name>` - Set the sender name (defaults to current persona)
58
+ - `--tags <tag1,tag2>` - Add tags to the message
59
+
60
+ ## Examples
61
+
62
+ ### Example 1: Session Summary
63
+
64
+ ```bash
65
+ npx dot-agents channels publish "#sessions" "$(cat <<'EOF'
66
+ **Workflow:** morning-paper
67
+ **Status:** success
68
+ **Duration:** 2m 30s
69
+
70
+ Generated morning paper PDF with calendar events and weather.
71
+ Delivered to Boox device successfully.
72
+ EOF
73
+ )"
74
+ ```
75
+
76
+ ### Example 2: Report an Issue
77
+
78
+ ```bash
79
+ npx dot-agents channels publish "#issues" "$(cat <<'EOF'
80
+ **Issue:** Calendar API returned empty response
81
+ **Impact:** Morning paper missing today's events
82
+ **Context:** Calendar skill executed but returned no events despite events existing
83
+
84
+ **To Fix:**
85
+ 1. Check Calendar permissions in System Settings
86
+ 2. Run `dot-agents workflow run test-osx-permissions`
87
+
88
+ **Blocked:** no
89
+ EOF
90
+ )"
91
+ ```
92
+
93
+ ### Example 3: DM to Another Persona
94
+
95
+ ```bash
96
+ npx dot-agents channels publish "@channel-manager" "Please archive inactive channels older than 30 days"
97
+ ```
98
+
99
+ ### Example 4: Human Escalation
100
+
101
+ ```bash
102
+ npx dot-agents channels publish "@human" "$(cat <<'EOF'
103
+ Need macOS permission grant for Calendar access.
104
+
105
+ Please open System Settings > Privacy & Security > Calendars
106
+ and enable access for dot-agents.
107
+ EOF
108
+ )"
109
+ ```
110
+
111
+ ### Example 5: Message with Tags
112
+
113
+ ```bash
114
+ npx dot-agents channels publish "#issues" "Build failed: missing dependency" --tags "urgent,build"
115
+ ```
116
+
117
+ ## Best Practices
118
+
119
+ - Keep messages concise but complete
120
+ - Use structured formats for issues (title, impact, context, fix steps)
121
+ - Include relevant context (workflow name, duration, error messages)
122
+ - Use tags to categorize messages for filtering
123
+ - Reserve `@human` for genuine blockers requiring human action
124
+
125
+ ## Error Handling
126
+
127
+ **Channel doesn't exist**: The channel will be created automatically on first publish.
128
+
129
+ **Permission denied**: Ensure you're running with appropriate permissions (`--permission-mode bypassPermissions`).
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: channels/read
3
+ description: Read messages from a channel. Use this to check for new messages, review issue history, or catch up on session logs.
4
+ license: MIT
5
+ ---
6
+
7
+ # Read Channel Messages
8
+
9
+ Retrieve and display messages from a public channel or DM inbox.
10
+
11
+ ## When to Use This Skill
12
+
13
+ Use this skill when:
14
+
15
+ - Checking for new issues or blockers in `#issues`
16
+ - Reviewing recent session logs in `#sessions`
17
+ - Reading your DM inbox (`@your-persona-name`)
18
+ - Catching up on channel activity
19
+ - Looking for messages with specific tags
20
+
21
+ ## Process
22
+
23
+ ### Step 1: Identify Channel
24
+
25
+ Determine which channel to read:
26
+
27
+ - `#sessions` - Session summaries
28
+ - `#issues` - Reported problems
29
+ - `@persona-name` - DMs sent to a persona
30
+ - Any custom channel
31
+
32
+ ### Step 2: Read Messages
33
+
34
+ ```bash
35
+ npx dot-agents channels read "<channel>"
36
+ ```
37
+
38
+ Optional flags:
39
+
40
+ - `--since <duration>` - Only messages from last N hours/days (e.g., `24h`, `7d`)
41
+ - `--limit <n>` - Maximum number of messages to return
42
+ - `--tags <tag1,tag2>` - Filter by tags
43
+
44
+ ### Step 3: Process Results
45
+
46
+ Messages are returned in chronological order with metadata:
47
+
48
+ - Message ID
49
+ - Timestamp
50
+ - Sender (from)
51
+ - Content
52
+ - Reply count (if any)
53
+
54
+ ## Examples
55
+
56
+ ### Example 1: Read Recent Issues
57
+
58
+ ```bash
59
+ npx dot-agents channels read "#issues" --since 24h
60
+ ```
61
+
62
+ Output:
63
+
64
+ ```text
65
+ #issues (2 messages)
66
+
67
+ [2025-12-15T10:30:00Z] from: morning-paper
68
+ **Issue:** Calendar API timeout
69
+ **Impact:** No events in morning paper
70
+ ...
71
+ (1 reply)
72
+
73
+ [2025-12-15T14:45:00Z] from: inbox-processor
74
+ **Issue:** Missing attachment in email
75
+ ...
76
+ ```
77
+
78
+ ### Example 2: Check Your DM Inbox
79
+
80
+ ```bash
81
+ npx dot-agents channels read "@channel-manager"
82
+ ```
83
+
84
+ ### Example 3: Filter by Tags
85
+
86
+ ```bash
87
+ npx dot-agents channels read "#issues" --tags "urgent"
88
+ ```
89
+
90
+ ### Example 4: Limit Results
91
+
92
+ ```bash
93
+ npx dot-agents channels read "#sessions" --limit 5
94
+ ```
95
+
96
+ ### Example 5: Read All Messages from Last Week
97
+
98
+ ```bash
99
+ npx dot-agents channels read "#sessions" --since 7d
100
+ ```
101
+
102
+ ## Best Practices
103
+
104
+ - Use `--since` to avoid processing old, irrelevant messages
105
+ - Check `#issues` regularly for unresolved blockers
106
+ - Look for reply counts to see if issues have been addressed
107
+ - Use tags to filter for specific categories of messages
108
+
109
+ ## Output Format
110
+
111
+ Messages are displayed with:
112
+
113
+ - Timestamp in ISO 8601 format
114
+ - Sender name
115
+ - Full message content
116
+ - Reply count indicator
117
+
118
+ Empty channels return a message indicating no messages found.
119
+
120
+ ## Error Handling
121
+
122
+ **Channel not found**: Returns empty result (channel may not exist yet).
123
+
124
+ **No messages in time range**: Returns message indicating no messages match criteria.
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: channels/reply
3
+ description: Reply to a specific message in a channel. Use this to respond to issues, answer questions, or continue threaded conversations.
4
+ license: MIT
5
+ ---
6
+
7
+ # Reply to Message
8
+
9
+ Post a reply to an existing message, creating a threaded conversation.
10
+
11
+ ## When to Use This Skill
12
+
13
+ Use this skill when:
14
+
15
+ - Responding to a reported issue with a fix or update
16
+ - Answering a question in a DM
17
+ - Providing status updates on an ongoing issue
18
+ - Continuing a conversation thread
19
+ - Acknowledging receipt of a message
20
+
21
+ ## Process
22
+
23
+ ### Step 1: Identify the Message
24
+
25
+ You need the message ID to reply to. Get this from:
26
+
27
+ - The output of `channels read`
28
+ - The message path (e.g., `2025-12-15T10:30:00.000Z`)
29
+
30
+ ### Step 2: Compose Reply
31
+
32
+ Write your response to the original message.
33
+
34
+ ### Step 3: Post Reply
35
+
36
+ ```bash
37
+ npx dot-agents channels reply "<channel>" "<message-id>" "<reply>"
38
+ ```
39
+
40
+ For multi-line replies:
41
+
42
+ ```bash
43
+ npx dot-agents channels reply "<channel>" "<message-id>" "$(cat <<'EOF'
44
+ Your multi-line
45
+ reply here
46
+ EOF
47
+ )"
48
+ ```
49
+
50
+ ## Examples
51
+
52
+ ### Example 1: Reply to an Issue
53
+
54
+ Original message in `#issues`:
55
+
56
+ ```text
57
+ [2025-12-15T10:30:00.000Z] from: morning-paper
58
+ **Issue:** Calendar API timeout
59
+ ```
60
+
61
+ Reply:
62
+
63
+ ```bash
64
+ npx dot-agents channels reply "#issues" "2025-12-15T10:30:00.000Z" "$(cat <<'EOF'
65
+ **Status:** Resolved
66
+
67
+ Root cause: Network timeout due to VPN disconnection.
68
+ Fix: Added retry logic with exponential backoff.
69
+
70
+ Verified working in subsequent run.
71
+ EOF
72
+ )"
73
+ ```
74
+
75
+ ### Example 2: Quick Acknowledgment
76
+
77
+ ```bash
78
+ npx dot-agents channels reply "@human" "2025-12-15T14:00:00.000Z" "Understood. Will proceed with the archive operation."
79
+ ```
80
+
81
+ ### Example 3: Request More Information
82
+
83
+ ```bash
84
+ npx dot-agents channels reply "#issues" "2025-12-15T09:00:00.000Z" "$(cat <<'EOF'
85
+ Need more details to investigate:
86
+
87
+ 1. Which workflow triggered this?
88
+ 2. What was the exact error message?
89
+ 3. Has this happened before?
90
+ EOF
91
+ )"
92
+ ```
93
+
94
+ ### Example 4: Status Update on Ongoing Issue
95
+
96
+ ```bash
97
+ npx dot-agents channels reply "#issues" "2025-12-15T08:00:00.000Z" "$(cat <<'EOF'
98
+ **Update:** Still investigating
99
+
100
+ Tried:
101
+ - Restarting daemon (no effect)
102
+ - Clearing cache (no effect)
103
+
104
+ Next steps:
105
+ - Check system logs
106
+ - Test with fresh config
107
+ EOF
108
+ )"
109
+ ```
110
+
111
+ ## Best Practices
112
+
113
+ - Keep replies focused on the original topic
114
+ - Use structured formats for status updates
115
+ - Reference specific actions taken or planned
116
+ - Close the loop on issues when resolved
117
+ - Use replies rather than new messages for ongoing threads
118
+
119
+ ## Thread Structure
120
+
121
+ Replies create a nested structure:
122
+
123
+ ```text
124
+ channels/#issues/
125
+ 2025-12-15T10:30:00.000Z/
126
+ message.md # Original message
127
+ replies/
128
+ 2025-12-15T11:00:00.000Z/
129
+ message.md # First reply
130
+ 2025-12-15T11:30:00.000Z/
131
+ message.md # Second reply
132
+ ```
133
+
134
+ ## Error Handling
135
+
136
+ **Message not found**: Verify the channel and message ID are correct.
137
+
138
+ **Invalid message ID format**: Use the full ISO 8601 timestamp from the original message.