Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/yc-software/qm/slack-draftsnpx skills add yc-software/qm --skill slack-draftsgit clone --depth 1 https://github.com/yc-software/qmWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00038 | $0.00644 |
| Opus 5 | $0.00019 | $0.00322 |
| Sonnet 5 | $0.00008 | $0.00129 |
| Haiku 4.5 | $0.00004 | $0.00064 |
Grade A, and why
slack-drafts scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Slack drafts
Use this skill when the user wants a Slack message prepared for them to review and send themselves: "draft a reply to X", "prep a message for #general", "write that up as a Slack draft". The draft lands in their own Slack composer, attributed to them, targeted at the conversation you choose — nothing is posted.
This is an OAuth connector. The resolved user's Slack user token lives on your
computer as $VAULT_TOKEN_SLACK_COM. Do not ask the user for a token, log it, or
use another principal's. If the variable is empty or Slack returns 401/403, the user
either has not connected Slack or connected before this permission existed — tell
them to (re)connect it through the product OAuth flow.
Use the bundled helper for every draft — it owns destination resolution, rich-text block construction, and the required draft envelope:
python3 skills/slack-drafts/scripts/slack_drafts.py create --to '#general' --text 'hello'
python3 skills/slack-drafts/scripts/slack_drafts.py create --to '@jane' --text-file body.txt
python3 skills/slack-drafts/scripts/slack_drafts.py create --to C0123ABCDEF --thread-ts 1712345678.000100 --text '...'
python3 skills/slack-drafts/scripts/slack_drafts.py resolve --to '#general'
--totakes a channel/IM ID (C…/G…/D…), a user ID (U…/W…),#channel-name, or@name(matched against username, display name, real name, or email; ambiguous matches are refused — fall back to a user ID).- Text is plain; URLs become clickable links. Write it exactly as the user would send it — it goes out under their name, in their voice, once they hit send.
--thread-tstargets the draft at a thread reply instead of the channel composer.- Drafts are create-only through this API: you cannot list, edit, or delete a draft once made. To revise, tell the user to discard the old draft in Slack and create a fresh one. Never work around this by posting messages — drafting means the user sends.
- Opening a brand-new DM needs the
im:writescope; tokens connected before that scope existed can only draft into conversations that already exist. On amissing_scopeerror, tell the user to reconnect Slack. - Slack keeps at most one draft per composer: a second draft into the same channel or
thread fails with
attached_draft_exists. Tell the user to send or discard the existing draft, then retry.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 47 lines · 38 tokens per session scan A e819a883fef7
slack-drafts is a skill published in the GitHub repository yc-software/qm (14,428 stars, last pushed yesterday), licensed MIT. It adds 38 tokens to every session and 644 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
building-pydantic-ai-agents
Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), structured output, streaming, testing, and multi-agent patterns. Use when the user mentions Pydantic AI, imports pydanticai, or asks to build an AI agent, add tools/capabilities, defer capability loading, stream output, define agents…
complete-partial-pr
Evaluate and complete an issue or PR where the submitted patch fixes only a narrow symptom of the reported pain point. Use when a contribution may miss adjacent integration surfaces, provider/spec semantics, roundtrip behavior, tests, docs, or historical maintainer decisions.
harness-creator
Build, audit, and improve harnesses that make AI coding agents reliable: AGENTS.md/CLAUDE.md instruction files, feature/state tracking, verification gates, scope boundaries, session handoff, memory persistence, context budgets, tool-permission safety, and multi-agent coordination. Use this whenever a coding agent is…
address-feedback
Find and address unresolved PR review comments for the current branch, then continue the canonical push, reply, reaction, and resolution workflow.
agent-initialization
Initialize an Agent's settings from a user requirement by writing AGENTS.md, setting identity metadata, and installing only needed Skills.
agent-mode
Unified tool for managing agent LLM modes (add, remove, update, list, switch).