/scout — External Link Analysis

SkillDev tools

Analyze external URL to evaluate fit with oh-my-customcode project and auto-create GitHub issue with verdict

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /scout — External Link Analysis skill

What this skill tells your AI

The instructions your AI receives, as published by baekenough/oh-my-customcode in .claude/skills/scout/SKILL.md and read by ahel’s review.

Analyze an external URL (tech blog, tool, library, methodology) to evaluate its fit with the oh-my-customcode project and auto-create a GitHub issue with a structured verdict.

Usage

/scout <url>
/scout https://news.hada.io/topic?id=27673
/scout https://github.com/user/repo

Verdict Taxonomy

VerdictMeaningLabelFollow-up
INTERNALIZEAligns with project philosophy; should become a skill/agent/guidescout:internalize + P1/P2/P3/research or direct implementation
INTEGRATEUseful but best kept as external dependencyscout:integrate + P2/P3Plugin/MCP integration review
SKIPIrrelevant or duplicates existing functionalityscout:skipIssue created then closed

Pre-flight Guards

Pre-flight Execution Checklist (MANDATORY before Phase 1)

Both guards MUST be executed before entering Phase 1. Skipping either guard is a workflow violation.

  • Guard 1: URL Validity check passed (abort if invalid)
  • Guard 2: Duplicate Scout check passed (warn and confirm if duplicate found)

Proceed to Phase 1 only after both checkboxes are satisfied.

Guard 1: URL Validity (GATE)

Before any work, validate the URL:

# Check URL is syntactically valid
echo "$URL" | grep -qE '^https?://'

If invalid: [Pre-flight] GATE: Invalid or unreachable URL. Please check and retry. — abort.

Guard 2: Duplicate Scout (WARN)

Search existing GitHub issues for prior scout reports on the same URL domain:

DOMAIN=$(echo "$URL" | cut -d'/' -f3)
gh issue list --state all --label "scout:internalize,scout:integrate,scout:skip" \
  --json number,title,body --jq ".[] | select(.body | contains(\"$DOMAIN\"))" 2>/dev/null

If found: [Pre-flight] WARN: Similar URL already scouted in issue #N. Proceed anyway? [Y/n]

Why mandatory? Guard 2 생략으로 인해 동일 도메인 중복 scout 이슈가 생성된 사례 발생 (세션 회고 #1281). 중복 triage 낭비를 방지하기 위해 Pre-flight 체크리스트로 승격.

Display Format

Before execution, show the plan:

[Scout] {url}
├── Phase 1: 콘텐츠 수집 및 요약
├── Phase 2: 프로젝트 철학 로드
├── Phase 3: 적합성 분석 (sonnet)
└── Phase 4: 이슈 생성

예상: ~1분 | 비용: ~$0.5-1.5
실행하시겠습니까? [Y/n]

암묵 승인 시 필수: "되면 /scout으로 보고", "실행해줘" 등 묵시적 승인인 경우에도 위 plan 요약을 반드시 1줄 이상 표시한 뒤 진행한다 (R015 intent transparency). plan 표시 없이 바로 Phase 1으로 진입하는 것은 위반.

Workflow

Phase 1: Fetch & Summarize

  1. WebFetch(url) — retrieve page content
  2. Extract core information:
    • Title and purpose
    • Key technology / methodology
    • Approach and principles
  3. If fetch fails — report error, abort

External quantitative-fact source tagging (#1298): WebFetch가 산출한 구체적 정량 주장(benchmark 수치, table 값, metric)은 이슈 본문에 WebFetch-derived (unverified)로 태깅한다 — 검증된 사실로 제시하지 않는다. WebFetch는 small fast model + 15분 URL 캐시를 사용하므로, 동일 URL을 여러 번 fetch해도 독립 교차검증이 아니다. load-bearing 수치는 primary PDF/원문으로 1회 검증하거나 명시적으로 unverified로 표기한다. (R020 Read-Before-Characterize, R023 Verifier Ground-Truth for cross-cutting facts)

Phase 2: Load Project Philosophy

  1. Read(CLAUDE.md) — extract architecture philosophy:
    • Compilation metaphor (source -> build -> artifact)
    • Separation of concerns (R006)
    • Dynamic agent creation ("no expert? create one")
    • Skill/agent/guide/rule structure
  2. Read(README.md) — extract project overview and component inventory
  3. Glob(.claude/skills/*/SKILL.md) — list existing skills for overlap detection

Phase 3: Fit Analysis

MUST: Agent tool 호출 시 반드시 mode: "bypassPermissions" 파라미터를 포함해야 한다 (R010 Universal bypassPermissions). CC Agent tool의 기본값은 acceptEdits이며, 이는 agent frontmatter의 permissionMode를 덮어쓴다. mode 누락 시 Bash/WebFetch 권한 프롬프트가 발생하여 비대화형 실행이 중단된다.

❌ Agent(subagent_type: "general-purpose", prompt: "...")
✓  Agent(subagent_type: "general-purpose", mode: "bypassPermissions", prompt: "...")

Spawn 1 sonnet agent with mode: "bypassPermissions" and the following analysis prompt.

Inputs:

  • Fetched content summary (Phase 1)
  • Project philosophy context (Phase 2)
  • Existing skill list (Phase 2)

Analysis dimensions:

DimensionQuestion
Philosophy alignmentDoes it match the compilation metaphor, separation of concerns, "create experts on demand"?
Technical fitDoes it complement or overlap with existing skills/agents/guides?
Integration effortHow much work to internalize vs. use externally?
Value propositionWhat concrete benefit does it bring to the project?

Agent prompt template:

You are a project fit analyst. Given:

1. External content summary:
{phase1_summary}

2. Project philosophy:
{phase2_philosophy}

3. Existing skills ({skill_count} total):
{skill_list}

Analyze the external content against the project philosophy across 4 dimensions:
- Philosophy alignment
- Technical fit (overlap with existing skills?)
- Integration effort (XS/S/M/L)
- Value proposition

Return a structured verdict:
- verdict: INTERNALIZE | INTEGRATE | SKIP
- priority: P1 | P2 | P3
- rationale: 2-3 sentences
- philosophy_table: criterion/fit/rationale for each dimension
- recommendation: specific integration plan or skip reason
- next_steps: 2-3 actionable items
- IMPORTANT: Write all analysis output in Korean. Technical terms, code references, label names, and skill/agent names stay in English.
- escalation: true/false (INTERNALIZE + M/L effort = true)

Output: Structured verdict with rationale.

Phase 4: Issue Creation

NOTE: Phase 4는 orchestrator가 직접 gh issue create (Bash)로 처리한다. 만약 이슈 생성을 Agent(mgr-gitnerd 등)에 위임할 경우, 해당 Agent tool 호출에도 반드시 mode: "bypassPermissions"를 포함해야 한다 (R010).

  1. Ensure scout labels exist (defensive, idempotent):
gh label create "scout:internalize" --color "0E8A16" --description "Scout: should be internalized" 2>/dev/null || true
gh label create "scout:integrate" --color "1D76DB" --description "Scout: keep as external" 2>/dev/null || true
gh label create "scout:skip" --color "D4C5F9" --description "Scout: skip" 2>/dev/null || true
  1. Create GitHub issue:
gh issue create \
  --title "[scout:{verdict}] {content_title}" \
  --label "scout:{verdict},P{n}" \
  --body "{issue_body}"
  1. If verdict is SKIP: auto-close the issue:
gh issue close {number} -c "Auto-closed: scout verdict is SKIP"

Issue Body Template

## Scout 리포트: {title}

**출처**: {url}
**판정**: {INTERNALIZE / INTEGRATE / SKIP}
**우선순위**: {P1 / P2 / P3}

## 요약
{외부 콘텐츠에 대한 2-3문장 요약}

## 프로젝트 철학 정합성
| 기준 | 적합 | 근거 |
|------|------|------|
| Compilation metaphor | {check/cross} | {설명} |
| Separation of concerns (R006) | {check/cross} | {설명} |
| Dynamic agent creation | {check/cross} | {설명} |
| 기존 스킬 중복 | {check/cross} | {중복 스킬 목록} |

## 권장 사항
{구체적 통합 계획 — 어떤 skill/agent/guide를 생성할지, 또는 건너뛰는 이유}

## 다음 단계
- [ ] {후속 조치 1}
- [ ] {후속 조치 2}

---
`/scout`에 의해 생성됨

Escalation

When verdict is INTERNALIZE and integration effort is M or L:

[Advisory] 심층 분석 권장.
└── 실행 검토: /research {url}

Result Display

[Scout 완료] {title}
├── 판정: {INTERNALIZE / INTEGRATE / SKIP}
├── 우선순위: {P1 / P2 / P3}
├── 이슈: #{number}
└── 에스컬레이션: {/research 권장 | 없음}

Model Selection

PhaseModelRationale
Phase 1 (Fetch)orchestratorSimple WebFetch, no agent needed
Phase 2 (Load)orchestratorSimple Read/Glob, no agent needed
Phase 3 (Analysis)sonnetBalanced reasoning for fit analysis
Phase 4 (Issue)orchestratorgh issue create via Bash

Integration

RuleHow
R009Single agent in Phase 3 — no parallelism needed
R010Orchestrator manages phases 1/2/4; analysis delegated to sonnet agent in Phase 3
R015Display scout plan before execution (Display Format section)

When NOT to Use

ScenarioBetter Alternative
Deep multi-source research/research <url>
Internal project analysis/omcustom:analysis
Known tool evaluationDirect agent conversation
Bulk URL analysis (5+)/research with URL list

Differences from /research

Aspect/scout/research
PurposeQuick fit evaluationDeep multi-dimensional analysis
Teams1 agent10 teams
Cost~$0.5-1.5~$8-15
Duration1-2 min10-20 min
OutputIssue with verdictFull report with ADOPT/ADAPT/AVOID
WhenFirst contact with new linkDeep dive after scout recommends

Signals

GitHub stars
34
Forks
6
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
scout-baekenough
Source
github.com/baekenough/oh-my-customcode