| name | scout |
| description | Analyze external URL to evaluate fit with oh-my-customcodex project and auto-create GitHub issue with verdict |
| scope | core |
| version | 1.0.1 |
| user-invocable | true |
| argument-hint | <url> |
/scout โ External Link Analysis
Analyze an external URL (tech blog, tool, library, methodology) to evaluate its fit with the oh-my-customcodex project and auto-create a GitHub issue with a structured verdict.
Sensitive-Path Delegation
Sensitive-path compatibility note: if this skill delegates work that touches .claude/**, .claude/outputs/**, templates/.claude/**, or read-only measurements of those paths, keep .codex/** edits on the normal Codex path. On Claude Code v2.1.121+ with bypassPermissions, direct writes to .claude/skills/, .claude/agents/, and .claude/commands/ are allowed; on v2.1.126+ that extends to broader protected paths. Only use /tmp/{skill}-{timestamp}.md as a legacy fallback when the target runtime is older or still prompts.
Usage
/scout <url>
/scout https://news.hada.io/topic?id=27673
/scout https://github.com/user/repo
Verdict Taxonomy
| Verdict | Meaning | Label | Follow-up |
|---|
| INTERNALIZE | Aligns with project philosophy; should become a skill/agent/guide | scout:internalize + P1/P2/P3 | /research or direct implementation |
| INTEGRATE | Useful but best kept as external dependency | scout:integrate + P2/P3 | Plugin/MCP integration review |
| SKIP | Irrelevant or duplicates existing functionality | scout:skip | Issue 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.
Proceed to Phase 1 only after both checkboxes are satisfied.
Guard 1: URL Validity (GATE)
Before any work, validate the URL:
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" | sed 's|https\?://||' | cut -d'/' -f1)
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 ์ด์๊ฐ ์์ฑ๋ ์ฌ๋ก ๋ฐ์. ์ค๋ณต triage ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Pre-flight ์ฒดํฌ๋ฆฌ์คํธ๋ก ์น๊ฒฉ.
Display Format
Before execution, show the plan:
[Scout] {url}
โโโ Phase 1: ์ฝํ
์ธ ์์ง ๋ฐ ์์ฝ
โโโ Phase 2: ํ๋ก์ ํธ ์ฒ ํ ๋ก๋
โโโ Phase 3: ์ ํฉ์ฑ ๋ถ์ (frontier/medium)
โโโ Phase 4: ์ด์ ์์ฑ
์์: ~1๋ถ | ๋น์ฉ: ~$0.5-1.5
์คํํ์๊ฒ ์ต๋๊น? [Y/n]
์๋ฌต ์น์ธ ์ ํ์: "๋๋ฉด /scout์ผ๋ก ๋ณด๊ณ ", "์คํํด์ค" ๋ฑ ๋ฌต์์ ์น์ธ์ธ ๊ฒฝ์ฐ์๋ ์ plan ์์ฝ์ ๋ฐ๋์ 1์ค ์ด์ ํ์ํ ๋ค ์งํํ๋ค. plan ํ์ ์์ด ๋ฐ๋ก Phase 1์ผ๋ก ์ง์
ํ์ง ์๋๋ค.
Workflow
Phase 1: Fetch & Summarize
WebFetch(url) โ retrieve page content
- Extract core information:
- Title and purpose
- Key technology / methodology
- Approach and principles
- If fetch fails โ report error, abort
External quantitative-fact source tagging (#1466): WebFetch๊ฐ ์ฐ์ถํ ๊ตฌ์ฒด์ ์ ๋ ์ฃผ์ฅ(benchmark ์์น, table ๊ฐ, metric)์ ์ด์ ๋ณธ๋ฌธ์ WebFetch-derived (unverified)๋ก ํ๊น
ํ๋ค โ ๊ฒ์ฆ๋ ์ฌ์ค๋ก ์ ์ํ์ง ์๋๋ค. WebFetch ์บ์/์์ฝ์ ๋
๋ฆฝ ground-truth๊ฐ ์๋๋ฏ๋ก, load-bearing ์์น๋ primary PDF/์๋ฌธ์ผ๋ก 1ํ ๊ฒ์ฆํ๊ฑฐ๋ ๋ช
์์ ์ผ๋ก unverified๋ก ํ๊ธฐํ๋ค. (R020 Read-Before-Characterize, R023 Verifier Ground-Truth)
Phase 2: Load Project Philosophy
Read(AGENTS.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
Read(README.md) โ extract project overview and component inventory
Glob(.codex/skills/*/SKILL.md) โ list existing skills for overlap detection
Phase 3: Fit Analysis
Spawn 1 frontier/medium agent with the following analysis prompt.
Claude compatibility Agent calls only (R010 โDelegated Permission Ownershipโ): Pass mode: "bypassPermissions" when the active Claude session uses bypass permissions. Native Codex spawn_agent has no mode parameter; use the installed agent_type and active Codex runtime permissions instead.
Inputs:
- Fetched content summary (Phase 1)
- Project philosophy context (Phase 2)
- Existing skill list (Phase 2)
Analysis dimensions:
| Dimension | Question |
|---|
| Philosophy alignment | Does it match the compilation metaphor, separation of concerns, "create experts on demand"? |
| Technical fit | Does it complement or overlap with existing skills/agents/guides? |
| Integration effort | How much work to internalize vs. use externally? |
| Value proposition | What 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 is normally handled by the orchestrator with gh issue create. If issue creation is delegated through a Claude compatibility Agent call, pass mode: "bypassPermissions" only when that Claude session uses bypass permissions. Native Codex spawn_agent never accepts mode.
- 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
- Create GitHub issue:
gh issue create \
--title "[scout:{verdict}] {content_title}" \
--label "scout:{verdict},P{n}" \
--body "{issue_body}"
- 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 ๊ถ์ฅ | ์์}
Capability Routing
| Phase | Lane / Effort | Rationale |
|---|
| Phase 1 (Fetch) | orchestrator | Simple WebFetch, no agent needed |
| Phase 2 (Load) | orchestrator | Simple Read/Glob, no agent needed |
| Phase 3 (Analysis) | frontier/medium | Balanced reasoning for fit analysis |
| Phase 4 (Issue) | orchestrator | gh issue create via Bash |
Integration
| Rule | How |
|---|
| R009 | Single agent in Phase 3 โ no parallelism needed |
| R010 | Orchestrator manages phases 1/2/4; analysis delegated to frontier/medium agent in Phase 3 |
| R015 | Display scout plan before execution (Display Format section) |
When NOT to Use
| Scenario | Better Alternative |
|---|
| Deep multi-source research | /research <url> |
| Internal project analysis | /omcustomcodex:analysis |
| Known tool evaluation | Direct agent conversation |
| Bulk URL analysis (5+) | /research with URL list |
Differences from /research
| Aspect | /scout | /research |
|---|
| Purpose | Quick fit evaluation | Deep multi-dimensional analysis |
| Teams | 1 agent | 10 teams |
| Cost | Runtime-dependent, one analysis role | Runtime-dependent, bounded team workflow |
| Duration | 1-2 min | 10-20 min |
| Output | Issue with verdict | Full report with ADOPT/ADAPT/AVOID |
| When | First contact with new link | Deep dive after scout recommends |