patchcord 0.3.97 → 0.3.99
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/.claude-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/per-project-skills/codex/SKILL.md +3 -1
- package/per-project-skills/web/SKILL.md +1 -1
- package/skills/patchcord/SKILL.md +3 -1
- package/skills/patchcord-wait/SKILL.md +2 -0
- /package/commands/{patchcord.toml → inbox.toml} +0 -0
- /package/commands/{patchcord-wait.toml → wait.toml} +0 -0
package/package.json
CHANGED
|
@@ -122,7 +122,9 @@ Send the returned `path` to the other agent in your message so they can download
|
|
|
122
122
|
## Rules
|
|
123
123
|
|
|
124
124
|
- Do the work first, reply second. Never reply before completing the task.
|
|
125
|
-
- Do not
|
|
125
|
+
- **Do not reply to acks.** "ok", "noted", "seen", "thanks", "good progress", "keep running" — read them and move on. If you must close the thread: `reply(id, resolve=true)` with NO content.
|
|
126
|
+
- **resolve=true with ack-only content is an anti-pattern.** `reply(id, "Noted", resolve=true)` creates a new pending message the other side feels compelled to answer — producing ack chains. Omit content when there's nothing substantive to add: `reply(id, resolve=true)`.
|
|
127
|
+
- **When you receive an ack**, close it silently: `reply(id, resolve=true)`. No content. This stops the chain.
|
|
126
128
|
- Do not show raw JSON to the user unless they explicitly ask for it.
|
|
127
129
|
- Use `agent@namespace` when the online list shows multiple namespaces for the same agent name.
|
|
128
130
|
- Keep Patchcord config project-local. Do not rely on global shell exports.
|
|
@@ -53,7 +53,7 @@ Use the dominant topic of your current conversation as the tag. Keep it short (1
|
|
|
53
53
|
|
|
54
54
|
6. **Never show raw JSON** - summarize naturally.
|
|
55
55
|
|
|
56
|
-
7. **Do not reply to acks**: "ok", "noted", "seen", "thanks", thumbs up, or conversation-ending signals.
|
|
56
|
+
7. **Do not reply to acks**: "ok", "noted", "seen", "thanks", "good progress", thumbs up, or conversation-ending signals. If you must close the thread: `reply(id, resolve=true)` with NO content. Never send a text reply to an ack. **resolve=true with ack-only content is an anti-pattern** — "Noted, thanks" + resolve creates a new pending message that chains into more acks. Omit content when there's nothing substantive. When you receive an ack, close it silently: `reply(id, resolve=true)`. This applies even when an ack is for another session — don't defer-route acks, just silently resolve them.
|
|
57
57
|
|
|
58
58
|
8. **Presence is not a delivery gate**: an agent may receive messages while absent from the online list. Always send regardless of online/offline status. Messages queue and deliver when the recipient checks inbox.
|
|
59
59
|
|
|
@@ -121,6 +121,8 @@ Named threads group related messages between a pair of agents. Use them for mult
|
|
|
121
121
|
- Never ask "want me to wait?" - check presence and wait or don't based on that.
|
|
122
122
|
- Never show raw JSON to the human - summarize naturally.
|
|
123
123
|
- Cross-namespace agents: use `agent@namespace` syntax in send_message when targeting a specific namespace.
|
|
124
|
-
- Do not reply to
|
|
124
|
+
- **Do not reply to acks.** "ok", "noted", "seen", "thanks", "good progress", "keep running", thumbs up — anything that is clearly a conversation-ending signal. Just read them and move on. If you must close the thread, use `reply(id, resolve=true)` with NO content. Never send a text reply to an ack.
|
|
125
|
+
- **resolve=true with ack-only content is an anti-pattern.** `reply(id, "Noted, thanks", resolve=true)` creates a new pending message the other side feels compelled to answer — producing ack chains. If you have nothing substantive to add, omit content entirely: `reply(id, resolve=true)`. Only include content with resolve when it carries new information the recipient needs.
|
|
126
|
+
- **When you receive an ack**, close it silently: `reply(id, resolve=true)`. No content. This stops the chain.
|
|
125
127
|
- MCP tools are cached at session start. New tools deployed after your session began are invisible until you start a new session. If a tool you expect is missing, this is why.
|
|
126
128
|
- Agent names change frequently. Do not memorize or hardcode them. Check inbox() for recent activity. When unsure which agent to message, ask the human.
|
|
@@ -22,3 +22,5 @@ Loop until timeout or the human interrupts.
|
|
|
22
22
|
If `wait_for_message()` errors, fall back to polling `inbox()` every 10-15 seconds instead of stopping the loop.
|
|
23
23
|
|
|
24
24
|
Do not ask the human for permission to reply - just do the work, reply with results, then report.
|
|
25
|
+
|
|
26
|
+
**No ack chains.** If the arriving message is a clear ack ("Noted", "Got it", "Thanks", "Keep running") — close it silently with `reply(id, resolve=true)`, no content, and keep listening. Never text-reply to an ack. Never send "Noted" + resolve=true — that creates a new pending message the other side will feel compelled to answer.
|
|
File without changes
|
|
File without changes
|