From 14f141625a497867566a894da29441897940df6d Mon Sep 17 00:00:00 2001 From: atlas Date: Sun, 26 Jul 2026 20:21:53 +0200 Subject: [PATCH] feat(agent): ship Anthropic's skill-creator plugin by default Agents had the official marketplace configured out of the box but an empty plugin list, so nothing was installed from it unless an agent's own config asked. skill-creator is the one plugin that pays for itself generically: it teaches an agent to write, refine, and evaluate its own skills, which is exactly the capability an agent can't bootstrap by being told about it once in a prompt. Defaulting the option keeps this consistent with claudeMarketplaces, which already ships the official marketplace the same way. Documented the list-option semantics next to both: a per-agent definition replaces the default rather than extending it, so an agent that sets its own plugin list has to name skill-creator alongside its entries. --- docs/turn-loop/config.md | 16 ++++++++++++---- nix/agent-modules/claude-settings.nix | 12 +++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/docs/turn-loop/config.md b/docs/turn-loop/config.md index 116da2a1..931134d1 100644 --- a/docs/turn-loop/config.md +++ b/docs/turn-loop/config.md @@ -158,7 +158,7 @@ Two per-agent `agent.nix` options control this: ```nix hyperhive.claudeMarketplaces = [ "anthropics/claude-plugins-official" ]; # default -hyperhive.claudePlugins = [ "formatter@my-marketplace" ]; # default: [] +hyperhive.claudePlugins = [ "skill-creator@claude-plugins-official" ]; # default hyperhive.claudePluginsAutoUpdate = false; # default ``` @@ -168,9 +168,17 @@ hyperhive.claudePluginsAutoUpdate = false; # def custom marketplaces. Idempotent — re-adding an existing source is a no-op. - **`claudePlugins`** — list of plugin specs passed to - `claude plugin install `. Empty by default. Each spec is - installed on every boot (`install` is expected to be idempotent); - failures log a warning but do not abort boot. + `claude plugin install `. Each spec is installed on every boot + (`install` is expected to be idempotent); failures log a warning but + do not abort boot. Defaults to Anthropic's `skill-creator`, so every + agent can author, refine, and evaluate its own skills without any + per-agent wiring. + +> Both plugin lists follow ordinary NixOS list-option semantics: a +> per-agent definition **replaces** the default, it does not extend it. +> An agent that sets `claudePlugins` and still wants `skill-creator` +> has to list it explicitly alongside its own entries — likewise for +> the official marketplace in `claudeMarketplaces`. - **`claudePluginsAutoUpdate`** — when `true`, runs `claude plugin marketplace update` before installing plugins to pull the latest index. Disabled by default to keep boot times short and diff --git a/nix/agent-modules/claude-settings.nix b/nix/agent-modules/claude-settings.nix index 593a52fa..e384b960 100644 --- a/nix/agent-modules/claude-settings.nix +++ b/nix/agent-modules/claude-settings.nix @@ -209,7 +209,7 @@ in options.hyperhive.claudePlugins = lib.mkOption { type = lib.types.listOf lib.types.str; - default = [ ]; + default = [ "skill-creator@claude-plugins-official" ]; example = [ "formatter@my-marketplace" "thinking-tools@anthropics" @@ -223,6 +223,16 @@ in missing plugin is preferable to a non-serving agent. Rendered to `/etc/hyperhive/claude-plugins.json`; the harness reads it via `plugins::install_configured`. + + Defaults to Anthropic's `skill-creator`, which teaches an agent + to write, refine, and evaluate its own skills — agents get it + out of the box, matching the default marketplace above. + + Note that a per-agent definition REPLACES this default rather + than extending it (ordinary NixOS list-option semantics, same as + `claudeMarketplaces`). An agent that wants extra plugins AND the + default should list `skill-creator@claude-plugins-official` + alongside them. ''; };