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 skills add atman-33/workhub --skill post-to-slackgit clone --depth 1 https://github.com/atman-33/workhubWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/atman-33/workhub/post-to-slack)<a href="https://agentmods.dev/skills/atman-33/workhub/post-to-slack"><img src="https://agentmods.dev/badge/skills/atman-33/workhub/post-to-slack/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/atman-33/workhub/post-to-slack"><img src="https://agentmods.dev/badge/skills/atman-33/workhub/post-to-slack.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What 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.1 | $0.00059 | $0.00670 |
| Opus 5.5 | $0.00024 | $0.00268 |
| Sonnet 5.5 | $0.00012 | $0.00134 |
| Haiku 4.5 | $0.00006 | $0.00067 |
Grade A, and why
post-to-slack 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 1mo 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.
How it starts
The opening of the file, as written. The whole thing — 59 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Post to Slack
Resolves a channel name (or a user name for a mention) to its Slack ID before posting — the Slack MCP connector's send/search tools need IDs, not display names, and IDs are not stable across workspaces.
Steps
- Determine the message body and the target channel. If the caller (a
direct user request, or another skill such as
report-pbl-progress) already gives an explicit channel ID (C...) and/or an already-resolved mention (<@U...>), skip straight to step 4 — don't re-resolve what's already unambiguous. - If the channel is given by name rather than ID, resolve it with the Slack
MCP connector's
slack_search_channelstool and take the matching channel's ID. If more than one channel plausibly matches, ask the user rather than guessing. - If a mention is wanted and given by name rather than user ID, resolve it
with
slack_search_usersand format it as<@USERID>inline in the message text — Slack does not render@nameas a mention, only the raw<@ID>form works. - Post with
slack_send_message(thread_tsfor a thread reply,reply_broadcastto also surface a thread reply in the channel). Return the message's permalink to the caller.
Reference
Failure modes
- Channel not found:
slack_search_channelsfound no match — confirm the exact channel name with the user; don't guess a close match. - User not found: same for
slack_search_userswhen resolving a mention. - Message too long: 5000 characters per text element — split into a thread reply rather than truncating silently.
- Can't post to Slack Connect (externally shared) channels:
slack_send_messagefails outright for these; tell the user rather than retrying. - Slack Canvas unavailable:
slack_create_canvasreturnsnot_supported_free_teamon free-tier workspaces. This skill never uses Canvas for that reason — if a caller wants a richer document than a single message, that's out of this skill's scope.
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.
- 1mo ago First seen · 59 lines · 59 tokens per session scan A f6c5ac9e2f48
post-to-slack is a skill published in the GitHub repository atman-33/workhub (3 stars, last pushed 2d ago), licensed MIT. It adds 59 tokens to every session and 670 once invoked, about $0.0002 per session on Opus 5.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-09-03.
Other skills, from other repositories
superbrain-distill
Internal SuperBrain skill — run by the detached capture child to distill a session-event delta into routed Obsidian notes. Not for direct user invocation.
trellis-finish-work
Wrap up the current session: verify quality gate passed, remind user to commit, archive completed tasks, and record session progress to the developer journal. Use when done coding and ready to end the session.
wiki-orchestrate
A coordinator for organizing an Obsidian vault, which is a folder of linked Markdown notes, by first checking its structure and then arranging the notes.
kb-preferences
Use when user wants to view, update, reset, or audit report preferences stored in vault kb.yaml. Triggers on '/kb-preferences', 'update report prefs', 'change report style', 'my preferences', or when a passive reflection step in another skill needs to propose preference updates.
aetox-teach
สอนคนใช้ Aetox — ทำอะไรได้บ้างในคำที่คนเข้าใจ ห้องไหนไว้ทำอะไร ห้าอย่างที่คนใหม่ต้องรู้ และวิธีสอนด้วยการลงมือทำงานจริงของเขาแทนการบรรยาย · อ่านเมื่อผู้ใช้ถามว่าแอปนี้ทำอะไรได้ ถามวิธีใช้ หรือเพิ่งเปิดครั้งแรก.
aetox-orient
ตอนเข้าโปรเจกต์ที่ยังไม่ได้อ่านในบทสนทนานี้ หรือกลับมาสานต่อหลังเว้นไป — ก่อนแตะไฟล์แรก.