Agent skill

Create Mod

by ruvnet in ruvnet/ruflo

Scaffold a Claude Code mod (a plugin with a function-hooks module) from ruflo's governed template — hybrid hooks.json with a classic fallback, a host adapter over literal $ calls, userConfig…

MITAuto-check: notesAgent Workflows

Install Create Mod

skills CLI
$ npx skills add ruvnet/ruflo --skill create-mod -a claude-code

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

GitHub CLI
$ gh skill install ruvnet/ruflo create-mod --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/ruvnet/ruflo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ruflo-plugin-creator/skills/create-mod .claude/skills/create-mod && 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
create-mod
GitHub stars
74k
Token cost
~984 tokens
SKILL.md length
407 words
Files
1
Skills in repo
264
Repo updated
First seen
Licence
MIT

At a glance

Scaffold a Claude Code mod (a plugin with a function-hooks module) from ruflo's governed template — hybrid hooks.json with a classic fallback, a host adapter over literal $ calls, userConfig…

  • Works in 8 steps: Name it. kebab-case . Commands it… → Copy the template… → Keep the status contract.… → …
  • The user asks for a mod
  • Calls claude and npx
  • A function hook

What it does

Create Mod is an agent skill from ruvnet/ruflo. Scaffold a Claude Code mod (a plugin with a function-hooks module) from ruflo's governed template — hybrid hooks.json with a classic fallback, a host adapter over literal $ calls, userConfig options, engine-kit tests and a tsconfig — then validate and test it. Use when the user asks for a mod, a function hook, or wants Claude Code to modify itself.

Its SKILL.md is about 980 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 Hooks and plugins. It works with TypeScript. The repository describes itself as: 🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory…. The licence is MIT.

When your agent uses it

  • The user asks for a mod
  • A function hook
  • Wants Claude Code to modify itself

Example prompts

  • “/create-mod”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Bash, Read, Write, Edit

Workflow steps

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

  1. Name it. kebab-case . Commands it registers are namespaced -; never register a built-in's name (/diff, /help) or another plugin's (/ruos*…
  2. Copy the template plugins/ruflo-plugin-creator/templates/mod/ to the target folder. Replace my-mod everywhere (plugin.json name, the…
  3. Keep the status contract. hooks/status.ts writes .claude-flow/-mod/status.json, the file the console's Mods section reads. The folder must…
  4. Write the behaviour in pure functions taking the Host (see hooks/host.ts). In register.ts, build the host from literal $.noun.method(...)…
  5. Keep the rules
  6. Keep the fallback honest. hooks.json is hybrid: the classic command hook runs everywhere, the module only where function hooks are on…
  7. Validate and test
  8. Ship it in a plugin marketplace (marketplace.json entry), installed with /plugin install @ and picked up with /reload-plugins. If…

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • Edit

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • claude
    • npx

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

  • Network

    No URLs in SKILL.md. Its commands use npx, 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

Create Mod loads about 984 tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 407 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, Edit

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 ruvnet/ruflo at commit de590e1, republished under its MIT licence (© ruvnet). 407 words, ~984 tokens.

Download SKILL.mdSave it as .claude/skills/create-mod/SKILL.md (or your agent's skills folder).
name
create-mod
description
Scaffold a Claude Code mod (a plugin with a function-hooks module) from ruflo's governed template — hybrid hooks.json with a classic fallback, a host adapter over literal $ calls, userConfig options, engine-kit tests and a tsconfig — then validate and test it. Use when the user asks for a mod, a function hook, or wants Claude Code to modify itself.
allowed-tools
Bash, Read, Write, Edit
argument-hint
<mod-name>

Create Mod

Scaffold a mod the governed way, instead of an ad-hoc one: the template already follows the rules ruflo's own mod (ADR-404) was reviewed against.

Steps

  1. Name it. kebab-case <name>. Commands it registers are namespaced <name>-<verb>; never register a built-in's name (/diff, /help) or another plugin's (/ruos*, ruflo-*).
  2. Copy the template plugins/ruflo-plugin-creator/templates/mod/ to the target folder. Replace my-mod everywhere (plugin.json name, the command, MY_MOD_ACTIVE → <NAME>_ACTIVE in both hooks/register.ts and hooks/classic.cjs).
  3. Keep the status contract. hooks/status.ts writes .claude-flow/<name>-mod/status.json, the file the console's Mods section reads. The folder must be <name>-mod (lowercase, digits, hyphens, at most 41 characters): replace my-mod in STATUS_PATH with <name>-mod. Fields: version: 1 (required, anything else is ignored), summary (one line), modVersion, guard (boolean), calls (a number, not a per-tool object), blocked (number), lastDenied (a short reason, only once the mod has refused something), plus updatedMs/startedMs. Other fields are not shown. tests/status.test.ts asserts the shape.
  4. Write the behaviour in pure functions taking the Host (see hooks/host.ts). In register.ts, build the host from literal $.noun.method(...) calls only — the engine reads a module's $ uses off its source, and claude plugin validate refuses $ passed around, computed ($[noun]), or deeper than $.noun.method(input).
  5. Keep the rules:
    • Observe with const r = await next(e); …; return r; rewrite with next({ ...e, … }); answer ({ deny }) only when you mean to stop the chain.
    • On tool.check, only ever tighten (the stricter of await next(e) and yours); never answer allow of your own.
    • Wrap every $ call so a refusal degrades instead of failing the turn (admins can withhold any $ affordance).
    • No $.process.run / $.http.fetch built from event input. Nothing slow on the hot path (about 10 s per dispatch).
    • Anything that must survive a hot reload goes in $.store / $.state, not module variables.
    • Options come from userConfig in plugin.json, not environment variables.
  6. Keep the fallback honest. hooks.json is hybrid: the classic command hook runs everywhere, the module only where function hooks are on (Claude Code >= 2.1.287; 2.1.277+ with CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1). The module sets <NAME>_ACTIVE at session.start; the classic script exits early when it sees it, so nothing fires twice.
  7. Validate and test:
    bash
    claude plugin validate <dir>      # lists hooked events, $ calls, env reads/writes
    claude plugin test <dir>          # tests/*.test.ts on the engine kit
    claude -p --plugin-dir <dir> "/<name>-status"   # writes .claude-plugin/types/ and proves a live load
    npx tsc -p <dir>                  # against those generated types
  8. Ship it in a plugin marketplace (marketplace.json entry), installed with /plugin install <name>@<marketplace> and picked up with /reload-plugins. If ruflo-mods is installed with modTrust: refuse-risky, a mod using process.run, http.fetch, env.set or fs.write, or hooking tool.check/tool.call/*, is refused unless its plugin id (<name>@<marketplace>) is in modTrustAllow — the template sets env.set (the fallback handshake), so allow-list it by id.

© ruvnet, MIT. 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 plugins/ruflo-plugin-creator/skills/create-mod of ruvnet/ruflo.

Open the folder on GitHubat commit de590e1

Compare with similar skills

Create Mod 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.

Create Mod compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Mod this skillruvnet/ruflo74k—~984Automated safety check: NotesMIT
OpenpetsOpenPetsHQ/openpets1.3k—~2.1kAutomated safety check: PassMIT
OpenCode Plugin CreatorDevin-AXIS/iPolloWork6.7k1 repos~1.3kAutomated safety check: PassCustom licence
Build Pluginopentabs-dev/opentabs967—~190Automated safety check: PassMIT
Opencode Plugin Developmentsandgardenhq/sgai137—~1.2kAutomated safety check: NotesCustom licence
Typescript Hook Writerpr-pm/prpm122—~8.6kAutomated safety check: NotesMIT

Similar skills

  • Openpets

    OpenPetsHQ/openpets

    A skill your agent uses whenever the user wants to build, extend, debug, test, validate, locally load, package, or publish an OpenPets plugin; work with the OpenPets Plugin SDK v3, plugin manifest…

    1.3k GitHub stars~2.1k tokensUpdated 10 days ago
    Agent WorkflowsAuto-check passed
  • 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
  • Build Plugin

    opentabs-dev/opentabs

    Complete plugin development workflow: build, test, icon, troubleshoot, and setup.

    967 GitHub stars~190 tokensUpdated 4 days ago
    Agent WorkflowsAuto-check passed
  • Guide for creating and implementing plugins to extend OpenCode functionality, including hooks, custom tools, and event handling.

    137 GitHub stars~1.2k tokensUpdated 16 days ago
    Agent WorkflowsAuto-check: notes
  • Expert guidance for developing Claude Code hooks in TypeScript with shared utilities, esbuild compilation, and Vitest testing - distributes compiled JS while maintaining TypeScript development…

    122 GitHub stars~8.6k tokensUpdated today
    Testing & QAAuto-check: notes
  • Logseq Plugin SDK

    logseq/logseq

    Build, debug, or review Logseq plugins with the @logseq/libs SDK (TypeScript/JavaScript, iframe/shadow sandboxed).

    45k GitHub stars~2.3k tokensUpdated today
    Knowledge ManagementAuto-check passed

More from ruvnet/ruflo

All 264 skills in this repo
  • Stores, searches, and retrieves successful patterns with HNSW-indexed semantic search so agents can reuse past solutions instead of relearning them.

    74k GitHub starsUsed in 2 repos~830 tokens
    Auto-check passed
  • Runs claude-flow CLI security scans for input validation, path traversal, SQL injection, XSS, hardcoded secrets and known CVEs, and writes an audit report.

    74k GitHub starsUsed in 2 repos~823 tokens
    Auto-check passed
  • Applies the SPARC method (specification, pseudocode, architecture, refinement, completion) with 17 specialized modes and multi-agent orchestration, from research to deployment.

    74k GitHub starsUsed in 2 repos~829 tokens
    Auto-check passed
  • Coordinates a hierarchical swarm of specialized agents through the claude-flow CLI for work that spans several files or modules at once.

    74k GitHub starsUsed in 2 repos~779 tokens
    Auto-check passed
  • Sets up and drives Ruflo, an npm-installed orchestration layer for multi-agent swarms, persistent memory, routing, hooks and its MCP tool catalog.

    74k GitHub starsUsed in 1 repo~975 tokens
    Auto-check passed
  • Agent Coordination

    ruvnet/ruflo

    Reference for spawning, listing, monitoring and stopping agents with claude-flow commands, with agent type families, routing codes and coordination tips.

    74k GitHub starsUsed in 2 repos~519 tokens
    Auto-check passed

Works with

Categories

Questions about Create Mod

What does Create Mod do?

Scaffold a Claude Code mod (a plugin with a function-hooks module) from ruflo's governed template — hybrid hooks.json with a classic fallback, a host adapter over literal $ calls, userConfig…. Create Mod is an agent skill from ruvnet/ruflo.json with a classic fallback, a host adapter over literal $ calls, userConfig options, engine-kit tests and a tsconfig — then validate and test it.

When should I use Create Mod?

Create Mod fits situations like: the user asks for a mod; A function hook; wants Claude Code to modify itself.

How do I install Create Mod in Claude Code?

Run `npx skills add ruvnet/ruflo --skill create-mod -a claude-code`. Or copy the skill folder (plugins/ruflo-plugin-creator/skills/create-mod in ruvnet/ruflo) into .claude/skills/create-mod in your project. Claude Code loads it when a task matches its description.

How do I install Create Mod in Codex?

Run `npx skills add ruvnet/ruflo --skill create-mod -a codex`. Or copy the skill folder (plugins/ruflo-plugin-creator/skills/create-mod in ruvnet/ruflo) into .agents/skills/create-mod in your project. Codex loads it when a task matches its description.

Can I use Create Mod 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 ruvnet/ruflo --skill create-mod -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-mod, .gemini/skills/create-mod, .github/skills/create-mod and .opencode/skills/create-mod in your project.

What does Create Mod need to run?

Going by SKILL.md and its folder, Create Mod needs the command-line tools its instructions call (claude and npx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit.

Does Create Mod access the network?

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

Is Create Mod safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Create Mod use?

Create Mod is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Mod use?

About 984 tokens (SKILL.md is roughly 3.9k 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 Create Mod?

Skills that share tags, products or a category with Create Mod: Openpets (OpenPetsHQ/openpets, 1.3k stars), OpenCode Plugin Creator (Devin-AXIS/iPolloWork, 6.7k stars), Build Plugin (opentabs-dev/opentabs, 967 stars) and Opencode Plugin Development (sandgardenhq/sgai, 137 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Mod?

ruvnet (a GitHub user) maintains it in ruvnet/ruflo, which has 74,012 GitHub stars. The repository holds 264 skills in this directory. The repository was last updated on October 7, 2026.

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