Skip to content

Add a Claude Code plugin and document every install path - #11

Merged
bcherry merged 12 commits into
mainfrom
bcherry/sleepy-johnson-r3abzo
Sep 24, 2026
Merged

bcherry merged 12 commits into
mainfrom
bcherry/sleepy-johnson-r3abzo

Conversation

@bcherry

@bcherry bcherry commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR do?

Levels up how LiveKit's skills get distributed. The skills from #10 get more ways to be installed, and they stay current automatically.

  • Claude Code plugin. .claude-plugin/ turns this repo into a marketplace (livekit) with one plugin (livekit). The plugin bundles the seven skills and the LiveKit Docs MCP server. Install: /plugin marketplace add livekit/agent-skills, then /plugin install livekit@livekit.
    • plugin.json has no version on purpose. Without one, Claude Code treats each commit as an update, so skill changes reach users with no release step. claude plugin validate warns about it; that warning is expected.
    • Plugin skills are namespaced (/livekit:building-livekit-agents).
    • Keywords, tags and descriptions are tuned for plugin search (voice agents, voice AI, LiveKit Agents, WebRTC, and so on).
  • No numbered skill versions. metadata.version is removed from every SKILL.md.
    • It was never bumped, and nothing reads it: the plugin tracks commits, the docs index SHA-256 digests, and npx skills the hash in its lock file.
    • validate.py now rejects metadata.version so it doesn't come back, and AGENTS.md explains why.
  • README lists the install paths: the plugin and npx skills add livekit/agent-skills. Claude Code users are told to pick one, since both copies would load.
  • AGENTS.md gets a Distribution section: the channels (including the well-known index from livekit/web#6355), why there's no plugin version, how a removed skill propagates, and that an entry in a marketplace we don't control (such as claude-plugins-official) should pin a full commit sha.
  • notify-skill-changes.yml dispatches agent-skills-updated to internal-actions on every push to skills/**. internal-actions forwards it to livekit/web, which regenerates the docs index. It reuses the SYNC_DISPATCH_TOKEN secret and TARGET_REPO variable that Replace the two skills with seven smaller ones, add evals, and drop the downstream sync #10 left unused, so keep them. The job's GITHUB_TOKEN has no permissions, because it doesn't use it.

The lk skills install path (livekit/livekit-cli#996) is documented separately in #13, so this PR can merge before the CLI ships.

Related:

  • livekit/internal-actions#17 forwards the event to livekit/web.
  • livekit/web#6355 adds the well-known index and the docs page updates.

Checklist

  • Content passes the "freeze forever" test: no flag rosters, schema listings, API surfaces, or version numbers; --help and the docs are referenced instead
  • No time-relative phrasing ("newer CLIs", "as of writing", "is landing")
  • N/A: descriptions. No skill description changed.
  • uv run evals/validate.py passes
  • N/A: trigger eval. No skill description changed; the only skill edit removes the metadata.version line.
  • N/A: output eval. No skill body is new or rewritten.

Eval results

n/a. The only skill change is removing metadata.version from frontmatter, which doesn't affect routing.

Manual checks:

  • claude plugin validate . passes; the only warning is the missing version.
  • Installing from a local marketplace loads all seven skills, and claude mcp list shows plugin:livekit:livekit-docs connected.
  • validate.py fails on a skill with metadata.version set, and passes on the set as committed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Base automatically changed from bcherry/skills-refresh to main September 24, 2026 05:38
Makes the repo a Claude Code marketplace (livekit) with one plugin
(livekit) that bundles the six skills and the LiveKit Docs MCP server.
plugin.json has no version so each commit reaches users as an update.

Also dispatches skill changes to the docs repo, which rebuilds the
well-known skills index, and documents all three install paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
Leads with "voice agents" and adds the terms people search for:
LiveKit Agents, voice AI, conversational AI, WebRTC, STT/TTS, agent
testing, and the SDK languages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
…matter

- README: `lk skills install` as the first install option.
- notify-skill-changes.yml dispatches agent-skills-updated to
  internal-actions, which forwards it to livekit/web to rebuild the
  well-known skills index.
- testing-livekit-agents: escape the apostrophe in its single-quoted
  description. It was invalid YAML, so strict parsers (lk skills,
  npx skills) rejected the skill. validate.py now catches this.
- Plugin descriptions mention deployment now that operating exists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
@bcherry
bcherry force-pushed the bcherry/sleepy-johnson-r3abzo branch from dd0d8fd to 9355da9 Compare September 24, 2026 05:40
Comment thread .github/workflows/notify-skill-changes.yml Fixed
The job authenticates with SYNC_DISPATCH_TOKEN and never uses
GITHUB_TOKEN, so it needs no permissions. Resolves the CodeQL
workflow-permissions finding.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
Comment thread README.md
Claude Code loads plugin skills and project skills side by side, so
installing both puts every description in context twice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
metadata.version was never bumped and nothing reads it: the plugin
tracks commits, the docs index SHA-256 digests, and lk skills / npx
skills the hash in their lock files. validate.py now rejects it so it
doesn't come back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
Claude Code only auto-updates official marketplaces unless the user
turns it on, so say how, instead of claiming background updates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
lk skills hasn't shipped, so this PR documents the Claude Code plugin
and npx skills only. The LiveKit CLI install path follows separately.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhopX4p6rY3MNkNQ1M832x
@bcherry
bcherry merged commit 5d7488b into main Sep 24, 2026
4 of 5 checks passed
@bcherry
bcherry deleted the bcherry/sleepy-johnson-r3abzo branch September 24, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants