Repository navigation
init: stamp the version when writing the skill, not when authoring the template - #15
Merged
Merged
Conversation
…e template
The staleness check shipped broken and would have gone off on the next release.
ubag_skill_version was a literal in the template, so a skill written today says
0.6.0 no matter when it was written. check() compares that stamp to the
*installed* version. Publish 0.6.1 and every freshly written skill reports itself
stale one second after `ubag init` created it, on both SDKs, for everyone. A
check that fires on files it just wrote is a check people turn off, which costs
more than never having built it.
Invisible right now only because the literal and the installed version happen to
be the same number. It was going to surface on the release that puts `ubag init`
in front of users for the first time.
The stamp is now substituted at write time from a {{ubag_version}} placeholder.
install() and check() take an optional version so the bump is testable without
publishing anything, and both SDKs gained the same three tests:
a skill written at one version is stale at the next, and names the old one
the placeholder never reaches a written file
the shipped template still contains the placeholder
That last one guards the direction that caused this. Bake a literal back into
the template and substitution silently becomes a no-op with every other test
still green.
Python 105 passed, Node 113 passed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Merged
Merged
mohameduk
added a commit
that referenced
this pull request
Sep 16, 2026
init: stamp the version when writing the skill, not when authoring the template
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.
The staleness check added in #14 shipped broken and would have gone off on the next release.
ubag_skill_versionwas a literal in the template, so a skill written today says0.6.0no matter when it was written.check()compares that stamp to the installed version. Publish 0.6.1 and every freshly written skill reports itself stale one second afterubag initcreated it, on both SDKs, for everyone.A check that fires on files it just wrote is a check people turn off, which costs more than never having built it.
Invisible right now only because the literal and the installed version happen to be the same number. It was going to surface on the release that puts
ubag initin front of users for the first time.Fix
The stamp is substituted at write time from a
{{ubag_version}}placeholder.install()andcheck()take an optional version so a bump is testable without publishing anything.Verified across a simulated release:
Tests
Three new on each side:
That last one guards the direction that caused this. Bake a literal back into the template and substitution silently becomes a no-op with every other test still green.
Python 105 passed, Node 113 passed.
🤖 Generated with Claude Code