Multi-channel grounding and landscape discovery. Mechanically harvests all available knowledge channels (web probes, existing reports, codebase exploration, catalog skills, OSS repos, user-provided sources) and synthesizes findings into one structured world model. Non-prescriptive — reports observations, convergences, divergences, and gaps without recommending. Use before spec work, research, analysis, or any task that needs comprehensive situational understanding. Triggers: worldmodel, world model, ground this, map the landscape, build context, what do we know about, understand this topic, grounding, context gathering.
From sharednpx claudepluginhub inkeep/team-skills --plugin sharedThis skill uses the workspace's default tool permissions.
references/output-format.mdreferences/probe-vocabulary.mdreferences/source-credibility.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Configures VPN and dedicated connections like Direct Connect, ExpressRoute, Interconnect for secure on-premises to AWS, Azure, GCP, OCI hybrid networking.
Build a comprehensive topology map for any topic by mechanically tapping every available knowledge source. Inventories surfaces, entities, connections, dependencies, terminology, audiences, and patterns — like a dynamically-built version of the surface-area catalog skills, enriched with web, report, and OSS context.
Core stance: Map the topology, don't analyze it. Report what exists, how it connects, who's affected, and what patterns are visible — with evidence provenance per finding. Never evaluate, recommend, or prebias. The consumer builds their own analytical framework from the topology.
This skill requires web search capabilities. Other channels are conditional on availability.
| Situation | Use |
|---|---|
| Need to understand a topic landscape across web, code, reports, and other sources | This skill |
Need grounding before /spec, /research, /analyze, or any planning | This skill |
| User says "/worldmodel [topic]" to understand a space | This skill |
| Need deep investigative research with formal reports and citations | /research (may dispatch this skill first) |
| Need code patterns, conventions, or implementation-focused understanding | /explore directly |
| Need to evaluate a decision or situation with structured reasoning | /analyze |
This skill discovers and reports. It does NOT:
Prose discipline:
Check whether the caller specified --depth light or --depth full. Default is full. The worldmodel skill never self-selects its depth — the caller decides.
full (default): Follow the standard 3-phase workflow below (Phase 0 → Phase 1 → Phase 2).light: Jump to the Light mode protocol section at the end of this workflow.Invariant (both modes): Every available channel always runs. Depth mode changes how deep each channel goes, never whether it runs.
Before starting any work, create a task for each phase using TaskCreate with addBlockedBy to enforce ordering. Derive descriptions and completion criteria from each phase's own workflow text.
Mark each task in_progress when starting and completed when its phase's exit criteria are met.
Check which channels are available. No skip logic — if a source exists, its channel runs.
| Channel | Source | Gate |
|---|---|---|
| Web probes | Web search | WebSearch tool available |
| Existing reports | <reports-dir>/CATALOGUE.md | Reports dir exists (resolve via resolved-reports-dir from SessionStart hook) |
| Codebase | Git repo(s) | In a git repo. CWD always included. Additional repos from caller (--repos) or discovered in Phase 1. |
| Catalog skills | .agents/skills/, .claude/skills/, plugin skill dirs | Skills named product-surface-areas, internal-surface-areas, or audience-impact exist |
| OSS repos | ~/.claude/oss-repos/ | Dir exists |
| User-provided sources | Paths, URLs, folders in the prompt | Caller provided them |
Scan the prompt for file paths (starting with / or ~/) and URLs (starting with http). These become user-provided sources.
Exit criteria: List of available channels determined. Default paths resolved.
Dispatch available channels as parallel subagents. The code channel dispatches /explore; other channels follow worldmodel's protocols. Lightweight channels (catalogs, user sources) run inline.
Parallelism is mandatory: Dispatch ALL channel subagents in a single message (multiple Agent tool calls in one response) to ensure true concurrent execution. Do NOT dispatch one agent, wait for it to return, then dispatch the next — this serialization wastes minutes. Run inline channels (catalogs, user sources) while subagents are in flight.
Parallelizable (dispatch as subagents):
Web channel — 3 divergent probes from different structural categories. Goal: discover terminology, major entities, landscape shape. Can look up specific details when clearly pertinent to the topology (e.g., checking if a 3P dependency supports a specific capability), but don't run extended multi-probe investigation campaigns — that's /research's job.
⚠ Must use Agent tool dispatch (not Task tool) — needs WebSearch MCP access.
Within the web subagent: issue all WebSearch calls in a single message (parallel). If results require WebFetch for specific pages, batch those into a single message too — never chain WebFetch calls sequentially.
Load: references/probe-vocabulary.md for the 5 probe categories (broad survey, key concept deep-dive, entity/player scan, contrarian/alternative, recency). Choose 3 that will produce the most structurally different results for this topic.
Code channel — one Agent tool subagent per repo root. Each subagent:
/explore skillCWD is always included. Additional repos from --repos flag or cross-channel entity matching (if web/reports surface entities that match repos in ~/.claude/oss-repos/ or caller-specified paths).
OSS channel — ls ~/.claude/oss-repos/, match repo names against the topic + entities discovered by other channels (package.json dependencies, import statements). For relevant repos, skim: README, key type definitions, main interfaces. Ecosystem discovery (mandatory when researching any technology): (1) Check the organization's package registry for companion/sibling packages — official tools, plugins, extensions, partner integrations. Do not assume the primary repo or product contains all functionality. Applies to OSS (npm @org/*, GitHub org) and closed products (official integrations, partner SDKs). (2) Search for community ecosystem: "[project] integrations", "awesome [project]", "[project] adapter", popular third-party wrappers and adapters bridging between ecosystems. Community repos exist around both OSS and closed products (Stripe, Salesforce, Claude, etc.).
⚠ Must use Agent tool dispatch if it needs WebFetch for OSS docs, package registry pages, or community ecosystem searches.
Reports channel — if <reports-dir>/CATALOGUE.md exists, scan the catalogue for semantic relevance to the topic. Read executive summary + rubric of top 1-3 matching reports.
Run inline (fast, no subagent overhead):
Catalogs — if product-surface-areas, internal-surface-areas, or audience-impact skills exist in the repo, load and read them. Staleness check: spot-check 2-3 high-coupling surfaces against actual code. If stale, note staleness; prefer code-verified findings from explore.
User sources — Read all provided file paths/folders. WebFetch all provided URLs. If a URL fails (auth, size), classify as INACCESSIBLE.
Stagnation rule (applies to all channels): If a channel has processed 10+ items (files, web results, report sections) without surfacing new entities or surfaces, stop that channel. If the same search is repeated with same terms, stop immediately.
Exit criteria: All channel subagents have returned findings. Inline channels complete.
Synthesize from the raw channel findings returned by subagents. Do NOT synthesize from memory of what channels found — re-read the actual findings.
Build a topology map — an inventory of surfaces, entities, connections, and patterns. Like a dependency graph with annotations. NOT an analytical framework with ranked dimensions.
Depth calibration: Follow dependency chains as deep as they're intrinsic to the topic — the auth middleware connects to the session store connects to the database, and that's all part of understanding auth. Stop when connections become tangential — the database's backup strategy connects but isn't part of the auth topology. Tangential connections get acknowledged with context (what they are, why they connect) but not chased further. The goal is a complete topology of the intrinsic system, not a shallow skim of everything.
references/source-credibility.md. Code is ground truth for current behavior. Divergences are headline findings — report prominently, never flatten.references/source-credibility.md).Before emitting, run these 4 checks. If any fails, fix before emitting.
Load: references/output-format.md for the canonical template.
--output <path> specified → write to file/research this? /spec it? /analyze it?"Exit criteria: Output emitted. All tasks marked complete.
When --depth light is specified, execute this protocol instead of the standard Phase 0 → Phase 1 → Phase 2 workflow. Light mode produces the same output format as full mode but completes in roughly half the time by reducing channel depth uniformly.
Every available channel still runs. Light mode changes depth, not coverage.
Create a single tracking task: "Worldmodel (light): harvest + synthesize". Mark it in_progress.
Run channel discovery exactly as Phase 0 above — resolve paths, check availability, scan prompt for user-provided sources. Same gates, same channel table.
Dispatch all channel subagents in a single message to ensure true parallelism. Run inline channels concurrently.
Web channel (light) — 2 divergent probes from different structural categories (instead of 3). Choose the 2 that will produce the most structurally different results for this topic. Load: references/probe-vocabulary.md. Within the web subagent, issue both WebSearch calls in a single message. If results need WebFetch, batch those too. No gap-fill pass — if an entity is thin, tag it UNRESOLVED.
Code channel (light) — inline scanning, no /explore dispatch. For each repo:
package.json (or equivalent manifest) for dependencies, scripts, project structure**/src/**/index.{ts,js}, **/routes/**, **/api/**, **/components/**, config files (*.config.*, .env.example)This gives surface enumeration without dependency chain tracing. Do NOT dispatch /explore — inline scanning is the protocol for light mode.
OSS channel (light) — ls ~/.claude/oss-repos/, match repo names against topic. For the top 1-2 matches: read README only. No type definition deep-dives. Ecosystem check (still mandatory at light depth): (1) Check the org's package listing and GitHub repos for companion tools, OSS templates, client SDKs, and side projects related to their core product — companies frequently open-source parts around a closed core. (2) Run one web search for "[project] integrations" or "awesome [project]" to surface community ecosystem. No deep dives, but do not skip this step.
Reports channel (light) — scan CATALOGUE.md for semantic relevance. Read the title + first paragraph of top 1-2 matching reports. No full executive summary reads.
Catalogs (inline, light) — if catalog skills exist, load and read them. Skip the staleness spot-check.
User sources (inline, light) — same as full mode. Read all provided paths. WebFetch all provided URLs.
Stagnation rule: same as full mode.
Synthesize from the raw channel findings. Same rule: re-read actual findings, do not synthesize from memory.
Build the topology map using the same 10 synthesis steps as Phase 2 above, with these adjustments:
Load: references/output-format.md for the canonical template. Emit output using the same rules as Phase 2 (file if --output specified, inline otherwise, interactive follow-up only if standalone + not headless).
Mark the tracking task completed.
Every finding that isn't fully resolved MUST be classified into one of three categories. No other categories are valid.
UNRESOLVED — Found it, couldn't get sharp.
ADJACENT — Connected thread outside topic scope.
INACCESSIBLE — Can't reach the source.
"Not found" is NOT a valid category. If the skill's channels could have found it, search harder. A confirmed negative (genuinely doesn't exist) is a finding in the main output, documented with: terms searched, channels checked, what was expected, result count (zero).
Laziness prevention:
If a channel errors (web timeout, URL 404, repo unreadable), skip it. Note in Meta → "Channels unavailable" with the reason. Never fail the whole run — each channel is independent.
| Anti-pattern | What it looks like | Correction |
|---|---|---|
| Prescribing | "You should use X" or "This pattern is bad" | Report what exists. Consumer evaluates. |
| Flattening divergence | Silently picking one side when channels disagree | Report both sides prominently in Patterns Observed. |
| Single-channel gaps | "Not found in codebase" without checking web/reports | Search all relevant channels before declaring UNRESOLVED. |
| Vague incompleteness | "Needs investigation" without a trail | Every UNRESOLVED/ADJACENT must cite what you found that led there. |
| Overstating confidence | "Clearly" for a finding from one blog post | Check confidence ceilings. Match prose to evidence. |
| Skipping channels | Not checking reports because "probably nothing there" | If the source exists, tap it. No judgment calls on channels. |
| Over-scoping | Treating every tangential entity as a core surface; output bloated with marginally relevant items | Focus on surfaces and entities directly relevant to the topic. Tangential threads go to Adjacent, not the main topology. |
| Re-implementing explore (full mode) | Reading code files directly instead of dispatching /explore | Dispatch /explore for codebase work. It owns surface mapping + tracing. Light mode uses its own inline scanning protocol — this anti-pattern applies only to full mode. |
| Synthesizing from memory | Not re-reading subagent findings before synthesis | Re-read the actual findings. Source anchoring prevents hallucination. |