fix(skill): manage global skill distribution explicitly - #215
Merged
Conversation
10 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Replace implicit Git-hook skill copying with an explicit, product-owned lifecycle:
rootline skill install|status|uninstall|restoreRelated issue
Refs #210
This deliberately does not auto-close the issue. The real-home migration and Claude/OpenCode/Pi discovery verification must run after merge from the updated primary checkout; #210 closes only after that evidence is recorded.
Why
Independent global copies can drift and cause different agents to execute different Rootline guidance. Hook-driven copying also mutates user state implicitly and cannot provide planning, approval, rollback, or receipt evidence.
How
The CLI separates inventory/planning from approved execution. Plans include canonical source and destination evidence and produce deterministic approval digests. Mutations fail closed on source drift, destination drift, unsupported state, stale approval, invalid receipts, and filesystem conflicts.
Active installations are symlink-only; copied trees are backups, never fallback installations. Restore publication uses native atomic no-replace primitives on Darwin, Linux, and Windows, with unsupported platforms failing closed. Tests use temporary homes and cover lifecycle, rollback, receipt validation, concurrency boundaries, race execution, and cross-platform compilation.
Verification
just testgo vet ./...just checkjust coverage-check— total 89.9%;internal/skilldist85.4%go run ./cmd/rootline validate --all docs/adr/— 7 valid, 0 invalid97e68d8..91da062: ready to merge; no Critical/Important findings; minor hygiene follow-ups recordedChecklist
go test ./... -race)go vet ./...)Refs #210; closure waits for the post-merge observed-environment gate