Invite & Earn

How invite rewards work

Share your invite link. When a friend registers through it and tops up, you receive the displayed reward on their subsequent top-ups.

Claude Code plugins: install, verify and remove

Build a local Claude Code plugin with one skill, verify its installation scope and output, then learn how to disable, update and remove the package.

Contents
Claude Code plugins: install, verify and remove

A plugin packages instructions or tools you want to carry between projects. You can test installation without trusting an unfamiliar third-party package or its hooks: create one explicitly invoked skill that returns a known marker.

This walkthrough assumes macOS/Linux and a configured Claude Code client. Windows users can create the same JSON and Markdown in an editor; the shell examples use Bash or Zsh. A model response needs a working connection. Structural validation is a separate check.

Create the local package

Start in a new empty directory:

mkdir -p plugin-lab/.claude-plugin
mkdir -p plugin-lab/plugins/load-check/.claude-plugin
mkdir -p plugin-lab/plugins/load-check/skills/ping

Save the manifest in plugin-lab/plugins/load-check/.claude-plugin/plugin.json:

{
  "name": "load-check",
  "version": "1.0.0",
  "description": "Local plugin loading exercise"
}

Save the skill in plugin-lab/plugins/load-check/skills/ping/SKILL.md:

---
description: Return a marker to verify this local plugin is loaded.
disable-model-invocation: true
---

Return exactly PLUGIN_READY. Do not use tools or change files.

Save the marketplace definition in plugin-lab/.claude-plugin/marketplace.json:

{
  "name": "local-load-lab",
  "owner": {"name": "Local developer"},
  "plugins": [
    {"name": "load-check", "source": "./plugins/load-check"}
  ]
}

The marketplace points to the package. Within the package, .claude-plugin holds the manifest and skills sits beside it. Putting skills inside .claude-plugin violates the documented plugin layout.

Validate and install

From your original directory, run:

claude --version
claude plugin validate ./plugin-lab/plugins/load-check
claude plugin validate ./plugin-lab
claude

Fix the specific file if validation fails. Valid structure alone says nothing about instruction quality or the safety of an arbitrary plugin.

In the Claude Code session, add the local marketplace and install the package:

/plugin marketplace add ./plugin-lab
/plugin install load-check@local-load-lab

Choose Local in the installation panel to scope this exercise to the current project. Read where the setting will be written before confirming. If the summary requests a reload, run /reload-plugins. The official marketplace guide explains this sequence.

Verify the namespaced skill

/plugin list
/load-check:ping

The first command should list the installed package; the second should return PLUGIN_READY. The full name /load-check:ping includes the plugin namespace, distinguishing it from another package’s skill with the same name.

Check your working directory separately: this skill should not change files. “Do not use tools” is a model instruction, not a separate system permission boundary. Use Claude Code permissions to control access.

If the command is missing, check the manifest name, the skills/ping/SKILL.md location, installation scope, enabled state and reload requirement, in that order. Keep marketplace loading and a --plugin-dir launch as separate tests.

Disable, update and uninstall

claude plugin disable load-check@local-load-lab --scope local
claude plugin enable load-check@local-load-lab --scope local
claude plugin update load-check@local-load-lab --scope local
claude plugin uninstall load-check@local-load-lab --scope local

Run these commands individually from the same project and check each result. --scope local matches your chosen installation scope; update and uninstall default to user scope without it. Restart after updating if the CLI requests it. After disabling or uninstalling, open a new session and confirm the skill is unavailable; after enabling it, repeat the marker test.

To test a content change, edit the source skill’s marker and increase the package version, then update the marketplace and installed plugin using the plugin management instructions. Editing the original file may not change an installed copy held in a cache.

Before installing someone else’s package

Inspect the package first. A text skill, a shell hook and an MCP server have different consequences. Review commands, external service addresses and instructions requesting secrets. Do not grant extra permissions merely to silence an installation error.

Repeat the same short cycle in a working project: known scope, visible component, expected action, file check and a clear way to disable it. See the plugin reference for the complete format and validator capabilities.

Ready to optimize your LLM workflow?

Join thousands of developers building faster, smarter, and more cost-effective AI applications with BetterToken.

Get Started for Free