Summary
Allow dependencies to specify a git tag, branch, or commit SHA in their handle, e.g.:
user/skill#v1.0.0 (tag)
user/skill#main (branch)
user/skill#abc123 (commit)
Currently agr always resolves to the default branch HEAD, which means any upstream push silently changes what you get.
Why
This is a prerequisite for lockfiles, update workflows, and reproducibility. Without version refs, there is no way to pin a dependency to a known-good state.
Scope
- Extend
ParsedHandle in handle.py to parse #ref suffix
- Extend
Dependency in config.py to store the ref
- Update
agr.toml format to support refs in handle strings
- Update git operations in
git.py to checkout specific refs
- Update
agr add to accept and store refs
🤖 Generated with Claude Code
Summary
Allow dependencies to specify a git tag, branch, or commit SHA in their handle, e.g.:
user/skill#v1.0.0(tag)user/skill#main(branch)user/skill#abc123(commit)Currently agr always resolves to the default branch HEAD, which means any upstream push silently changes what you get.
Why
This is a prerequisite for lockfiles, update workflows, and reproducibility. Without version refs, there is no way to pin a dependency to a known-good state.
Scope
ParsedHandleinhandle.pyto parse#refsuffixDependencyinconfig.pyto store the refagr.tomlformat to support refs in handle stringsgit.pyto checkout specific refsagr addto accept and store refs🤖 Generated with Claude Code