Agent skill

Writing Plugins

by nukeop in nukeop/nuclear

A skill your agent uses when writing, scaffolding, or modifying Nuclear plugins.

AGPL-3.0Auto-check passedAgent Workflows

Install Writing Plugins

skills CLI
$ npx skills add nukeop/nuclear --skill writing-plugins -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nukeop/nuclear writing-plugins --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/nukeop/nuclear.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/writing-plugins .claude/skills/writing-plugins && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
writing-plugins
GitHub stars
19k
Token cost
~825 tokens
SKILL.md length
95 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
AGPL-3.0

At a glance

A skill your agent uses when writing, scaffolding, or modifying Nuclear plugins.

  • Works in 4 steps: Create a GitHub repo with the plugin code → Add .github/workflows/release.yml → Tag release: git tag v0.1.0 && git push… → …
  • Modifying Nuclear plugins
  • SKILL.md covers Structure, Manifest (package.json), Entry Point and Provider Types, plus 2 more sections
  • Calls git

What it does

Writing Plugins is an agent skill from nukeop/nuclear. Use when writing, scaffolding, or modifying Nuclear plugins. Covers plugin structure, manifest, entry point, provider types, available APIs, and publishing. Trigger phrases include "create a plugin", "write a plugin", "plugin scaffold", "streaming provider", "metadata provider".

Its SKILL.md is about 830 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Project scaffolding and Hooks and plugins. It works with Model Context Protocol. The repository describes itself as: Streaming music player that finds free music for you. The licence is AGPL-3.0.

When your agent uses it

  • Modifying Nuclear plugins
  • Phrases include create a plugin
  • Plugin scaffold
  • Streaming provider

Example prompts

  • “create a plugin”
  • “write a plugin”
  • “plugin scaffold”
  • “/writing-plugins”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Create a GitHub repo with the plugin code
  2. Add .github/workflows/release.yml
  3. Tag release: git tag v0.1.0 && git push origin v0.1.0
  4. Submit PR to NuclearPlayer/plugin-registry adding your plugin to plugins.json

What it can do on your machine

Read from SKILL.md and the folder at commit 27904e9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Writing Plugins loads about 825 tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 95 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~74
When it runs · the whole SKILL.md, loaded when a task matches
~825

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from nukeop/nuclear at commit 27904e9, republished under its AGPL-3.0 licence (© nukeop). 95 words, ~825 tokens.

Download SKILL.mdSave it as .claude/skills/writing-plugins/SKILL.md (or your agent's skills folder).
name
writing-plugins
description
Use when writing, scaffolding, or modifying Nuclear plugins. Covers plugin structure, manifest, entry point, provider types, available APIs, and publishing. Trigger phrases include "create a plugin", "write a plugin", "plugin scaffold", "streaming provider", "metadata provider".

Writing Nuclear Plugins

Plugins are standalone repos compiled in-browser via esbuild-wasm.

Structure

my-plugin/
  package.json      # Manifest with nuclear metadata
  src/
    index.ts        # Entry point, default exports NuclearPlugin

Manifest (package.json)

json
{
  "name": "nuclear-plugin-example",
  "version": "0.1.0",
  "description": "What this plugin does",
  "author": "Your Name",
  "license": "AGPL-3.0-only",
  "main": "src/index.ts",
  "type": "module",
  "nuclear": {
    "displayName": "Example Plugin",
    "category": "streaming",
    "icon": { "type": "link", "link": "https://example.com/icon.svg" }
  },
  "dependencies": {
    "@nuclearplayer/plugin-sdk": "^1.1.0"
  }
}

Categories: streaming, metadata, lyrics

Entry Point

typescript
import type { NuclearPlugin, NuclearPluginAPI } from '@nuclearplayer/plugin-sdk';

const plugin: NuclearPlugin = {
  onLoad(api: NuclearPluginAPI) {},
  onEnable(api: NuclearPluginAPI) {
    // Register providers
  },
  onDisable() {
    // Unregister providers
  },
  onUnload() {},
};

export default plugin;

Provider Types

Streaming - resolve tracks to playable audio:

typescript
const provider: StreamingProvider = {
  id: 'my-streaming',
  kind: 'streaming',
  name: 'My Streaming',
  async searchForTrack(artist, title, album?) { /* return StreamCandidate[] */ },
  async getStreamUrl(candidateId) { /* return Stream */ },
};

api.Providers.register(provider);
api.Providers.unregister('my-streaming');

Metadata - search artists/albums, fetch details:

typescript
const provider: MetadataProvider = {
  id: 'my-metadata',
  kind: 'metadata',
  name: 'My Metadata',
  searchCapabilities: ['artists', 'albums'],
  streamingProviderId: 'my-streaming', // Optional: locks streaming to this provider
  async searchArtists(params) { /* ... */ },
  async searchAlbums(params) { /* ... */ },
  async fetchArtistBio(id) { /* ... */ },
  async fetchAlbumDetails(id) { /* ... */ },
};

Available APIs

  • api.Providers - register/unregister providers
  • api.Settings - plugin settings storage
  • api.Http - fetch wrapper
  • api.Ytdlp - yt-dlp integration
  • api.Queue - playback queue control
  • api.Metadata - search music metadata
  • api.Streaming - resolve streams
  • api.Logger - logging (trace/debug/info/warn/error)

Publishing

  1. Create a GitHub repo with the plugin code
  2. Add .github/workflows/release.yml:
yaml
name: Release
on:
  push:
    tags: ['v*']
jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
      - run: zip -r plugin.zip src package.json README.md
      - uses: softprops/action-gh-release@v2
        with:
          files: plugin.zip
          generate_release_notes: true
  1. Tag release: git tag v0.1.0 && git push origin v0.1.0
  2. Submit PR to NuclearPlayer/plugin-registry adding your plugin to plugins.json

© nukeop, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/writing-plugins of nukeop/nuclear.

Open the folder on GitHubat commit 27904e9

Compare with similar skills

Writing Plugins next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Writing Plugins compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Writing Plugins this skillnukeop/nuclear19k—~825Automated safety check: PassAGPL-3.0
Create Harnessruvnet/metaharness688—~777Automated safety check: PassMIT
Claude Code Plugin Structureanthropics/claude-plugins-official37k10 repos~3.4kAutomated safety check: PassApache-2.0
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence
Chatgpt AppsHaohao-end/openagent8071 repos~4.9kAutomated safety check: PassApache-2.0
Agent Setup Health Audittw93/Waza7.2k—~5.2kAutomated safety check: NotesMIT

Similar skills

  • Create Harness

    ruvnet/metaharness

    Scaffold your own focused AI agent harness — pick host (Claude Code, Codex, pi.dev, Hermes), template, agents, skills, and ship a npm-publishable harness with its own npx CLI.

    688 GitHub stars~777 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Claude Code Plugin Structure

    anthropics/claude-plugins-official

    Official

    Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.

    37k GitHub starsUsed in 10 repos~3.4k tokens
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Chatgpt Apps

    Haohao-end/openagent

    Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI.

    807 GitHub starsUsed in 1 repo~4.9k tokens
    Agent WorkflowsAuto-check passed
  • Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.

    7.2k GitHub stars~5.2k tokensUpdated today
    Agent WorkflowsAuto-check: notes
  • OpenCode Plugin Creator

    Devin-AXIS/iPolloWork

    Scaffolds an OpenCode plugin for iPolloWork with the right async factory shape, zod-based tool definitions and hook registration, and explains where to place and register it.

    6.7k GitHub starsUsed in 1 repo~1.3k tokens
    Agent WorkflowsAuto-check passed

More from nukeop/nuclear

  • Making Demo Videos

    nukeop/nuclear

    A skill your agent uses when making a demo, tutorial, or feature video of Nuclear.

    19k GitHub stars~892 tokensUpdated yesterday
    Auto-check passed
  • Creating Components

    nukeop/nuclear

    A skill your agent uses when creating new UI components in packages/ui.

    19k GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Host Pattern

    nukeop/nuclear

    A skill your agent uses when adding a new domain to Nuclear's plugin system, or implementing a host.

    19k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Writing Docs

    nukeop/nuclear

    A skill your agent uses when writing or editing documentation in packages/docs.

    19k GitHub stars~907 tokensUpdated yesterday
    Auto-check passed

Questions about Writing Plugins

What does Writing Plugins do?

A skill your agent uses when writing, scaffolding, or modifying Nuclear plugins. Writing Plugins is an agent skill from nukeop/nuclear. Use when writing, scaffolding, or modifying Nuclear plugins.

When should I use Writing Plugins?

Writing Plugins fits situations like: modifying Nuclear plugins; phrases include create a plugin; plugin scaffold; streaming provider.

How do I install Writing Plugins in Claude Code?

Run `npx skills add nukeop/nuclear --skill writing-plugins -a claude-code`. Or copy the skill folder (.agents/skills/writing-plugins in nukeop/nuclear) into .claude/skills/writing-plugins in your project. Claude Code loads it when a task matches its description.

How do I install Writing Plugins in Codex?

Run `npx skills add nukeop/nuclear --skill writing-plugins -a codex`. Or copy the skill folder (.agents/skills/writing-plugins in nukeop/nuclear) into .agents/skills/writing-plugins in your project. Codex loads it when a task matches its description.

Can I use Writing Plugins in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nukeop/nuclear --skill writing-plugins -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-plugins, .gemini/skills/writing-plugins, .github/skills/writing-plugins and .opencode/skills/writing-plugins in your project.

What does Writing Plugins need to run?

Going by SKILL.md and its folder, Writing Plugins needs the command-line tools its instructions call (git).

Does Writing Plugins access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Writing Plugins safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Writing Plugins use?

Writing Plugins is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Writing Plugins use?

About 825 tokens (SKILL.md is roughly 3.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Writing Plugins?

Skills that share tags, products or a category with Writing Plugins: Create Harness (ruvnet/metaharness, 688 stars), Claude Code Plugin Structure (anthropics/claude-plugins-official, 37k stars), Crush Configuration (charmbracelet/crush, 29k stars) and Chatgpt Apps (Haohao-end/openagent, 807 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Writing Plugins?

nukeop (a GitHub user) maintains it in nukeop/nuclear, which has 18,611 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.

Source: nukeop/nuclear on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.