Skip to content

Let plugins provide agent skills#725

Merged
i386 merged 5 commits into
mainfrom
codex/plugin-skills
May 29, 2026
Merged

Let plugins provide agent skills#725
i386 merged 5 commits into
mainfrom
codex/plugin-skills

Conversation

@i386

@i386 i386 commented May 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Plugins can now ship Agent Skills that mesh-llm installs into supported agent clients. A plugin exposes skills by bundling skill folders in its native plugin archive, for example:

blackboard/
  plugin.toml
  blackboard
  skills/
    blackboard/
      SKILL.md

The mesh plugin installer extracts the archive as before. The new skill installer discovers enabled installed plugins, finds skills/<name>/SKILL.md under their install paths, and copies those skills into agent-specific skill directories. It preserves user-owned skill directories unless the explicit installer is run with --force.

CLI and Agent Behavior

Adds:

mesh-llm skills install
mesh-llm skills install --agent goose --agent codex
mesh-llm skills install --all --dry-run

By default, skills install writes only to detected agent locations. It can also target explicit agents or all supported locations.

Agent launchers now install available plugin skills before launching the target agent:

  • mesh-llm goose installs Goose skills
  • mesh-llm pi installs Pi skills
  • mesh-llm opencode installs OpenCode skills
  • mesh-llm claude installs Claude Code skills

Launch-time install failures warn and continue so the agent session is not blocked by a local skill filesystem issue.

Plugin Author Story

Plugin authors define skills by adding normal Agent Skill directories to their release archive:

skills/<skill-name>/SKILL.md

Skill names are validated for portable lowercase ASCII/hyphen naming. Skills should use relative references and avoid OS-specific absolute paths unless the skill explicitly documents platform requirements.

Example plugin PR: Mesh-LLM/blackboard#1 updates Blackboard to bundle its existing skills/blackboard/SKILL.md in release archives.

Validation

  • cargo fmt --all -- --check
  • cargo check -p mesh-llm-skills
  • cargo check -p mesh-llm-plugin-manager
  • cargo check -p mesh-llm-host-runtime
  • cargo check -p mesh-llm
  • cargo test -p mesh-llm-skills --lib
  • cargo test -p mesh-llm-plugin-manager --lib
  • cargo run -p xtask -- repo-consistency ci-crate-lists
  • cargo run -p xtask -- repo-consistency release-targets

Note: cargo test -p mesh-llm-host-runtime --lib was attempted but did not run because this local checkout is missing the native llama-common static library required by skippy-ffi.

@i386 i386 added the plugin-agents required for agents plugin label May 28, 2026
@i386 i386 marked this pull request as ready for review May 28, 2026 06:48
@i386 i386 requested a review from michaelneale May 28, 2026 06:48
@i386 i386 added this to the 0.70.0 milestone May 28, 2026
i386 added 2 commits May 29, 2026 09:38
# Conflicts:
#	crates/mesh-llm-host-runtime/src/cli/commands/agent_cli.rs
# Conflicts:
#	crates/mesh-llm-host-runtime/src/cli/mod.rs
Comment thread crates/mesh-llm-plugin-manager/Cargo.toml Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new mesh-llm-skills workspace crate plus a plugin-manager discovery layer that lets installed plugins ship Agent Skills (skills/<name>/SKILL.md) which are copied into per-agent skill roots. Introduces a mesh-llm skills install CLI subcommand and wires best-effort skill installs into the goose, pi, opencode, and claude launch commands. Updates workspace, Docker, and CI scripts to include the new crate, and documents the feature in docs/plugins/README.md and docs/CLI.md.

Changes:

  • New mesh-llm-skills crate with skill model, target resolution, marker-based install/update/conflict classification, and dry-run/force support.
  • New plugin_manager::skills module discovering enabled-plugin skills and a new skills install CLI subcommand dispatched from the host runtime.
  • Agent launchers (goose, pi, opencode, claude) call install_skills_for_agent before launching; workspace/Docker/CI helper lists updated for the new crate.

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Cargo.toml / Cargo.lock Register mesh-llm-skills as a workspace member and dependency of plugin-manager.
crates/mesh-llm-skills/Cargo.toml New crate manifest with anyhow, dirs, serde, serde_json, tempfile.
crates/mesh-llm-skills/src/lib.rs Skill data model, target resolution/detection, install/classification logic, marker handling, tests.
crates/mesh-llm-plugin-manager/Cargo.toml Add dependency on mesh-llm-skills.
crates/mesh-llm-plugin-manager/src/lib.rs Re-export skill types and add skills module.
crates/mesh-llm-plugin-manager/src/skills.rs Discover SKILL.md / skills/<name>/SKILL.md in enabled plugins and call into installer.
crates/mesh-llm-host-runtime/src/cli/mod.rs Add Skills command, SkillCommand::Install, and SkillAgentArg enum.
crates/mesh-llm-host-runtime/src/cli/commands/mod.rs Wire Skills command dispatch.
crates/mesh-llm-host-runtime/src/cli/commands/skills.rs Implements explicit install command and best-effort launch-time install helper.
crates/mesh-llm-host-runtime/src/cli/commands/agent_cli.rs Invoke install_skills_for_agent in Goose, Claude, Pi, and OpenCode launch paths.
docker/Dockerfile.client, fly/Dockerfile Explicit COPY entries for the new crate in build stages.
.github/workflows/docker-precheck.yml Add new crate to enforced copy list.
scripts/affected-crates.sh, scripts/plan-clippy-batches.sh Register the new crate in CI helpers and weights.
docs/plugins/README.md, docs/CLI.md Document skill packaging, target table, and skills install switches.

Comment thread crates/mesh-llm-skills/src/lib.rs
Comment thread crates/mesh-llm-host-runtime/src/cli/commands/skills.rs Outdated
Comment thread crates/mesh-llm-plugin-manager/src/skills.rs

@ndizazzo ndizazzo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really interesting idea - specifically, for Blackboard it makes sense to teach agents how to use it intrinsically.

Since this is a generally an improvement that depends on individual plugins adding skills, I think it's safe and doesn't violate the boundaries of what mesh-llm provides... However, I do share the same sentiment that @michaelneale mentioned a few days ago that we want to be deliberate about where/what we provide and at what layer of the stack.

Some minor inline comments/stuff, but generally nothing blocking ✅

Comment thread crates/mesh-llm-skills/src/lib.rs
Comment thread crates/mesh-llm-plugin-manager/Cargo.toml Outdated
Comment thread crates/mesh-llm-host-runtime/src/cli/commands/skills.rs
@i386

i386 commented May 29, 2026

Copy link
Copy Markdown
Collaborator Author

@ndizazzo @michaelneale thanks for the reviews 👍

@i386

i386 commented May 29, 2026

Copy link
Copy Markdown
Collaborator Author

@ndizazzo @michaelneale updated with suggested changes

@i386 i386 merged commit 5b10e37 into main May 29, 2026
35 checks passed
@i386 i386 deleted the codex/plugin-skills branch May 29, 2026 06:19
michaelneale added a commit that referenced this pull request May 29, 2026
* origin/main:
  require clippy before Rust PRs (#741)
  Let plugins provide agent skills (#725)
  Add model metadata to models API (#735)
  Guard release version mismatches (#726)
  Add split readiness doctor (#723)
  Make GPU inventory backend-authoritative with ROCm diagnostics (#677)

# Conflicts:
#	Cargo.lock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

plugin-agents required for agents plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants