Agent skill

Dunking Anonymously

by oaustegard in oaustegard/claude-skills

Renders a Bluesky post as an anonymised screenshot so its words can be criticised without a link back to whoever wrote them.

MITAuto-check passedWriting & Content

Install Dunking Anonymously

skills CLI
$ npx skills add oaustegard/claude-skills --skill dunking-anonymously -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install oaustegard/claude-skills dunking-anonymously --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/dunking-anonymously .claude/skills/dunking-anonymously && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dunking-anonymously
GitHub stars
150
Token cost
~1.6k tokens
SKILL.md length
903 words
Files
5 (incl. scripts, assets)
Skills in repo
66
Repo updated
First seen
Licence
MIT

At a glance

Renders a Bluesky post as an anonymised screenshot so its words can be criticised without a link back to whoever wrote them.

  • Anonymous dunk-quoting
  • SKILL.md covers Procedure, Redactions applied, When NOT to use this skill and Common failure modes, plus 2 more sections
  • Runs Python scripts from its folder; calls python3; reaches bsky.app
  • Dunk on this without linking it

What it does

Dunking Anonymously is an agent skill from oaustegard/claude-skills. Renders a Bluesky post as an anonymised screenshot so its words can be criticised without a link back to whoever wrote them. Blacks out avatar, display name, handle and any at-mentions in declassified-document styling, then emits a PNG and its alt text. Use for anonymous dunk-quoting, "dunk on this without linking it", "screenshot this post with the author hidden", "quote this without naming them", "redact this before I share it", or when a bad take from a small account deserves an answer and its author does not…

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and assets (for example `CHANGELOG.md`, `README.md` and `scripts/dunk.py`).

It sits in Writing & Content. It works with Bluesky. The repository describes itself as: My collection of Claude skills. The licence is MIT.

When your agent uses it

  • Anonymous dunk-quoting
  • Dunk on this without linking it
  • Screenshot this post with the author hidden
  • Quote this without naming them

Example prompts

  • “dunk on this without linking it”
  • “screenshot this post with the author hidden”
  • “quote this without naming them”
  • “/dunking-anonymously”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit cf49d47. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • bsky.app

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dunking Anonymously loads about 1.6k tokens when it runs. Until then it costs about 140 tokens; SKILL.md has 903 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~140
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from oaustegard/claude-skills at commit cf49d47, republished under its MIT licence (© oaustegard). 903 words, ~1,610 tokens.

Download SKILL.mdSave it as .claude/skills/dunking-anonymously/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
dunking-anonymously
description
Renders a Bluesky post as an anonymised screenshot so its words can be criticised without a link back to whoever wrote them. Blacks out avatar, display name, handle and any at-mentions in declassified-document styling, then emits a PNG and its alt text. Use for anonymous dunk-quoting, "dunk on this without linking it", "screenshot this post with the author hidden", "quote this without naming them", "redact this before I share it", or when a bad take from a small account deserves an answer and its author does not deserve your followers.
metadata.version
0.1.1

Dunking anonymously

A quote-post delivers your whole audience to the original author. For an account with forty followers that is a pile-on whatever your caption said. This renders the post as an image instead, so the words can be quoted without the handle.

Idea from Luis Villa, who built the same feature for himself (https://bsky.app/profile/lu.is/post/3mv6ynbcjr62b). His render greys the identity out; this one blacks it out.

Procedure

bash
python3 scripts/dunk.py https://bsky.app/profile/someone.bsky.social/post/3mv6...

Takes a bsky.app URL, an at:// URI, or handle/rkey. Writes <rkey>.png to the working directory, prints the alt text to stdout, and writes <rkey>.json holding the source URI for your own records. The source URI stays out of both the image and the alt text.

flageffect
--redact "phrase"blacks out a literal phrase, repeatable
--stampadds the rotated REDACTED stamp
--show-dateprints the post date in the footer
--out PATHoutput path
--width Nimage width, default 1200

Then read the rendered PNG, actually open it, and re-run with --redact for anything in the body that identifies the author. This is the step that gets skipped.

Deps are PIL and the standard library. DejaVu Mono ships with the container. The API call is unauthenticated, so it needs no token and leaves no trace in anyone's notifications. See README.md for the host fallback and network surface.

Redactions applied

Avatar, display name and handle become black bars. Every at-mention facet in the body is blacked out, since a mention is a second person's handle and a strong search key for finding the original. Embedded images, video, link cards and quoted posts render as [image not shown] and friends rather than being fetched, since an embedded image can carry a face, a location or a watermark.

Engagement counts are dropped. The date is dropped unless --show-date, because a date plus one distinctive sentence narrows a search to a single post.

The script cannot strip identity from the post's own words. Bluesky indexes full post text, so a post naming its author's employer, town or cat stays traceable by anyone who pastes a sentence into search. --redact is the only defence and it is manual.

When NOT to use this skill

situationwhat owns it
reading, searching or sampling Bluesky contentbrowsing-bluesky
sorting an account list by topiccategorizing-bsky-accounts
posting a link with a card previewmuninn_utils.bsky_card
bulk-classifying the repliers under a postmuninn_utils.bsky_moderation

Quote-post public figures and large accounts normally. Anonymising a senator is not protection. It removes the reader's ability to check the source while protecting nobody. The skill is for accounts small enough that attention itself is the harm.

Earned exceptions. Anonymising a large account is earned when the post is being shown as a specimen of a pattern rather than as one person's position, and the handle would pull the thread toward the individual. It is not earned when the reader would reasonably want to verify who said it.

Abandon mid-run when the post cannot be anonymised, meaning the author's identity is the claim, the text names them, or the render still reads as them after --redact has eaten half the body. At that point either quote-post it with the link or drop it. A half-redacted post that everyone recognises is worse than both, because it performs restraint while doing the pile-on.

Do not use it to launder something you would not say with the link attached. If the criticism only works because nobody can read the original in context, fix the criticism.

Show full SKILL.md (332 more words)Show less

Common failure modes

Black bars in the header, author named in the body. The render looks correctly anonymised and one sentence still says "when I worked at Foo". Signal: you did not read the PNG, you read the terminal. Open the image every time and pass --redact per identifying phrase.

Two bars where one phrase should be. A multi-word --redact phrase renders as separate bars with visible gaps, and word lengths leak. Signal: gaps inside what should be one black run. Adjacent redacted tokens are meant to merge across the spaces between them. If they do not, the merge logic in render() broke.

Mentions survive the redaction. Signal: an @handle renders as readable text. The script reads mention facets, not the @ character, so a post whose facets were stripped by the client that wrote it has no mention to find. Catch it by reading the PNG and use --redact "@handle" as the fallback.

no post at at://.... The post is deleted, the author blocks the public AppView, or the rkey is wrong. Not a transport failure, so refetching will not fix it.

403 from the AppView. public.api.bsky.app refuses some proxied environments. The script retries on api.bsky.app, which serves the same lexicon, and only gives up when both refuse.

Verification

bash
python3 scripts/dunk.py <url> --stamp

Then open the PNG. Three checks: no handle or display name anywhere in the image, no at-mention rendered as text, and the alt text opening with "Screenshot of a Bluesky post, author hidden:".

A bad success here is a clean-looking render that still identifies its author — every bar in place, and the body naming a workplace or a town. It passes every automated check the script can make, which is why the read-through is part of the procedure rather than a nicety.

Posting it

Attach the PNG in whatever client you post from and paste the printed alt text. It opens with "Screenshot of a Bluesky post, author hidden:" so screen-reader users get the framing that sighted readers get from the black bars.

© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (scripts, assets) in dunking-anonymously of oaustegard/claude-skills.

  • SKILL.md
  • CHANGELOG.md
  • README.md
  • assets/example.png
  • scripts/dunk.py

Open the folder on GitHubat commit cf49d47

Compare with similar skills

Dunking Anonymously next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dunking Anonymously compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dunking Anonymously this skilloaustegard/claude-skills150—~1.6kAutomated safety check: PassMIT
Postizgitroomhq/postiz-agent5082 repos~7.9kAutomated safety check: PassAGPL-3.0
Typefullyfreekmurze/dotfiles1k1 repos~3.4kAutomated safety check: NotesNone
Creating Letta Code Channelsletta-ai/skills149—~1.1kAutomated safety check: PassMIT
Outlier Post FinderScrapeCreators/social-media-research-skills3.4k—~1.5kAutomated safety check: NotesMIT
Content Calendar Smsblacktwist/social-media-skills559—~2.8kAutomated safety check: PassMIT

Similar skills

  • Postiz

    gitroomhq/postiz-agent

    Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest…

    508 GitHub starsUsed in 2 repos~7.9k tokens
    Writing & ContentAuto-check passed
  • Typefully

    freekmurze/dotfiles

    Create, schedule, and manage social media posts via Typefully.

    1k GitHub starsUsed in 1 repo~3.4k tokens
    Writing & ContentAuto-check: notes
  • Builds and debugs Letta Code channels, including first-party channel adapters and dynamic user channel plugins under ~/.letta/channels.

    149 GitHub stars~1.1k tokensUpdated 7 days ago
    Writing & ContentAuto-check passed
  • Outlier Post Finder

    ScrapeCreators/social-media-research-skills

    A skill your agent uses when the user wants to find posts, videos, reels, shorts, tweets, or social content that overperformed versus a creator, brand, or competitor baseline.

    3.4k GitHub stars~1.5k tokensUpdated 1 mo ago
    Writing & ContentAuto-check: notes
  • Content Calendar Sms

    blacktwist/social-media-skills

    When the user wants to plan a posting schedule, create a content calendar, or organize when and what to post.

    559 GitHub stars~2.8k tokensUpdated 5 mo ago
    Writing & ContentAuto-check passed
  • Content Repurposer Sms

    blacktwist/social-media-skills

    When the user wants to turn one piece of content into multiple formats or adapt content across text-first and visual-first platforms (LinkedIn, Twitter/X, Threads, Bluesky, Facebook, Instagram…

    559 GitHub stars~3.7k tokensUpdated 5 mo ago
    Writing & ContentAuto-check passed

More from oaustegard/claude-skills

All 66 skills in this repo
  • Vega-Lite Interactive Charts

    oaustegard/claude-skills

    Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.

    150 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Single-File HTML Composer

    oaustegard/claude-skills

    Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.

    150 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • Declauding

    oaustegard/claude-skills

    Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.

    150 GitHub stars~5.2k tokensUpdated yesterday
    Auto-check passed
  • Preact Developer

    oaustegard/claude-skills

    Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.

    150 GitHub stars~4.6k tokensUpdated yesterday
    Auto-check passed
  • Bluesky Zeitgeist Sampler

    oaustegard/claude-skills

    Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.

    150 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Adversarial Review Before Shipping

    oaustegard/claude-skills

    Has a fresh-context adversary attack a blog post, recommendation, analysis brief or piece of code before you ship it, using a profile suited to that kind of artifact.

    150 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Dunking Anonymously

What does Dunking Anonymously do?

Renders a Bluesky post as an anonymised screenshot so its words can be criticised without a link back to whoever wrote them. Dunking Anonymously is an agent skill from oaustegard/claude-skills. Renders a Bluesky post as an anonymised screenshot so its words can be criticised without a link back to whoever wrote them.

When should I use Dunking Anonymously?

Dunking Anonymously fits situations like: anonymous dunk-quoting; dunk on this without linking it; screenshot this post with the author hidden; quote this without naming them.

How do I install Dunking Anonymously in Claude Code?

Run `npx skills add oaustegard/claude-skills --skill dunking-anonymously -a claude-code`. Or copy the skill folder (dunking-anonymously in oaustegard/claude-skills) into .claude/skills/dunking-anonymously in your project. Claude Code loads it when a task matches its description.

How do I install Dunking Anonymously in Codex?

Run `npx skills add oaustegard/claude-skills --skill dunking-anonymously -a codex`. Or copy the skill folder (dunking-anonymously in oaustegard/claude-skills) into .agents/skills/dunking-anonymously in your project. Codex loads it when a task matches its description.

Can I use Dunking Anonymously in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill dunking-anonymously -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dunking-anonymously, .gemini/skills/dunking-anonymously, .github/skills/dunking-anonymously and .opencode/skills/dunking-anonymously in your project.

What does Dunking Anonymously need to run?

Going by SKILL.md and its folder, Dunking Anonymously needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Dunking Anonymously access the network?

SKILL.md names 1 domain. In commands or code: bsky.app; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Dunking Anonymously safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Dunking Anonymously use?

Dunking Anonymously is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dunking Anonymously use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dunking Anonymously?

Skills that share tags, products or a category with Dunking Anonymously: Postiz (gitroomhq/postiz-agent, 508 stars), Typefully (freekmurze/dotfiles, 1k stars), Creating Letta Code Channels (letta-ai/skills, 149 stars) and Outlier Post Finder (ScrapeCreators/social-media-research-skills, 3.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dunking Anonymously?

oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 66 skills in this directory. The repository was last updated on October 8, 2026.

Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.