Install and agent compatibility
Generic Agent Skills install
Beagle's primary install path is the skills CLI:
npx skills add existential-birds/beagle
That path installs Beagle as an Agent Skills package for agents that understand the shared skill format. The repo README keeps this command as the first install path.
Claude Code marketplace install
Claude Code can install Beagle as a plugin marketplace:
claude plugin marketplace add https://github.com/existential-birds/beagle
claude plugin install beagle-core@existential-birds
Install other plugins by replacing beagle-core with the plugin namespace you want, such as beagle-python, beagle-react, or beagle-rust.
Update an installed plugin through the marketplace:
claude plugin marketplace update existential-birds && claude plugin update <plugin-name>
If Claude Code reports a missing marketplace file after a local checkout move, remove the stale marketplace entry from ~/.claude/plugins/known_marketplaces.json, then restart Claude Code and add the marketplace again.
Codex and flat skill directories
Codex does not load Beagle through Claude plugin namespaces. It discovers skills from a flat directory, usually ~/.agents/skills/.
The Beagle Codex installer links each active plugin skill directory into that flat path and skips duplicated copies of review-verification-protocol, keeping the canonical copy from beagle-core.
repo=/path/to/beagle
dest="$HOME/.agents/skills"
mkdir -p "$dest"
for plugin in beagle-analysis beagle-core beagle-docs beagle-elixir beagle-go beagle-ios beagle-python beagle-react beagle-rust beagle-testing; do
for skill in "$repo/plugins/$plugin/skills"/*; do
[ -d "$skill" ] || continue
name="$(basename "$skill")"
target="$dest/$name"
if [ "$name" = "review-verification-protocol" ] && [ "$plugin" != "beagle-core" ]; then
continue
fi
if [ -L "$target" ] && [ "$(readlink "$target")" = "$skill" ]; then
continue
fi
if [ -e "$target" ] || [ -L "$target" ]; then
echo "refusing to overwrite existing skill: $target" >&2
exit 1
fi
ln -s "$skill" "$target"
done
done
For a single skill:
skill="/path/to/beagle/plugins/beagle-core/skills/receive-feedback"
target="$HOME/.agents/skills/receive-feedback"
mkdir -p "$(dirname "$target")"
if [ -L "$target" ] && [ "$(readlink "$target")" = "$skill" ]; then
: # already linked
elif [ -e "$target" ] || [ -L "$target" ]; then
echo "refusing to overwrite existing skill: $target" >&2
exit 1
else
ln -s "$skill" "$target"
fi
After git pull, linked skills update immediately. Rerun the install loop when new skills are added so new directories are linked.
Compatibility model
Beagle treats SKILL.md as the canonical artifact. Former command workflows were converted into skills, and frontmatter controls how each skill is exposed to agents.
Claude Code users see plugin namespaces such as beagle-core. Codex-style agents usually see only the skill directory name, without a plugin namespace. Public docs and skill bodies avoid slash-command dependencies so the same content can be used by multiple agent harnesses.