Skip to content

Implement squad:// URI resolver #1137

Closed as not planned
Closed as not planned

Description

@mfrieman

Problem

mfrieman/agentic-ai-collective
(v0.1.0-alpha) uses a canonical URI scheme to reference all atoms and compositions:

squad://<owner>/<repo>/<kind>/<name>@<version>

Examples:

squad://mfrieman/agentic-ai-collective/agents/code-reviewer@1.0.0
squad://mfrieman/agentic-ai-collective/skills/reviewer-protocol@^1.0.0
squad://mfrieman/agentic-ai-collective/squad-templates/general-dev@1.0.0
squad://mfrieman/agentic-ai-collective/workstreams/code-review@1.0.0

These URIs appear in:

  • atom.json and manifest.json dependency lists
  • .squad/assets.lock.json source_uri fields
  • CLI target flows throughout the library's documentation

The upstream Squad CLI has no resolver for this scheme. There is no mechanism to
hand the CLI a squad:// URI and have it fetch, validate, and install the
referenced asset. Every consumer operation that mentions squad:// is currently
manual.

Current state

squad upstream add <git-url> registers a remote git repository. The CLI does not
parse or resolve squad:// URIs. There is no registry lookup, ref resolution, or
caching layer for the squad:// scheme.

Desired state

A URI resolver embedded in the Squad CLI that handles squad:// references
end-to-end, exposed through the commands that need it (squad template apply,
squad workstream add, squad asset add, etc.).

Resolution algorithm

squad://mfrieman/agentic-ai-collective/agents/code-reviewer@1.0.0
   │        │              │                 │         │        │
   scheme   owner          repo             kind      name    version-spec

1. Check local cache: ~/.squad/cache/<owner>/<repo>/<ref>/
2. If cache miss (or stale):
   a. Resolve repo → https://github.com/<owner>/<repo> (or configured registry)
   b. Fetch git ref that satisfies <version-spec> (exact tag or semver range)
   c. Walk <kind>/<name>/atom.json (or manifest.json for compositions)
   d. Store in local cache with content hash
3. Return resolved asset root path + metadata

Version spec support

Spec Example Behavior
Exact @1.0.0 Pin to that tag
Caret range @^1.0.0 Latest compatible minor/patch
latest @latest Latest non-prerelease tag
Git SHA @abc1234 Pin to exact commit

Registry configuration

# Default registry: GitHub (https://github.com/<owner>/<repo>)
# Allow override for private registries or mirrors
squad config set registry.default https://github.com
squad config set registry.myorg https://github.myorg.com

Acceptance criteria

  • squad://owner/repo/kind/name@exact-version resolves to the correct asset
    directory in the local cache.
  • Semver range specs (@^1.0.0, @~1.0.0) resolve to the highest matching
    published git tag in the target repository.
  • @latest resolves to the latest non-prerelease tag.
  • Git SHA pinning works for both full and abbreviated SHAs.
  • Resolved assets are cached in ~/.squad/cache/ (or platform equivalent)
    and reused on subsequent runs without a network call.
  • Cache invalidation: squad cache clean or --no-cache forces a fresh
    fetch.
  • The resolver raises a clear error with actionable message when a URI cannot
    be resolved (repo not found, version not found, asset path missing).
  • Private/enterprise registry URLs can be configured via squad config.

References

Notes

Activity

  1. bradygaster commented on Nov 5, 2026

    @bradygaster
    Collaborator

    Closing as not planned for the 2.0 line during board triage (owner decision). The squad:// registry/workstream install work is out of scope for 2.0; reopen if it returns to the roadmap.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triagedIssue has been triagedwave:3-laterWave 3 — backlog, future

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions