Case 00938
A fast, offline static risk analysis CLI for AI agent skill files. Detects malicious instructions, steganographic payloads, and dangerous capability chains.
npx -y skills add knownasnaffy/prompthound --skill case_00938Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Social media pre-flight checker. Scans any draft post against 30+ platform-specific invisible rules and outputs PASS/WARN/FAIL per rule with exact fix suggestions. Like a linter for content. Covers Reddit (90/10 self-promo ratio, shadowban triggers, link-to-comment tracking), LinkedIn (360Brew AI detection, 60% external link penalty, engagement bait NLP filter, engagement pod detection), Twitter/X (150x author-reply multiplier, 30-min velocity window, link depression since March 2026, bookmark 10x signal), and HackerNews (Show HN format rules, tutorial downrank, clickbait title editing by dang). Research-backed with specific algorithm data. Zero external dependencies.
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.1 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
phy-platform-rules-engine — Social Media Pre-Flight Checker
Each social platform has invisible rules. Break them and you get shadowbanned, de-ranked, or ignored — without knowing why. This tool scans your draft post against 30+ platform-specific rules before you publish.
Like a linter, but for social media posts.
Quick Start
# Check a Reddit post
echo "Your post text" | python3 ~/.claude/skills/phy-platform-rules-engine/scripts/platform_rules.py --platform reddit
# Check a LinkedIn post from file
python3 ~/.claude/skills/phy-platform-rules-engine/scripts/platform_rules.py --file draft.txt --platform linkedin
# Check a Twitter/X thread
python3 ~/.claude/skills/phy-platform-rules-engine/scripts/platform_rules.py --text "My tweet..." --platform twitter
# Check a HackerNews submission
python3 ~/.claude/skills/phy-platform-rules-engine/scripts/platform_rules.py --text "Show HN: ..." --platform hackernews
# JSON output
python3 ~/.claude/skills/phy-platform-rules-engine/scripts/platform_rules.py --file draft.txt --platform linkedin --format json
Rules by Platform
Reddit (7 rules)
| ID | Rule | What It Catches | Severity |
|---|---|---|---|
| R001 | Self-promo in opening | Product mention in first paragraph → instant downvotes | HIGH |
| R002 | Self-promotion ratio | >10% promotional content violates 90/10 rule | HIGH |
| R003 | External link in body | Reddit tracks link-to-comment ratio; >10% → spam flag | MEDIUM |
| R004 | Post length | <50 words = low effort; >500 = TL;DR needed | LOW |
| R005 | No discussion prompt | No question = no comments = no algorithm boost | MEDIUM |
| R006 | Clickbait language | Community actively downvotes hype/clickbait | MEDIUM |
| R007 | Cross-posting signal | "Also posted on LinkedIn" → mass-distribution flag | HIGH |
LinkedIn (8 rules)
| ID | Rule | What It Catches | Severity |
|---|---|---|---|
| L001 | External link penalty | Links in body → 60% less reach (LinkedIn 2026) | HIGH |
| L002 | Engagement bait | "Comment YES", "Tag a friend" → NLP filter penalizes | HIGH |
| L003 | AI content signals | 37 AI-flagged words → 360Brew 30% less reach | HIGH |
| L004 | Hashtag count | >5 hashtags looks spammy; 0 = no categorization | MEDIUM |
| L005 | Hook strength | First 150 chars determine "See more" clicks → dwell time | HIGH |
| L006 | Post length | <30 words = low dwell time | MEDIUM |
| L007 | Long paragraphs | >40 words/paragraph = poor mobile readability | MEDIUM |
| L008 | Engagement pod signals | Pod references → aggressive detection in 2026 | HIGH |
Twitter/X (6 rules)
| ID | Rule | What It Catches | Severity |
|---|---|---|---|
| X001 | External link depression | Links → near-zero engagement for non-Premium (since March 2026) | HIGH |
| X002 | Thread hook strength | Weak thread hook = rest of thread never distributed | HIGH |
| X003 | Character count | >280 chars = truncated (non-Premium) | HIGH |
| X004 | Link placement strategy | Tip: author reply with link = 150x multiplier | HIGH |
| X005 | Bookmark potential | No save-worthy content = misses 10x bookmark boost | MEDIUM |
| X006 | No engagement prompt | No question = no replies = misses 27x reply multiplier | MEDIUM |
HackerNews (7 rules)
| ID | Rule | What It Catches | Severity |
|---|---|---|---|
| HN001 | Clickbait title | Moderator (dang) will edit your title | HIGH |
| HN002 | ALL CAPS | Excessive capitalization → title edit | MEDIUM |
| HN003 | Show HN missing URL | Show HN requires a URL | HIGH |
| HN004 | Show HN content type | Show HN is for runnable things, not blog posts | HIGH |
| HN005 | Tutorial content | Tutorials explicitly downranked by moderators | MEDIUM |
| HN006 | Self-promotion | Self-promo outside Show HN → flagged | HIGH |
| HN007 | Technical depth | Low technical depth → poor reception on HN | MEDIUM |
Algorithm Data Behind the Rules
| Platform Signal | Source | Data |
|---|---|---|
| LinkedIn external link penalty | LinkedIn 360Brew 2026 | ~60% less reach |
| LinkedIn AI content penalty | LinkedIn 360Brew 2026 | 30% less reach, 55% less engagement |
| Twitter/X reply multiplier | X algorithm source code | Reply = 27x, Author reply = 150x, Bookmark = 10x, Like = 1x |
| Twitter/X link penalty | X algorithm March 2026 | Non-Premium: near-zero engagement with links |
| Twitter/X half-life | X algorithm analysis | Tweet loses 50% visibility every 6 hours |
| Reddit timing impact | Upvote.net 1000-post study | 730% difference based on posting time alone |
| Reddit self-promo | Reddit sitewide rules | 90/10 ratio across total account history |
| HN tutorial downrank | HN moderator policy | Tutorials "gratify intellectual curiosity less" |
Example Output
Bad Reddit post (HIGH RISK)
Score : 20/100 🔴 HIGH RISK
Rules : 2 PASS, 3 WARN, 2 FAIL
🔴 [R001] Self-promo in opening — FAIL
→ Move product mention to a reply comment. Lead with value first.
🔴 [R007] Cross-posting signal — FAIL
→ Remove cross-posting references. Each platform should feel native.
Bad LinkedIn post (HIGH RISK)
Score : 5/100 🔴 HIGH RISK
Rules : 3 PASS, 2 WARN, 3 FAIL
🔴 [L001] External link penalty — FAIL (60% less reach)
🔴 [L002] Engagement bait detection — FAIL (NLP filter)
🔴 [L003] AI content signals — FAIL (8 AI words found)
Clean LinkedIn post (CLEAR)
Score : 100/100 ✅ CLEAR
Rules : 8 PASS, 0 WARN, 0 FAIL
Technical Notes
- Zero external dependencies — pure Python 3.7+ stdlib
- Exit codes: 0 (CLEAR), 1 (warnings only), 2 (has failures)
- JSON output:
--format jsonfor pipeline integration - 37 AI-flagged words: same database as phy-content-humanizer-audit
- 10 engagement bait patterns: regex-based, matches LinkedIn's NLP filter targets
Companion Skills
| Skill | Relationship |
|---|---|
phy-content-humanizer-audit | Deep 8-dimension AI signature analysis (this tool = quick rule check) |
phy-post-forensics | Post-publish analysis (this tool = pre-publish prevention) |
phy-content-compound | Content atom library (use rules engine before publishing atom combinations) |
What ships with it: 1 file
30.4 KB alongside SKILL.md, 1 of them executable
scripts/
- platform_rules.pyruns30.4 KB