Skip to content

Repository files navigation

ronin-skills

Claude Code plugin marketplace for framework-agnostic AI coding agent discipline. Standalone, usable in most projects.

Why "ronin"? The natural name agent-skills is reserved by Anthropic for official marketplaces from the anthropics GitHub organization. Rōnin — a masterless samurai of feudal Japan, skilled, code-bound, self-directed — fits the spirit: a disciplined agent that arrives in any project, brings its own skills + ethics, and works without a fixed master.

Extracted from fubits1/svelte-skills v0.3.1.

Biased towards:

  • fff instead of grep/bash/cat/find/head/tail/awk/wc
  • jq for JSON parsing/shaping
  • Socket.dev for supply-chain checks
  • pnpm

Plugins

Two plugins. The skills (agent) and the enforcement hooks (hooks) install separately, so enforcement is opt-in.

Plugin Contents What it does
agent 16 skills Research, planning, self-checks, completion verification, git/CI workflow, package-manager and security rules. Skills/guidance only, no global side effects. Requires the superpowers plugin.
hooks 5 hooks Optional enforcement: no-bash (route Bash file-read/search to dedicated tools), no-absolute-paths, force-plan-mode, auto-formatter, no-honest (stop the agent vouching with honest instead of showing evidence), plus a SessionStart discipline directive. Install to opt into enforcement. Requires agent.

Installation

1. Add the marketplace

/plugin marketplace add fubits1/ronin-skills

For local development/testing:

/plugin marketplace add /path/to/ronin-skills

2. Install prerequisites

Superpowers plugin (required by agent):

/plugin install superpowers

3. Install the plugin(s)

The skills:

/plugin install agent

Optional — the enforcement hooks (Bash-tool blocking, plan-mode forcing, auto-format, discipline directive). These are global: once installed they fire in every project on the machine. All run on Node and work cross-OS (native Windows included — a plugin shell hook can't, #18610). Every hook except the auto-formatter needs only the Node standard library; the auto-formatter (fix-formatting.mjs) shells out to npx prettier / markdownlint-cli2 (npx ships with Node, which fetches them on demand). Install only if you want enforcement:

/plugin install hooks

Updating

To get the latest version:

/plugin marketplace update ronin-skills
/reload-plugins

This re-fetches the catalog and updates all installed plugins from this marketplace (e.g. agent, hooks) to the latest release. Run /reload-plugins afterward to apply changes without a restart.

To update automatically at startup instead, enable auto-update once: open /plugin, go to the Marketplaces tab, select ronin-skills, and choose Enable auto-update (off by default for third-party marketplaces). Claude Code then prompts you to run /reload-plugins whenever it pulls a new version.

Skill behavior

Skills in this marketplace have auto-invocation triggers defined in their descriptions. Claude Code may invoke them automatically when it detects relevant context (e.g. starting research, declaring a task done, running git commands). You can also invoke any skill manually via /skill-name or its fully qualified form /agent:skill-name. To disable auto-invocation for a specific skill, add disable-model-invocation: true to that skill's SKILL.md frontmatter.

Using these skills in OpenCode

These skills install as a Claude Code plugin, so they land in ~/.claude/plugins/cache/ronin-skills/agent/<version>/skills/. That path is not one of OpenCode's skill-discovery roots (~/.config/opencode/skills/, ~/.claude/skills/, ~/.agents/skills/, plus project-local equivalents) — so OpenCode does not see them by default. Expose the cache directory explicitly:

OpenCode's config supports a skills.paths array ("Additional paths to skill folders"), scanned recursively for **/SKILL.md. Point it at this plugin's skills directory in ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "skills": {
    "paths": ["~/.claude/plugins/cache/ronin-skills/agent/<version>/skills"]
  }
}

Pure config, no filesystem changes. The cache path is version-pinned, so bump <version> after /plugin marketplace update ronin-skills. ~/-prefixed and project-relative paths are accepted too. The key is schema-valid (present in opencode.ai/config.json under skills.paths) and implemented in the loader (skill/index.ts) even though the prose config docs don't list it yet (feature request #14370, closed).

This loads the skills in addition to anything in ~/.claude/skills/. On a duplicate name OpenCode keeps the last one scanned, so a ronin skill shadows a same-named personal one (e.g. ci).

Hooks

The optional hooks plugin (/plugin install hooks) ships 5 enforcement hooks (plus a SessionStart directive) that back the agent skills. They are global once installed, and require the agent plugin (the SessionStart and plan-mode hooks reference agent skills):

Hook Trigger What it does
no-bash.mjs PreToolUse (Bash) Hard-blocks Bash file-read/search tools (grep/cat/find/head/tail/awk/wc/rg) and their shell-out bypass vectors, checking each segment of compound commands so nothing rides along. Also blocks gratuitous command chaining (&&/||/;), forcing one command per call. Routes the agent to dedicated tools (fff MCP, Grep / Read / Glob / Write, jq). Zero-dependency cross-OS Node (Windows included — see #18610). Rationale + sources: no-bash.md.
force-plan-mode.mjs UserPromptSubmit Detects /plan, "make a plan", etc. — injects a directive forcing EnterPlanMode as the next tool call. Zero-dependency cross-OS Node.
no-absolute-paths.mjs PreToolUse (Bash) Blocks Bash calls that prepend the project-root absolute path (or ~-form / $HOME-form) to commands. Keeps permissions.allow clean. Zero-dependency cross-OS Node.
fix-formatting.mjs PostToolUse (Write|Edit) Auto-formats edited files via Prettier (non-Markdown) or markdownlint (.md). Silent on success. Cross-OS Node; spawns npx.
no-honest.mjs Stop Non-blocking nudge: if any message this turn says honest or honestly (the agent vouching for its own truthfulness instead of showing proof), injects additionalContext to show evidence next time. Advisory — the enforceable rule lives in agent:discipline; decision:block is avoided (it crashes Opus 4.x thinking sessions → 400). Zero-dependency Node; bounded read, flat ~28 ms; loop-guarded. Rationale + research: no-honest.md.

A SessionStart hook (session-start.mjs, Node) also injects a mandatory directive to invoke the discipline skill at the start of every session.

Migration: all enforcement hooks are now cross-OS Node

The remaining shell hooks — force-plan-mode, no-absolute-paths, fix-formatting, and the inline SessionStart directive — are ported from Bash to zero-dependency Node (*.mjs), joining no-bash and no-honest. Plugin shell hooks don't run on native Windows (#18610), so the whole hooks plugin is now cross-OS with no bash/jq runtime dependency (the auto-formatter still spawns npx prettier / markdownlint-cli2, which ship with Node). Behavior is unchanged. Update with /plugin marketplace update ronin-skills + /reload-plugins.

Migration: the nogrep hook + skill are renamed to no-bash

The Bash-discipline hook and its paired skill, previously nogrep, are now no-bash — the name reflects that they cover all of Bash cat/grep/find/sed/awk/wc, mutating git, and command chaining, not just grep.

  • Hook: the PreToolUse(Bash) hook is now no-bash.mjs (was nogrep.mjs). It has been zero-dependency cross-OS Node since 0.4.x, when it was ported from the original nogrep.sh bash script — plugin shell hooks don't run on native Windows (#18610), and it no longer needs jq at runtime.
  • Skill: the skill is now agent:no-bash, invoked /no-bash (was agent:nogrep / /nogrep).
  • Behavior is unchanged — same blocks, same reason= tags. (This release also fixes false positives on read-only git inspection — git stash list, git tag -l, git config --get, git clean -n, git apply --check — and on multi-line quoted arguments / line-continuations / heredocs.)

Update with /plugin marketplace update ronin-skills + /reload-plugins. Design rationale: hooks/no-bash.md.

Migration (0.2.x to 0.3.0)

Breaking change: the hooks moved out of the agent plugin into a new hooks plugin.

Before 0.3.0, installing agent also installed the 4 enforcement hooks. As of 0.3.0, agent is skills only and the hooks ship in a separate, optional hooks plugin.

If you had enforcement via agent, then after /plugin marketplace update ronin-skills the hooks stop firingno-bash, no-absolute-paths, force-plan-mode, the auto-formatter, and the SessionStart discipline directive all go silent. To keep enforcement, install the new plugin:

/plugin marketplace update ronin-skills
/plugin install hooks
/reload-plugins

If you preferred the hooks NOT firing globally, do nothing: updating agent alone now gives you the skills with no global side effects, which is the new default.

Namespace and how it relates to other marketplaces

Claude Code's plugin namespaces are globalagent:research resolves to whichever installed plugin is named agent, regardless of which marketplace provided it. This marketplace ships the canonical agent plugin.

If you also install fubits1/svelte-skills, its frontend:* and svelte-5:* skills reference agent:research, agent:done, agent:before-you-act, etc. — those references resolve against agent@ronin-skills installed here. No additional configuration needed.

If you don't install svelte-skills, the agent plugin still works fully — every cross-reference in its skills is either intra-plugin (e.g. agent:plan references agent:research) or uses generic wording (e.g. "your project's validate skill") with no hard dependency on other marketplaces.

Context budget

Claude Code allocates 1% of context window (fallback: 8,000 chars) for skill descriptions. Each description is capped at 250 chars. This marketplace adds ~16 skill descriptions on top of whatever else is installed.

Run /context to check for budget warnings. Override with SLASH_COMMAND_TOOL_CHAR_BUDGET=<chars>.

Source: Claude Code skills docs

Complementary resources

Skill development / Ops

Releases

Browse release history at Releases. Maintainer release process: see RELEASING.md.

License

MIT

About

wip

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages