| name | devlog-to-phi |
| description | Send a message to phi from the operator's devlog account (zzstoatzzdevlog.bsky.social), tagging @phi.zzstoatzz.io so phi gets a notification and acts on it. Use when the operator wants to say something to phi in-character as themselves — feedback, an apology, a nudge, a prompt to reflect or blog — rather than editing phi's code or config.
|
devlog-to-phi
The operator talks to phi the way anyone does: by posting at it on bluesky.
The pdsx MCP is already authenticated as the devlog account
(zzstoatzzdevlog.bsky.social, did:plc:o53crari67ge7bvbv273lxln) — the
operator's testing/dev account, which phi knows is theirs and weighs
accordingly. So you post by creating an app.bsky.feed.post record with
mcp__pdsx__create_record. No scripts, no SDK login. (Verify with
mcp__pdsx__whoami if unsure who pdsx is.)
Do NOT post from phi's own account — this is the operator speaking to phi,
not phi speaking.
when to use
The operator says "tell phi …", "let phi know …", "ask phi to …",
"apologize to phi", "nudge phi to blog". Anything where they want their
words delivered to phi as a message it will see and respond to.
Not for: changing phi's behavior (edit code/personality), inspecting phi
(phi-check), or reading phi's prompts (phi-prompt-inspect).
how
-
Draft in the operator's voice — terse, lowercase, honest. Don't smooth it
into corporate phrasing. Keep each post <= 300 graphemes.
-
The mention is what notifies phi. Phi's DID is
did:plc:65sucjiel52gefhcdcypynsr. Put @phi.zzstoatzz.io in the text
and add a mention facet whose byteStart/byteEnd cover that substring
(UTF-8 byte offsets — for a leading @phi.zzstoatzz.io that's 0–17).
-
Create the root post:
mcp__pdsx__create_record(
collection="app.bsky.feed.post",
record={
"text": "@phi.zzstoatzz.io <message>",
"facets": [{
"index": {"byteStart": 0, "byteEnd": 17},
"features": [{"$type": "app.bsky.richtext.facet#mention",
"did": "did:plc:65sucjiel52gefhcdcypynsr"}]
}]
}
)
$type and createdAt are auto-added by pdsx. The call returns the
root's uri and cid.
-
For a thread, post each follow-up as a reply, carrying the same root
ref and pointing parent at the previous post:
record={
"text": "<next post>",
"reply": {
"root": {"uri": <root_uri>, "cid": <root_cid>},
"parent": {"uri": <prev_uri>, "cid": <prev_cid>}
}
}
Only the root needs the mention; replies inherit notification via the
thread. Keep the mention on the root so phi is pinged.
-
Report the thread URL back:
https://bsky.app/profile/zzstoatzzdevlog.bsky.social/post/<root_rkey>
(rkey is the last path segment of the root uri). Phi picks up the mention
on its next notification poll (~10s) and decides how to respond — no
further prompting needed. To see what it did, follow up with phi-check.
notes
- phi:
@phi.zzstoatzz.io / did:plc:65sucjiel52gefhcdcypynsr.
- devlog (pdsx auth):
zzstoatzzdevlog.bsky.social / did:plc:o53crari67ge7bvbv273lxln.
- Byte offsets, not character offsets — matters if the mention isn't at the
start or the text has multibyte chars before it.
- This is an outward-facing public post. The operator asking you to send it
is the authorization; deliver what they said, don't editorialize.
- General record CRUD via pdsx is covered in the
pdsx-fundamentals skill;
this skill is just the phi-mention recipe on top of it.