Repository navigation
feat(managed): session-start hooks and a timer keep managed skills up to date [skip release] - #419
Merged
Merged
Conversation
… to date Every apply registers a session-start hook for each covered agent that supports one and removes hooks from agents no longer covered. Enrolling, including enrolling by first apply, installs a user timer (systemd, launchd or a scheduled task); unenroll removes both. managed hooks shows them, and managed hooks --system prints what an administrator installs for every user.
…der the size limit
aroff
marked this pull request as ready for review
October 10, 2026 12:41
aroff
enabled auto-merge (squash)
October 10, 2026 12:41
2 of 3 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.
Implements ADR-0016 decisions 16 and 17: managed skills stay up to date without anyone running
fastskill managed apply.What changes
core::managed::hooks)fastskill managed apply --hook fastskill-managed-<agent>for each covered agent that supports one (Claude Code, Gemini CLI, through aikit-sdksession_hooks).managed apply --hook <id>)systemMessageform.core::managed::timer)apply --timerwaits up to 10 minutes at random first), or a scheduled task on Windows (UTF-16 XML).FASTSKILL_MANAGED_TIMER=offinstalls none.unenrollremoves the hooks and the timer.managed hooks [--system] [--json](read-only)--system: this user's hook state per agent, plus the timer.--system: the administrator-level entries to merge and the machine-wide timer plan.statusshows the hooked agents.agents[].hookis now filled in.session_hooks).webdocs/cli-reference/managed-command.mdxgains a new "Keeping up to date" section.Test plan
cargo fmt --allcargo clippy --workspace --all-targets --all-features -- -D warningscargo llvm-cov nextest --all-features -E 'not test(install_e2e_tests)': 2234 passedscripts/check-modified-rust-coverage.py origin/main coverage-summary.json 90: every modified file passes (hooks.rs 100%, timer.rs 97.7%, managed_hooks.rs 100%, managed.rs 94.8%, apply.rs 92.8%, enrollment.rs 99.4%)FASTSKILL_MANAGED_TIMER=off):managed apply --hookwithout settings prints nothing and exits 0managed hooksandmanaged hooks --system --json