git:20260629.39cce3f to git:20260716.10b95db

3 added, 30 removed. Audit A to A.

# Bundled Skills — Agent Instructions
- ## Registering Tool Executors
-
- When you add a new tool executor to a bundled skill's `TOOLS.json`, you **must** also register it in `assistant/src/config/bundled-tool-registry.ts`. Each new executor needs two things:
-
- 1. **A static import** at the top of the file, grouped under the skill's section comment.
- 2. **A registry entry** in the `bundledToolRegistry` map.
-
- ### Example (settings skill)
-
- ```ts
- // ── settings ───────────────────────────────────────────────────────────────────
- import * as avatarUpdate from "./bundled-skills/settings/tools/avatar-update.js";
- // ... other imports ...
-
- export const bundledToolRegistry = new Map<string, SkillToolScript>([
- // settings
- ["settings:tools/avatar-update.ts", avatarUpdate],
- // ... other entries ...
- ]);
- ```
-
- The map key format is `skillDirBasename:executorPath` (e.g. `settings:tools/avatar-update.ts`).
-
- ### Why this is required
-
- `knip` (`lint:unused`) flags dynamically-loaded executor files as unused exports unless they have a static import somewhere in the dependency graph. The registry provides that static import while also enabling the compiled Bun binary to bundle the scripts (since dynamic imports from the filesystem don't work inside `/$bunfs/`).
+ ## Tool Executors
- You can regenerate the full registry with:
+ A tool executor referenced by a bundled skill's `TOOLS.json` (`"executor": "tools/<name>.ts"`) needs no registration step. Bundled skills ship as real files alongside the binary (resolved by `getBundledSkillsDir()` in `src/config/skills.ts`), and the skill script runner dynamically imports the executor from that directory at call time — this works in compiled builds because the files live on disk, not inside `/$bunfs/`. `knip` treats `src/config/bundled-skills/**/tools/**/*.ts` as entry points (see `knip.json`), so executors are not flagged as unused despite having no static importer.
- ```sh
- bun run scripts/generate-bundled-tool-registry.ts
- ```
+ Each executor is a module exporting `run(input, context)` (the `SkillToolScript` contract in `src/tools/skills/script-contract.ts`). Bundled executors declared `execution_target: "host"` run in the daemon process with the full `ToolContext` — including request-bound fields like `proxyToolResolver`.
## Keeping public docs in sync
A bundled skill's `SKILL.md` is its behavioral source of truth. Skills with a public reference page (`https://www.vellum.ai/docs/skills-reference/<slug>`, authored in the **vellum-assistant-platform** repo) are fingerprinted in `scripts/skill-docs-sync.manifest.json` and enforced by `skill-docs-sync-guard.test.ts`.
When you change a documented skill's `SKILL.md`, the guard fails until you reconcile it:
1. Review the named docs page and update it if the behavior changed.
2. Re-record the fingerprint to acknowledge it: `bun run scripts/check-skill-docs-sync.ts --write`.
The fingerprint bump is the acknowledgement — even a trivial wording edit requires one. When a bundled skill **gains** a public docs page, add an entry to the manifest.