Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Creates a new release for a blocklet project by bumping version, building, and bundling. Use when asked to "create a new release", "bump and bundle", or "update blocklet version".
.claude/skills/aiskillstore-blocklet-updater/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 270% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 129% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 35% | 0% |
Bumps a blocklet project version and creates a release bundle.
Check for project-specific version update scripts before falling back to blocklet version patch.
Check the following in priority order and use the first match:
| Priority | Detection | Command | |----------|-----------|---------| | 1 | Makefile has bump-version target | make bump-version | | 2 | package.json has bump-version script | pnpm run bump-version | | 3 | package.json has version script | pnpm run version | | 4 | lerna.json exists | lerna version patch --yes | | 5 | None of the above | blocklet version patch (fallback) |
Detection commands:
bash# Priority 1: Check Makefile for bump-version target if [ -f "Makefile" ] && grep -q "^bump-version:" Makefile 2>/dev/null; then VERSION_CMD="make bump-version" fi # Priority 2: Check package.json for bump-version script if [ -z "$VERSION_CMD" ] && [ -f "package.json" ]; then if cat package.json | jq -e '.scripts["bump-version"]' > /dev/null 2>&1; then VERSION_CMD="pnpm run bump-version" fi fi # Priority 3: Check package.json for version script if [ -z "$VERSION_CMD" ] && [ -f "package.json" ]; then if cat package.json | jq -e '.scripts["version"]' > /dev/null 2>&1; then VERSION_CMD="pnpm run version" fi fi # Priority 4: Check for lerna.json if [ -z "$VERSION_CMD" ] && [ -f "lerna.json" ]; then VERSION_CMD="lerna version patch --yes" fi # Priority 5: Fallback to blocklet version if [ -z "$VERSION_CMD" ]; then VERSION_CMD="blocklet version patch" fi
Run the detected command:
bash$VERSION_CMD
Important: Project-specific scripts (like make bump-version) often:
version fileCHANGELOG.md entriesIf fails → EXIT with error output.
After version bump, verify and fix CHANGELOG.md if needed.
##### 1.3.1 Get Actual Version
First, get the actual version that was set (from blocklet.yml or package.json):
bash# Get version from blocklet.yml ACTUAL_VERSION=$(grep -E "^version:" blocklet.yml | sed 's/version: *//' | tr -d '"'"'" 2>/dev/null) # Fallback to package.json if no blocklet.yml if [ -z "$ACTUAL_VERSION" ]; then ACTUAL_VERSION=$(cat package.json | jq -r '.version' 2>/dev/null) fi
##### 1.3.2 Find CHANGELOG Location
bash# Common CHANGELOG locations in monorepos CHANGELOG_PATHS=( "CHANGELOG.md" "blocklets/*/CHANGELOG.md" "packages/*/CHANGELOG.md" ) for pattern in "${CHANGELOG_PATHS[@]}"; do for file in $pattern; do if [ -f "$file" ]; then echo "Found: $file" fi done done
##### 1.3.3 Validate CHANGELOG Entry
For each CHANGELOG.md found, check if the latest entry matches the actual version:
bash# Extract first version number from CHANGELOG.md CHANGELOG_VERSION=$(grep -E "^## \[?[0-9]+\.[0-9]+\.[0-9]+\]?" CHANGELOG.md | head -1 | grep -oE "[0-9]+\.[0-9]+\.[0-9]+") if [ "$CHANGELOG_VERSION" != "$ACTUAL_VERSION" ]; then echo "⚠️ Version mismatch!" echo " CHANGELOG shows: $CHANGELOG_VERSION" echo " Actual version: $ACTUAL_VERSION" fi
##### 1.3.4 Fix Version Mismatch
If CHANGELOG version doesn't match actual version, fix it:
bash# Example fix: Replace wrong version in first heading sed -i "0,/^## \[*$WRONG_VERSION\]*/s//## $ACTUAL_VERSION/" CHANGELOG.md
##### 1.3.5 Check Entry Content
After fixing version, check if the entry has content:
bash# Get content between first ## and second ## ENTRY_CONTENT=$(sed -n '/^## /,/^## /p' CHANGELOG.md | sed '1d;$d' | grep -v "^$") if [ -z "$ENTRY_CONTENT" ]; then echo "⚠️ CHANGELOG entry is empty, needs content" fi
##### 1.3.6 Generate Content for Empty Entry
If entry is empty, generate content based on:
bash# Get commits since last tag LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") if [ -n "$LAST_TAG" ]; then git log $LAST_TAG..HEAD --oneline --no-merges fi
markdown## X.Y.Z (YYYY-MM-DD) - feat: description of new feature - fix: description of bug fix - chore: description of maintenance task
AskUserQuestion to ask user for changelog content.##### 1.3.7 Common CHANGELOG Formats
Detect and follow the existing format:
| Format | Example | |--------|---------| | Keep a Changelog | ## [1.2.3] - 2024-01-20 | | Simple with date | ## 1.2.3 (2024-1-20) | | Simple no date | ## 1.2.3 |
Date format: Match the existing format in the file (e.g., 2024-01-20 vs 2024-1-20).
Check if package.json exists and contains a build script.
Install dependencies and build:
bashpnpm install && pnpm run build
If either fails → EXIT with error output.
Skip build step - project is likely pre-built or static.
Find index.html in common locations: dist/ → build/ → out/ → public/ → ./
If not found → EXIT with error message: "No index.html entry point found."
Read blocklet.yml and check the main field:
main points to directory containing index.html → validmain is misaligned → update it to the correct output directorybashblocklet meta
If fails → EXIT with error output and suggestions.
bashblocklet bundle --create-release
If fails → EXIT with error output.
Do NOT output any summary or recap after completion. Simply end silently after successful bundle creation. The tool outputs already provide sufficient feedback to the user.
See {baseDir}/errors.md for all error conditions and suggestions.
errors.md - Error referenceexamples.md - Workflow examples{baseDir} resolves to the skill's installation directory.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 41,110 | 117,895 | +187% | 1 | 1 | 0% | 237 | 2,310 | +875% | 0 | 0 | — |
case-01 | fail→fail | 36,845 | 458,946 | +1146% | 1 | 1 | 0% | 1,936 | 2,429 | +25% | 0 | 0 | — |
case-03 | fail→fail | 22,882 | 104,637 | +357% | 1 | 1 | 0% | 203 | 2,463 | +1113% | 0 | 0 | — |
case-04 | pass→pass | 17,600 | 9,212 | -48% | 1 | 1 | 0% | 1,988 | 2,622 | +32% | 0 | 0 | — |
case-05 | fail→pass | 13,778 | 17,993 | +31% | 1 | 1 | 0% | 1,093 | 2,348 | +115% | 0 | 0 | — |
case-06 | fail→pass | 17,237 | 5,884 | -66% | 1 | 1 | 0% | 1,732 | 2,482 | +43% | 0 | 0 | — |
case-07 | fail→pass | 11,457 | 2,484 | -78% | 1 | 1 | 0% | 672 | 2,488 | +270% | 0 | 0 | — |
case-08 | fail→pass | 15,575 | 40,843 | +162% | 1 | 1 | 0% | 1,049 | 2,405 | +129% | 0 | 0 | — |
case-09 | fail→pass | 15,888 | 17,674 | +11% | 1 | 1 | 0% | 1,782 | 2,403 | +35% | 0 | 0 | — |
case-10 | pass→pass | 20,708 | 11,660 | -44% | 1 | 1 | 0% | 2,511 | 2,962 | +18% | 0 | 0 | — |
case-11 | fail→fail | 15,011 | 6,612 | -56% | 1 | 1 | 0% | 1,353 | 2,207 | +63% | 0 | 0 | — |
case-12 | fail→pass | 12,641 | 13,048 | +3% | 1 | 1 | 0% | 1,433 | 3,064 | +114% | 0 | 0 | — |
case-13 | pass→pass | 19,491 | 2,660 | -86% | 1 | 1 | 0% | 2,299 | 2,326 | +1% | 0 | 0 | — |
case-14 | fail→pass | 14,073 | 8,487 | -40% | 1 | 1 | 0% | 2,152 | 2,126 | -1% | 0 | 0 | — |
case-15 | fail→pass | 12,716 | 1,395 | -89% | 1 | 1 | 0% | 1,494 | 2,178 | +46% | 0 | 0 | — |
case-16 | fail→fail | 13,195 | 3,995 | -70% | 1 | 1 | 0% | 1,614 | 2,301 | +43% | 0 | 0 | — |
case-17 | pass→pass | 7,010 | 6,744 | -4% | 1 | 1 | 0% | 1,258 | 2,608 | +107% | 0 | 0 | — |
case-18 | fail→pass | 16,711 | 8,669 | -48% | 1 | 1 | 0% | 1,810 | 2,426 | +34% | 0 | 0 | — |
case-19 | fail→pass | 14,348 | 2,745 | -81% | 1 | 1 | 0% | 2,081 | 2,408 | +16% | 0 | 0 | — |
case-20 | pass→pass | 12,596 | 10,715 | -15% | 1 | 1 | 0% | 2,077 | 3,591 | +73% | 0 | 0 | — |
case-21 | pass→pass | 20,168 | 9,915 | -51% | 1 | 1 | 0% | 2,852 | 4,057 | +42% | 0 | 0 | — |
case-22 | pass→pass | 13,753 | 33,744 | +145% | 1 | 1 | 0% | 1,844 | 2,974 | +61% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.