Skip to content
Agentmart
Submit a tool

codebase-capability-map

Use when mapping platform capabilities from source+docs.

Skill by merllinsbeard

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/merllinsbeard-codebase-capability-map

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when mapping platform capabilities from source+docs.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/codebase-capability-map

What's inside

Skill name
codebase-capability-map
Description
Use when mapping platform capabilities from source+docs.
License
MIT
Instructions
152 lines in SKILL.md · view on GitHub

Files (9)

  • SKILL.md
  • browser-extension-review.md · references/
  • configuration-schema-audit.md · references/
  • desktop-plugin-protocol-tracing.md · references/
  • official-dev-environment-comparison.md · references/
  • openviking-0411-to-0412-upgrade-audit.md · references/
  • read-only-isolation-review.md · references/
  • repository-evolution-evidence-audit.md · references/
  • repository-source-history.md · references/

SKILL.md (first lines)

# Codebase Capability Map

Build a complete capability map of a platform from its sources and docs — including features the current deployment does not use ("upstream potential"). Distinct from `codebase-inspection` (which is LOC/metrics): this skill answers *what the system can do*, not *how big it is*.

## When to use

- "Составь карту возможностей X по исходникам", "what can this platform do", upstream potential, feature inventory.
- Before integrating with a platform: what's available vs. what's actually used.
- Audits: documented vs. implemented vs. experimental.
- **Adaptation / rebranding plans** ("переделать репо под другого человека/домен/язык", fork white-labeling, template rebrand): the deliverable is "every file that must change, in what order, at what cost" — see the adaptation-audit section below.

## Recon order (read-only, ~8 passes)

1. **Orientation.** `git -C <repo> log --oneline -20 | cat`, `branch --show-current`, `describe --tags --always`, `remote -v`, top-level `ls`. Recent `feat(...)` commits = fresh capabilities, often undocumented.
2. **Docs in full.** README, ARCHITECTURE.md, VISION*.md, docs/** — especially: status tables (✅/🚧/📋), "Known Limitations" sections, formal specs (TLA+/Tamarin dirs signal which parts are hardened). Record the project's *own* limitations list verbatim — it's the best source for the "Ограничения" section.
3. **Crate/package inventory.** One-liner: `for d in crates/*/; do grep -m1 '^description' $d/Cargo.toml; done` (or package.json equivalents). Then `ls src/` per crate of interest.
4. **Central registry = capability skeleton.** Most platforms have one canonical catalog: event-kind registry (`grep 'pub const KIND_'`), API router (`grep -oP '\.route\("[^"]+"'`), protobuf enums, command dispatch tables. Extract it fully — it enumerates primitives, events, and actions in one place.
5. **Schema files.** Workflow/action schemas (`enum ActionDef`, triggers), DB migrations list (`ls migrations/`) = feature chronology, feature-flag files (`preview-features.json` etc.) = experimental surface.
6. **CLI surface.** Enumerate every subcommand in one loop into a file (see below).
7. **Deployment models.** docker-compose services, deploy/charts, Dockerfile.* — what ships separately (gateways, sidecars, dashboards).
8. **Examples/ and tests/** — `examples/` READMEs reveal intended extension paths; `#[ignore]`d e2e tests reveal acceptance-level features needing special infra.

## CLI surface extraction

```bash
B=/usr/local/bin/mycli
for c in sub1 sub2 sub3; do
  echo "### $c"
  ${B} $c --help 2>&1 | sed -n '/^Commands:/,/^Options:/p'
done > /tmp/cli_surface.txt
```

**Pitfall — execution blocked:** if running a binary `--help` is blocked by an environment heuristic (e.g. the terminal guard refuses commands it pattern-matches as gateway/process control; or a /tmp copy is noexec), do NOT conclude the CLI is broken. Fallbacks, in order:
1. Invoke via a variable: `B=/usr/local/bin/foo; ${B} --help` — often passes heuristics that match literal command strings.
2. Read the CLI spec from source instead: clap definitions (`grep -n '#\[command(\|about =\|#\[arg' crates/*/src/config.rs`) give the exact same subcommand/flag inventory without execution.

## Cross-check docs against code

README/vision docs drift. Verify claims before reporting them:
- README says "MCP server, full feature surface" → grep routers: is there actually an MCP endpoint, or only a local dev-MCP binary? Say which.
- A kind/enum exists in code but no handler references it → experimental/reserved, mark INFERRED.
- preview-feature flags with no docs section → undocumented surface.

## Repository source-history and API-name provenance

When the task asks whether a feature/tool/API was planned, introduced, renamed, removed, or only exposed through one transport, do a provenance pass instead of relying on current docs or broad keyword hits:

1. Search the exact identifier in current source/tests and in reachable history. Use quoted or word-boundary searches so substrings such as `openviking_recall` do not count as `viking_recall`.
2. Trace the complete registration path: provider schemas → tool registry → dispatch handler; for MCP, `@mcp.tool()` → function name → endpoint → canonical docs table.
3. Separate namespaces and transports. A provider wrapper may prefix names while native MCP uses unprefixed names; lifecycle `prefetch()` may use REST even when a raw `/mcp` surface also exists.
4. For history, identify the first source-introducing commit and inspect its parent/child snapshots. A docs-only commit proves a claim, not an implementation. Call a name “removed” only when an earlier source snapshot contains it and a later diff deletes/renames it; otherwise report “not implemented in the inspected scope.”
5. Cite stable GitHub blob line anchors for current code/docs, raw-at-commit URLs for historical snapshots, and commit URLs for dates/diffs. State the inspected scope for negative findings.

`references/repository-source-history.md` — reusable evidence ladder, exact probes, transport/namespace checks, and the validated OpenViking/Hermes naming-drift case.

## Repository evolution, defect history, and personal-claim boundaries

When a user asks what a project built over time, what genuinely broke and was fixed, or asks a codebase to answer a founder/client/AI-development story, do a **repository-evolution audit** rather than converting commit history into biography:

1. Read the repository truth map (`AGENTS.md`, docs index) first. Classify docs as canonical, reference, or historical before relying on them.
2. Pin branch, full HEAD, clean/dirty status, and `git diff --check`; use first-parent chronology plus substantive commit diffs to identify phases.
3. For each defect class, require a fixing/introducing commit plus a current implementation/test/runbook cross-check. A commit subject or archived bug report is a lead, not enough by itself.
4. Separate four maturity facts: tests exist, CI passed for exact SHA, local verification ran, and live deployment/integrations/client acceptance occurred. Never promote one to another.
5. Treat Git author/co-author metadata as recorded metadata only—not proof of who wrote every line, caused a defect, chose a design, or used an AI model. Say “project history records …” unless direct attribution exists.
6. For personal, commercial, client-result, manual-effort, negotiated-price, or subjective questions absent from repo artifacts, state **`НЕ УСТАНОВЛЕНО ПО РЕПОЗИТОРИЮ`** and name the external evidence that would be needed. Do not estimate or smooth gaps.
7. Answer each question with bounded answer, exact `path:line` or commit/CI evidence, calibrated confidence, and explicit unknowns. Keep a separate verified-defect-class list.

Read `references/repository-evolution-evidence-audit.md` whenever the audit crosses the boundary between source history and personal/commercial/live-operational claims. It contains the claim ladder, reporting templates, and closure checklist.

## Configuration and behavior audits

When the request is to analyze a plugin/app's settings or produce a minimal persisted profile, add a configuration-schema pass rather than inferring behavior from the UI:

1. Pin the exact release/commit and keep the source checkout read-only.
2. Extract the canonical schema/default object: every key, type, enum, range, and default.
3. Separate global persisted defaults, local sparse overrides, transient operational state, and compatibility-only fields.
4. Trace parser → serializer → migration code. Verify whether hand-authored YAML/object input is accepted and whether the application writes another form.
5. Follow behavior end-to-end: scope → parsing/normalization → matching/routing → derived model → filter/sort/group/layout → writeback.
6. Use tests/fixtures to confirm exact IDs, paths, and query syntax; do not treat an untracked fixture as release code without saying so.
7. Present a matrix of key, accepted values, default, persistence layer, behavioral effect, and source path/line.
8. Propose a sparse profile with semantic workflow fields first; leave decorative and stateful fields out unless the user explicitly needs them.
9. Distinguish implemented behavior from prose rules that the application does not enforce. A saved filter is not automatically selected at startup, and a displayed column does not enforce card-count limits.
10. Run a focused parser/test verification when dependencies are ready. If setup blocks execution, report the real status and do not claim a pass.

Read `references/configuration-schema-audit.md` for the detailed evidence ladder, four-layer model, and profile-design heuristics.

## Read-only data-isolation and deployment-diff review

Use this subsection when a capability/rebranding review changes expert, tenant, persona, source, index, database, or deployment selection. The goal is to catch real cross-namespace defects without mutating the checkout.

1. Read repository instructions (`AGENTS.md`) and applicable context/ADR files before inspecting the diff. Record the exact worktree, branch/commit, and pre-existing dirty paths so concurrent or unrelated edits are not attributed to the reviewed change.
2. Establish the requested scope with `git status --short`, `git diff --stat`, `git diff --name-only`, then inspect both the changed hunks and full surrounding files. Treat docs/examples as executable contracts: compare their commands with actual wrapper targets and defaults.
3. Trace the selector end-to-end: CLI/Make variable -> shell export and `.env` precedence -> Compose `env_file` versus explicit `environment` -> mounted host/container paths -> local/remote storage filters -> runtime read path. Make variables are not automatically exported to child processes, and Make does not parse `.env`; verify this with `make -n` rather than assuming the Python CLI's environment fallback applies.
4. Test isolation with two temporary namespaces against a shared scratch store. Index namespace A, index namespace B, then query both and inspect the raw artifact. A whole-file `replace` operation can erase A even when filtered reads appear safe. For SQL sync, verify empty reindex, stale document removal, chunk cascade, mixed-payload rejection, and preservation of another namespace.
5. Render deployment configuration without starting services: `docker compose --profile tools config --format json` with a temporary test environment. Check every service's effective selector, data mount, state path, database URL/volume, and secret source. Explicit Compose `environment` entries override `env_file`; a documented `DATABASE_URL` or host data path is not effective unless it appears in the rendered service config.
6. For identity compatibility, compare runtime/profile display names with database `display_name` values and legacy labels. Exercise fresh-database and existing-row paths because `ON CONFLICT DO NOTHING` can preserve a bad first write forever.
7. Demand a reproducible consequence for every finding: exact `path:line`, trigger command/config, observed output/state, and user-visible or data-loss impact. Separate findings introduced by the diff from pre-existing hazards, and never turn a passed smoke test into evidence for untested configuration combinations.
8. Keep probes non-mutating: use `PYTHONDONTWRITEBYTECODE=1`, temporary directories outside the repository, fake DB cursors or read-only config rendering, and `git diff --check` plus a final `git status --short` to verify the review itself made no changes.

See `references/read-only-isolation-review.md` for reusable probe recipes and an evidence checklist.

## Report shape

Provenance-tag every claim: **UPSTREAM** (with file path) vs **INFERRED**. Sections:
1. Общая модель (what the thing is, tenancy, protocol)
2. Каталог компонентов (crates/services, one line each)
3. Capability map: primitives / events (full kind catalog) / actions (CLI commands) / permissions / automation / media / deploy models
4. Ограничения платформы (the project's own Known Limitations + verified gaps)
5. Недокументированное/экспериментальное (in code, not in docs)
6. Unknowns (what couldn't be resolved read-only)

## Adaptation / rebranding audit (fork-to-new-owner planning)

When the task is "rebuild this repo for a different person/domain/language", the capability map becomes a **change inventory**. Same recon order, plus these targeted passes:

1. **Identity surface first.** grep the old name/email/domain repo-wide *with counts* (`grep -rIo "old-domain\.io" --exclude-dir=node_modules --exclude-dir=.git . | wc -l`). Total occurrences + files-affected is the headline risk number for the plan (e.g. "domain hardcoded in 516 places across 74 files").
2. **i18n / locale mechanics.** Find the canonical language type (`grep -n "type Lang\|'es' \||'ru' \|" src/`), then trace every consumer: routing defaults, slug tables, hreflang emission, og:locale, JSON-LD `inLanguage`, browser-lang-mismatch banners, API-side language instructions (chat/voice). Count literal occurrences to size the rename.
3. **Content registries.** Locate the articles/content registry — it is the skeleton for "how to add new content" and for everything downstream (sitemap, RSS, prerender, RAG ingest, validators). Document the add-item pipeline end-to-end.
4. **Build pipeline side effects.** Read `package.json` scripts fully: builds often chain stats-fetchers, RAG ingest, OG-image generation, pings — note which steps need API keys/creds and which break a local build without them. This is usually the #1 "local run" gotcha.

From merllinsbeard/merlin-CTO, MIT.

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Aug 25, 2026 (2 months ago)
Last release
Aug 25, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from merllinsbeard

Cite this page

codebase-capability-map skill. Agent Mart. https://agentmart.dev/skills/merllinsbeard-codebase-capability-map (last updated 2026-10-24)