Install
openclaw skills install @its-how/aha-skills-finderUse when an agent needs to surface skill/capability candidates that first-pass registry, package, or search queries would likely miss. Covers skills, MCPs, CLIs, plugins, registries, extensions, SaaS/provider routes, repo tools, and native runtime capabilities. Produces multiple traceable candidates and raw signals; does not rank for adoption, audit safety, install, enable, or perform live/external actions.
openclaw skills install @its-how/aha-skills-finderUse this skill when a target outcome needs the agent to identify the skill or capability that matches the target need, not merely the first candidate an obvious registry, package search, or query returns. The output is an aha-shaped discovery artifact: multiple traceable candidates, source gaps, query corrections, and raw signals. Not one best answer.
This is runtime-agnostic. Treat this SKILL.md as a portable agent-readable method contract, not as a Codex-only package or an install recipe. Runtime-specific metadata belongs in adapters/ only after evidence-gated validation.
This is not a tutorial or marketing surface. Optimize for agent execution, machine-readable artifacts, and compact boundary checks. Do not add quickstarts, screenshots, or docs-site prose unless they directly improve agent execution.
There is no universal best skill. Aha names the discovery moment when an agent identifies the skill or capability that matches the target need. Expanded source surfaces, query expansion, raw signals, and traceable surprises are methods for reaching that moment; adoption judgment stays in later gates.
Timing matters. Discovery is not abstract optimization: too early means the ecosystem may not exist yet, too late means the useful window may have passed. Capture why the search should happen now.
The core advantage is not confidence theater. It is recall with provenance. A
run of aha-skills-finder reduces false negatives by searching the places where
the capability is likely to live, including registry-native surfaces that may
not have standalone repos or packages, and package-registry tooling that may
function as skill libraries, routers, loaders, managers, installers, or
marketplaces rather than individual skills.
aha-skills-finder complements third-party skill libraries, finders, routers, managers, installers, marketplaces, and MCP loaders. Those tools are valid discovery surfaces and candidates, but they often search one ecosystem, mix find/adopt actions, or turn package/list metadata into recommendation language. This method fills the gap by producing cross-surface, lane-scoped, raw-signal candidate pools for later stages to audit or adopt separately.
This is find-stage only.
Do:
Do not:
Do not treat third-party tool claims as aha-skills-finder conclusions. A package that claims large catalogs, token savings, fast routing, many runtime integrations, or curated quality is still only a raw candidate until a later audit or adoption stage verifies that claim.
Ask for or infer:
Start with a Day 1 Answer:
If I did no research, I would expect the strongest capabilities to come from ______ because ______.
The actual outcome is ______.
This should be searched now because ______.
Adjacent capabilities that are out of scope are ______.
If the requested outcome mixes different action lanes, split before searching. Do not force one candidate pool to cover incompatible lanes such as final publish, draft creation, formatting, conversion, monitoring, and analytics.
For each lane, record:
Build a heterogeneous discovery surface before judging candidates. Source coverage is outcome-bound: choose source families that match the lane ecosystem, not a generic global checklist. Cover as many relevant source families as the task warrants:
For skill-class outcomes, do not stop at repo or package search. Attempt the registry-native marketplace, public API, or search endpoint for the relevant skill ecosystem when one is available or named by the user. A GitHub/npm miss is not evidence that a registry-native skill does not exist.
For skill-discovery outcomes, do not stop at skill bodies or curated lists. Search for adjacent skill tooling: libraries, finders, routers, managers, installers, marketplaces, MCP lazy loaders, and skill retrieval/distillation systems. These are candidate sources or adjacent tooling, not automatic replacements for aha-skills-finder and not adoption recommendations.
API, code-search, marketplace, or registry failures are source gaps, not no-hit evidence. Record the failure surface and failure type, for example unauthenticated code search, rate limit, endpoint unavailable, private registry, or unsupported search syntax.
For ordinary bounded outcomes, pressure-test toward 20+ raw candidates. For narrow platform outcomes, fewer is acceptable only if source gaps are explicit.
Treat installs and downloads as first-class raw discovery signals when available. Examples include skill marketplace installs, package registry downloads, extension store installs, registry invocation counts, and package download windows. If a surface does not expose the signal, record the source gap instead of inferring adoption.
Keep telemetry split by evidence surface. Registry installs or invocations belong to the registry surface; package downloads and download windows belong to the package surface; repo stars, forks, pushed dates, and releases belong to the source-repo surface; extension or store ratings and installs belong to the extension/store surface. Do not merge these into a single quality score, ranking, or adoption verdict.
Registry-provided stats and scan labels are raw signals only. Record downloads, installs, stars, file counts, file-hash availability, and registry security status when exposed, but do not treat them as safety proof, source audit, or adoption recommendation.
Repo-level metrics need a monorepo caveat. Stars, forks, and pushed dates for a large repo are discoverability and context signals for the candidate path, not proof of subskill quality or fit. Preserve the monorepo subpath when visible and defer subskill audit to a later stage.
Curated, recommended, "best", "awesome", roundup, and leaderboard lists are discovery surfaces. Use them for cold-start recall, ecosystem vocabulary, and candidate names. Do not treat a list's recommendation language as an adoption, quality, or safety verdict.
When the lane is specifically about finding good skill recommendation sources,
use source-registries/curated-skill-lists.yaml as a seed list. Treat that file
as a maintained discovery-source registry, not as a list of endorsed skills.
Before comparing candidates, cross-map each plausible candidate identity across the surfaces that expose it:
Mapping failures are source gaps, not market-absence claims. Useful examples are registry query returned zero results, package download API returned not found after package search found a candidate, repository URL returned 404, code search was unauthenticated or rate-limited, or a marketplace page was readable but no public API was visible.
The cross-map output lives in the candidate pool as:
source.repo_url — canonical source repository.source.registry_id — registry/package identifier if different from name.entrypoint_url — the actual URL an agent would use to access the capability.notes — any cross-map discrepancies (e.g., "npm package name differs from repo name").If a candidate appears under multiple identities, create one candidate with all cross-map fields populated, not duplicate candidates.
Challenge R1 instead of deep-auditing favorites. Do not assume the user's first words match the ecosystem's vocabulary. Build query branches from:
When R2 performs non-trivial query expansion for a lane, preserve that evidence in the research brief:
Do not backfill query-expansion fields into old or trivial examples merely to satisfy the schema; preserve them when they explain a real search correction.
Keep a small false-positive set as query correction evidence. Convert false positives into better query terms instead of only dropping them. False positive is lane-relative: it means "not for this lane/outcome", not "bad candidate". A candidate can be false positive for a publish lane and valid for a formatting lane.
When true 7/30/90 day star velocity is unavailable, use a recent-growth proxy instead of leaving the freshness question implicit. Record the proxy basis, such as created date, current stars, forks, pushed/updated time, release cadence, or package download cadence. This remains a raw discovery signal, not a quality or maintenance verdict.
When R2 query expansion surfaces candidates that clearly match the original R1 target outcome but were missed:
query_branch to the R2 branch that found them.notes entry: "R2-discovered; missed in R1 due to [reason: narrow query / missing source family / registry gap]."source_gaps as: { gap_type: "r1_miss", source_family: "...", reason: "..." }.Do NOT retroactively modify R1 results.
Convert recall into a candidate pool artifact using schemas/candidate-pool.schema.json.
Keep candidates that have traceable source and plausible outcome proximity. Hold selected partial hits if they improve discovery coverage. Drop unrelated or untraceable noise.
Do not use adoption risk, safety, or maintenance as find-stage filters.
Keep candidate typing split across three axes:
candidate_type is the physical shape, such as skill, mcp, cli,
registry-search-index, or curated-list;candidate_role is the find-stage semantic role, such as capability,
discovery-source, adjacent-index, adjacent-tooling, or
registry-index;candidate_surfaces are descriptive handoff tags, not rankings or roles.These axes may combine. For example, candidate_type=mcp +
candidate_role=discovery-source + candidate_surfaces=["skill-library"] is a
valid way to record an MCP server that acts as a skill-library discovery source.
Useful surface tags include agent-skill, mcp-server, cli, package,
web-editor, desktop-app, browser-extension, hosted-saas,
official-api, native-runtime, source-repo, registry-index,
curated-list, skill-library, skill-finder, skill-router,
skill-manager, skill-installer, skill-marketplace, mcp-loader,
skill-retrieval, skill-distillation, docs, and prompt. Surface tags are
descriptive only; they are not rankings.
Stop discovery only when all applicable handoff conditions are explicit, or when the runtime budget or a hard limit prevents further discovery:
Do not stop merely because one plausible candidate appears, because one source
family produces enough candidates, or because the last query branch produced few
new candidates. When stopping before all planned rounds complete, record the stop
reason in the research brief rounds[last].stop_reason and mark remaining
rounds as skipped with reason: "budget_exhausted" or the specific runtime
limit that was hit.
Return or write:
schemas/research-brief.schema.json;schemas/candidate-pool.schema.json;Preserve evidence surface per signal in machine-readable fields. Prefer the
existing metrics.download_signals, registry_stats,
package_registry_stats, source, entrypoint_url, candidate_surfaces,
find_signals, source_gaps, and notes fields rather than inventing a new
schema for every run. When a candidate has mixed evidence, keep each signal tied
to its surface, name, value, source URL, and window or timestamp where available.
Do not collapse registry, package, repo, and store signals into a single score.
Run a light red-line check for candidate pools with:
python3 aha-skills-finder/scripts/validate-candidate-pool.py \
aha-skills-finder/examples/find-skill-finder/candidate-pool.json \
aha-skills-finder/examples/find-skill-audit/candidate-pool.json \
aha-skills-finder/examples/find-skill-multi-lane/candidate-pool.json
validate-candidate-pool.py is a red-line validator, not a full JSON Schema
validator; schema compatibility needs a separate JSON Schema validator check.
It does not judge discovery quality.
Canonical examples are limited to examples/find-skill-finder/,
examples/find-skill-audit/, and examples/find-skill-multi-lane/.
Use sources.yaml as a source-family prompt and checklist, not a mandatory taxonomy. Use scripts/collect-github-metrics.py only for light raw GitHub signals; it is not a quality or adoption scorer.
A find-stage artifact cannot prove: