Agent skill · Audited from source
Write Tweet
skill · aaronjmars/aeonMIT licenceAudited 14 Oct 2026 · source 0448e87653f9
Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 0448e87653f9 and found no filesystem, network or shell access and no hard-coded secrets. What it does: Multi-format tweet studio - standalone drafts (10 across 5 size tiers), a 5-10 tweet thread, or 10 remixes of past tweets, selected via ${var}
Cite
Cite this page
ModelsAtlas. “Write Tweet (aaronjmars/aeon)”. Retrieved 14 Oct 2026. https://modelsatlas.com/skills/aaronjmars/write-tweet
Trust audit
Audit 0.4.1 · source read 14 Oct 2026
SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (0)
No findings at any severity. We re-audit when the source changes.
Audit 0.4.1 · source sha 0448e87653f9 · 14 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisheraaronjmars GitHub organizationOwner of the repository this skill is read from
- Source folderaaronjmars/aeon/skills/write-tweetThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict0448e87653f9A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Multi-format tweet studio - standalone drafts (10 across 5 size tiers), a 5-10 tweet thread, or 10 remixes of past tweets, selected via ${var}
---
name: write-tweet
description: Multi-format tweet studio - standalone drafts (10 across 5 size tiers), a 5-10 tweet thread, or 10 remixes of past tweets, selected via ${var}
metadata:
title: Write Tweet
category: basics
var: ""
tags:
- social
- content
requires:
- XAI_API_KEY?
---
> **${var}** — `[format] [argument]`. Pick one of three formats, then pass its argument. Empty ⇒ **drafts** (standalone tweet drafts). `thread ...` ⇒ a multi-tweet **thread**. `remix ...` ⇒ **remix** of your past tweets. `revise:<instruction>` ⇒ **revise** the last saved draft (the Telegram force-reply shape, e.g. `revise:make it punchier`). See Selector below.
Read `memory/MEMORY.md` for context on recent articles, digests, topics being tracked, and the operator's tracked handles/token. Each branch then reads its own `memory/logs/` window (drafts: 3 days, thread: 7 days, remix: 14 days) — see the branch.
## Selector
**Revise intercept first (Telegram force-reply).** If `${var}` starts with `revise:` → jump straight to **Branch: REVISE** (below) and stop; do **not** token-parse. This is the shape `scripts/telegram-route.sh` sends when the operator replies to a "refine this draft?" prompt — the `revise:` prefix would otherwise fall through to the drafts branch.
Otherwise, parse `${var}` once, before doing anything else:
1. Trim whitespace. Take the **first token** (everything up to the first space **or** the first `:`), lowercased.
2. If that token is one of `drafts`, `thread`, `remix` → that's the **format**. The **argument** is the remainder of `${var}` after stripping the keyword and one optional following `:` and surrounding whitespace.
3. Otherwise → format is **drafts** and the argument is the **entire** `${var}` (backward-compatible with the legacy `var = topic/URL` behaviour).
| `${var}` | Format | Argument | Behaviour |
|---|---|---|---|
| `` (empty) | drafts | — | Auto-select the most tweetable insight from today's logs |
| `prediction markets are broken` | drafts | `prediction markets are broken` | Drafts on that topic |
| `https://arxiv.org/abs/2401.00001` | drafts | that URL | Drafts about the linked source |
| `drafts: thread models are underrated` | drafts | `thread models are underrated` | Escape hatch: force drafts on a topic that starts with a reserved word |
| `thread` | thread | — | Auto-pick the day's highest-signal event and thread it |
| `thread oracle incentives are broken` | thread | `oracle incentives are broken` | Thread on that topic |
| `remix` | remix | — | Remix past tweets, default 180d window |
| `remix 1y` | remix | `1y` | Remix, 1-year window |
| `remix 2025-01-01:2025-03-01` | remix | `2025-01-01:2025-03-01` | Remix, explicit date range |
Then dispatch to the matching branch below. Only run the selected branch.
---
# Branch: REVISE (`revise:...` — Telegram force-reply)
The operator tapped the "refine this draft?" prompt and sent a free-text revision instruction. Handle it before any normal generation:
1. **Strip the prefix.** The instruction is `${var#revise:}` (the remainder may itself contain colons — keep them). Trim surrounding whitespace. Example values: `make it punchier`, `drop the emoji`, `lead with the number`.
2. **Load the last draft.** Read `memory/drafts/write-tweet-latest.md` — the stable path every normal run saves to (see **Save draft + offer revision**). If it's missing or empty, there's nothing to refine yet: send `./notify "Nothing to revise yet — run a tweet draft first, then reply here to refine it."` and **end the run**.
3. **Apply the instruction.** Re-read `soul/` (`SOUL.md`, `STYLE.md`, examples) for voice, then regenerate the saved draft applying the operator's instruction. Keep the **same format** (drafts / thread / remix) and structure as the saved draft — you're refining it, not starting over — and respect the same character limits and anti-patterns as the originating branch (no hashtags, no emojis unless the draft had them, per-tier/thread length caps).
4. **Re-save.** Overwrite `memory/drafts/write-tweet-latest.md` with the revised draft, so a further `revise:` refines the newest version.
5. **Re-send** via `./notify` in the same shape the originating branch uses for its draft, with a first line that flags it as a revision, e.g. `revised (${var#revise:}):` followed by the refreshed draft body. (For multi-line output use `./notify -f <file>`.)
6. **Re-offer** a further revision (the operator is actively iterating, so this is expected, not a nag — skip the daily dedup guard here):
```bash
./notify "Want another pass? Reply with a change and I'll revise again." \
--force-reply --placeholder "e.g. cut the last line" \
--context "write-tweet::revise"
```
7. **Log** under `### write-tweet` with `- **Format:** revise` and the instruction (see **Log**), then **end the run** — do NOT run drafts / thread / remix.
---
# Branch: DRAFTS (default / empty ${var})
Generate 10 standalone tweet drafts across 5 size tiers (2 variations each). The **argument** is the topic or URL; empty ⇒ auto-select.
Read the last **3 days** of `memory/logs/` to understand what's been covered and avoid repeating takes.
## Topic Selection (drafts)
If the argument is set, use it as the topic (it may be a keyword, a thesis, or a URL).
Otherwise, read today's `memory/logs/${today}.md` and pick the **single most tweetable insight**. Prioritize:
1. A take from today's article (already researched and opinionated)
2. A surprising connection between two of today's findings
3. A reaction to something from a tweet roundup or digest
If the topic needs fresher context, use WebSearch to verify or expand.
If `XAI_API_KEY` is set, search X for what people are already saying about the topic. A direct `curl` to the X.AI Responses API is the **primary** path for this X read (see **Fetching**; set the Bash tool `timeout` ≥180000):
```bash
jq -n '{model:"grok-4.7", input:[{role:"user",content:"Search X for what people are saying about TOPExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 0448e87
git clone https://github.com/aaronjmars/aeon git -C aeon checkout 0448e87653f9
The author documents no install command, so this uses the repository directly. Our verdict covers commit 0448e87653f9 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- ✓SAFE B 89 / 100
first audit · source
0448e87653f9
Similar skills
aden-hive/hive
Multi-Agent Harness for Production AI
aden-hive/hive
SOP for debugging browser automation failures on complex websites. Use when browser tools fail on specific sites like LinkedIn, Twitter/X, SPAs, or sites with Shadow DOM.
aden-hive/hive
Required reading whenever any chart_* tool is available. Teaches the one-tool embedding contract (call chart_render → live chart appears in chat AND a downloadable PNG lands in the queen session dir), the ECharts (data…
aden-hive/hive
Claim tasks, record step progress, and verify SOP gates in the colony SQLite queue. Applies when your spawn message includes a db_path field.
aden-hive/hive
Proactively extract critical values from tool results into working notes before automatic context pruning destroys them.
aden-hive/hive
Follow a structured recovery decision tree when tool calls fail instead of blindly retrying or giving up.
Questions about Write Tweet
What does the Write Tweet skill do?
Is Write Tweet safe to install?
What can Write Tweet access on my machine?
How current is this page?
Sources
- github.com/aaronjmars/aeon/tree/main/skills/write-tweet — the audited source at commit 0448e87653f9 and every finding aboveObserved · 14 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the Write Tweet skill do?
- Is Write Tweet safe to install?
- What can Write Tweet access on my machine?