tweet skillA
tweet is agent-read markdown (skill) from mikeypetrillo/agent402: Post to X from chat with no repo commit - dispatches the Announce workflow with inline text. Handles quote tweets, media, delete/replace, and X's URL character weighting. Use when the user says /tweet, "tweet this", "post to X", "quote tweet <url>", or asks to delete/replace a post..
Indexed from public GitHub and served as immutable, content-addressed versions. Install it pinned to an exact SHA-256 with the mdr CLI, and every file is verified against the hash recorded here before it reaches your agent. The deterministic audit below grades the latest version, and the same file always earns the same grade.
What the file says
# /tweet — post to X via the Announce workflow
Posts go out through the `Announce` GitHub Actions workflow (`announce.yml` on
`main`), which runs `scripts/tweet.js` with the X credentials stored in Actions
secrets. Nothing is committed to the repo; a tweet is one `workflow_dispatch`
call. Credentials never touch the local machine.
## House style
- **No em dashes.** Use periods, colons, or commas instead.
- Plain text, no hashtag spam. `agent402.tools` on its own line as the closer
when the post is about the product.
- Marketing counts are evergreen: say "500+ tools", never an exact number.
## Character counting (do this before every post)
X weighs **every URL as 23 characters** (including `agent402.tools`), no matter
its real length. `tweet.js` counts raw string length, so URL-heavy copy can be
over 280 raw but fine on X. Compute both:
```bash
node -e '
const text = process.argv[1];
const urls = text.match(/(?:https?:\/\/\S+|\b[\w-]+\.(?:tools|com|org|dev|xyz|network|io)\b(?:\/\S*)?)/g) || [];
let w = text.length; for (const u of urls) w += 23 - u.length;
console.log("raw:", text.length, "| weighted:", w);
' "$TEXT"
```
- weighted > 280 → trim the copy.
…Read the whole file at its exact version.
How to install
mdr add mikeypetrillo/agent402/tweet@git:20260717.94b0ed6mdr add mikeypetrillo/agent402/tweet@sha256:c05a780955cecf39Pin to a label to follow the author's releases, or to a sha256 to freeze the exact bytes forever. Either way the resolved hash is written to mdr.lock, and mdr install reproduces it on any machine.
[](https://markdownregistry.com/a/art_pb7ro4jgtcuminoa)
1 badge views in 30 days
Versions
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (3933 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
mikeypetrillo/agent402 · 35 stars · license AGPL-3.0 · pushed 2026-09-24 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_pb7ro4jgtcuminoa GET https://markdownregistry.com/api/v1/resolve?ref=mikeypetrillo/agent402/tweet GET https://markdownregistry.com/api/v1/blob/c05a780955cecf39f6a5a87eb3a01677cd722c91ff4b810da7e79b5f6b76a09d
Your agent does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.