feat: skillset "always keep skills up to date" toggle (#1191)#1192
Open
chronoai-shining wants to merge 3 commits into
Open
feat: skillset "always keep skills up to date" toggle (#1191)#1192chronoai-shining wants to merge 3 commits into
chronoai-shining wants to merge 3 commits into
Conversation
Add a per-skillset opt-in (autoUpdateMembers, default OFF) that, when on, resolves EVERY member to its skill's latest version wherever the set is delivered: the resolved-member snapshot (revision bump), derived visibility, the read gate, the public-member count, closure delivery, and the mirror plugin export. The mechanism is a single forceLatest flag on SkillService.createVersionLoader (versionOrTag becomes "latest"), threaded from each skillset's flag through the resolution seams. The override is resolution-time only — authored member refs are never rewritten, so disabling restores the pinned behavior. Exposed API-first as PUT /skillsets/:id/auto-update and autoUpdateMembers on the skillset resource. Toggling either way immediately re-cuts the revision when the public snapshot moved and refreshes derived visibility; the route then fires the mirror reconcile to re-export the plugin at the new revision. Backend changes land together because the schema field, loader flag, and endpoint are intra-file coupled in service.ts. Part of #1191
Owner-only "Keep skills up to date" card on the skillset detail page: shows the current state and flips autoUpdateMembers via PUT /skillsets/:id/auto-update (new updateAutoUpdate service fn + useUpdateAutoUpdate mutation). The flip is reversible and low-risk, so it toggles directly with no confirm dialog and primes the detail cache with the returned (possibly revision-bumped) payload. Part of #1191
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.
Summary
Adds a per-skillset owner toggle "Always keep skills in this skillset up to date" (
autoUpdateMembers, default OFF). When ON, every member — pinned or not — resolves to its skill's latest version everywhere the set is delivered, so a member's new version automatically flows into the skillset and its exported Claude Code plugin, with no per-member ref edits.Closes #1191.
What it does
createVersionLoader(actor, forceLatest)→versionOrTag = "latest"), threaded from each skillset's flag through every resolution seam: the resolved-member snapshot (revision bump), derived visibility, the read gate, the public-member count, closure delivery, and the mirror plugin export. The authoredmembersrefs are never rewritten, so turning it off restores the pinned behavior.PUT /api/v1/skillsets/:id/auto-update(mirrors theplugin-exporttoggle) +autoUpdateMemberson the skillset resource. The ornn-web toggle card on the detail page is the secondary surface.Per the product decision on #1191, the toggle overrides all pins (a pin is inert while it's on) — the simplest "always keep ALL up to date" model.
Testing
forceLatestresolver threading. The service tests exercise the realSkillServiceloader end-to-end, not mocks.SkillsetAutoUpdateCardtests (owner gating, on/off state, toggle payload).tsc(api + web + sdk) clean;eslint0 errors; changeset included (minor/minor).Not included (follow-ups)
skills/ornn-agent-manual-cli/references/api-reference.md) doesn't yet document the new endpoint — that skill is mirror-published and versioned separately.🤖 Generated with Claude Code
https://claude.ai/code/session_01HQhPzeZKKfFrw6Zc44RGaB