ååã®ãClaude Codeãç¡äººã§èªåŸæ¹åããããã§ãæ¯æãã¹ã¯ãããã«ãæããªãŒãããå±ã骚çµã¿ãäœããŸãããä»åã¯ãã®ããªãŒãçæãžã§ãã«çžä¹ããããŠãGitHubãæ¯æå·¡åãã圹ã«ç«ã¡ãããªOSSãšClaude Codeã¹ãã«ãèªåã§æ¡ç¹ãã github-scout.sh ãäœã£ã話ã§ãã
ãšã³ãžãã¢ã§ã¯ãªãåããããçµãã«ããã£ãŠã決ããã«ãŒã«ã¯3ã€ã ãã§ããã
- æ¢ãïŒghã»ç¡æïŒãšæ¡ç¹ããïŒclaude -pã»MAXæ ïŒãåããŠãã³ã¹ããåºå®ãã
- ã¹ãã«ã®å®å šæ§ã¯ãã¡ã€ã«æ§æã§æ©æ¢°çã«å€å®ãããèªåã§æå¹åãããéé¢ããŠèŠã¬ãã¥ãŒãã«åãã
- æ¡ç¹ã«å€±æãããå°åž³ã«èšé²ãããç¿æã®å·¡åã«èªåã§ããçŽããã
èªåã§æžããã¹ãã«ããGitHubã«ã»ãŒãã®ãŸãŸãã£ã
Claude Codeã®ã¹ãã«ã¯ãã³ãã¥ããã£è£œã®ãã®ãGitHubã«ãããã転ãã£ãŠããŸãã就掻ãã©ãã«ãŒãChromeæ¡åŒµã®åèã«ãªãOSSãåãã§ãã
ãšãããåã®æ¢ãæ¹ã¯ãæ°ãåãããšãã«æã§æ€çŽ¢ãã§ãããæ¯ååã人æ°ãªããžããªããåºãŠããªãããå é±èŠã€ããOSSã¯ç¿é±ã«ã¯ããå¿ããŠããŸãããããšããèªåã§æžããã¹ãã«ãšã»ãŒåããã®ãGitHubã«æ®éã«çœ®ããŠããã®ãèŠã€ããŠãç»é¢ã®åã§åºãŸããŸããç¬
æããªãŒããæ¯æå±ãä»çµã¿ã¯ãããããŸããã ã£ããããã«GitHubã®çºèŠãå·®ã蟌ãã®ããã¡ã°ãæ©ãããšèããŸããã
ð AIãšãŒãžã§ã³ããšèªååã®å šå·¥çšããŸãšããç·éç·š
æé ã»ã³ãŒãã»ãã³ãã¬ããã®ãŸãŸæž¡ããŠããŸã
ð€ãå®å
šçãæå160äžåã®ãå¯ãŠãŠãåãä»çµã¿ãããŒããã30æ¥ã§çµãå
šå·¥çšïœ2026幎10æçã»Claude CodeÃAIãšãŒãžã§ã³ãã»ç¹å
ž40ãã¡ã€ã«ã»æ¯ææŽæ°
ð ãã®èšäºã®å 容ããå®è£ ãŸã§å šéšãŸãšããææèšäºããããŸã æé ã»ã³ãŒãã»ãã³ãã¬ããã®ãŸãŸæž¡ããŠããŸã AIã§ãå¯ãŠãŠãåãä»çµã¿ãããŒããã30æ¥ã§çµãå šæé
å šäœã¯4ã¹ããŒãžã®ãã€ãã©ã€ã³
ã¹ã¯ãªããã®å é ã³ã¡ã³ãã«ãæµãããã®ãŸãŸæžããŠãããŸãã
# CRAWL(gh=ç¡æ) -> DEDUP(shell) -> ENRICH(gh contents) -> SCORE+ROUTE+INGEST(claude -p=MAXæ ) -> LEDGERæ ã䜿ãã®ã¯æ¡ç¹ã ãã§ãããªã®ã§æ¡ç¹ã«æž¡ãä»¶æ°ã«äžéãã€ããŠãæ¶è²»ãæ¯æ¥åãéã«ããããŸããã
MAX_CANDIDATES=30 # claude ãžæž¡ãäžäœä»¶æ°ïŒã³ã¹ãåºå®åïŒ
MAX_ENRICH=8 # SKILL.md äžèº«ãåãã«è¡ã skill åè£ã®äžé
TIMEOUT_SEC=600æžã蟌ã¿å 㯠~/.claude/ é äžã ãã§ããiCloudåæããŠããä¿è·é åã®Vaultã«ã¯çŽæ¥æžããŸãããautopilotã®ãšããšåãããèªåã®éå ·çœ®ãå Žããè§Šããªããæ±ºãŸãã«ããŠããŸãã
# åºå:
# - ããªãŒãå·®ã蟌ã¿çš: ~/.claude/logs/github-scout-latest.md
# - å®å
šã¹ãã«(md ã®ã¿/read系暩é): ~/.claude/skills/auto/<name>/ ã«èªåæå¹å
# - Bash/script 忢±ã¹ãã«: ~/.claude/skills/auto/.incoming/<name>/ ã«éé¢ + èŠå¯Ÿå¿ãã©ã°
# - OSS/ãã¬ã³ãåè£: ~/.claude/scout/watchlist.md ã«è¿œèš(clone ããªã)1. CRAWLïŒ3ã€ã®ã¬ãŒã³ã§ç¶²ã匵ã
gh search repos ãçšéå¥ã«3ã¬ãŒã³ã§èµ°ãããŸããæŸã£ãã¬ãŒã³ããããšã®æ¯ãåãã«ãã®ãŸãŸäœ¿ãããŸãã
# A: Claude Code ã¹ãã«/ãã©ã°ã€ã³ïŒæ¬äžžïŒ
run_search skill "A1 topic:claude-code" --topic claude-code --sort stars --order desc --limit 25
run_search skill "A2 claude code skills" "claude code skills" --sort stars --order desc --limit 20
# B: èªåã®éçºã«çŽçµãã OSS
run_search project "B1 chrome autofill" "autofill" --language JavaScript --stars ">100" --sort stars --order desc --limit 12
run_search project "B5 job tracker" "job tracker" --stars ">30" --sort stars --order desc --limit 12
# C: ãã¬ã³ã暪æ
run_search trend "C1 breakout 90d" --created ">$D90" --stars ">800" --sort stars --order desc --limit 20
run_search trend "C2 hot now" --updated ">$D3" --stars ">3000" --sort updated --order desc --limit 20ã©ããã®æ€çŽ¢ã倱æããŠããã«ãã¬ããžè¡šã« â ãæ®ããŠå ãžé²ã¿ãŸããGitHubã®æ€çŽ¢APIã¯1å30åãŸã§ãªã®ã§ã1åããšã« sleep 1 ãæãã§ããŸãã
æåã¯Bç³»ã®ã¯ãšãªã«åèªãANDæ¡ä»¶ã§ããããéããŠããŸãããçµæã¯0ä»¶ãæ¬¡ã®æ¥ã0ä»¶ãæ€çŽ¢ãå£ããŠããã®ããšçã£ãŠãåãã¯ãšãªãäœåºŠãæã§æã¡çŽããŸããããã³ã¢èªïŒèšèªïŒã¹ã¿ãŒæ°ã®äžéããŸã§åã£ãããããããããããå§ãããã§ãïŒïŒã³ã¡ã³ãã« v2: 2026-06-10宿ž¬èª¿æŽ ãšæ®ããŠããŸãïŒãè€åã¯ãšãªã¯ã詊ããŠåããããããŸããã§ããã
2. DEDUPïŒäžåºŠèŠããã®ã¯åŒŸã
~/.claude/scout/seen.tsvïŒãªããžããªåãšæ¡ç¹æ¥ïŒã§éå»ã«æ¡ç¹ãããã®ã匟ããauto/ ã«ããæ¢åã¹ãã«åã§ããããéè€ãã§ãã¯ããŸãã
"$JQ" -s -c 'unique_by(.name) | sort_by(-.stars) | .[]' "$RAW" 2>/dev/null \
| while IFS= read -r line; do
nm=$(echo "$line" | "$JQ" -r '.name')
grep -qxF "$nm" "$SEEN_SET" 2>/dev/null && continue
echo "$line" >> "$FRESH"
doneéè€ãæ¶ããŠã¹ã¿ãŒé ã«äžŠã¹ãäžäœ30ä»¶ã«çµã£ãæç¹ã§ãã®æ¥ã®ã³ã¹ããæ±ºãŸããŸãã
3. ENRICHïŒã¹ãã«åè£ã ãäžèº«ãèªã
æ¡ç¹ã®ç²ŸåºŠãäžãããããã¹ãã«ã¬ãŒã³ã®äžäœ8ä»¶ã ã SKILL.md ã®äžèº«ãšãã¡ã€ã«äžèЧãåã£ãŠããŸãããã以å€ã¯èª¬ææã»ã¹ã¿ãŒæ°ã»èšèªã ãã§æ¡ç¹ãããŸãã
skillmd=$("$GH" api "repos/$name/contents/SKILL.md" \
--jq '.content' 2>/dev/null | base64 -d 2>/dev/null | head -c 6000)
files=$("$GH" api "repos/$name/contents" \
--jq '.[].name' 2>/dev/null | tr '\n' ',' | head -c 500)
if echo "$files" | grep -qiE '\.sh,|\.js,|hooks,|scripts,|install|setup\.'; then
has_script="true"
fiããã§ç«ãŠã has_script ããæ¬¡ã®å®å šå€å®ã®æ±ºãæã«ãªããŸãã
4. SCORE + ROUTEïŒæ¡ç¹ãšãã¡ã€ã«æäœãclaude -pã«ä»»ãã
åè£ããŸãšããŠããã³ããã«æž¡ããâ 1ã5ã®æ¡ç¹ãšããã®åŸã®ãã¡ã€ã«æäœãäžåºŠã«æç€ºããŸããè¡ãå ã¯3ã€ã§ãã
A) ã¹ãã«ã®èªååã蟌ã¿ïŒã¹ãã«ã¬ãŒã³ã»SKILL.mdããã»â 4以äžïŒ
å®å
šå€å®:
- allowed-tools ãç¡ãããŸã㯠Read/Grep/Glob/WebFetch/WebSearch ã®ã¿ â ãå®å
šã
- has_script=trueããŸã㯠allowed-tools ã« Bash/Write/Edit çãå«ãŸãã â ãèŠã¬ãã¥ãŒã
- ãå®å
šã: ~/.claude/skills/auto/<kebabå>/ ã« SKILL.md ãæžããå
é ã« provenance ãè¶³ã
<!-- source: github-scout | repo: <name> | url: <url> | adopted: DATE -->
- ãèŠã¬ãã¥ãŒã: .incoming/<kebabå>/ ã«çœ®ãïŒæå¹åããªãïŒãããªãŒãã®ãèŠå¯Ÿå¿ãã«åæauto/ ã«å ¥ã£ãã¹ãã«ã¯æ¬¡ã®ã»ãã·ã§ã³ããèªåã§äœ¿ããŸãã.incoming/ ã®ãã®ã¯æå¹åãããªãã®ã§ãäžãèªãã§ãã /scout-promote ã§ææ ŒãããŸããã¹ã¯ãªããå ¥ãã®ã¹ãã«ã¯ãå¿ ãåãç®ãéãæ±ºãŸãã§ãã
B) OSSåè£ïŒãããžã§ã¯ãã¬ãŒã³ããŸãã¯SKILL.mdããªããã®ã»â 4以äžïŒã¯ãwatchlist.md ã«1è¡è¿œèšããã ããcloneã¯ããŸããã
C) ãã¬ã³ãïŒâ 3以äžïŒã¯ãããªãŒãã«1è¡èŒããã ãã§ãã
å±ãããªãŒãã¯ãããªåœ¢ã§ãã
## ð GitHub Scout (2026-06-17)
### â¡ èªåã§å
¥ããã¹ãã«
- foo-skill â
4 â äœãã§ããã1è¡ïŒæå¹åæžã¿ïŒ
### â ïž èŠå¯Ÿå¿ïŒããªãã®ç¢ºèªåŸ
ã¡ïŒ
- bar-skill â
5 â ãªãèŠã¬ãã¥ãŒã / æå¹åãããªã: /scout-promote bar-skill
### ð¡ æ¡çšåè£(OSS) â watchlistè¿œèšæžã¿
### ð ãã¬ã³ã暪ææããªãŒããžã®çžä¹ããšã倱æãããšãã®èšèš
5. ç¬ç«ãžã§ãã«ããçžä¹ãããã
scoutã¯ç¬ç«ããlaunchdãžã§ãã«ããŠããŸãããvault-auto-ingest.sh ãããªãŒããäœã£ãçŽåŸïŒstep 2.55ïŒã«åŒã°ããŸãã
run_to 900 bash "$HOME/.claude/scripts/github-scout.sh" >> "$LOG" 2>&1 \
|| echo "[$(ts)] github-scout 倱æ(ç¶ç¶)" >> "$LOG"
if [ -s "$SCOUT_SEC" ] && [ "$SCOUT_SEC" -nt "$START_STAMP" ] && \
[ -s "$BRIEF_SRC" ] && [ "$BRIEF_SRC" -nt "$START_STAMP" ]; then
{ echo ""; echo "---"; echo ""; cat "$SCOUT_SEC"; } >> "$BRIEF_SRC"
fiscoutãã³ã±ãŠããããªãŒãå šäœã¯æ¢ãŸããŸããã-nt ã§ãä»åäœããããã¡ã€ã«ããã確ãããŠãæšæ¥ã®çµæã貌ã£ãŠããŸãäºæ ãé²ãã§ããŸããvault-auto-ingest.sh 㯠4:55 / 8:15 / 10:15 / 12:15 ã«çºç«ããŸãããäžåºŠæåããã°å®äºããŒã«ãŒã§æ®ãã¯ããæããã®ã§ãäºéã«ã¯èµ°ããŸããã
6. å°åž³ã«ãå»ãŸãªããã®ããªãã©ã€ã®éµ
æ¡ç¹äžã«Claudeã®MAXæ ãåãããšãã¯ãå°çšã«æ€åºããŸãã
if [ "$rc" -ne 0 ] && grep -qi "session limit" "$RUN_OUT" 2>/dev/null; then
SESSION_LIMIT=1
if [ "$wait_s" -ge 0 ] && [ "$wait_s" -le 480 ]; then
sleep "$wait_s"; run_claude; rc=$? # 8å以å
ãªãåŸ
ã£ãŠ1åã ãåææŠ
else
log "session limit â reset é ã/äžæãseen écommit ã§æ¬¡åå·¡åã«å§ãã"
fi
fiæ¡ç¹çµæã«åè£è¡ïŒ- ã§å§ãŸãè¡ïŒã1ä»¶ããªããã° SCORE_OK=0 ã«ããŠã3段ã®ãã©ãŒã«ããã¯ã«å ¥ããŸãã
- ä»åæŸã£ãäžäœåè£ããã®ãŸãŸæŽåœ¢ããŠåºã
- ããã空ãªã watchlist ã®â 4/â 5ãåºã
- ããã§ã空ãªãã倱æããŸããããšæç€ºãã
æããªãŒããéããŠãscoutã®æ¬ã ãäœãæžããŠããªããããã ãã¯é¿ãããã£ããã§ãã
ãããŠæåŸã«ãæ¡ç¹ãæåãããšãã ã seen.tsv ã«èšé²ããŸãã
if [ "${SCORE_OK:-1}" -eq 1 ]; then
while IFS= read -r line; do
printf '%s\t%s\n' "$(echo "$line" | "$JQ" -r '.name')" "$TODAY" >> "$SEEN"
done < "$TOP"
else
log "æ¡ç¹æªæç«(SCORE_OK=0) â seen écommitãæ¬¡åå·¡åã§åæ¡ç¹ãããã"
fièšé²ããªããã°ãç¿æã®å·¡åã§åãåè£ããŸãæµ®ããã§ããŸãããªãã©ã€çšã®ä»çµã¿ãå¥ã«äœããªããŠãããæžããªããã ãã§åææŠã«ãªããããã«æ°ã¥ãããšãã¯æãã声ãåºãŸããïŒ
å®éã®æ°åãšãèžãã èœãšã穎
ããªãŒãã®æ«å°Ÿã«ã¯ããœãŒã¹ããšã®æå/倱æã䞊ã¹ãã«ãã¬ããžè¡šãæãããã¿ã§ä»ããŸãã
| ãœãŒã¹ | ç¶æ
| ä»¶æ° |
|---|---|---|
| A1 topic:claude-code | â
| 25 |
| B1 chrome autofill | â
| 12 |
| C1 breakout 90d | â | 0 |
_raw 234 â fresh 41 â æ¡ç¹ 30ãseençŽ¯èš 187ã_234ä»¶æŸã£ãŠããæ¡ç¹ã«åãã®ã¯30ä»¶ã ãïŒäžéãã¡ãããšåããŠããŠãã³ã¹ããæ¯æ¥åãã ãšäžç®ã§ããããŸãã倱æãããœãŒã¹ã â ã®ãŸãŸé ããåºããŸãã
èžãã èœãšã穎ã¯ãã®ãããã§ãã
- ANDæ€çŽ¢ã§0ä»¶ãç¶ãããã³ã¢èªïŒèšèªïŒã¹ã¿ãŒäžéãŸã§åã£ãŠè§£æ±º
- launchdã®PATHãæå°ã§ãgh ã jq ãèŠã€ãããªãã£ããnvmã»Homebrewã»localã®binãå šéšéãã
- --created / --updated ãæ€çŽ¢èªã«æ··ãããšç¡èŠããããgh search repos ã®ãã©ã°ãšããŠæž¡ãããã«å€æŽ
- Claudeã®åºåã35ãã€ãã®èŠåºãã ããªã®ã«ãããã¡ã€ã«ãããå€å®ãééããŠããã2026-06-11ã®æãæ¹ã«ãœã±ãããèœã¡ãŠçºèŠããã- è¡ã®æ°ãã§å€å®ããããçŽãã
- grep -c ã¯0ä»¶ã®ãšã exit 1 ãè¿ããã€ã || echo 0 ãè¶³ããšã0ãã2è¡ã«ãªã£ãŠæ°å€æ¯èŒãå£ããã®ã§ãã³ã¡ã³ãã«ãfootgunãä»ããªãããšæžããŠå°å°ãã
- ã¹ã¯ãªããå ¥ãã®ã¹ãã«ã§ããèŠåºãã ãèŠããšå®å šããã«èŠããããã¡ã€ã«äžèŠ§ã® has_script ã§è£ã£ã
- æ åãããšã©ãŒæ±ãããŠãããðšãèª€å ±ãããããæ åŸ ã¡ããšãæ¡ç¹ãã°ããå¥ã¡ãã»ãŒãžã«åãã
ãŸãšã
- æ¢ãïŒç¡æïŒãšæ¡ç¹ããïŒMAXæ ïŒãåãã30ä»¶äžéã§ã³ã¹ããåºå®ãã
- ã¹ãã«ã»OSSã»ãã¬ã³ãã®3ã¬ãŒã³ã§ç¶²ã匵ããseen.tsv ã§åããã®ãäºåºŠèŠãªã
- ã¹ã¯ãªããå ¥ãã¹ãã«ã¯ .incoming/ ã«éé¢ããèªã¿åãç³»ã ãã®ãã®ãèªåã§æå¹åãã
- ç¬ç«ãžã§ãã«ãããæããªãŒãã® step 2.55 ã«çžä¹ãããã
- æ¡ç¹ã«å€±æããã3段ãã©ãŒã«ããã¯ïŒå°åž³ã«æžããªãããšã§ãç¿æã«èªåãªãã©ã€
ãã®ã·ãªãŒãºã§äœã£ãŠãã4å±€èšæ¶ã»èªå·±å¢æ®ã¹ãã«ã»ã³ã³ããã¹ãåæžã»launchdã»autopilotã»é·æèšæ¶ããããã§ãã£ãšäžæ¬ã«ã€ãªãããŸãããæèµ·ãããšGitHubã§èŠã€ãã£ããã®ãããªãŒãã«èŒã£ãŠããŠãè¯ãã¹ãã«ã¯ãã®æ¥ãã䜿ããŸããåãã¹ãã«ãèªåã§æžãçŽããŠããããã®èªåã«æããŠããããã§ãç¬
ð ãã®èšäºã®å 容ããå®è£ ãŸã§å šéšãŸãšããææèšäºããããŸã æé ã»ã³ãŒãã»ãã³ãã¬ããã®ãŸãŸæž¡ããŠããŸã AIã§ãå¯ãŠãŠãåãä»çµã¿ãããŒããã30æ¥ã§çµãå šæé
ã³ã¡ã³ã
ãã°ã€ã³ ã äŒå¡ç»é² ãããšã³ã¡ã³ãã§ããŸã