基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/strmt7/ai_skills_collection_benchmarked --skill show-hn-writer命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
Azure Resource Manager SDK for API Management in .NET. Use for MANAGEMENT PLANE operations: creating/managing APIM services, APIs, products, subscriptions, policies, users, groups, gateways, and backends via Azure Resource Manager. Triggers: "API Management", "APIM service", "create APIM", "manage APIs", "ApiManagementServiceResource", "API policies", "APIM products", "APIM subscriptions".
Azure Monitor Ingestion SDK for Java. Send custom logs to Azure Monitor via Data Collection Rules (DCR) and Data Collection Endpoints (DCE). Triggers: "LogsIngestionClient java", "azure monitor ingestion java", "custom logs java", "DCR java", "data collection rule java".
Discovers available Azure OpenAI model capacity across regions and projects. Analyzes quota limits, compares availability, and recommends optimal deployment locations based on capacity requirements. USE FOR: find capacity, check quota, where can I deploy, capacity discovery, best region for capacity, multi-project capacity search, quota analysis, model availability, region comparison, check TPM availability. DO NOT USE FOR: actual deployment (hand off to preset or customize after discovery), quota increase requests (direct user to Azure Portal), listing existing deployments.
| name | show-hn-writer |
| description | |
| compatibility | ["claude-code","gemini-cli","github-copilot"] |
| author | OpenDirectory |
| version | 1.0.0 |
Draft a Show HN post title and body that follows the unwritten rules of Hacker News: specific, honest, first-person, no marketing.
Critical rule: Never use marketing language. No "game-changing", "revolutionary", "powerful", "robust", "seamless", "innovative", "best-in-class", or "streamline". Never write in third person about the product. Never ask readers to upvote, share, or check out other links.
Check if the user has already provided enough context to write the post. You need:
If any of these are missing, ask in a single message:
"To write your Show HN post, I need a few details:
Do not proceed until you have answers to all five.
Check for project context files before asking:
ls README.md 2>/dev/null && echo "README found"
ls CLAUDE.md 2>/dev/null && echo "CLAUDE.md found"
ls package.json 2>/dev/null && echo "package.json found"
If README.md exists, read the first 100 lines. Extract: what it does, tech stack, how to run it, any stated motivation.
If you find enough context in the files, skip the Step 1 questions entirely or ask only what's missing.
The Show HN title must start with "Show HN:": this is required, not optional.
Title format A: Product-First:
Show HN: [Project Name] – [what it does in plain English]
Title format B: Outcome-Focused:
Show HN: [Project Name] – [specific outcome] for [specific person]
Title rules:
Good examples:
Show HN: Zulip – Group chat that threads every conversationShow HN: Lite XL – A lightweight text editor written in C and LuaShow HN: Datasette – Instantly publish SQLite databases to the webBad examples (never write these):
Show HN: The most powerful tool for managing your workflow (adjective, no specifics)Show HN: Check out my new project! (no description, no name)Show HN: I built a thing for developers (vague)Draft three title variants:
The Show HN body is a builder talking to peers. It is not a product description. It is not a pitch.
Structure:
Opening line: One sentence, first-person, what you built. Not "Introducing X" or "X is a tool that". Just: "I built [X] because [reason]." or "For the past [N] months I've been working on [X]."
The why: Two to four sentences on why you made it. Was it a problem you had personally? Something frustrating at work? A technical curiosity? Be specific and honest. If you built it for fun, say so.
How it works: Three to six sentences on the technical approach. This is what HN readers care about. What's the interesting engineering decision? What did you learn? What tradeoff did you make and why? Name the specific technology choices.
Current state: One to two sentences. Is it open source? Free? Alpha? Looking for beta users? Solo project or team? How long have you been working on it?
Invitation: One sentence to close. Invite feedback, questions, or criticism. Never ask for upvotes or shares. Examples: "Would love to hear what you think." / "Happy to answer questions about the implementation." / "Criticism welcome: still early days."
Body rules:
Write a Gemini request to evaluate the draft and check for Show HN anti-patterns:
cat > /tmp/show-hn-review-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a longtime Hacker News member reviewing a Show HN post draft. Your job is to catch anything that will hurt its reception: marketing language, vague descriptions, third-person writing, requests for upvotes/shares, adjectives without specifics, titles over 80 characters. For each issue found, state: the exact phrase, why it hurts, and a specific suggested replacement. If the post passes, say 'Passes review.' Output only the review: no commentary, no preamble. Do not use em dashes. Do not praise the post."
}]
},
"contents": [{
"parts": [{
"text": "DRAFT_POST_HERE"
}]
}],
"generationConfig": {
"temperature": 0.2,
"maxOutputTokens": 1024
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/show-hn-review-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
Replace DRAFT_POST_HERE with the full title and body text.
If GEMINI_API_KEY is not set: Skip this step. Proceed with the manual self-QA in Step 6.
Before presenting the final output, check each item:
Title checks:
Body checks:
If any check fails, fix before presenting.
If HN_USERNAME and HN_PASSWORD are set in the environment, offer to post directly.
echo "HN_USERNAME: ${HN_USERNAME:-not set}"
echo "HN_PASSWORD: ${HN_PASSWORD:+set (hidden)}"
If both are set, tell the user: "HN credentials found. Confirm to submit this post directly to Hacker News, or say 'output only' to get the text."
On confirmation, run the three-step submission:
Step A: Authenticate and get session cookie
HN_COOKIE=$(curl -s -c /tmp/hn-cookies.txt -b /tmp/hn-cookies.txt \
-X POST "https://news.ycombinator.com/login" \
-d "acct=${HN_USERNAME}&pw=${HN_PASSWORD}&goto=news" \
-D /tmp/hn-headers.txt \
-L -o /dev/null -w "%{http_code}")
# Verify login succeeded (should redirect to news, not back to login)
grep -c "user?id=${HN_USERNAME}" /tmp/hn-headers.txt > /dev/null 2>&1 \
|| curl -s -b /tmp/hn-cookies.txt "https://news.ycombinator.com/" \
| grep -c "logout" > /dev/null 2>&1 \
&& echo "Login: success" || echo "Login: failed: check credentials"
If login fails: stop. Tell the user their credentials did not work and present the draft for manual submission instead.
Step B: Fetch the submission form to get the CSRF token (fnid)
FNID=$(curl -s -b /tmp/hn-cookies.txt \
"https://news.ycombinator.com/submit" \
| python3 -c "
import sys, re
html = sys.stdin.read()
m = re.search(r'name=\"fnid\" value=\"([^\"]+)\"', html)
print(m.group(1) if m else 'NOT_FOUND')
")
echo "fnid: $FNID"
If fnid is NOT_FOUND: stop. HN may have changed their form structure. Present the draft for manual submission.
Step C: Submit the post
For a URL submission (project URL):
curl -s -b /tmp/hn-cookies.txt \
-X POST "https://news.ycombinator.com/r" \
-d "title={ENCODED_TITLE}&url={ENCODED_URL}&fnid=${FNID}&fnop=submit-page" \
-D /tmp/hn-submit-headers.txt \
-L -o /tmp/hn-submit-response.html
# Check for success: HN redirects to the post or to newest
grep -E "item\?id=|/newest" /tmp/hn-submit-headers.txt \
&& echo "Submission: success" || echo "Submission: check manually"
For a text post (no URL, just body):
curl -s -b /tmp/hn-cookies.txt \
-X POST "https://news.ycombinator.com/r" \
-d "title={ENCODED_TITLE}&text={ENCODED_BODY}&fnid=${FNID}&fnop=submit-page" \
-D /tmp/hn-submit-headers.txt \
-L -o /tmp/hn-submit-response.html
After submission:
If any step fails: Clean up cookie file (rm -f /tmp/hn-cookies.txt) and present the draft for manual submission. Do not retry automatically.
# Always clean up credentials from disk after the session
rm -f /tmp/hn-cookies.txt /tmp/hn-headers.txt /tmp/hn-submit-headers.txt /tmp/hn-submit-response.html
If HN_USERNAME or HN_PASSWORD is not set: skip this step entirely and proceed to Step 8.
Present in this order:
## Show HN Post
### Recommended Title
Show HN: [title]
### Alternative Titles
1. Show HN: [variant 1]
2. Show HN: [variant 2]
---
### Body
[post body text]
---
### Submission Notes
- URL field: [project URL or GitHub URL]
- Best time to post: Tuesday to Thursday, 8–10 AM US Eastern
- After posting: Respond to every comment in the first two hours
- Do not share the link elsewhere for the first 24 hours: HN flags vote rings
Do not add commentary about the post. Present the output, then stop.