v0.4.0
The agent-facing surface is now eleven MCP tools, not three CLIs driven
through Bash. slop-writer is a console script you install once; the scripts
that used to ship inside the skill are gone from it.
uv tool install slop-writer
slop-writer install # wires Claude Code: MCP server, permissions, the skill
slop-writer init # Telegram credentials and the one-time loginRestart your MCP client afterwards — .mcp.json is read at session start only.
What's new
- The MCP server.
slop-writer serve --mcpover stdio. Eight read tools
(scrape_posts,refresh_posts,scan_linked_group,
scan_standalone_group,fetch_subscribers,fetch_views_by_hour,
list_scheduled,run_query) and three write tools (publish_schedule,
publish_reschedule,publish_edit). Results are text — structure travels
inside it, never asstructuredContent. Failures answer with
{code, message, hint}over a closed 16-code vocabulary. install/init/uninstall.installwrites the path-free
.mcp.jsonentry (safe to commit), the permission block, the skill, and a
CLAUDE.mdaddress block, and prints everything it touches.inithandles
credentials and the TTY login.uninstalltakes back exactly whatinstall
wrote and never touches.tg-analytic/.- Publishing is gated by the distribution, not by your config. The three
publish_*tools ship withaskrules thatinstallwrites from the same
module that registers them. - The skill is five files, routing question → tool, plus what the numbers
mean and the invariants that break an answer silently. - A test suite: 341 tests over the package, green on 3.11 and 3.13.
Upgrading from 0.2.0
Your .tg-analytic/ needs nothing: same directory, same .env keys, and the
per-channel DBs self-heal on open. install deletes a
.claude/skills/tg-analytic-skill/ left by a pre-0.4 install — it would
otherwise load alongside the current skill and describe a surface that no
longer exists.
0.3.0 was never published; this release carries it.
Breaking
- The PEP-723 scripts are no longer part of the skill. They survive in
tools/in the repository as dev-only and undocumented. render.summarize_*return a string instead of printing.- The
setup-tg-analyticskill is deleted;slop-writer initis its whole job.
Why the move, what was rejected, and what it cost: docs/adr/0006.