Reddit API with PRAW (Python) and Snoowrap (Node.js)
35
32%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/reddit-api/SKILL.mdQuality
Discovery
22%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This description is essentially just a title rather than a functional description. It names the technology stack (Reddit API, PRAW, Snoowrap) but fails to describe what actions the skill performs or when Claude should select it. It needs substantial expansion to be useful for skill selection among many options.
Suggestions
Add specific concrete actions the skill enables, e.g., 'Fetch posts and comments from subreddits, submit posts, manage Reddit accounts, search Reddit content, analyze upvotes and engagement metrics.'
Add an explicit 'Use when...' clause with natural trigger terms, e.g., 'Use when the user asks about Reddit, subreddits, Reddit posts, Reddit bots, scraping Reddit, or interacting with the Reddit API.'
Include common user-facing terms like 'subreddit', 'Reddit bot', 'Reddit scraping', 'posts', 'comments' to improve trigger term coverage.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | The description only names the domain (Reddit API) and the libraries (PRAW, Snoowrap) but lists no concrete actions like 'fetch posts', 'submit comments', 'scrape subreddits', etc. | 1 / 3 |
Completeness | The description barely answers 'what does this do' (just names the API/libraries) and completely lacks any 'when should Claude use it' guidance. There is no 'Use when...' clause or equivalent. | 1 / 3 |
Trigger Term Quality | It includes some relevant keywords like 'Reddit', 'PRAW', 'Snoowrap', 'Python', and 'Node.js' that users might mention, but misses common natural terms like 'subreddit', 'posts', 'comments', 'upvotes', 'scrape Reddit', etc. | 2 / 3 |
Distinctiveness Conflict Risk | The mention of Reddit API and specific libraries (PRAW, Snoowrap) provides some distinctiveness, but without concrete actions it could overlap with general Python/Node.js API skills or web scraping skills. | 2 / 3 |
Total | 6 / 12 Passed |
Implementation
42%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This skill is comprehensive and highly actionable with excellent executable code examples across multiple languages and approaches. However, it is far too verbose for a SKILL.md — it reads more like a complete tutorial/reference guide than a concise skill file. The monolithic structure with no progressive disclosure and the inclusion of content Claude could easily derive (scopes tables, project structure, basic Pydantic models) significantly reduce its effectiveness as a context-window-efficient skill.
Suggestions
Split into a concise SKILL.md overview (setup + PRAW basics + anti-patterns) with separate files for Snoowrap (SNOOWRAP.md), direct API usage (DIRECT_API.md), OAuth2 web flow (OAUTH2.md), and models (MODELS.md).
Remove the scopes table, project structure, and Pydantic models from the main file — these are reference material Claude can derive or that belong in supplementary files.
Add explicit validation checkpoints: verify authentication succeeded before proceeding, show error handling for 429/403 responses inline rather than just listing them as anti-patterns.
Consolidate to one primary language (Python/PRAW) in the main skill file and reference the TypeScript/Snoowrap alternative in a separate file to reduce token usage.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The skill is extremely verbose at ~400+ lines, covering Python PRAW, Snoowrap, direct API for both Python and TypeScript, OAuth2 web flow, Pydantic models, project structure, and scopes tables. Much of this is reference material Claude already knows or could derive. The scopes table, project structure suggestion, and Pydantic models are padding that don't add unique instructional value. | 1 / 3 |
Actionability | The code examples are concrete, executable, and copy-paste ready across multiple languages and approaches. Authentication setup, common operations, streaming, posting, and direct API usage all have complete, runnable code blocks with realistic patterns. | 3 / 3 |
Workflow Clarity | The setup steps (create app → env vars → authenticate → use) are sequenced but lack validation checkpoints. There's no explicit verification step after authentication beyond a print statement, no error handling workflow for rate limits or failed auth, and the anti-patterns section mentions error handling but doesn't show how to implement it. | 2 / 3 |
Progressive Disclosure | Everything is crammed into a single monolithic file with no references to supporting files. The direct API implementations, OAuth2 web flow, Pydantic models, and TypeScript examples could all be split into separate reference files. For a skill this large, the lack of any content splitting is a significant organizational failure. | 1 / 3 |
Total | 7 / 12 Passed |
Validation
81%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 9 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
skill_md_line_count | SKILL.md is long (592 lines); consider splitting into references/ and linking | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 9 / 11 Passed | |
65efb33
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.