Repository navigation
Installing and troubleshooting
/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>.
Adding a marketplace writes to your settings.json:
Claude Code clones the marketplace into ~/.claude/plugins/marketplaces/padina/ on the next session
start and loads the enabled plugins from there.
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.
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.
/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.
{ "extraKnownMarketplaces": { "padina": { "source": { "source": "github", "repo": "roypadina/padina-claude-code-plugins" }, "autoUpdate": true } }, "enabledPlugins": { "agentctl-sessions@padina": true, "cmux-control@padina": true } }