plugins/essentials/skills/link-reader/SKILL.md
Fetch tweets, Twitter/X articles, and Reddit posts via proxy APIs. Use when the user provides a twitter.com, x.com, or reddit.com URL, or asks to read a tweet, post, article, or thread from Twitter/X or Reddit.
npx skillsauth add nicknisi/claude-plugins link-readerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read content from URLs that block direct web fetching by routing through proxy APIs.
URL patterns: twitter.com/*/status/*, x.com/*/status/*, twitter.com/*/article/*, x.com/*/article/*
Proxy: FxTwitter API (api.fxtwitter.com)
Steps:
/trq212/status/1234567890)https://api.fxtwitter.com{path} using WebFetchThe response JSON has shape: { tweet: { text, author, likes, retweets, ... } }
Format as:
**@{author.screen_name}** ({author.name})
{tweet.text}
{if media.photos: list image URLs}
{if media.videos: list video thumbnail URLs}
{if quote: show quoted tweet inline, indented}
Likes: {likes} · Retweets: {retweets} · Views: {views}
{created_at}
When tweet.article is present, the tweet is an article (long-form post). The article content uses Draft.js block format.
The article object contains:
title — article titlecover_image — hero image metadata (use original_img_url)content.blocks[] — array of content blockscontent.entityMap — links and media referenced by blocksConverting blocks to markdown:
Each block has a type and text:
unstyled → plain paragraphheader-one → # headingheader-two → ## headingheader-three → ### headingblockquote → > quotecode-block → fenced code blockunordered-list-item → - list itemordered-list-item → 1. list itematomic → look up in entityMap for embedded media/linksResolving entity ranges:
Each block may have entityRanges: [{ key, offset, length }]. Look up content.entityMap[key]:
type: "LINK" → wrap the text span in [text](url) using data.urltype: "IMAGE" → insert Resolving inline styles:
Each block may have inlineStyleRanges: [{ style, offset, length }]:
BOLD → **text**ITALIC → *text*CODE → `text`Format the full article as:
# {article.title}
**@{author.screen_name}** · {article.created_at}
{converted markdown content}
---
Likes: {likes} · Retweets: {retweets} · Views: {views}
URL patterns: reddit.com/r/*/comments/*, old.reddit.com/r/*/comments/*
Proxy: Append .json to the Reddit URL path
Steps:
https://www.reddit.com/.../.json to the path[0].data.children[0].data → the post[1].data.children[*].data → top-level commentsFormat as:
**r/{subreddit}** · u/{author} · {score} points
# {title}
{selftext_html or selftext, or url if link post}
---
Top comments:
**u/{comment_author}** ({score} pts)
{comment body}
Show the top 5 comments by default. Offer to show more if the user asks.
To extend this skill for a new platform:
tools
Generate a /goal command to execute an ideation project's specs autonomously. Reads the contract, builds a goal prompt with phase ordering and spec paths, copies it to clipboard, and prints it. The user pastes the /goal command to start autonomous execution. Use when the user says 'goal', 'run as goal', 'get goal prompt', 'goal prompt', or wants to execute specs via /goal instead of /ideation:autopilot.
development
Go up a layer of abstraction and map the surrounding architecture. Use when the user is unfamiliar with an area of code, asks "how does this fit in", "what calls this", "give me the big picture", "where am I", "map this out", "I'm lost", "explain this area", or needs to understand how a file, module, or function connects to the rest of the system. Also use when the user says /zoom-out or "zoom out" mid-conversation — even without a specific file reference, orient them based on whatever code is currently in context.
development
Build a throwaway prototype to answer a design question before committing to real implementation. Generates either a runnable terminal app (for state machines, data models, business logic) or several radically different UI variations on one route (for visual/layout decisions). Use when the user wants to prototype, spike, POC, sanity-check a data model, mock up a UI, explore design options, or says "prototype this", "spike this out", "let me play with it", "try a few designs", "sketch this in code", "I want to try something before building it for real", "quick and dirty version", or "validate this approach" — even if they don't use the word "prototype."
development
Comprehensive, codebase-wide quality sweep that dispatches parallel subagents to find and fix structural issues. Covers deduplication, type consolidation, dead code removal, circular dependencies, weak types, defensive try/catch, deprecated paths, and AI slop. Primary support for JS/TS projects (knip, madge, TypeScript types); other languages get grep-based analysis. Use when the user asks to "deep clean the whole repo", "run a full codebase audit", "nuclear cleanup", "deslop everything", or "sweep the entire codebase for quality issues". Do NOT use for single-file fixes, branch-scoped diffs (use de-slopify instead), or targeted refactors.