INSTALL.agent.md
September 2, 2026 · View on GitHub
You are an agent installing skillsearch into WorkBuddy — the host you are running in. A human asked for this and will read your report. Follow this file top to bottom.
The repository-root INSTALL.agent.md routes WorkBuddy installs here.
Rules you must follow throughout
- Show before you change. Before writing or editing any config file, show the user the exact diff (or the full new file if it did not exist) and wait for their go-ahead unless they already told you to proceed.
- Back up first, with a timestamp. Before editing an existing config
file, copy it to
<name>.bak-skillsearch.<ISO timestamp>next to itself — timestamped, so a second install never clobbers the first backup. - Merge, never replace. Add keys into existing JSON; do not rewrite whole files. If an existing config file fails to parse, stop and tell the user — do not overwrite it, do not "fix" it.
- Stop on ambiguity. If host detection is unclear, ask instead of guessing. Values like the marketplace name and the version are read from files, never invented — each step below says where.
- Report each step, and never route around a failure. After each numbered step, tell the user in one line what happened. If a step fails, stop and report it exactly — do not skip it, and do not invent an alternative path.
- Finish with the verification section. An install without a passing verification is not done — report exactly which step failed.
Step 0 — detect the host
| Host | It is this host if… |
|---|---|
| WorkBuddy | ~/.workbuddy-ai/settings.json exists, or WorkBuddy AI.app is installed, or your own hook payloads carry "client": "WorkBuddy" |
Note where this repository is checked out (clone it if the user gave you only
the URL), then change into its skillcorpus_plugin/ directory. Every relative
path and command below starts there.
WorkBuddy
WorkBuddy discovers this repository through the root
.codebuddy-plugin/marketplace.json. Use the host's marketplace installer;
do not edit settings.json, installed_plugins.json, or
known_marketplaces.json by hand.
- Open Experts · Skills · Connectors → Skills → Plugin Marketplace.
- Add
EverMind-AI/SkillCorpusas a marketplace source. A git URL or release zip works; do not use a local directory, which is not persistent across a restart on WorkBuddy 5.3.13. - Before installation, confirm
CODEBUDDY_DISABLE_EXTENDED_PLUGIN_HOOKSis not1in the environment that launches WorkBuddy. If it is, extended plugin hooks are disabled globally: clear it from that launcher and fully restart WorkBuddy before continuing. - In the
skillcorpusmarketplace, install and enable Skill Search (skillsearch, version read from its plugin manifest). - Fully quit and reopen WorkBuddy.
If the marketplace or plugin is not discovered, stop and report the exact UI error and host logs. Do not route around discovery by copying files into the cache or editing WorkBuddy's internal JSON records.
Network and optional model configuration
Configuration lives in
~/.workbuddy-ai/plugins/data/skillsearch-<market>/config.json (the
environment, set per-command in hooks.json, wins over it). The hook normally
reads <market> from its installed cache path; non-standard launchers may set
SKILLSEARCH_MARKETPLACE, or set SKILLSEARCH_DATA_DIR to override the whole
state directory. Existing marketplace installs continue using the name parsed
from their current path.
- A model for the rewriter and gate: better selection, two small model calls per retrieving turn — spent inside the silence between the user pressing enter and the reply starting, which this host does not indicate. Ask which route to use; leave empty if they don't care.
- Remote sources are enabled by default: EverMind SkillHub
(
https://skillhub.evermind.ai), ClawHub, and skillhub.cn each receive the retrieval query and may download candidate skill content to disk. State this plainly during installation. The user can set any endpoint to an empty string to disable that source, or clear all three for local-only operation.
Verification — definition of done
This plugin has two modes and they deliver skills by different routes, so they
have different definitions of done. Check which mode is configured before
verifying anything — if config.json sets no mode, it is on_demand,
which has been the default since 0.3.0. Verifying the hook log on an
on_demand install checks a path that is deliberately inert and proves
nothing.
Step 1 applies to both:
- Discovered after restart: the plugin still appears installed and enabled.
Some WorkBuddy builds create a live
.in_use/<pid>marker in the install directory; treat that marker as optional diagnostic evidence, not as a requirement.
on_demand (the default)
The tool reaches the model over a local stdio MCP server, which WorkBuddy launches from the plugin manifest. There is no per-turn injection in this mode.
- MCP server healthy: in WorkBuddy's MCP view, the
skillsearchserver initialised — not a failed entry, not restarting, no repeating error. - Tool visible: the model's tool list includes
skill_search. - Model calls it: create a fresh task and ask "how do I extract tables
from a scanned PDF invoice into CSV?". Confirm the agent called
skill_searchon its own and that the call returnedpdf-tables. - Hook stayed quiet: the same turn added no injecting line to
~/.workbuddy-ai/plugins/data/skillsearch-skillcorpus/skillsearch.log. Both paths firing in one turn is a defect, not a bonus. - No-match: ask
zxqv-7319,请只原样回复这段字符串and confirm the agent did not callskill_search. If it called anyway, the tool must answer no-match without interrupting the turn.
auto
- MCP server alive but empty: the server still initialises — it serves in both modes on purpose — and its tool list is empty. A server that exits leaves a failed MCP entry or restart churn beside a working hook, which is the bug fixed in 0.3.0 and worth re-checking here.
- Hook runs: create a fresh task and ask the same PDF question. Confirm
the new line in
~/.workbuddy-ai/plugins/data/skillsearch-skillcorpus/skillsearch.logrecords the turn and its selected skills/source diagnostics, and thatpdf-tableswas injected. - No tool call:
skill_searchis not offered and not called. - No-match stays empty: ask
zxqv-7319,请只原样回复这段字符串and confirm the log recordsinjected_chars: 0. Do not use a weather question: the public marketplaces contain real weather skills.
If a check fails, report the failed step, the log entry, and the marketplace
and plugin versions. Do not invoke hook.mjs or mcp.mjs by hand; that tests
the bundle, not whether WorkBuddy loaded it. The full case list, including
what to record, is ../tests/host-e2e/cases.md.
Uninstall
- Uninstall Skill Search from the
skillcorpusmarketplace in WorkBuddy. - Remove the marketplace source if no other SkillCorpus plugin uses it.
- Fully quit and reopen WorkBuddy, then confirm the plugin is no longer
installed or enabled and that a fresh task produces no new Skill Search log
entry. A stale or absent
.in_use/<pid>marker is not authoritative. - Offer to delete its state directory
(
~/.workbuddy-ai/plugins/data/skillsearch-skillcorpus/) and bundle cache (~/.workbuddy-ai/skillsearch-bundles/). These contain only plugin cache, configuration, and logs; leave them in place unless the user asks.