mit einem Klick
hack-feed
Deep JS hacker news JP
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Menü
Deep JS hacker news JP
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Basierend auf der SOC-Berufsklassifikation
Create a GitHub PR for completed work, then run coderabbit-resolver through review, CI, merge, and cleanup. Use when: the user asks for PR creation followed by CodeRabbit resolution. Keywords: create PR, CodeRabbit, merge.
Secure pnpm GitHub Actions CI
Live onboarding tour of newly implemented code. Combines /deep-trace, the vscode-debug-mcp bridge, and playwright-cli to run the target app in a debug session, drive the UI, pause at curated breakpoints inside the new code, and narrate "this modal is the newly created one" — mapping every UI moment to the exact file:line. Use when the user wants to understand where and how AI-written feature code executes in the running application ("どの UI / どのロジックで動くのか分からない", "オンボーディングして", "/feature-tour").
Screenshot UI defect lint
Debug Claude Code plugins
Record a web or Electron-renderer flow as an annotated video with playwright-cli, then extract frames to confirm how it actually looks. Use when the user points at a flow to capture — "record that part", "あそこの部分", "この一連の動作", "動作確認して録画して", QA-ing a screen's motion/behavior, or proving a web / Electron-renderer interaction works on video. For analyzing a clip you were handed or generic cross-surface motion verification, use the `video` skill; for native macOS chrome (menu / tray / dock / traffic-lights) use computer-use — playwright cannot see those.
| name | hack-feed |
| description | Deep JS hacker news JP |
| argument-hint | [period: 24h|3d|week|month] or [numbers: 1,2,3] or [all] |
When running this skill in Codex, translate Claude Code-only primitives before acting: AskUserQuestion -> chat/request_user_input, TodoWrite -> update_plan, Task/TaskCreate/TeamCreate/SendMessage -> spawn_agent/send_input/wait_agent when available and allowed, and EnterPlanMode/ExitPlanMode -> a concise chat plan plus explicit approval.
Resolve Read/Write/Edit/Bash/WebSearch/WebFetch to Codex file/shell/web tools, and map ~/.claude/... paths to ~/.agents/... or ~/.codex/... unless the task explicitly targets Claude Code.
When running this skill in Cursor Agent, translate Claude Code-only primitives before acting: AskUserQuestion -> AskQuestion; TodoWrite -> Cursor TodoWrite or an equivalent checklist; Task/TaskCreate/TeamCreate/SendMessage/multi-agent flows -> Cursor Task (subagents), parallel Tasks, or run_in_background when allowed (TeamCreate/SendMessage may have no exact match); EnterPlanMode/ExitPlanMode -> Plan mode (SwitchMode / CreatePlan) plus explicit user approval.
Resolve Read/Write/Edit/StrReplace/Bash/web/search/MCP via Cursor Composer or Agent equivalents. MCP names written as mcp__server__tool typically map to call_mcp_tool with configured server identifiers. Map ~/.claude/... to ~/.cursor/skills/, .cursor/skills/, and .cursor/rules/ unless the task explicitly targets Claude Code.
OSS 界隈の深いトピック (React internals, V8, TC39, compiler, scheduler 等) を Web 全体から収集し、ToC → 番号指定 → Explain 風深堀り の2フェーズで提示する。
/hack-feed [period]): 構造化ソース (GitHub/HN/RSS) と Exa web search を
hybrid で集めて、keyword scoring で10-15件に絞り、ToC を表示/hack-feed N,M or /hack-feed all): 前回の ToC から番号指定された記事を
Explain skill 風に深堀り解説日本語固定 (MVP)。技術用語は原語併記可 (例: "スケジューラ (scheduler)")。
ユーザーが渡した引数を period と numbers に振り分ける。両者は独立で、 両方指定されていれば Step1 (collect) 実行後に Step2 (drill-down) も実行する。
| 引数パターン | 分類 | 例 |
|---|---|---|
^\d+[dhw]$ or ^(24h|3d|week|month|day)$ | period | 24h, 3d, week, 7d |
^[\d,]+$ (カンマ区切り数字) | numbers | 3, 3,7, 1,2,5 |
^all$ | special (全件 drill-down) | all |
| その他 | error → help 表示 | foo |
24hall が指定されれば Step2 で全件 drill-down❌ 不明な引数です。使い方:
/hack-feed # 直近24h の ToC
/hack-feed 3d # 直近3日
/hack-feed week # 直近1週
/hack-feed month # 直近1ヶ月
/hack-feed 3 # 既存 ToC の番号3を深堀り
/hack-feed 3,7 # 番号3と7を深堀り
/hack-feed all # 既存 ToC 全件を深堀り
/hack-feed week 3,7 # 1週間分を収集してから3,7を深堀り
構造化ソース (bash script) と Web 検索 (Exa MCP) の2層で集める。
bash ~/.claude/skills/hack-feed/scripts/collect-structured.sh [period]
読む: ~/.claude/data/tracked-engineers.json, ~/.claude/skills/hack-feed/data/sources.json
取得するもの: tracked engineers の GitHub PR/Issue (12名), HN Algolia (直近 period 内),
tier1 RSS feeds (v8/bun/webkit, 1h cache)
各 item には source_kind タグが付く: tracked_user / tier1_rss / hn
エラー対応 (スクリプトは単一ソースのエラーで停止せず、失敗ソースを空配列にフォールバックして継続する設計):
gh 認証失敗の可能性大 → gh auth status 実行をユーザーに促し、失敗なら gh auth login を案内~/.claude/skills/hack-feed/data/sources.json の .tier2_filter.exa_queries を順に読み、各クエリで Exa を呼ぶ:
mcp__exa__web_search_exa({
query: <各クエリ>,
numResults: 10
})
結果の各 item に以下を付与:
source_kind: "exa"type: "web"author: null (Exa は著者情報を持たないことが多い)raw_excerpt = Exa response の snippet (最大300字)エラー対応:
⚠️ Exa "X" が 0件 を debug に記録、次のクエリへ⚠️ Exa 層が利用不可 warning、Phase 1a の結果のみで継続2つのソースを merge した in-memory JSON 配列 (構造化から ~47件 + Exa から ~30件 = ~77件候補)。 Phase 2 の入力となる。
Phase 1 で集めた ~77件の候補を、top 10-15 に絞る。
各 item の source_kind フィールドを見て、扱いと source_tier を決める:
| source_kind | 扱い | source_tier |
|---|---|---|
tracked_user | auto-pass (scoring 無視で通過) | 1 |
tier1_rss | auto-pass | 1 |
hn | scoring 対象 | 2 |
exa | scoring 対象 | 2 |
判定後、各 item に source_tier フィールドを追加する (Phase 2d の sort key, Phase 3b の badge 描画で使う)。
加えて、URL が ~/.claude/skills/hack-feed/data/sources.json の .tier3_reject.domains_blocklist の
いずれかを含めば即座に reject。
~/.claude/skills/hack-feed/data/keywords.json を使う:
score = Σ(positive_hit × weight) + Σ(negative_hit × weight)
title + raw_excerpt を小文字化keywords.json .positive.tier_a.words の各単語でマッチ → +10 × 回数.positive.tier_b.words の各単語でマッチ → +5 × 回数.negative.words の各単語でマッチ → -15 × 回数score >= .pass_threshold (= 5) なら通過、未満なら drop同一 item の検出ルール:
?utm_* や trailing slash を除去、ホスト名を小文字化sources[] 配列に各元 item の {type, url, source_kind} を記録※ fuzzy title match (Jaro-Winkler) は MVP 対象外。将来拡張。
ソート順:
sort by (source_tier ASC, score DESC, published_at DESC)
source_tier: tier1 = 1, tier2 = 2 (auto-pass items が先頭に来る)score: 大きいほど先 (auto-pass は score=inf 扱い)published_at: 新しいほど先Top 15 を取る (候補が15未満なら全件)。Top 5 未満なら "静かな1日" (Phase 3 で special rendering)。
toc 配列 (最大15件)。各 item に index (1-base) を付与。Phase 3 の入力。
~/.claude/cache/hack-feed/YYYY-MM-DD_HHMM.json に書く:
{
"version": 1,
"collected_at": "2026-04-09T10:32:00Z",
"period": "24h",
"toc": [
{
"index": 1,
"title": "React Compiler が bailout を再設計",
"one_liner": "memo 化を断念する条件が全面的に刷新された",
"url": "https://github.com/facebook/react/pull/XXXXX",
"sources": [
{"type": "github", "url": "https://...", "source_kind": "tracked_user"}
],
"source_tier": 1,
"score": 100,
"author": "sebmarkbage",
"published_at": "2026-04-09T08:15:00Z",
"raw_excerpt": "..."
}
],
"debug": {
"candidates_total": 77,
"tier1_autopass": 5,
"tier2_passed": 10,
"tier3_rejected": 3,
"dedup_merged": 2
}
}
Atomic write 手順 (Write tool で .tmp ファイルに書き、Bash で mv):
cache/hack-feed/ ディレクトリが無ければ作る: mkdir -p ~/.claude/cache/hack-feedYYYY-MM-DD_HHMM.json.tmp suffix 付きで先に書くmv で rename (POSIX atomic)latest.json symlink を更新: ln -sf <filename> ~/.claude/cache/hack-feed/latest.json画面出力フォーマット:
# 🔥 hack-feed — 直近 [period]
[⚠️ warnings があればここに列挙]
1. **[タイトル日本語訳]** *by author* · tier1
→ [ソース1種別]: url
→ [ソース2種別]: url (dedup merge された場合)
一行サマリ (日本語)
2. **[タイトル]** ...
...
---
次は `/hack-feed 3,7` のように番号を指定するか、
`/hack-feed all` で全件を深堀りしてください。
レンダリング規則:
author が null なら *by author* 部分を省略source_tier が 1 なら tier1 バッジ、2 なら省略 (目立たせない)one_liner は 30-50字目安toc.length < 5 の時:
# 🔥 hack-feed — 直近 [period]
🌙 控えめな1日 (N件のみ)
[通常の ToC レンダリング]
toc.length == 0 の時:
# 🔥 hack-feed — 直近 [period]
📭 直近 [period] は静かでした。
`/hack-feed week` を試してみては?
両方の場合でも空 state を保存する (Step2 の区別用)。
/hack-feed N,M or /hack-feed all 指定時に実行。順次 (並列ではない)。
read ~/.claude/cache/hack-feed/latest.json
エラーハンドリング:
| 状況 | 対応 |
|---|---|
| latest.json が存在しない | ❌ state file なし。先に /hack-feed で収集してください |
| latest.json が破損 | .corrupted-YYYYMMDD にリネーム、ユーザーに再収集促す |
toc.length == 0 | ❌ state は空です。/hack-feed week などで再収集してください |
indices = (numbers == "all") ? [1..toc.length] : parse(numbers)
target_items = []
for i in indices:
if i < 1 or i > toc.length:
print "⚠️ 番号 {i} は範囲外 ({toc.length}件中)"
continue
target_items.append(toc[i-1]) # 1-base → 0-base
各 target item に対して:
switch item.sources[0].type:
case "github":
body = gh api /repos/<owner>/<repo>/pulls/<num>
or /repos/<owner>/<repo>/issues/<num>
(PR description + top 3 comments)
case "rss":
body = mcp__exa__web_fetch_exa({ url: item.url })
case "hn":
body = HN item.text (if present) + top 3 comments
case "web" (= exa origin):
body = mcp__exa__web_fetch_exa({ url: item.url })
default:
body = WebFetch(item.url)
if body fetch fails:
body = item.raw_excerpt
warn "⚠️ 本文取得失敗、ToC 要約のみで解説"
各 item を Explain skill の Phase 3-4 スタイルで解説:
## [item.index]. [item.title]
[tier] · [source types csv] · score: [score or auto-pass]
[コンテキスト: 2-3文。何? なぜ存在?]
🤔 [コア解説: どう動く?]
🎯 [設計判断: なぜこう作った? どんな alternatives があった?]
⚡ [性能/トレードオフ: computational/memory/UX への影響]
📊 [品質/パターン: どんな設計原則に従う/違反する?]
💡 [接続: 広いシステムとの関係? 類似パターン?]
[関連 URL: if body refs code, use file:line format]
---
サイズ規則:
all モード時の注意toc.length 件を順次解説 → 最大 15 × 400字 = 6000字の長文出力。
これは意図した挙動 (ユーザーが明示的に all を選んだため)。
標準出力に全件を表示して終了。state file は変更しない (読むだけ)。
次回 /hack-feed [period] で再収集するまで同じ state を使う。
/hack-feed → Phase 0 → Phase 1-3 (Step1 only)
/hack-feed 3,7 → Phase 0 → Phase 4 only (state 読込)
/hack-feed 3,7 week → Phase 0 → Phase 1-3 → Phase 4
/hack-feed all → Phase 0 → Phase 4 all
/hack-feed week all → Phase 0 → Phase 1-3 → Phase 4 all