Releases: computerlovetech/agr
v0.8.4
What's New in v0.8.4
Added
agr run <skill-name>command — invoke an already-installed skill in the project's configured tool CLI without re-downloading. Mirrorsagrxfor the persistent-skill case.- Shared
agr.runnermodule housing the tool-CLI invocation logic used by bothagrxandagr run. - Package/bundle dependencies can now expand and install transitive skill and ralph dependencies, including nested packages.
add,remove,sync, andupgradenow keep package, skill, and ralph lockfile entries in sync across transitive dependency changes.
Changed
agrxnow delegates toagr.runnerinstead of carrying its own copy of the tool-CLI invocation helpers.--toolhelp text foragr runandagrxis now sourced from the tool registry so new tools appear automatically.- Lockfile handling now tracks package parent relationships for entries with one or more parent packages.
- Package conflict detection now distinguishes resource types with the same installed name.
- Shared install and lockfile paths were refactored to support package dependency expansion consistently across commands.
Fixed
- Installed-skill lookup now matches collision-fallback install names (
user--skill,user--repo--skill) soagr runworks for skills that hit a name conflict at install time. - Installed-skill lookup rejects path-traversal inputs (
..,/,\) before touching the filesystem. --interactivehelp text foragr runandagrxnow describes the actual behavior (invoking the tool in interactive mode with the skill prompt prefilled).removenow removes package-owned transitive dependencies without removing direct dependencies that share the same installed name.syncandupgradenow preserve and refresh package parent metadata for transitive lockfile entries.- Bare names, trailing slashes, and local dependency paths now match more consistently during remove and upgrade operations.
- Package expansion now rejects remote package local paths that resolve outside the downloaded repository.
- Remote package local paths are converted to same-repository remote handles when they point to top-level resource directories.
- Lockfile commit SHAs and remote handle components receive stricter validation to prevent unsafe substitutions and path traversal.
Full changelog: https://github.com/computerlovetech/agr/blob/main/CHANGELOG.md
v0.8.4b1
What's New in v0.8.4b1
Added
- Package/bundle dependencies can now expand and install transitive skill and ralph dependencies, including nested packages.
add,remove,sync, andupgradenow keep package, skill, and ralph lockfile entries in sync across transitive dependency changes.
Changed
- Lockfile handling now tracks package parent relationships for entries with one or more parent packages.
- Package conflict detection now distinguishes resource types with the same installed name.
- Shared install and lockfile paths were refactored to support package dependency expansion consistently across commands.
Fixed
removenow removes package-owned transitive dependencies without removing direct dependencies that share the same installed name.syncandupgradenow preserve and refresh package parent metadata for transitive lockfile entries.- Bare names, trailing slashes, and local dependency paths now match more consistently during remove and upgrade operations.
- Package expansion now rejects remote package local paths that resolve outside the downloaded repository.
- Remote package local paths are converted to same-repository remote handles when they point to top-level resource directories.
- Lockfile commit SHAs and remote handle components receive stricter validation to prevent unsafe substitutions and path traversal.
Full changelog: https://github.com/computerlovetech/agr/blob/main/CHANGELOG.md
v0.8.3
What's New in v0.8.3
Added
agr upgrade [handle...]command — re-fetches dependencies past the pinned commit (or re-copies local paths) and refreshesagr.lock. Supports full handles, short names, local paths, multiple targets, and--global. Targeted upgrades leave untargeted siblings alone.
Changed
- Extracted
_run_pre_install_setupand_run_install_pipelinefromrun_syncsosyncandupgradeshare classify/install/lockfile/report.
Full changelog: https://github.com/computerlovetech/agr/blob/main/CHANGELOG.md
v0.8.2
What's New in v0.8.2
Added
- Ralph as a dependency type — manage ralphs (project-scoped agents) via
agr add,remove, andsync - Configurable
default_repooption — set once, use short handles everywhere - Ralph documentation across all doc surfaces (tutorial, concepts, troubleshooting, creating ralphs guide)
- Lockfile documentation in the tutorial
installed_nameproperty on Dependency to avoid repeated handle parsingis_ralphandis_skillproperties on Dependency for clearer type checks
Changed
- Rebranded agr as "the package manager for AI agents, built for teams"
- Split
fetcher.pyinto focused modules for maintainability - Renamed
LockedSkilltoLockedEntryandread_skill_metadatatoread_resource_metadatafor resource-generic naming - Extensive complexity reduction across CLI commands (
run_add,run_remove,run_sync,run_init,run_config_set,migrate_flat_installed_names) - Removed dead code:
print_deprecation,detect_instruction_files,list_remote_repo_ralphs, unusedResourceTypemodule, fetcher re-export shim
Fixed
- Token leak to lookalike GitHub domains in
_apply_github_token - Lockfile not updating on partial
addfailure - Empty
installed_namefor handles with trailing slashes - YAML quoting artifacts in frontmatter description extraction
- Working tree not populated in
fetch_and_checkout_commitfor partial clones - Local path validation now rejects
.and..as handles - Handles with empty path segments (e.g.
user//skill) now rejected _sanitize_path_componentno longer accepts.which collapsed cache paths- Ralph deps no longer incorrectly block skill name migration
- Local name-conflict detection no longer skips occupied destination paths
- Errored local deps no longer written to lockfile
- Duplicate local skills with the same name but different paths now rejected
sync_dependencies_to_toolsno longer erroneously installs ralphs as skills- Overly broad path traversal check no longer rejects valid filenames containing
.. - Overly aggressive skill discovery exclusion for excluded directory names
- Invalid
canonical_instructionsexample in saved config - Rich console no longer wraps detail messages in CLI output
- Lockfile path mismatch for global local skill installs
_extract_descriptionnow correctly reads frontmatter description field- Overly broad exception catch narrowed from
ExceptiontoAgrErrorin sync
Docs
- Split "Creating Ralphs" into its own page
- Updated architecture page to reflect ralph support and new module structure
- Updated Configuration and Handles pages to use resource-generic language
- Added SEO frontmatter to contributing pages
- Switched to sidebar navigation layout with light mode default
Full changelog: https://github.com/computerlovetech/agr/blob/main/CHANGELOG.md
v0.8.1
What's New in v0.8.1
Added
default_ownerconfig option for 1-part handle resolution — set once, use short handles everywhere
Changed
- Rebranded repository URLs from
jungekasper/agrtocomputerlovetech/agr - Removed bundled skills from repository (install via
agr addinstead)
Fixed
- Code formatting issues in 5 core modules
Docs
- Document
default_ownerand 1-part handle format in README and reference - Add terminal demo, workspace guide, and audit docs
- Move tool integration docs to contributing section
- Standardize installation instructions on
uv - Consolidate
agent_docs/intodocs/docs/contributing/
Full changelog: https://github.com/computerlovetech/agr/blob/main/CHANGELOG.md
v0.8.0
What's New in v0.8.0
Added
- Lockfile support for reproducible skill installs (
agr.lockwritten duringadd,remove, andsyncwith pinned commit SHAs) - Documentation site with MkDocs: tutorial, CLI reference, core concepts, creating skills guide, Python SDK docs, troubleshooting, teams guide, skill directory, agrx page, and llms.txt for AI tool discovery
- Structured data (FAQPage, HowTo, TechArticle, BreadcrumbList) across documentation pages for search engine rich results
Changed
- Cursor skills now use flat naming (
skill-name/directly under.cursor/skills/) instead of nested directories (user/repo/skill/) - Auto-migration flattens existing nested Cursor skills during
agr sync,agr add, andagr remove - Skill scaffold now includes a required
descriptionfield in SKILL.md - README rewritten with clearer value proposition, real skill examples, and invocation instructions
Fixed
- OpenCode compatibility: use correct CLI flags for run mode and TUI interactive mode
- Antigravity detection: correct
.agentsignal to.agents; update skills paths from.agent/to.gemini/ - SDK
list_skills()now raisesInvalidHandleErrorinstead ofValueError - SDK network failures raise
AgrErrorinstead ofConnectionError agr config showcorrectly escapes Rich markup in source type brackets
Removed
agr onboardcommand and deprecatedagr toolssubcommands- Orphaned
test_gh_issue_phase.pytest file referencing removed development skills
Full changelog: https://github.com/computerlovetech/agr/blob/main/CHANGELOG.md
v0.7.10
What's New in v0.7.10
Changed
- Codex skills directory from
.codex/skills/to.agents/skills/(following Codex upstream change) - OpenCode skills directory from
.opencode/skill/to.opencode/skills/(following OpenCode upstream change)
Added
- Auto-migration from
.codex/skills/to.agents/skills/duringagr sync - Auto-migration from
.opencode/skill/to.opencode/skills/duringagr sync,agr add, andagr remove - Backwards-compatible detection of both
.agents/and.codex/for Codex
Full changelog: https://github.com/kasperjunge/agent-resources/blob/main/CHANGELOG.md
v0.7.9
What's New in v0.7.9
Added
- Deterministic content hashes for installed skills (
sha256:prefixed) compute_content_hash()inagr/metadata.pyfor SHA-256 hashing of skill directory contentscontent_hashproperty andrecompute_content_hash()method on SDKSkillclass- Content hash written to
.agr.jsonat install time (both local and remote) - Content hash preserved during
agr syncmetadata migrations
Full changelog: https://github.com/kasperjunge/agent-resources/blob/main/CHANGELOG.md
v0.7.8
What's New in v0.7.8
Added
agr onboardinteractive guided setup command: walks through tool selection, skill discovery, migration, and configurationagr --quiet/-qglobal flag to suppress non-error output across all commandsagr/detect.pymodule for signal-based tool detection (checks for.claude/,CLAUDE.md,.cursor/,.cursorrules, etc.)agr/console.pyshared console factory that respects the quiet flag- Auto-detect tools when
agr addcreates a newagr.toml(uses the same signal-based detection) - Tests for onboard, quiet mode, and tool detection
Changed
agr initsimplified: removed--interactive,--migrate, and--preferflags (interactive setup moved toagr onboard)agr initno longer discovers or adds skills to config (that responsibility moved toagr onboard)agr inituses signal-based tool detection instead of checking for tool skills directories- Replaced module-level
Console()instances with lazyget_console()calls to support the quiet flag agr inithints atagr onboardinstead ofagr syncas the next step
Removed
--interactive/-iflag fromagr init--migrateand--preferflags fromagr init- Skill discovery, migration, and deduplication logic from
agr/commands/init.py(moved to onboard)
Docs
- Updated README, docs/index.md, and docs/reference.md to reflect
agr initsimplification and newagr onboardcommand - Removed references to deleted
--interactive,--migrate,--preferflags - Added
agr onboardto command tables and reference - Added "Global Options" section to reference documenting
--quiet/-qand--version/-v
Full changelog: https://github.com/kasperjunge/agent-resources/blob/main/CHANGELOG.md
v0.7.7
What's New in v0.7.7
Fixed
agr config set/add/remove tools --globalno longer callsfind_repo_root()or syncs/deletes repo-local skills_sync_dependencies_to_toolsreturn value is now checked; non-zero exits with erroragr config edithandles$EDITORwith flags (e.g."code --wait") viashlex.splitagr config editpropagates editor exit codeagr config path --globalerrors when~/.agr/agr.tomldoesn't exist instead of printing a nonexistent path- Hardcoded
~/.agr/agr.tomlin_load_configerror message replaced with actual path agr config add/remove sourcesrejects extra values (only one source name at a time)
Changed
- Extracted
VALID_CANONICAL_INSTRUCTIONSconstant inagr/config.py, shared withconfig_cmd.py - Extracted
GlobalScopetype alias inagr/main.pyreplacing 8 duplicateAnnotateddefinitions - Added
else: raise AssertionErrorguards to key dispatch chains inrun_config_get/set/unset agr config add toolsskipsconfig.save()when no tools were actually added
Added
- 14 new CLI tests for config edit, default_source, sync_instructions, canonical_instructions, type flags, unconfigured tools, extra values, and deprecation warnings
Full changelog: https://github.com/kasperjunge/agent-resources/blob/main/CHANGELOG.md