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.
- package/README.md +239 -122
- package/dist/cli/commands/channel.d.ts +19 -0
- package/dist/cli/commands/channel.d.ts.map +1 -1
- package/dist/cli/commands/channel.js +152 -13
- package/dist/cli/commands/channel.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +61 -1
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/personas.d.ts +3 -0
- package/dist/cli/commands/personas.d.ts.map +1 -0
- package/dist/cli/commands/personas.js +402 -0
- package/dist/cli/commands/personas.js.map +1 -0
- package/dist/cli/commands/projects.d.ts +3 -0
- package/dist/cli/commands/projects.d.ts.map +1 -0
- package/dist/cli/commands/projects.js +138 -0
- package/dist/cli/commands/projects.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +4 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.js +5 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/runner.d.ts +2 -0
- package/dist/cli/lib/runner.d.ts.map +1 -1
- package/dist/cli/lib/runner.js +102 -25
- package/dist/cli/lib/runner.js.map +1 -1
- package/dist/daemon/api/server.d.ts.map +1 -1
- package/dist/daemon/api/server.js +4 -2
- package/dist/daemon/api/server.js.map +1 -1
- package/dist/daemon/daemon.d.ts +12 -3
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +138 -35
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/lib/executor.d.ts +12 -2
- package/dist/daemon/lib/executor.d.ts.map +1 -1
- package/dist/daemon/lib/executor.js +52 -34
- package/dist/daemon/lib/executor.js.map +1 -1
- package/dist/daemon/lib/watcher.d.ts +14 -2
- package/dist/daemon/lib/watcher.d.ts.map +1 -1
- package/dist/daemon/lib/watcher.js +43 -3
- package/dist/daemon/lib/watcher.js.map +1 -1
- package/dist/lib/channel.d.ts +53 -1
- package/dist/lib/channel.d.ts.map +1 -1
- package/dist/lib/channel.js +221 -30
- package/dist/lib/channel.js.map +1 -1
- package/dist/lib/channel.test.d.ts +2 -0
- package/dist/lib/channel.test.d.ts.map +1 -0
- package/dist/lib/channel.test.js +33 -0
- package/dist/lib/channel.test.js.map +1 -0
- package/dist/lib/daemon-status.d.ts +26 -0
- package/dist/lib/daemon-status.d.ts.map +1 -0
- package/dist/lib/daemon-status.js +64 -0
- package/dist/lib/daemon-status.js.map +1 -0
- package/dist/lib/environment.d.ts +87 -0
- package/dist/lib/environment.d.ts.map +1 -0
- package/dist/lib/environment.js +224 -0
- package/dist/lib/environment.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +8 -0
- package/dist/lib/frontmatter.d.ts.map +1 -1
- package/dist/lib/frontmatter.js +16 -3
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/frontmatter.test.d.ts +2 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +60 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +8 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/integration.test.d.ts +2 -0
- package/dist/lib/integration.test.d.ts.map +1 -0
- package/dist/lib/integration.test.js +445 -0
- package/dist/lib/integration.test.js.map +1 -0
- package/dist/lib/invoke.d.ts +23 -0
- package/dist/lib/invoke.d.ts.map +1 -0
- package/dist/lib/invoke.js +158 -0
- package/dist/lib/invoke.js.map +1 -0
- package/dist/lib/invoke.test.d.ts +2 -0
- package/dist/lib/invoke.test.d.ts.map +1 -0
- package/dist/lib/invoke.test.js +82 -0
- package/dist/lib/invoke.test.js.map +1 -0
- package/dist/lib/persona.d.ts +41 -0
- package/dist/lib/persona.d.ts.map +1 -1
- package/dist/lib/persona.js +233 -31
- package/dist/lib/persona.js.map +1 -1
- package/dist/lib/persona.test.d.ts +2 -0
- package/dist/lib/persona.test.d.ts.map +1 -0
- package/dist/lib/persona.test.js +324 -0
- package/dist/lib/persona.test.js.map +1 -0
- package/dist/lib/processor.d.ts +50 -0
- package/dist/lib/processor.d.ts.map +1 -0
- package/dist/lib/processor.js +135 -0
- package/dist/lib/processor.js.map +1 -0
- package/dist/lib/processor.test.d.ts +2 -0
- package/dist/lib/processor.test.d.ts.map +1 -0
- package/dist/lib/processor.test.js +134 -0
- package/dist/lib/processor.test.js.map +1 -0
- package/dist/lib/registry.d.ts +109 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +192 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/registry.test.d.ts +2 -0
- package/dist/lib/registry.test.d.ts.map +1 -0
- package/dist/lib/registry.test.js +236 -0
- package/dist/lib/registry.test.js.map +1 -0
- package/dist/lib/session-thread.d.ts +75 -0
- package/dist/lib/session-thread.d.ts.map +1 -0
- package/dist/lib/session-thread.js +132 -0
- package/dist/lib/session-thread.js.map +1 -0
- package/dist/lib/session-thread.test.d.ts +2 -0
- package/dist/lib/session-thread.test.d.ts.map +1 -0
- package/dist/lib/session-thread.test.js +235 -0
- package/dist/lib/session-thread.test.js.map +1 -0
- package/dist/lib/session.d.ts +150 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +183 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/session.test.d.ts +2 -0
- package/dist/lib/session.test.d.ts.map +1 -0
- package/dist/lib/session.test.js +336 -0
- package/dist/lib/session.test.js.map +1 -0
- package/dist/lib/types/channel.d.ts +4 -0
- package/dist/lib/types/channel.d.ts.map +1 -1
- package/dist/lib/types/persona.d.ts +51 -0
- package/dist/lib/types/persona.d.ts.map +1 -1
- package/dist/lib/types/triggers.d.ts +11 -0
- package/dist/lib/types/triggers.d.ts.map +1 -1
- package/dist/lib/version.d.ts +26 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +61 -0
- package/dist/lib/version.js.map +1 -0
- package/internal/personas/_base/PERSONA.md +251 -0
- package/internal/skills/channels/list/SKILL.md +76 -0
- package/internal/skills/channels/publish/SKILL.md +129 -0
- package/internal/skills/channels/read/SKILL.md +124 -0
- package/internal/skills/channels/reply/SKILL.md +138 -0
- 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.
|