feat(skills): automatically discover and refresh project-scoped skills - #42
Conversation
|
don't merge it yet |
|
Merged into The architecture holds up well under review: layered source snapshots with precedence resolved under lock, symlink cycle detection via canonical-path ancestors, a cache keyed on parser output only, cancel/join on shutdown (idempotent One scaling issue worth a follow-up, not a blocker. Verified on the merged tree: One note on the verification in the description: a full-suite run surfaced a failure in |
Summary
SKILL.md, follow symlinks with cycle detection, and never create missing roots./skillsto persisted session project bindings; keep the dashboard on the startup catalog.Permission boundary
Automatic sources cannot be edited, toggled, or deleted through skill management; those writes return HTTP 403 without changing source bytes or creating an override. Explicitly configured sources remain writable. Hub installs and
/learnkeep their existing Antares-copy destinations.The toggle restriction remains in this PR because the existing toggle rewrites
enabledin the source file. A separate Antares-local enabled/disabled preference for borrowed skills is not implemented here.Verified checkpoints
edb8258— discovery, formats, precedence, symlinks, and read-only guards.3b41c23— startup/A/B prompt, tool, and command isolation.c1d5191— refresh, reconfiguration, cancellation, and stable consumers.3dbcab0— live dashboard, imported viewer, and HTTP 403 responses.Verification
Passed:
go test ./...go test -race ./internal/skills ./internal/agent ./internal/commands ./internal/server ./cmd/antaresmake build build-fixture/skillsisolation.Unmodified
make smokewas not used as feature proof: its fixture disables skills and preserves the developer HOME.