From witness
Use this skill when the user wants to post a one-paragraph status report about the work just performed to a Telegram chat.
How this skill is triggered — by the user, by Claude, or both
Slash command
/witness:summarizeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Stop when `WITNESS_TOKEN` or `WITNESS_CHAT` is unset or empty.
Stop when WITNESS_TOKEN or WITNESS_CHAT is unset or empty.
Report single-line failure naming missing variable.
Read bot token from WITNESS_TOKEN and chat id from WITNESS_CHAT.
Treat WITNESS_CHAT as integer chat identifier.
Match format Telegram Bot API expects.
Build report only from work performed in conversation. Use only steps earlier plugins, skills, and agents actually ran. Do not invent steps, files, outcomes, or links. Use only what conversation records.
Skip every detail about plugin or skill installation. Skip loading, authentication, and invocation steps. Exclude every scaffolding step from report.
Focus on key outcome. Pick change delivered, question answered, or artifact produced. Pick verdict reached or blocker hit instead.
Compose message as single paragraph. Name outcome first, then artifact, then next step. Skip next step when none applies. Never add headings, bullet lists, tables, quoted blocks, or horizontal rules.
Write report as personal status update.
Address it from agent to human supervisor.
Open paragraph with salutation, e.g. Boss,.
Phrase every clause in first person with I, me, and my.
Embed current agent run's URL as hyperlink target. Attach it to opening verb. Read URL from environment variable host injects. Omit link when host injects no such variable.
Open message with exactly one emoji matching outcome. Pick from 👍🏻, ❤️, 🍒, 😊, 🍓, 🧨, 👌🏻, 🌶.
Use Markdown only for hyperlinks and backticked fixed-width text.
Never bold, italicize, or add headings, lists, tables, or blocks.
Use all possible URLs/links you can mention, helping user track later.
Set parse_mode to MarkdownV2.
Escape Telegram reserved characters in body.
Leave inline code, link labels, and link URLs untouched.
Keep paragraph under one thousand characters. Keep whole message under four thousand.
Post message once and feed body via stdin.
Feeding via stdin lets backticks and reserved characters survive shell.
Pass disable_web_page_preview=true on every call.
Verify response ok field is true.
Surface description field and stop run when ok is false.
Never name Claude, Anthropic, or any AI agent in message.
Never name language model or any automation tool either.
Never add generated by line, marketing footer, or AI-disclosure trailer.
Never log, print, echo, or write value of WITNESS_TOKEN anywhere.
Stop after single successful sendMessage call.
Read four sample reports in examples/ directory first.
Compose paragraph only after reading them.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub yegor256/plugins --plugin witness