Skip to content

Installing and troubleshooting

Roy Padina edited this page Oct 11, 2026 · 5 revisions

Installing and troubleshooting

Installing

/plugin marketplace add roypadina/padina-claude-code-plugins
/plugin install cmux-control@padina
/plugin install agentctl-sessions@padina
/plugin install session-management@padina
/plugin install heeng-keyboard-translator@padina
/plugin install espanso-control@padina
/plugin install recipe-research@padina

Install whichever you want — they are independent of each other.

padina is the marketplace name (from .claude-plugin/marketplace.json), not the repo name. Plugins are always addressed as <plugin>@<marketplace>.

Installing by hand

Adding a marketplace writes to your settings.json:

{
  "extraKnownMarketplaces": {
    "padina": {
      "source": { "source": "github", "repo": "roypadina/padina-claude-code-plugins" },
      "autoUpdate": true
    }
  },
  "enabledPlugins": {
    "agentctl-sessions@padina": true,
    "cmux-control@padina": true
  }
}

Claude Code clones the marketplace into ~/.claude/plugins/marketplaces/padina/ on the next session start and loads the enabled plugins from there.

Several Claude profiles

If you run more than one account via CLAUDE_CONFIG_DIR (~/.claude, ~/.claude2, …), each has its own settings.json and its own clone of the marketplace. Installing in one does not install in the others — repeat it per profile. plugins/ cannot be shared by symlink either: each profile's installed_plugins.json hardcodes its own absolute install paths.

Troubleshooting

The plugin does not appear after installing. Marketplaces are cloned at session start. Start a new session; ls ~/.claude/plugins/marketplaces/ should show padina. If you have several profiles, check the one you are actually running under — echo $CLAUDE_CONFIG_DIR.

The slash commands are missing but the skill works (or vice versa). They load from different subdirectories of the plugin. Confirm the clone is complete: find ~/.claude/plugins/marketplaces/padina/<plugin> -type f.

agentctl: command not found when a command runs. The agentctl-sessions plugin drives a separate CLI. Install it: brew install --cask roypadina/tap/agentctl. The plugin's skill offers to do this for you.

agentctl commands say "not running inside a Claude session". The no-argument form resolves the current session by walking the parent-process chain to the live Claude process. If you run it from a detached shell — a different terminal, a login shell, a cron job — there is no chain to walk. Pass -s <id-or-prefix> explicitly; agentctl ls lists ids.

Labels or due dates are rejected. Those need agentctl 0.5.0 or newer. Check with agentctl --version and brew upgrade --cask agentctl.

macOS moved Agentctl.app to the Trash on install. The app is ad-hoc signed rather than notarized, and recent macOS trashes unnotarized quarantined apps instead of just blocking them. Reinstall and clear the quarantine flag:

brew reinstall --cask agentctl
xattr -dr com.apple.quarantine "/Applications/Agentctl.app"

cmux notifications never appear. The cmux-control hooks exit silently unless the cmux CLI is on PATH and CMUX_WORKSPACE_ID is set — the latter only happens inside a cmux terminal. Check both: command -v cmux && echo $CMUX_WORKSPACE_ID. If they are fine, CMUX_CONTROL_QUIET may be set in your environment; that switch suppresses the notifications by design.

cmux-control stopped naming my tabs. That is intentional as of 0.2.0 — the SessionStart naming hook was removed, because renaming counted as a manual rename and permanently disabled cmux's own auto-naming for that workspace. See the cmux-control page.

/espanso-doctor says Accessibility is "unverifiable". Working as designed, not a bug. The permission genuinely cannot be read from an unprivileged shell — TCC.db returns zero rows whether or not the grant exists. Check by hand in System Settings → Privacy & Security → Accessibility.

/espanso-doctor reports a version check failure. The latest-version check calls GitHub with a 5-second timeout. Offline or rate-limited, it degrades to an informational line; the other five checks still run.

recipe-research wrote to the wrong folder. outputDir defaults to ~/recipes. Change it with /plugin configure recipe-research, and set vaultMode=true only if that folder is inside an Obsidian vault.

/finish-session behaves like an older version, or close does nothing. You probably still have a personal copy in ~/.claude/commands/ with the same name. Remove it, or call the plugin's version by its full name: /session-management:finish-session.

A hook seems to do nothing. SessionStart hooks are non-blocking on every exit code, so a broken one fails quietly by design. Run the command yourself to see the real error: echo '{"session_id":"test","cwd":"'$PWD'"}' | agentctl hook session-start.

Uninstalling

/plugin uninstall <plugin>@padina
/plugin marketplace remove padina

Neither touches your data. agentctl annotations live in ~/.config/agentctl and are removed only by brew uninstall --zap --cask agentctl. recipe-research notes stay in your outputDir, and espanso-control never wrote to your Espanso config in the first place.

Clone this wiki locally