Skill

init-all

Install
1
Install the plugin
$
npx claudepluginhub cameronsjo/rules --plugin rules

Want just this skill?

Add to a custom plugin, then install with one command.

Description

Install all 22 rules to ~/.claude/rules/workbench/. Self-destructs after running.

Tool Access

This skill is limited to using the following tools:

ReadWriteBash
Skill Content

Install all 22 rules (6 universal + 16 language/tool) from this plugin to $HOME/.claude/rules/workbench/.

Steps

  1. Migrate — Detect and move old flat files from the previous prefix scheme:
OLD_DEST="$HOME/.claude/rules"
NEW_DEST="$HOME/.claude/rules/workbench"
mkdir -p "$NEW_DEST"

echo "=== MIGRATE ==="
for old in "$OLD_DEST"/rules-*.md; do
  [ -f "$old" ] || continue
  basename="${old##*/}"
  stripped="${basename#rules-}"
  if [ ! -f "$NEW_DEST/$stripped" ]; then
    mv "$old" "$NEW_DEST/$stripped"
    echo "MIGRATED $basename -> workbench/$stripped"
  else
    rm "$old"
    echo "REMOVED $basename (already exists in workbench/)"
  fi
done
  1. Hash compare — Compare plugin source against installed destination. Do NOT read any rule file contents yet.
DEST="$HOME/.claude/rules/workbench"

echo "=== UNIVERSAL ==="
for src in "${CLAUDE_PLUGIN_ROOT}"/rules/user/*.md; do
  [ -f "$src" ] || continue
  name="$(basename "$src")"
  dest="$DEST/$name"
  if [ ! -f "$dest" ]; then
    echo "NEW $name"
  elif [ "$(md5 -q "$src")" = "$(md5 -q "$dest")" ]; then
    echo "UNCHANGED $name"
  else
    echo "UPDATED $name"
  fi
done

echo "=== LANGUAGE/TOOL ==="
PLUGIN="${CLAUDE_PLUGIN_ROOT}/rules/project"
for src in "$PLUGIN"/languages/*.md "$PLUGIN"/*.md; do
  [ -f "$src" ] || continue
  name="$(basename "$src")"
  dest="$DEST/$name"
  if [ ! -f "$dest" ]; then
    echo "NEW $name"
  elif [ "$(md5 -q "$src")" = "$(md5 -q "$dest")" ]; then
    echo "UNCHANGED $name"
  else
    echo "UPDATED $name"
  fi
done
  1. Show summary — Format the manifest as a markdown table:
FileStatus
engineering-standards.mdNEW / UNCHANGED / UPDATED

If everything is UNCHANGED, report "All rules are up to date." and skip to step 6.

  1. Install — For each rule based on status:
  • NEW: Copy the source file to the destination:

    cp "$src" "$DEST/$(basename "$src")"
    
  • UPDATED: Read both the source (plugin) file and the destination (installed) file using the Read tool. Merge: incorporate plugin updates while preserving user customizations (added rules, modified wording, extra sections). Write the merged result to the destination using the Write tool.

  • UNCHANGED: Skip.

  1. Self-destruct — Delete this command from the plugin cache:
rm -f "$HOME"/.claude/plugins/cache/*/rules/*/commands/init-all.md

Tell the user: "The /rules:init-all command has been removed from cache. It will reappear when the rules plugin updates."

  1. Summary — Report counts: installed, updated, unchanged, migrated. Note that language/tool rules are path-scoped and only load when touching matching files. Remind user to restart Claude Code.

Important

  • Source: ${CLAUDE_PLUGIN_ROOT}/rules/user/ and ${CLAUDE_PLUGIN_ROOT}/rules/project/ — Destination: ~/.claude/rules/workbench/
  • No prefix — files keep their original basename
  • Files outside workbench/ are user-managed and never touched
  • Language/tool rules keep their paths: frontmatter — path-scoping works at ~/.claude/rules/workbench/
  • Self-destruct targets the CACHE copy, not the source repo
Stats
Stars0
Forks0
Last CommitMar 4, 2026
Actions

Similar Skills