Consider delegating the packaging layer to microsoft/apm
- Dominant language
- Python
- Stars
- 92
- Forks
- 92
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 104
Description
### What should happen
Prototype APM as the packaging layer behind the existing `/magpie-setup` entry point. Keep `/magpie-setup` as the guided wrapper, but let it call `apm install` for fetch, lock, deploy, and namespacing instead of the bespoke snapshot-and-symlink machinery.
#### In scope (APM would subsume)
- Snapshot fetch and the two lock files
- Multi-target deploy and `magpie-` namespacing
- Family opt-in (maps onto `--skill` / sub-packages; splitting into separate packages is not required)
- Drift detection
### Why
`setup` reimplements most of a package manager by hand: a committed pin (`.apache-magpie.lock`), a per-machine lock, a gitignored snapshot (`.apache-magpie/`), multi-target deploy through a canonical `.agents/skills/` plus relay symlinks, `magpie-` namespacing, version pinning, and drift detection. [[microsoft/apm](https://github.com/microsoft/apm)](https://github.com/microsoft/apm) already provides all of that: `apm.yml` + content-hashed `apm.lock.yaml`, native deploy to eight agents (Claude, Copilot, Cursor, Codex, Gemini, Windsurf, Kiro, OpenCode), git-ref/tag pinning, and per-skill selection (`apm install … --skill `). Carrying our own resolver may be a cost we do not need.
### Which layer
Other / unsure
### Boundary conditions (optional)
_No response_
### Out of scope (optional)
- Secure-agent setup (sandbox, clean-env wrapper, pinned tools)
- `post-checkout` hook and worktree propagation
- Agentic overrides: the protocol is plain text in each `SKILL.md`, and override files live in the adopter's own `.apache-magpie-overrides/`, which `apm install` never touches
### References (optional)
* https://github.com/microsoft/apm
Contributor guide
Research direction
Start by tracing the existing /magpie-setup entry point and reviewing the referenced microsoft/apm interface, including apm.yml, apm.lock.yaml, and apm install --skill. Prototype the packaging handoff while preserving the guided wrapper and the listed out-of-scope behavior; done means the in-scope fetch, locking, deployment, namespacing, family selection, and drift behavior are covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100