Skip to content

What's New

User-facing changes in each release. For the full changelog with implementation details, see CHANGELOG.md on GitHub.


Unreleased

Antigravity now uses .gemini/ directory

Antigravity skills now install to .gemini/skills/ instead of the previous .agent/skills/. This matches the Gemini CLI's move from .agent/ to .gemini/ as its primary configuration directory.

Auto-migration: When you run agr sync, agr add, or agr remove, agr automatically moves existing skills from .agent/skills/ to .gemini/skills/. No manual steps needed. See Automatic Directory Migrations for the full list.

Cursor now uses flat naming

Cursor skills are now installed with flat directory names (e.g., .cursor/skills/skill-name/) instead of the previous nested structure (.cursor/skills/owner/repo/skill-name/). This aligns Cursor with all other supported tools.

Auto-migration: When you run agr sync, agr add, or agr remove, agr automatically flattens existing nested Cursor skills to the new layout. If a plain name conflicts with an existing directory, the fully-qualified name (owner--repo--skill) is used instead. No manual steps needed.

agrx now uses --full-auto for Codex

When running skills with agrx --tool codex in interactive mode, agr now passes --full-auto to the Codex CLI. This reduces permission prompts during execution, matching the behavior of other tools (Claude Code's --dangerously-skip-permissions, Copilot's --allow-all-tools).

Stricter skill name validation

Skill names now follow the Agent Skills specification exactly. Valid names must be:

  • 1–64 characters
  • Lowercase alphanumeric and hyphens only
  • Cannot start or end with a hyphen
  • Cannot contain consecutive hyphens (--)

Previously accepted names with uppercase letters, underscores, or trailing hyphens are now rejected. If you have existing skills with these patterns, rename them before upgrading.

description field required in SKILL.md

The description frontmatter field is now required when scaffolding a skill with agr init <name>. The generated template includes a placeholder you should fill in:

description: TODO — describe what this skill does and when to use it

See SKILL.md Format for all frontmatter fields.

Improved Copilot detection

agr init now detects GitHub Copilot from .github/copilot-instructions.md and .github/instructions/, in addition to .github/copilot/ and .github/skills/. This catches projects that use Copilot's repo-wide or path-specific instruction files without a dedicated skills directory.

Improved OpenCode detection

agr init now detects OpenCode from opencode.json and opencode.jsonc config files, in addition to the .opencode/ directory. This catches projects that use OpenCode's config file without having created the .opencode/ directory yet.

Bug fixes

  • Python SDK: Network failures in list_skills() and skill_info() now raise AgrError instead of Python's built-in ConnectionError. If your code catches AgrError (or its subclasses), network errors are now included automatically. If you were catching ConnectionError separately, you can remove that handler. See Error Handling.
  • Python SDK: list_skills() now raises InvalidHandleError instead of ValueError for invalid repo handles, matching the behavior of skill_info() and Skill.from_git(). If your code catches ValueError from list_skills(), update it to catch InvalidHandleError (from agr.exceptions). See Error Handling.
  • Antigravity detection signal corrected from .agent to .agents. Previously, agr init would not auto-detect Antigravity in repos that had an .agents/ directory (used by Codex) — only .gemini/ was matched.
  • agrx --tool cursor no longer passes an invalid --force flag to the Cursor CLI. The Cursor CLI (agent) does not support this flag, so agrx now runs without a permission-bypass flag for Cursor.
  • agrx --tool opencode now correctly uses two different modes: non-interactive runs use opencode run "prompt" (one-shot execution), while interactive runs (-i) use opencode --prompt "prompt" to inject the prompt into the TUI. Previously, agrx passed an invalid --prompt flag on the base command for non-interactive mode and routed both modes through opencode run.

0.7.10 — 2026-03-10

Updated tool directories

Codex and OpenCode updated their skills directory conventions upstream. agr now follows them:

Tool Old directory New directory
OpenAI Codex .codex/skills/ .agents/skills/
OpenCode .opencode/skill/ .opencode/skills/

Auto-migration: When you run agr sync, agr add, or agr remove, agr automatically moves existing skills from the old directories to the new ones. No manual steps needed.

Bug fixes

  • agr config unset tools no longer crashes when default_tool is set to a tool outside the default list. The default is now cleared automatically.
  • The SDK's cache.info() now counts unique skills instead of counting each cached revision separately.
  • Cache operations no longer reject valid skill names that happen to contain path-like characters (e.g., names with dots).

0.7.9 — 2026-03-05

Content hashes for installed skills

Installed skills now include a sha256: content hash in their .agr.json metadata. This lets you detect whether skill files have been modified on disk since installation.

The Python SDK exposes this via skill.content_hash and skill.recompute_content_hash():

from agr import Skill

skill = Skill.from_git("anthropics/skills/code-review")
if skill.content_hash != skill.recompute_content_hash():
    print("Skill files have changed since install")

0.7.8 — 2026-03-02

Interactive onboarding (removed)

Added agr onboard interactive guided setup command (later removed — use agr init instead).

Quiet mode

Suppress all non-error output with --quiet / -q. Useful in CI/CD pipelines:

agr sync -q          # Silent sync (errors still print)
agr add user/skill -q

Simplified agr init

agr init now only creates agr.toml and auto-detects your tools.


0.7.7 — 2026-03-02

Bug fixes

  • agr config commands with --global no longer require a git repository
  • agr config edit works with editors that need flags (e.g., EDITOR="code --wait")
  • agr config path --global shows an error when no global config exists instead of printing a nonexistent path

0.7.6 — 2026-03-02

Helpful handle suggestions

When a two-part handle like agr add owner/repo fails (because it's actually a repo, not a skill in the default skills repo), agr now probes the repo and suggests the correct three-part handles:

Skill 'my-repo' not found. However, 'owner/my-repo' exists as a repository with 3 skill(s):
  agr add owner/my-repo/skill-a
  agr add owner/my-repo/skill-b
  agr add owner/my-repo/skill-c

0.7.5 — 2026-02-07

agr config command

New unified config management:

agr config show                # View config
agr config set tools claude codex opencode
agr config set default_tool claude
agr config add sources gitlab --url "https://gitlab.com/{owner}/{repo}.git"
agr config unset default_tool

Replaces the older agr tools commands (which still work but show deprecation warnings). See the CLI Reference for all subcommands.

Global installs

Install skills globally (available in all projects) with the -g flag:

agr add -g anthropics/skills/skill-creator
agr sync -g
agr list -g
agr remove -g anthropics/skills/skill-creator

Global config lives at ~/.agr/agr.toml.


0.7.4 — 2026-02-06

Antigravity support

agr now supports Antigravity as a tool target:

agr config add tools antigravity

Skills install to .gemini/skills/ (project) and ~/.gemini/skills/ (global).


0.7.3 — 2026-02-04

Default repo name change

Two-part handles (user/skill) now look in the skills repo by default instead of agent-resources. During a deprecation period, agr falls back to agent-resources with a warning if the skill isn't found in skills.


0.7.2 — 2026-02-02

Python SDK

Use agr as a Python library:

from agr import Skill, list_skills, skill_info, cache

skill = Skill.from_git("anthropics/skills/code-review")
print(skill.prompt)
print(skill.files)

See the Python SDK documentation for the full API.

OpenCode support

agr now supports OpenCode as a tool target with .opencode/skills/ install path.


0.7.1 — 2026-01-29

Flat skill naming

Flat tools (Claude, Codex, OpenCode, Copilot, Antigravity) now install skills using plain names (skill-name/) instead of the full handle (user--repo--skill/). Existing installs are auto-migrated during agr sync. See How skills are named on disk for details.

Instruction file syncing

Keep CLAUDE.md, AGENTS.md, and GEMINI.md in sync across tools with instruction syncing:

agr config set sync_instructions true
agr config set canonical_instructions CLAUDE.md
agr sync   # Copies CLAUDE.md content to AGENTS.md, GEMINI.md as needed

0.7.0 — 2026-01-27

Multi-tool support

Skills can now be installed to multiple AI tools simultaneously. Configure your tools in agr.toml:

tools = ["claude", "cursor", "codex"]

agr add and agr sync install to all configured tools at once. If an install fails partway through, already-installed copies are rolled back automatically.

Cursor support

agr now supports Cursor with skills installed to .cursor/skills/.

GitHub Copilot support

agr now supports GitHub Copilot with flat directory structure (.github/skills/ for project, ~/.copilot/skills/ for global).

Private repository support

Set GITHUB_TOKEN or GH_TOKEN to access private skill repositories:

export GITHUB_TOKEN="ghp_aBcDeFgHiJkL01234567890mNoPqRsTuVwXy"
agr add private-org/skills/internal-tool

See Private Repositories for details.


Next Steps