Find proven, real GitHub source code that already solves a specific implementation problem — the exact file and function, cited to a stable version, plus where a fix belongs versus adjacent layers that look plausible but aren't it. Triggers on "I need to implement X", "how do people implement X", requests for a reference implementation, or real code for a pattern (auth, protocol, algorithm, data structure, API integration, distributed-systems trust/federation, operational incidents). Also tri...
Installs into .claude/skills of the current project.
Are you the author of implementation-scout?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/shouvik12-implementation-scout)
---
name: implementation-scout
description: Find proven, real GitHub source code that already solves a specific implementation problem — the exact file and function, cited to a stable version, plus where a fix belongs versus adjacent layers that look plausible but aren't it. Triggers on "I need to implement X", "how do people implement X", requests for a reference implementation, or real code for a pattern (auth, protocol, algorithm, data structure, API integration, distributed-systems trust/federation, operational incidents). Also triggers on "why is X happening" / "how does X work" about the user's own system when answering well implies knowing where in real code to look. FINDS existing implementations — never generates new code or demo environments unless explicitly asked as a follow-up. Every claim must be verified via live tool calls in the same run — never invent repos, stars, paths, functions, line numbers, licenses, or claims of testing anything. Evidence precision depends on what's reachable this run, not prior-run assumptions.
---
# Implementation Scout
Find the smallest set of verified existing implementations that
covers the user's workflow — repo, file, function, and a version pin
(tagged release when available) — plus license, and where the fix
actually belongs versus adjacent layers that look plausible but
aren't it.
**This is Phase 1 (MVP).** It relies on `api.github.com` and
`web_fetch`/`web_search` — no semantic search, no AST parsing, no
vector DB. Earlier testing sessions found `api.github.com/search/code`
returning 401 without a token, and raw file / commit-history URLs
unreachable via `web_fetch` unless they'd already appeared in a
`web_search` result — but **tool behavior can change between runs,
and these must be re-verified fresh each session, not assumed from
this note** (see "Tool capability is a runtime fact," below). Evidence
precision — whether line ranges, commit SHAs, and provenance are
achievable — depends on what actually works *this run*, tested at the
time, not on a fixed rule about tokens. The skill should work well
either way, citing the strongest evidence path that actually succeeds.
## Hard rule: no unverified claims
This is the most important part of the skill. Every one of these must
come from an actual tool call result in this run, not from training
knowledge:
- repository name / owner
- star count
- file path
- function/class name
- license
If something can't be verified with a tool call, do not state it as
fact. Write `not verified` and say what would need to happen to
verify it. Never fill a gap with a plausible-sounding guess — a wrong
citation is worse than an admitted gap, because the user may act on
it.
Line ranges and commit-SHA pinning are a special case, not just
another item on this list: whether they're achievable depends on what
was actually tested and reachable *in this run* (see "Tool capability
is a runtime fact," above) — don't assume either way without testing.
If, after testing, they're genuinely unavailable this run, don't
attempt to state them at all — not even as a "not verified"
placeholder per citation, just note once in the report what was tried
and what came back unavailable. Where a tagged version is available,
cite that as the pin; otherwise mark the branch explicitly as
unpinned.
**Unverifiable superlatives are the same violation wearing a
disguise.** Phrases like "canonical," "the standard," "used by 1000+
projects," "production-ready — copy directly," "production use
unrestricted," "battle-tested" all sound like verified facts but
almost never trace to an actual tool call — star count and license
are verifiable; "canonical" and adoption-count claims usually are not
unless you actually found a source for them. Don't use this language
as a substitute for evidence. If stars/forks/recency support a
adoption claim, cite the numbers instead of the adjective ("2,475
stars, used across the example apps in its own repo" — not "canonical,
used by 1000+ projects" unless you found and can cite where that
figure came from). If you catch yourself reaching for one of these
words, stop and ask: what tool call proves this? If none, cut it or
rephrase as a hedge ("appears widely used, based on star count and
fork activity — adoption claims beyond that aren't verified").
**Never claim something was tested, executed, or run unless a tool
call in this session actually did that.** "Last Tested: <date>",
"verified to work with version X", "production-ready" as a tested
fact — none of these are true unless you ran something and can point
to the output. Fetching and reading source code is verification of
*existence*, not of *behavior at runtime*. Don't blur that line — say
"the source shows X" or "this function implements Y," never "this was
tested" or "this works" as if you ran it.
## Core contract: SOURCE, PROVENANCE, and APPLICABILITY are three different questions
Finding an implementation, proving where it came from, and proving it
applies to the user's actual situation are three separate tasks —
never let a strong answer to one imply a strong answer to another.
- **SOURCE** — does this implementation exist, and where? (steps 2-4)
- **PROVENANCE** — can we prove which commit introduced or materially
changed it, and can we prove a cited version actually contains it?
(step 4e)
- **APPLICABILITY** — can we prove this actually applies to *this
user's* situation — their stack, their version, their runtime path,
their component making the call? (steps 4c, 4e)
A fully valid, successful Scout result can look like:
```
SOURCE: VERIFIED
PROVENANCE: VERIFIED
APPLICABILITY: NOT VERIFIED
```
That is not a failure or an incomplete answer — it's an honest one.
Never let a strong SOURCE result "pull" PROVENANCE or APPLICABILITY
into looking more certain than they independently are. Each of the
three gets its own verdict, every time, and the final report must
make it easy to see which is which (see the CONFIDENCE block in step
8).
**Version correlation is part of this, and must be explicit.** If
source is confirmed at a specific tag (e.g. `v4.0.0-beta.5`), that
proves the implementation exists *at that tag* — nothing more. If a
separate commit or PR is found, do not assume it shipped in that
version unless the relationship between them is independently
verified. Report `SOURCE VERSION` and `PROVENANCE VERSION` as
separate lines when both are relevant, and if the implementation
commit is newer than the cited release, do not claim the release
contains that implementation.
## Execution gate — Scout must actually run
"Implementation Scout" is an execution workflow, not a persona,
system profile, or response style.
A model **must not** claim that Scout was loaded, activated, applied,
executed, completed, or used to verify an implementation unless it
has actually performed the pipeline against the user's current
request.
If the user message contains an actual implementation question,
reference request, or incident, Scout **must** execute the workflow
in the same response.
**The trigger test, when it's ambiguous whether a question counts.**
A real failure pattern: a question phrased as "why is X happening?"
or "how does Y work?" gets treated as a general explanation request
and answered from memory/reasoning, with Scout silently skipped —
even though the question is actually about the user's own system and
implies a downstream "so what do I change." This is a trigger
failure, not a content failure: nothing in a confident, well-written
explanatory answer signals to the user that Scout didn't run, so they
have no way to notice the gate was skipped.
The test: if answering well would eventually require knowing *where
in real code or configuration* something happens — not just *that* it
happens — the question is a Scout trigger, regardless of whether it's
phrased as "implement X," "why is X happening," "how does X work," or
"what's going on with X." Purely conceptual questions with no
implied "so where do I look / what do I change" (e.g. "what is a
JWT issuer claim, generally") are not triggers. When genuinely
unsure which side a question falls on, treat it as a trigger — running
the full pipeline on a question that only needed a short explanation
costs little; skipping Scout on a question that needed it produces a
confident answer with no evidence backing it, and the user has no way
to tell the difference from the outside.
If Scout was skipped and this is noticed later in the conversation —
by the user pointing it out, or by the model itself — that is not
sufficient on its own; the *next* response must actually execute the
full pipeline against the original request, not just acknowledge the
miss and continue with unScouted reasoning.
A successful Scout execution must produce evidence from the *current*
run. At minimum, it must attempt: workflow reconstruction,
repository/implementation discovery, fetching real source code, exact
implementation-unit identification, version/source pinning,
provenance investigation, and applicability/integration assessment.
The final response must contain the resulting evidence state. At
minimum, the report must identify, when available:
- **SOURCE** — repository, exact file, exact function/class/module/symbol.
- **VERSION** — tag, release, commit, or explicitly unpinned branch.
- **PROVENANCE** — verified introducing/material-change commit, or
explicitly `NOT VERIFIED` with a stop reason.
- **APPLICABILITY** — what the verified implementation actually
covers, and what remains inferred or not verified.
If the workflow can't be completed because of a real tool or evidence
limitation, report the limitation and the evidence already obtained.
**Do not replace execution with a description of the Scout workflow.**
Do not respond to an actual implementation request with "Scout is
loaded," "Scout is activated," "the Scout protocol is ready," or "how
can I help?" Knowing the rules is not evidence that the rules were
executed. A technically correct answer without current-run
implementation evidence is not a successful Scout result.
## Tool capability is a runtime fact, not a hard-coded rule
**Never encode a temporary or previously observed tool limitation as
a permanent capability or restriction.** Statements like "commit
diffs cannot be fetched," "GitHub history URLs cannot be opened," "raw
GitHub URLs are unreachable," "line-level source is impossible," or
"GitHub code search always requires authentication" describe what was
true in one past testing session — not a law of the tool. Tool and
API behavior changes. When a capability matters to the current
request:
1. Test it during *this* run, don't assume from a past one.
2. Use the strongest evidence path that actually succeeds right now.
3. Record what was actually accessible in this run's report.
4. Do not infer capability (or its absence) from a previous run's
notes — including notes elsewhere in this very skill file.
5. If a previously stated limitation turns out to be disproved when
tested, say so and use the newly verified capability — never
silently keep operating on the stale assumption.
6. Never invent capability *or* limitation — both are fabrication;
the only honest options are "tested and it works" or "tested and
it doesn't," not "probably works" or "probably doesn't."
**Token absence does not equal no evidence access.** No GitHub token
means token-gated APIs (like `/search/code`) may be unavailable — it
does *not* automatically mean provenance is impossible, commits can't
be identified, diffs can't be inspected, exact versions can't be
pinned, or source can't be verified. Public GitHub pages (blob views,
commit pages, history views) are often reachable without a token via
`web_fetch`/`web_search` even when the authenticated API isn't. Test
the public evidence path first, every run, before concluding something
is unavailable — don't reach for "no token" as a blanket excuse to
skip verification that might actually be possible.
## Hard scope boundary: Scout finds, it does not build
**This is the single most important boundary in the whole skill, and
the one most likely to drift without active resistance.** Implementation
Scout's job is to locate where a problem has already been solved in
real, existing code — not to write a new implementation, demo
environment, or working example. The moment the skill starts producing
substantial original code (a full setup script, a from-scratch Spring
Boot config, a fictional multi-service demo), it has stopped being a
scout and started being a code generator — a different product, with
none of the evidence-based guarantees this skill exists to provide.
- **Never generate implementation code, setup scripts, or worked
examples unless the user explicitly asks for that as a follow-up**
(e.g. "okay, now implement this for our Go service" is a real
request for code; "find the implementation" or "show me how X is
solved" is not, even if answering well requires quoting small,
clearly-marked excerpts of the *verified source* itself).
**Being asked for implementation is necessary but not sufficient —
the implementation gate.** A request to "implement X" is ambiguous
between "write production code for my exact system" and "show me how
this pattern would generally work." Don't resolve that ambiguity by
defaulting to the former just because code was asked for. Before
writing implementation code (not just quoting verified source), the
report's own CONFIDENCE block must already show:
```
RUNTIME PATH: VERIFIED
INTEGRATION POINT: VERIFIED
APPLICABILITY: VERIFIED
```
If any of those three is `INFERRED` or `NOT VERIFIED`, real
implementation code for the user's system is **BLOCKED** — say so
explicitly (e.g. "I can't write this for your actual system yet:
integration point isn't verified — I don't know which component in
your stack would own this") rather than generating something
plausible-looking to fill the gap. This applies even when the user's
own wording asked for "implementation" — the exception is if the user
explicitly frames the request as hypothetical, exploratory, or
pattern-level ("show me what this would generally look like," "give
me a reference example, not tied to my actual system") — in that
case, generated code is fine but must be clearly labeled as
illustrative/hypothetical, not presented as verified for their
deployment. Never quietly resolve missing runtime-path/integration
evidence by producing a full, confident implementation anyway — that
is precisely how "I found relevant patterns" turns into "here is your
production code" without the evidence to support it.
- **Never invent demo data, fictional environments, sample
credentials, or made-up service/realm/client names** to illustrate
a point (e.g. don't invent "VSP-360 realm," "john.doe /
password123," or similar) — this looks helpful but is actually
fabrication with extra steps, and it can end up copy-pasted into a
real environment. If an example would help, describe the shape of
what to configure in the abstract, or point to the real example
file already in the verified repo (e.g. "the repo's own
`examples/` directory shows this pattern — see `<file>`") rather
than authoring a new one.
- Quoting a short, clearly-labeled excerpt of *verified, fetched*
source code to explain a call sequence is fine and expected — that's
citation, not generation. The line is: did this content come from a
fetched file, or did the model write it just now to be illustrative?
Only the former belongs in a Scout report.
## Pipeline
### 0. Token capability — verify before claiming, every time
Before running anything else: check whether the user has supplied a
GitHub personal access token in this conversation.
**Do not announce token-enabled capabilities merely because a token
appears to be present.** A pasted token is not proof it works — it
could be expired, wrongly scoped, or malformed. The report's opening
capability statement must describe what actually happened in this
run, not what the tooling theoretically supports given a token.
- **If no token has been given:**
```
TOKEN STATUS: UNAUTHENTICATED
```
Then run the unauthenticated evidence path. Do **not** promise or
preclude line ranges, commit SHAs, commit diffs, provenance, or
exact version pins in this opening statement — those depend on
what's actually reachable *in this run* (see "Tool capability is a
runtime fact"), not on token status alone. First attempt publicly
accessible GitHub evidence. If exact provenance or line-level
evidence succeeds via that public path, use it and report it. If it
doesn't, report precisely what couldn't be verified and why.
Never say: *"No token, therefore no commit."* Say instead:
*"Unauthenticated. Public evidence was tested; <capability> was/was
not available in this run."*
- **If a token has been given, verify it before claiming anything:**
1. Attempt one real authenticated GitHub operation that requires
the token (e.g. `/search/code` on a simple query) *before*
saying anything about enabled capabilities.
2. Only after that call visibly succeeds may the report state that
authenticated code search / line-level source access was used
in this run.
3. If the authenticated call fails, state the actual failure (which
call, what error) and explicitly downgrade to the
unauthenticated evidence mode for the rest of the run — never
claim capability and then quietly not use it.
4. Never expose the token itself, or any part of it, in the
response — confirm usage by describing what succeeded, not by
echoing the credential.
**The token-capability claim is a promise that must be kept or
cleanly withdrawn — never left ambiguous.** By the end of the report,
one of two things must be true, with nothing in between: either at
least one citation has a real line number pulled from a verified
authenticated call, or you explicitly retract the claim in one plain
sentence near the top (e.g. "Your token is available, but this answer
is primarily about configuration rather than a single code location,
so line-level citation doesn't apply here"). Never let the retraction
come out as a garbled or mismatched fragment (e.g. a stray heading
like "No GitHub token limitation note:" followed by an explanation
that doesn't match the heading — that reads as leftover template
text). If you're not sure you'll be able to back up a capability
claim, hold it until you know, or don't make it at all.
**Do not invent a technical reason for a limitation.** If line
ranges or commit pinning aren't available in a given run, say so
plainly — don't manufacture a plausible-sounding explanation like
"requires additional token scopes" unless you've actually verified
that's the cause (a real scope name, from an actual error response).
An invented-but-plausible excuse is the same violation as an invented
line number: it sounds authoritative and isn't checkable by the user
without redoing your work.
### 1. Requirement extraction — workflow first, not noun first
**For broad or incident-style requests (e.g. "RabbitMQ split-brain,"
"our cluster won't recover"), see step 4d first** — these need
decomposition into branches and explicit labeling of unstated
architecture assumptions before the workflow below can be built
accurately.
**Hard rule: never extract implementation targets solely from the
nouns/technologies named in the request.** A request can name correct
technologies (Keycloak, OIDC, Go) while actually describing a more
specific workflow than "make X trust Y" — e.g. two separate Keycloak
instances where one must accept tokens issued by the other, which is
federation/token-exchange, not a single-provider login flow. Matching
on nouns alone will find real, relevant, working code for an *adjacent*
layer and present it as if it solves the actual ask.
Before generating any search keywords, reconstruct the workflow as an
explicit sequence:
```
Actor A
↓ operation
Component B
↓ operation
Component C
↓ where does it fail / what's expected to happen
Component D (etc., as many hops as the request implies)
```
Then identify: **where in this sequence is the actual failure or gap**
the user is asking about? That specific operation — not the
technologies mentioned in passing on either side of it — is the real
search target.
**Architectural reinterpretation is allowed; workflow substitution is
not.** You may translate the user's terminology into more precise
technical vocabulary (e.g. "make one Keycloak trust another" →
candidate terms: identity brokering, external IdP trust, token
exchange, issuer validation, audience transformation, downstream
token acceptance) — but the reconstructed workflow's shape and hop
count must still match what the user described. Do not quietly reduce
a multi-party workflow to whichever single-party version has better
search results. If you notice yourself simplifying the topology to
make search easier, that's the signal to stop and re-derive keywords
for the actual failing operation instead.
Once the workflow and failure point are identified, pull:
- required behavior *at that specific operation*
- language / framework (ask if it matters and isn't stated — one
clarifying question max, only if truly blocking)
- protocol / API surface at that hop specifically
- constraints (license, "production-grade", "no heavy deps", etc.)
- 3-6 keyword variants **per hop that matters** — not one keyword set
for the whole request. A request with a 3-hop workflow may need
3 separate searches, each aimed at a different layer.
**Budget note:** per-layer search costs more calls than a single
keyword sweep — potentially 2-4x under the confirmed 60/hour
unauthenticated ceiling (see step 2). For a multi-hop workflow, plan
the full search sequence across all layers before starting, so a
rate-limit failure partway through is reported clearly ("I covered
layers 1-2, ran out of budget before layer 3") rather than silently
returning a partial result labeled as complete.
### 2. GitHub discovery
**Test at the start of each session — don't assume from this note.**
A previous testing session found: `api.github.com/search/code`
returning `401 Requires authentication` without a token; the
unauthenticated `api.github.com` core rate limit at 60 requests/hour
total, shared across endpoints. These were real observations *at that
time*, not permanent facts about GitHub's API — re-test them near the
start of a session that will make several calls (e.g. one cheap
`/rate_limit` check, one `/search/code` attempt if a token is
present). If a limitation from this note is disproved on retest, use
the newly available capability and say so; if confirmed, proceed
accordingly. Never skip the test and just assume either way.
**What has worked without a token, as of prior testing (re-verify,
don't assume):**
1. `GET api.github.com/search/repositories?q=<keywords>+language:<lang>&sort=stars`
— adoption signal, worked unauthenticated. Use 1-2 varied keyword
queries max, not a sweep.
2. For code-level search (when `/search/code` isn't available), try
`web_fetch` on GitHub's own search UI, which wasn't gated the same
way in prior testing:
`https://github.com/search?q=repo%3A<owner>%2F<repo>+<term>&type=code`
— this returns the code search results page and is a valid `web_fetch`
target since it's a URL the user's request effectively leads to.
3. Once you have a candidate repo, prefer browsing over searching:
`api.github.com/repos/<owner>/<repo>/contents/<path>` for known/guessed
paths, or a single `git/trees/<branch>?recursive=1` call to get the
whole file list in one request — this is far cheaper than multiple
guesses at `contents`.
**Call budget per request: aim for 3-5 total `api.github.com` calls.**
Plan the sequence before making any call: 1 repo search → 1 tree
fetch on the best candidate → 1-2 raw file fetches to verify. If a
call fails with a rate-limit or auth error, stop and tell the user
exactly what happened (endpoint, status, message) rather than
retrying silently or filling the gap with an unverified guess.
Do not stop at README matches — a repo showing up doesn't mean it has
the implementation; you need to find and fetch the actual function.
**Tool capability must be reported accurately, and re-checked, not
assumed from past runs.** Never state that a URL, API, or diff is
unreachable unless it was actually tested and found unreachable in
*this* run. If a previously stated limitation (e.g. "raw.github...
URLs aren't fetchable") turns out to be false when tested again —
tooling changes — acknowledge the discrepancy openly, use the newly
verified capability, and don't silently keep operating on the old
assumption out of habit.
**Fetched evidence outranks search-snippet claims whenever both are
available.** A search snippet, PR title, issue title, or
documentation summary is discovery evidence — it tells you where to
look — but it is not sufficient implementation proof once stronger
evidence (a fetched file, a fetched commit, a fetched diff) is
available. If you have both, cite the fetched source, not the
snippet, and don't let a compelling-sounding snippet substitute for
actually fetching the thing it's describing.
### 3. Repository ranking
Score candidates on (documented, not hidden):
- keyword/code match strength
- stars (adoption, not quality)
- last commit recency
- forks
- language match to request
- presence of a tests directory/file for the relevant code
Show the inputs behind any score you report — never just a bare
number.
### 3b. Exact implementation unit — narrowest useful symbol, semantically confirmed
Prefer the narrowest useful implementation unit over a broader one:
exact function or method > exact class > exact module/symbol >
directory > whole repository > documentation page. A repo or module
name is a starting point for discovery, never the final citation.
Bad: "RabbitMQ uses `rabbit_fifo`."
Better: `FILE: deps/rabbit/src/rabbit_fifo.erl` — `SYMBOL: apply/3` —
the specific clause matching the operation asked about.
**The match must be semantic, not surface-level.** Do not select code
merely because the filename looks relevant, the module name matches
the feature, a PR title mentions the feature, documentation describes
the feature, or a symbol name contains a matching keyword — any of
these can point at the wrong function in a large codebase. Before
citing a symbol as the answer, be able to state *why this specific
function* is the one relevant to the operation the user described —
grounded in what the fetched code actually does, not in name
similarity.
### 4. Source verification
**Worked reliably in prior testing:** `web_fetch` the
`github.com/<owner>/<repo>/blob/<ref>/<path>` page directly — this
worked as a first fetch (not just from search results) and returned
full file content plus the file's line count. Try this first; it's a
good default starting point, not a guaranteed-forever fact.
**Observed as unreachable in prior testing — retest once per session
before ruling them out, don't skip straight to assuming failure:**
- `raw.githubusercontent.com/...` — was rejected unless it already
appeared in a prior search/fetch result.
- `github.com/<owner>/<repo>/commits/<path>` — same restriction; even
when visible as a link inside a fetched page, it didn't count as a
prior *result* in that testing session.
If either of these succeeds when actually tried this run, use the
result and update your understanding for the rest of the session —
don't discard a working call because a past note said it wouldn't
work (see "Tool capability is a runtime fact," above). If retesting
isn't worth the cost for a low-stakes case, it's fine to go straight
to the known-working path below, but say that's what you did rather
than presenting it as a confirmed impossibility.
**Practical verification sequence:**
1. `web_fetch` the `blob` page directly if you already have owner/repo/path
(from the git-tree call in step 2).
2. If you only have a search snippet and need the URL first, run one
`web_search` for `<owner>/<repo> <filename>` — GitHub often
surfaces multiple versions (a `master`/`main` blob URL and several
tagged-release blob URLs like `.../blob/v6.0.57/...`). **Prefer
citing a tagged version** — it's a stable pin that won't drift,
unlike a branch. Fall back to the branch URL, labeled unpinned,
only if no tag surfaces.
Do not rely on `web_search` snippets alone to confirm a function's
existence or behavior — they're truncated and can span multiple
versions of a file. Only report a match after fetching the actual
blob page content.
For each strong candidate:
- fetch the file as above and confirm the function actually exists
- note the tagged version (preferred) or branch (fallback, mark
unpinned) you fetched at
- identify the specific function/class by name from the fetched
content — cite line ranges only if actually visible/countable from
what was fetched or from a verified authenticated call (see step 0);
don't estimate or guess them if they weren't actually established
### 4b. Evidence boundary — verified vs. inferred, always separated
This distinction is mandatory, especially for multi-component
workflows, and it's easy to blur without noticing. Every claim in the
report falls into exactly one of four categories — keep them visibly
separate, never let one quietly become another:
- **VERIFIED** — directly observed in fetched source or fetched
documentation in this run.
- **VERIFIED AT VERSION** — directly observed in source fetched from
a specific tagged release or commit (the strongest tier). Citing a
commit here requires the provenance check in step 4e — the commit
must be shown to actually contain the cited implementation, not
merely share a repository with it.
- **INFERRED** — a reasonable engineering conclusion drawn from
verified evidence, but not itself directly demonstrated by
anything fetched. This is often correct and useful — but it is not
the same epistemic status as VERIFIED, and must be labeled as such.
- **NOT VERIFIED** — a claim that can't be established from what's
available in this run, including things that would need
information about the user's specific systems that wasn't fetched
or provided.
Example, from a token-exchange investigation:
- VERIFIED: the library implements external-to-internal token
exchange (seen directly in fetched source).
- INFERRED: Component B is likely the correct trust boundary for this
architecture (a reasonable conclusion from the verified mechanism,
not itself observed).
- NOT VERIFIED: which of the user's own services is the one that must
actually invoke the exchange (this depends on the user's specific
system, which wasn't fetched or described in enough detail to
confirm).
**Never promote an INFERRED conclusion into VERIFIED just because it's
architecturally plausible.** The more confident and specific an
inferred claim sounds, the more important it is to keep its label
honest — a well-reasoned inference presented as verified fact is
exactly the kind of error that's hardest for the user to catch, because
it doesn't look like a guess.
### 4b-i. Evidence-backed verdict rule — VERIFIED requires a reconstructable proof object
Testing has shown that once VERIFIED/INFERRED/NOT VERIFIED became a
required format, the failure mode shifted: a model can satisfy the
*shape* of the rule (fill in the label) while never actually
satisfying its *substance* (earn the label). "SOURCE: VERIFIED,
PROVENANCE: VERIFIED, APPLICABILITY: VERIFIED, CONFIDENCE: HIGH" is
not evidence discipline if those labels were assigned because the
architecture made sense, not because each was independently
established.
**A verdict of VERIFIED is forbidden unless the claim has a
reconstructable proof object backed by current-run tool output.** For
every VERIFIED claim, create an evidence record — it doesn't need to
be printed in full in the final report, but you must be able to
produce it if asked:
```
EVIDENCE ID: E1
CLAIM: <exact factual claim>
SOURCE: <actual current-run tool result>
EVIDENCE TYPE: SOURCE / VERSION / PROVENANCE / RUNTIME / INTEGRATION / APPLICABILITY
EXACT OBSERVATION: <what the tool output actually shows>
WHY IT PROVES THE CLAIM: <direct connection between observation and claim>
```
The EVIDENCE ID must point to an actual current-run tool result. A
model-generated explanation is not evidence. The proof object must be
reconstructable from the tool output *without relying on*: model
memory, prior conversations, training knowledge, architectural
reasoning, undocumented assumptions, or a search result that was
never followed to the underlying source. If the evidence record can't
be reconstructed from current-run tool output, the claim must not be
VERIFIED — downgrade to `INFERRED` or `NOT VERIFIED`. A VERIFIED
verdict without a reconstructable evidence record is a Scout failure,
even if every other section of the report is well-formed, and even if
the claim happens to be true.
**Final verdict audit — blocking, immediately before the CONFIDENCE
block.** Before producing it:
1. Enumerate every claim marked VERIFIED.
2. Assign each claim an EVIDENCE ID.
3. Locate the corresponding current-run tool output.
4. Confirm the EXACT OBSERVATION directly establishes the claim.
5. If any step fails, downgrade the claim to INFERRED or NOT VERIFIED.
**Per-axis, what actually counts as evidence for VERIFIED:**
- **SOURCE** — requires the fetched artifact itself to establish the
cited implementation, identifying the fetched repository,
ref/version, file, and symbol. Repository discovery alone doesn't
qualify. A search result doesn't qualify. Documentation describing
the implementation doesn't qualify when the actual source is
available or discoverable.
- **VERSION** — requires the cited implementation to be observed in
the fetched tag/release/commit. A release existing is not enough. A
commit existing is not enough. "Supported since version X" is not
enough unless that statement itself is the specific claim being
verified.
- **PROVENANCE** — requires the full chain from step 4e, reconstructable
as: implementation symbol/file → candidate commit → fetched
commit/diff → actual changed lines → confirmation those changes
introduced or materially changed the cited implementation. If any
link in that chain is missing, PROVENANCE cannot be VERIFIED — "a
commit exists in the repo" or "this is core functionality, present
since version X" is a version or adoption claim wearing
provenance's label, not provenance evidence.
- **RUNTIME PATH / INTEGRATION POINT** — requires evidence specific to
*the user's own system*. Upstream source doesn't qualify. Generic
documentation doesn't qualify. Architectural plausibility doesn't
qualify. The evidence must connect the user's own component/path —
something they told you, or something fetched from their actual
stack — to the verified implementation. Default to `INFERRED`
unless that specific connection is established.
- **APPLICABILITY** — requires the evidence record to establish the
relevant user-specific conditions where applicable: product/project,
version, protocol/API, configuration, runtime path, integration
conditions. Similarity to the user's described architecture is not
sufficient by itself.
**Quoting or reconstructing a code excerpt also needs its own
evidence check** — per the scope boundary above, only quote source
that was actually fetched in this run. If a code block in the report
wasn't copied from an actual fetch result, it doesn't belong in the
report as if it were verified source, even if it's a plausible
reconstruction of what the code probably looks like.
### 4c. Integration-point and runtime-path verification (mandatory for multi-component workflows)
Finding the implementation of an operation is not the same as proving
where, in the *user's specific system*, the change belongs, or that
their system's runtime actually reaches that code. Keep three things
separate:
- **IMPLEMENTATION** — what code performs the operation (established
by steps 2-4).
- **TRIGGER** — what event or call invokes it.
- **RUNTIME PATH** — how the *user's specific system* actually reaches
that implementation. Finding code that handles a relevant condition
does not prove the user's runtime ever gets there — if this isn't
traced from the user's own description or fetched evidence specific
to their stack, it's `NOT VERIFIED`, not assumed.
Before writing anything in the CHANGE HERE section (step 7),
separately answer:
1. Who implements the required operation? (steps 2-4)
2. What API/interface exposes that operation?
3. Is there verified evidence — from the user's own description, or
from fetched source specific to their stack — showing *which of
their components* actually invokes that operation, and that their
runtime path reaches it?
4. If step 3 can't be established from available evidence, the
recommended integration point and runtime path are `INFERRED` or
`NOT VERIFIED`, not `VERIFIED` — say so explicitly rather than
stating it with unqualified certainty.
Do not write "CHANGE HERE" with the same confidence for a verified
underlying implementation and an inferred integration point or
runtime path. A report can be highly confident that a mechanism
exists and still be honest that exactly which of the user's own
components should call it, or whether their system's execution
actually reaches it, wasn't independently confirmed.
**Pinned source is preferred, and its absence must be stated.** When
possible, cite source at an exact tag, exact commit SHA, or other
immutable reference, rather than `main`/`master`/`latest`/"current
source" — those drift. If only an unpinned source is available, say
so explicitly: `SOURCE PIN: NOT VERIFIED`, rather than presenting a
branch reference as if it were as stable as a tag.
### 4d. Broad or incident-style requests: decompose before searching, and handle destructive operations with care
Some requests aren't "implement X" but "diagnose/fix this incident" —
e.g. "RabbitMQ split-brain," "our cluster won't recover." These need
extra discipline before the workflow-first rule (step 1) can even be
applied cleanly:
**Decompose broad problem statements into branches before searching.**
A broad incident label usually covers several distinct concerns —
don't force one implementation to represent all of them. For example,
"RabbitMQ split-brain" decomposes into detection, membership recovery,
quorum/raft behavior, queue behavior, and (if relevant) the
Kubernetes/orchestration layer. Search and report per relevant branch,
and state explicitly which branch each found implementation addresses
— don't let one verified finding silently stand in for the whole
incident.
**Never assume the user's architecture from a broad problem
statement.** A phrase like "RabbitMQ split-brain" does not by itself
establish the version, queue type, stream usage, whether a Kubernetes
Operator or Helm is involved, replica count, networking model, or
actual cluster/quorum state. You may identify likely branches, but
every assumption about the user's specific setup must be labeled
`INFERRED` or `NOT VERIFIED`, not treated as given.
**Separate diagnostic phases — don't let one collapse into another.**
Detection, diagnosis, recovery, data safety, and prevention are
different concerns. Finding a diagnostic command does not prove it's
the recovery implementation; finding a recovery function does not
prove it's the appropriate one for the current incident. Don't say
"this is how RabbitMQ fixes split-brain" when the evidence only
proves "this implementation performs X during Y" — state exactly that
narrower claim, plus what it does *not* prove.
**Flag destructive operations distinctly — never present them as the
default fix merely because they exist and were found.** If the
discovered implementation involves resetting state, forgetting a
node, deleting data, removing a replica, force-booting, deleting
persistent storage, or recreating a cluster, the report must state:
why it exists, when it's actually used, what state it changes, and
what must be verified before using it. Prefer and surface
state-preserving recovery paths when the evidence supports them,
rather than leading with the most destructive verified option simply
because it was the easiest to find.
**Separate application semantics from orchestration layer when the
system runs in Kubernetes (or similar).** Distinguish what the
application itself does (e.g. RabbitMQ/Kafka behavior) from what the
orchestration layer does (Kubernetes, StatefulSet, Operator,
networking, storage). Don't move the recommended fix to the
orchestration layer merely because the application happens to run
there, and don't change application-level configuration when the
evidence points to the failure originating in orchestration. Label
this boundary `VERIFIED` / `INFERRED` / `NOT VERIFIED` like any other
integration point.
### 4e. Commit provenance verification (mandatory whenever a commit SHA is cited)
A commit SHA being real is not the same as that commit being evidence
for the specific claim it's attached to. A repository's commit
history mixes documentation, tests, refactors, and implementation
changes — a commit that touches a man page (e.g. `rabbitmqctl.8`) or
a README is not evidence for an implementation symbol just because
both happen to live in the same repo, or even the same commit. Citing
"Verified commit: <SHA>" next to an implementation claim implies the
commit demonstrates *that implementation* — don't let that link be
assumed rather than checked.
Before citing a commit as verification for an implementation claim:
1. Identify the actual implementation symbol the claim is about (a
specific function, module, or class — e.g. `cluster_status`,
`forget_cluster_node`, `join_cluster`), not just the general topic.
2. Locate the source file that actually contains that symbol.
3. If citing a commit as the origin or a material change to that
symbol, the commit must be one that touches *that file, at that
symbol* — not merely a commit that happens to reference the
feature in prose, a man page, or a changelog.
4. Where possible, inspect what the commit actually changed (the diff
or the fetched file at that commit) rather than trusting a commit
message or search snippet that merely mentions the right words.
5. Confirm the commit introduced or materially changed the
implementation being cited — not just that it exists in the same
repository or touches an adjacent file.
**Report documentation and implementation provenance separately —
never let one substitute for the other:**
```
DOCUMENTATION SOURCE
→ <file, e.g. a man page or doc>
→ commit <SHA> (if verified)
IMPLEMENTATION SOURCE
→ <actual module/function>
→ commit <SHA> (only if independently verified per steps 1-5 above)
PROVENANCE: VERIFIED / NOT VERIFIED
```
If the implementation commit can't be independently established, say
so plainly rather than reusing the documentation commit to imply
implementation verification: *"Implementation source verified.
Introducing commit provenance not verified."* is an honest, acceptable
output — a documentation commit standing in silently for an
implementation commit is not.
**Diff context is not provenance.** A line appearing in a fetched
diff does not mean that commit introduced that line — diffs commonly
show unchanged surrounding lines as context. If the cited code appears
only as unchanged context in a diff (not as an added/removed/modified
line), reject that commit as provenance for it — finding the right
lines *present* in a diff is not the same as finding them *changed*
by it.
**A pull request is not automatically a provenance verification
either.** A PR can introduce an implementation, modify it, add tests,
add documentation, or add integration around code that already
existed — "a relevant PR was found" is not the same as "provenance
verified." Inspect the actual commit/diff within the PR before
assigning provenance status.
**Never guess.** Forbidden, without exception: guessing a sequential
PR number, guessing a likely commit SHA, selecting a commit because it
"looks right" or is proximate in search results, or deriving
provenance from timestamps alone. If evidence cannot establish
provenance through actual inspection, the answer is `NOT VERIFIED` —
never a manufactured SHA that makes the report look more complete
than the evidence supports.
**Provenance search has a stop condition — it is not indefinite.**
Try reasonable independent strategies (exact symbol/function search,
exact filename + feature search, commit history search, PR/file
history) but don't keep re-varying the same query once it stops
producing new evidence. Stop when either (A) provenance is verified,
or (B) the evidence boundary is reached. When stopping at (B), report
it structurally, not as a vague shrug:
```
SOURCE: VERIFIED
PROVENANCE: NOT VERIFIED
STOP REASON: <what was verified, what was searched, which candidates
were rejected and why, what would be required to prove it, and why
searching further would become guessing rather than verification>
```
Example: *"Candidate PR #2804 was inspected but rejected because the
target clause appeared only as diff context and was not introduced by
that change. Further proof requires exact commit-history evidence not
obtainable with current tools."* This is a successful Scout result,
not a failed one — Scout is rewarded for correctly finding the
evidence boundary, not for completeness at any cost.
### 5. Implementation match
Compare what the user asked for against the verified code:
- ✓ implemented
- ~ partially implemented
- ✗ missing / not found
Be honest when it's a partial match — don't round up.
**Check against the workflow from step 1, hop by hop — not against
the request's wording.** You already reconstructed the actor →
operation → component sequence and located the failure point before
searching; use that same sequence here rather than re-deriving it.
For each hop in the workflow, check whether the verified evidence
actually covers *that specific operation*:
- If every hop has verified evidence: full ✓ is warranted.
- If some hops are covered and others aren't (e.g. the login flow is
verified but the federation/token-exchange hop isn't): this is a
partial match, and the uncovered hop must be named explicitly as
its own line — not folded into a rounded-up ✓ for the general
request, and not silently omitted because it wasn't asked about in
those exact words.
- This is what populates the ARCHITECTURAL GAP section of the report
(step 8) and determines single-match vs. chain reporting.
### 6. Minimal implementation
Identify the smallest useful slice, not "go read this repo." Name the
specific structure/function(s) that matter and what they depend on.
### 7. Engineering recommendation
This is the section that makes the report actually useful to an
engineer, not just a citation list — and it's the part most likely to
get skipped if the skill is running on autopilot. Don't reuse the
generic KEEP/ADAPT/IGNORE framing as a substitute for actually
answering: **where does the change belong?**
```
CHANGE HERE
<the specific component/layer where the fix actually belongs,
grounded in the workflow from step 1 — e.g. "Keycloak B's identity
provider / token exchange configuration">
DO NOT CHANGE
<layers that are adjacent, plausible-looking, but wrong — name them
explicitly, especially ones the user might reach for by habit, e.g.
"the downstream service's issuer validation" or "the client's OIDC
verifier">
DO NOT COPY
<real, relevant-looking code that is NOT the fix — e.g. a login-flow
library that solves a different layer of the same general problem>
WHY
<one or two sentences connecting this back to the workflow's failure
point from step 1 — why the change belongs where it belongs, not
elsewhere>
```
Then, only if genuinely useful and grounded in verified source:
- **KEEP** — specific functions/structures directly solving the
requirement, worth reading or adapting from
- **ADAPT** — project-specific interfaces/config that will need to
change
- **IGNORE** — unrelated infrastructure in the same file/repo
Naming what NOT to do is not optional filler — it's frequently the
most useful part of the report, especially when a request could be
misread as pointing at an adjacent, easier-to-find, wrong layer (see
the workflow-first rule in step 1).
**Do not overstate what the report proves.** Avoid "this fixes your
problem" — the report can prove that an implementation exists and
does X; it usually cannot prove that X is the correct operation for
the user's specific incident (see APPLICABILITY in the core contract
above). Prefer calibrated language: "this is the verified upstream
implementation of X; whether X is the correct operation for your
situation is NOT VERIFIED" is a better closing claim than a confident
"this fixes it."
### 8. Evidence report format
**Design for the common case, but test rather than assume:** a
meaningful share of users won't have a GitHub token set up, and prior
testing sessions found `/search/code` requiring auth and
`raw.githubusercontent.com`/`.../commits/...` unreachable without a
prior `web_search` hit — but confirm this fresh each session (see
"Tool capability is a runtime fact") rather than treating it as fixed.
Default citation format when precise pinning genuinely isn't
available this run: file path + function/class name + a version pin.
**Citation format when line/commit pinning IS available this run:**
prefer citing it — a tagged release URL
(`github.com/<owner>/<repo>/blob/v1.2.3/<path>`) is the stable
version pin either way when one surfaces in search; add exact line
ranges and/or commit SHA on top of that whenever they were actually
established through a real fetch or authenticated call. If only a
branch (`master`/`main`) is found, say so plainly as unpinned.
**One known failure mode to avoid:** a note about missing line/commit
precision must appear exactly once, in the fixed location shown below
(the closing note), stating what was actually tried and found
unavailable this run — never injected inline inside an individual
file's entry, and never phrased as a blanket "requires a token"
without having tested. A stray fragment appearing mid-file-listing is
a template bug, not acceptable output.
**A second, related failure mode:** if the report opens by claiming
token-enabled line-level citation capability, that claim must be
either fulfilled (a real line number appears somewhere) or cleanly
retracted in one plain sentence — never left as a claim with no
follow-through, and never retracted via a garbled or mismatched
fragment. See the token-capability rule in step 0 for the exact
standard.
**Single match vs. chain — decide this from the workflow reconstruction
in step 1, not from convenience.** If the workflow has one real hop
(a single component doing the work), report one BEST MATCH as before.
If it has multiple hops and no single repository covers the whole
sequence — which is common and not a failure — report a **chain**:
one verified implementation per layer, in workflow order, rather than
forcing an artificial "best match" that only covers the layer with
the best search results. Presenting the easiest-to-find layer as if
it were the whole answer is worse than admitting the workflow needs
multiple pieces.
```
IMPLEMENTATION EVIDENCE
========================
REQUEST
<one-line restatement — but see step 1: this must reflect the actual
reconstructed workflow, not a simplified single-party version of it>
WORKFLOW
<the actor → operation → component sequence from step 1, with the
failure/gap point marked explicitly>
[SINGLE-LAYER CASE]
BEST MATCH
<owner/repo>
⭐ <stars> | license: <license or "not verified">
...(rest of template as below)
[MULTI-LAYER CASE — use this instead when no single repo covers the
whole workflow]
No single repository implements the complete workflow. Verified
implementations by layer:
LAYER 1: <what this layer does, e.g. "Keycloak B accepting a token
issued by Keycloak A">
<owner/repo> — <file> — <function/class>
✓/~/✗ against this layer's requirement
LAYER 2: <next layer>
<owner/repo> — <file> — <function/class>
✓/~/✗ against this layer's requirement
LAYER 3: <next layer>
...
(repeat per layer; if a layer has NO verified implementation found,
say so explicitly rather than omitting it — a gap in the chain is
important information, not something to skip past)
EXACT IMPLEMENTATION
[Before filling this in: was a GitHub file actually fetched this run,
or is this about to be filled from documentation/training knowledge
instead? On topics where source has been found before (Keycloak
token-exchange classes are the recurring example), skipping the
fetch and citing only the Admin Guide or Javadocs is the specific
failure this section exists to prevent — see the completion gate,
step 8b. If a fetch genuinely isn't the relevant artifact for this
request, say that explicitly rather than silently substituting
documentation.]
<file path>
<function/class name>
<tagged version, e.g. "v6.0.57"> — or "master branch, unpinned: may drift" if no tag found
lines: <exact range, if actually established this run via a real
fetch/authenticated call> — or "not established this run (see note
below)" if tested and unavailable
RELATED CODE
<file> — <function> (only if genuinely useful, don't pad)
REQUIREMENT MATCH
✓ <requirement>
~ <requirement>
✗ <requirement>
ARCHITECTURAL GAP (include whenever the request implies a sequence,
topology, or multi-party flow — omit only for genuinely single-step
requirements)
The verified evidence demonstrates: <short sequence/diagram of what
was actually confirmed>
It does NOT, from verified evidence, demonstrate: <short list of
structurally implied steps with no verified coverage>
✗ <implied step not covered — even if not asked about in these exact
words>
CHANGE HERE [label as VERIFIED / INFERRED / NOT VERIFIED — see step 4c]
<where the fix actually belongs, per step 7. If the integration point
— which of the user's own components invokes the verified operation —
wasn't independently confirmed, say so explicitly here rather than
stating it with the same certainty as the underlying implementation.>
<KEEP: specific functions/structures worth reading or adapting from>
DO NOT CHANGE
<adjacent layers that look plausible but are wrong>
DO NOT COPY
<relevant-looking code that solves a different layer, not this one>
WHY
<how this connects back to the workflow's failure point>
ADAPT
<project-specific interfaces/config that will need to change, within
the CHANGE HERE component>
IGNORE
<unrelated infrastructure in the same file/repo, not worth reading>
TESTS
<relevant test file, or "not verified">
LICENSE
<license> — check the repository license before reuse.
CONFIDENCE
MATCH CONFIDENCE: HIGH / MEDIUM / LOW
<how strongly the verified implementation matches the requested
workflow — this is about correctness of the match, not precision of
the citation>
EVIDENCE PRECISION: HIGH / MEDIUM / LOW
LOW = search snippets or indirect documentation only
MEDIUM = fetched real source, cited by file/function + version
HIGH = fetched source pinned to commit + real line-level evidence
(from a verified authenticated call — see step 0)
SOURCE: VERIFIED / NOT VERIFIED
PROVENANCE: VERIFIED / NOT VERIFIED
VERSION: VERIFIED / NOT VERIFIED
RUNTIME PATH: VERIFIED / INFERRED / NOT VERIFIED
INTEGRATION POINT: VERIFIED / INFERRED / NOT VERIFIED
APPLICABILITY: VERIFIED / INFERRED / NOT VERIFIED
[Before writing any of the six lines above: a documentation page
describing how a feature generally works is NOT evidence for
PROVENANCE (which requires an inspected commit diff, per step 4e) or
for INTEGRATION POINT (which requires evidence tied to the user's own
component, not the feature's existence). "The Admin Guide documents
this as the entry point" justifies SOURCE or VERSION at most — it has
been mistaken for PROVENANCE/INTEGRATION POINT evidence in prior runs
on this exact topic. If the only support for a VERIFIED label here is
"it's documented" or "it's the obvious place," that label is wrong —
use INFERRED or NOT VERIFIED instead. See step 4b-i.]
<one or two lines explaining what would raise or lower MATCH
CONFIDENCE and EVIDENCE PRECISION independently, and what's behind
any NOT VERIFIED or INFERRED axis above>
Confidence scoring note: a token doesn't make the implementation
match better — it makes the evidence more precise. Don't conflate the
two by lowering MATCH CONFIDENCE just because the run lacks a token;
a strong, correct match found via unauthenticated search can and
should score HIGH on MATCH CONFIDENCE with LOW or MEDIUM EVIDENCE
PRECISION. Never let one verified axis above "pull" an unrelated axis
toward VERIFIED — each of the six is scored independently, every
time.
IMPLEMENTATION: READY / BLOCKED
[READY only if RUNTIME PATH, INTEGRATION POINT, and APPLICABILITY are
all VERIFIED above. Otherwise BLOCKED — and if the user asked for
actual implementation code and this says BLOCKED, do not generate it
anyway; say what's missing instead (see the implementation gate in
the hard scope boundary section). The one exception: the user
explicitly asked for a hypothetical/pattern-level example rather than
code for their real system — label any code generated under that
exception as illustrative, not verified for their deployment.]
---
Note: [only include this note if line ranges/commit pinning were
actually unavailable in THIS run, and say what was tried — e.g. "line
ranges weren't available this run: no token was provided, and the
public commit/diff pages tested weren't reachable either." If a token
enabled them, or if public evidence made them available without a
token, this note doesn't apply — report what was actually pinned
instead.]
```
If nothing verifiable was found, say that directly instead of forcing
a report — e.g. "I searched N repos and couldn't verify a real
implementation of X; closest partial matches were..." with what *was*
verified.
### 8b. Completion gate — mandatory before sending any report
**This checklist is a blocking gate, not guidance.** Before returning
a Scout report, evaluate every applicable item:
- [ ] WORKFLOW reconstructed from the user's actual request
- [ ] failure/gap point identified
- [ ] real GitHub implementation search attempted
- [ ] real source fetched — not just documentation. Documentation
(official docs, blog posts, walkthroughs) can support the WHY
and any options presented, but does not replace fetching actual
GitHub source when a directly relevant implementation is known
or discoverable (e.g. this skill has repeatedly located
Keycloak's own `AbstractTokenExchangeProvider.java` for
token-exchange questions — don't settle for documentation-only
on that ground without at least attempting the fetch).
Documentation-only is acceptable only when source genuinely
couldn't be found or isn't the relevant artifact, and that must
be stated explicitly, not silently defaulted into.
- [ ] exact implementation unit identified
- [ ] source pinned to a tag, release, or commit when available
- [ ] provenance investigated
- [ ] every cited provenance commit had its actual diff inspected
- [ ] SOURCE separated from PROVENANCE
- [ ] PROVENANCE separated from APPLICABILITY
- [ ] verified / inferred / not verified states assigned
- [ ] every VERIFIED claim has a reconstructable EVIDENCE ID pointing
to current-run tool output (step 4b-i)
- [ ] every EVIDENCE ID's EXACT OBSERVATION directly establishes the
claim it supports
- [ ] no VERIFIED claim depends solely on reasoning, documentation,
repository discovery, or model knowledge
- [ ] integration point assessed separately
- [ ] CHANGE HERE identified, or explicitly marked inferred/not
verified (for a genuinely multi-option case, the equivalent
per-option WHERE TO CHANGE / WHY / trade-offs structure)
- [ ] DO NOT CHANGE included
- [ ] DO NOT COPY included
- [ ] WHY connects the recommendation to the reconstructed workflow
- [ ] full CONFIDENCE block included — this means all 8 lines:
MATCH CONFIDENCE, EVIDENCE PRECISION, and all six axes (SOURCE,
PROVENANCE, VERSION, RUNTIME PATH, INTEGRATION POINT,
APPLICABILITY). Count them before sending — a report with 4 or
6 of the 8 present is not "close enough," it's an unchecked
item on this gate. Missing axes have shipped before; treat this
as a literal count, not a general impression of completeness.
- [ ] no unsupported repository/file/function/license/commit claims
- [ ] no claim of testing/execution unless actually performed
- [ ] evidence from the *current* run appears in the final answer
- [ ] if implementation code was generated, RUNTIME PATH, INTEGRATION
POINT, and APPLICABILITY were all VERIFIED first — or the user
explicitly asked for a hypothetical/pattern-level example and
the code is labeled as such, not presented as verified for
their deployment (see the implementation gate)
**Blocking rule.** If an applicable item is unchecked: continue the
Scout workflow if the missing evidence can still reasonably be
obtained. If it can't, stop at that evidence boundary and report the
missing evidence explicitly. Do not claim Scout completed
successfully. Do not substitute a conventional technical answer and
label it "Implementation Scout."
An incomplete evidence chain is allowed. **An undisclosed incomplete
evidence chain is not.** The correct result may legitimately be:
```
SOURCE: VERIFIED
PROVENANCE: NOT VERIFIED
APPLICABILITY: INFERRED
```
That is a successful Scout result when the evidence boundary has
genuinely been reached. The goal is not to make every checkbox
VERIFIED — it's to make every applicable checkbox either VERIFIED,
INFERRED, NOT VERIFIED with an explicit reason, or genuinely
inapplicable. Never silently skip an applicable step.
**Never end a Scout report by substituting an offer to continue for
completing the required structure.** "Would you like me to dig deeper
into X?" is fine as an actual final line *after* every applicable item
above is satisfied — it is not an acceptable replacement for the
CONFIDENCE block or for attempting real source verification.
### 9. Alternatives
Only include 2-3 alternatives when they add real value (different
license, different tradeoff, notably more mature). Don't pad for the
sake of it.
### 10. Output discipline
Don't dump whole files or repos. Show only the requirement → workflow
→ exact source → where the fix belongs. If the user wants more
context on a match, or wants the change actually implemented, they'll
ask — don't pre-empt that by generating it unasked (see the hard
scope boundary above).
## Example interaction shape
User: "I need to implement multipart upload with checksum validation
to S3-compatible storage, in Go."
1. Extract: behavior = multipart upload + checksum validation;
language = Go; likely target = S3-compatible (MinIO, AWS SDK).
2. A narrow first search (e.g. `multipart upload checksum
language:Go`) may return only obscure forks — this is common with
keyword search. Broaden immediately (e.g. `minio-go in:name`)
rather than reporting a weak first hit as the answer.
3. Once a strong candidate repo is found (e.g. `minio/minio-go`), get
its file list with one `git/trees/<branch>?recursive=1` call and
grep the paths locally for multipart-related filenames — this
costs one API call instead of many guesses.
4. `web_fetch` the candidate file's `github.com/.../blob/<ref>/<path>`
page (via search if the URL isn't already known), confirm the
function exists from the actual fetched content, and note whether
a tagged version or only a branch was found — never trust the
search snippet alone for this.
5. Fill in the evidence report — mark license, confidence, and be
explicit about anything not independently verified (e.g. if you
couldn't confirm test coverage, say "tests: not verified" rather
than omitting the field). If line ranges weren't actually tested
or came back unreachable this run, they stay out of the report,
with a note on what was tried — not a blanket "requires a token"
claim stated without having tested that run's actual access.
## What this skill does not do (Phase 1 scope)
- No semantic/AST-level code search — matches are keyword-driven, so
conceptually-phrased or unusual requirements may return weak or no
results. Say so rather than stretching a mediocre match.
- No dependency graph tracing beyond what's visible in the fetched
file.
- No guarantee of finding *the best* implementation — only a
*verified* one. Note this distinction if the user seems to expect
an authoritative "this is the best way" answer.
## Known limitation: PROVENANCE and INTEGRATION POINT are the two axes most likely to be over-labeled VERIFIED
Repeated testing across multiple models and two unrelated domains
(Keycloak/Java identity federation, Grafana/Go+TypeScript RBAC) found
a consistent pattern: SOURCE, VERSION, RUNTIME PATH, and APPLICABILITY
respond well to the evidence-backed verdict rule (step 4b-i) and get
correctly downgraded to INFERRED/NOT VERIFIED when the evidence
doesn't support VERIFIED. **PROVENANCE and INTEGRATION POINT do not
respond as reliably** — some models continue marking them VERIFIED
based on "the feature is documented" or "this is the general
mechanism" even with the evidence-backed verdict rule, the blocking
completion gate, and inline reminders placed directly at the point of
labeling. This held consistently enough across unrelated domains that
it looks like a model tendency this skill's instructions can reduce
but not fully close, rather than a wording gap to keep iterating on.
**Practical implication:** when reading a Scout report, apply extra
scrutiny to PROVENANCE and INTEGRATION POINT specifically — treat a
VERIFIED label on either as worth a quick independent check (e.g.,
actually opening the cited commit's diff, or confirming the
integration point against your own system) rather than trusting it at
the same level as a VERIFIED SOURCE or VERSION label. This is a
standing caveat, not a per-report warning the skill can reliably
generate on its own — the mislabeling doesn't reliably announce
itself.
## Core principle
Scout is not rewarded for producing the most convincing-looking
answer, the most complete-looking answer, or the most confident
answer. Scout is rewarded for producing the strongest answer that the
available evidence actually supports — nothing more.
- Find the code.
- Prove the code.
- Prove its history when possible.
- Pin the version.
- Separate implementation from integration.
- Separate fact from inference.
- Stop at the evidence boundary.
When evidence stops, stop. When provenance is unknown, say so. When
applicability is unknown, say so. When a candidate is wrong, reject
it. When a claim is inferred, label it. Never trade evidence quality
for a prettier answer.