Skip to main content

docs-research

Use when anything about OpenClaw is about to be stated or recommended that could have changed — a config key, a CLI flag or subcommand spelling, an auth method, a release channel, a current version, a model name, whether a feature exists or is deprecated — and whenever a claim needs a citation, two sources disagree, an instance's own documentation looks older than the project's, or the situation is offline and it must be decided what may still be said without a live source.

Source facts

Repository
Agents-Store/opencode-plugins
Last source activity
October 3, 2026 at 23:16
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
docs-research
description
Use when anything about OpenClaw is about to be stated or recommended that could have changed — a config key, a CLI flag or subcommand spelling, an auth method, a release channel, a current version, a model name, whether a feature exists or is deprecated — and whenever a claim needs a citation, two sources disagree, an instance's own documentation looks older than the project's, or the situation is offline and it must be decided what may still be said without a live source.
# Docs research Two sources, two different questions, not interchangeable. | Source | Answers | Cost and caveat | |---|---|---| | the instance's own docs command, through `ocexec.py <instance> -- docs "<query>"` | **what my runtime thinks** — the vocabulary, flags and defaults of the version actually installed | not free: it loads the config and the plugins, so on a `degraded` instance it can fail for reasons unrelated to your question. On an old instance the answer is old by exactly the age of that instance | | the project documentation site | **what is recommended now** | says nothing about whether this instance supports it | **Divergence between them is a finding, not an obstacle.** An instance whose own docs describe a flag the site no longer documents is an instance running behind — record it, do not paper over it. ## Which source, when - **"How does this work on my box?"** → the box first. Its `--help`, its docs command, its config, its catalogue. The site cannot tell you what this build supports. - **Any recommendation to change something** → a live source is mandatory. Memory does not qualify, and neither does an in-box doc page when the change is "adopt the current recommendation". - **Neither network nor CLI reachable** → **unverified-knowledge mode**: observations yes, recommendations no. Say what was observed on the host, state that no source could be reached, and stop. A recommendation with no source is the failure mode this whole skill exists to prevent. ## Fetch ladder Use the first tool actually available in the session; detect availability, never assume it. Whatever answers, **quote the URL** in the finding. 1. A connected search-and-scrape MCP tool (full-page scrape → markdown, or a schema-driven extract). 2. A semantic code-aware search tool, for "find the page that explains X". 3. A ranked-search or answer-with-citations tool, for "what is the current recommended way to X". 4. A clean-reader tool, for a known URL that other tools rendered empty. 5. A library-documentation tool, for the **surrounding** CLIs — the secret-injection CLI, the model vendors' CLIs, the container runtime — rather than OpenClaw's own site. 6. The built-in web fetch and search, always available, the floor of the ladder. When a page returns empty, it is usually client-rendered: retry with a longer wait, or move one step down the ladder. A tool returning nothing is not evidence that the page says nothing. **Two shortcuts that need no rendering at all** — every page of the project site is also served as Markdown: append `.md` to its URL, or send `Accept: text/markdown`. And the site publishes a flat index of every page at `https://docs.openclaw.ai/llms.txt` — fetch that to find the page, then fetch the page as Markdown, instead of guessing a path. On the box, `docs "<query>"` searches the same live index from the CLI and is the first thing to try when the network is the unreliable part. ## Documentation map Entry points; if a path 404s, search within the site rather than guessing a new path. | Topic | Where | |---|---| | docs home, configuration reference | `https://docs.openclaw.ai/` | | gateway authentication, providers | `https://docs.openclaw.ai/gateway/authentication` | | OAuth concepts, profiles, PKCE | `https://docs.openclaw.ai/concepts/oauth` | | model providers, refs and runtimes | `https://docs.openclaw.ai/concepts/model-providers` | | CLI backends | `https://docs.openclaw.ai/gateway/cli-backends` | | the models subcommand | `https://docs.openclaw.ai/cli/models` | | every page, flat | `https://docs.openclaw.ai/llms.txt` (a page as Markdown: add `.md` to its URL) | | memory and embeddings | `https://docs.openclaw.ai/cli/memory`, `https://docs.openclaw.ai/reference/memory-config` | | skills and plugins loading | `https://docs.openclaw.ai/` (search "skills load", "plugins load paths") | | health endpoints and monitoring | `https://docs.openclaw.ai/` (search "healthz", "readyz") | | doctor, lint and post-upgrade, exit codes | `https://docs.openclaw.ai/cli/doctor/lint` | | config keys that moved between releases | `https://docs.openclaw.ai/gateway/doctor/config-migrations` | | release channels | `https://docs.openclaw.ai/install/development-channels` | | upgrades, the bridge for old installations, rollback | `https://docs.openclaw.ai/install/updating` | | backups | `https://docs.openclaw.ai/cli/backup` | | releases and changelog | `https://github.com/openclaw/openclaw/releases` | ## Version truth — three sources, three questions This is where confident guessing does the most damage, so each fact has exactly one authority. | Question | Authority | Never use | |---|---|---| | what does channel X point at **right now**? | the package registry **dist-tags** | version ordering over the release list | | when was that version **promoted** (the soak clock)? | the **release entry's date** for that exact version | the registry publish date — a build is published to a pre-release tag first and promoted later **without a version bump** | | what is **actually running**? | the **image digest** of the running container | the tag it was pulled by | Three wrong methods that all look reasonable and all ship regularly: - **Highest non-prerelease version.** Correction releases are published as `<version>-1`, `<version>-2`; a hyphen suffix parses as a pre-release, so a correct semver maximum discards exactly the releases that fix the one it keeps. - **Newest non-prerelease release entry by date.** The trailing channel is also published as a non-prerelease and lags the main line by about a month. This hands back a month-old fleet-wide rollback while you believe you are current. - **Comparing publish dates across the two sources.** They disagree by weeks, and the disagreement is the promotion mechanism, not an error. `${CLAUDE_PLUGIN_ROOT}/scripts/versions.py` implements all of this, including the soak gate and the digest comparison. Use it rather than re-deriving; if you must state a version in prose, state it as the script's output, dated. Moving tags — the channel-named ones — are rebuilt on a schedule under the same name. Pin a plain version or a digest for any mutation (`gate.is_moving_tag`, `gate.pin`). ## Model names - **Zero real model ids in a recommendation position.** Not in this repository, not in a skill, not in a report. Model ids expire, get renamed and change price; a frozen one is a defect with a long fuse. - Write the **shape** instead: `<provider>/<model-id>`, with the runtime override attached separately. When a literal is unavoidable in an illustration, it must be visibly fake and inside a comment marked as example-only. - **Procedure for a real name**: read this instance's catalogue — `ocexec.py <instance> --json -- models list` — and take the id from there. - **Substitution rule**: any model id entering a diff must be an **echo from the box** — present in that instance's catalogue. An id that came from memory, from another instance, or from a documentation page is not an echo (`fleet.config.model-id-unverified`). - Pin ids; do not follow a moving alias. An automatic move to a new model on a production fleet is a change in price and behaviour with no change in the config. ## Common mistakes - Quoting a flag, a subcommand spelling or a config key from memory because it "has always been that". Spellings drift between versions, and this fleet spans several. - Treating the in-box docs command as free. It loads config and plugins; on a broken instance it fails for its own reasons and the failure gets misread as an answer. - Resolving "the current version" from the release list because the registry felt like an implementation detail. It is the only mechanical statement of where a channel points. - Reporting a recommendation with no URL. A finding outside the runtime's own check contract needs the citation quoted in the report — no citation, no action. - Letting a documentation page override an observation. The site describes the current release; the box describes what is running. When they differ, both go in the report.
View on GitHub