Claude-skill-registry jsr
jsr release workflow for Deno projects. Use when publishing or releasing packages to JSR (JavaScript Registry) using Deno.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/jsr" ~/.claude/skills/majiayu000-claude-skill-registry-jsr && rm -rf "$T"
manifest:
skills/data/jsr/SKILL.mdsource content
Add deno task release
deno task release// scripts/release.ts const denoJsonPath = new URL("../deno.json", import.meta.url); const denoJson = JSON.parse(Deno.readTextFileSync(denoJsonPath)); const currentVersion = denoJson.version; let newVersion = Deno.args[0]; if (!newVersion) { console.log(`Current version: ${currentVersion}`); const input = prompt("Enter new version:"); if (!input) { console.error("Version is required"); Deno.exit(1); } newVersion = input; } if (newVersion.startsWith("v")) { newVersion = newVersion.substring(1); } // Update deno.json denoJson.version = newVersion; Deno.writeTextFileSync( denoJsonPath, JSON.stringify(denoJson, null, 2) + "\n", ); console.log(`Updated deno.json version to ${newVersion}`); // Run git commands async function run(cmd: string[]) { console.log(`> ${cmd.join(" ")}`); const command = new Deno.Command(cmd[0], { args: cmd.slice(1), stdout: "inherit", stderr: "inherit", }); const { code } = await command.output(); if (code !== 0) { console.error(`Command failed with code ${code}`); Deno.exit(code); } } await run(["git", "add", "deno.json"]); await run(["git", "commit", "-m", `chore: bump version to ${newVersion}`]); console.log( `\nSuccessfully bumped version to ${newVersion}. Please push to trigger release workflow.`, );
Add release workflow under .github/workflows/ci.yml
.github/workflows/ci.ymlname: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@v6 - name: Setup Deno uses: denoland/setup-deno@v2 - run: deno lint - run: deno check - run: deno test -P - run: deno fmt --check release: needs: test if: github.ref == 'refs/heads/main' && github.event_name == 'push' runs-on: ubuntu-latest permissions: contents: write id-token: write steps: - name: Checkout repository uses: actions/checkout@v6 - name: Check version id: check run: | VERSION="v$(jq -r .version deno.json)" echo "Version: $VERSION" git fetch --tags if git rev-parse "$VERSION" >/dev/null 2>&1; then echo "Tag $VERSION already exists." echo "exists=true" >> "$GITHUB_OUTPUT" else echo "Tag $VERSION not found." echo "exists=false" >> "$GITHUB_OUTPUT" echo "version=$VERSION" >> "$GITHUB_OUTPUT" fi - name: Setup Deno if: steps.check.outputs.exists == 'false' uses: denoland/setup-deno@v2 - name: Create Tag and Publish if: steps.check.outputs.exists == 'false' run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" VERSION="${{ steps.check.outputs.version }}" git tag "$VERSION" git push origin "$VERSION" deno publish