K‑Skill Release History: How Automated Releases Work in This Monorepo
The k‑skill repository uses fully automated releases driven by Changesets for npm packages and release‑please for Python packages, with all version history stored on GitHub Releases rather than in a static changelog file.
The k‑skill project follows a release automation strategy that eliminates manual changelog maintenance. Instead of tracking k‑skill release history in a single file, the repository relies on two CI‑driven workflows that generate version bumps, changelogs, and Git tags automatically. This article explains how each mechanism works, where to find the generated release history, and how to interact with the system locally.
How K‑Skill Handles Releases: Two Automated Systems
The repository contains a monorepo with both JavaScript/TypeScript and Python packages. Each language ecosystem uses a different release tool:
Changesets for NPM Packages
The Changesets tool manages versioning for all npm workspace packages. When developers introduce changes that require a version bump, they create a .changeset/*.md file describing the impact.
Key implementation details:
- Configuration lives in
.changeset/config.json - The CI workflow
.github/workflows/release-npm.ymlrunschangeset versionon merge - This command updates
package.jsonversion fields and creates a "Version Packages" pull request - Upon merging that PR,
changeset publishpushes tags and releases to npm
Each package maintains its own generated changelog. For example, packages/k-skill-cli/CHANGELOG.md contains the automated release notes for that workspace member.
Release‑Please for Python Packages
Python packages in python-packages/* use release‑please, Google's release automation tool:
- The workflow
.github/workflows/release-python.ymltriggers on commits touching Python package paths release‑pleaseparses Conventional Commits to determine version bumps- It generates a
CHANGELOG.mdfor each Python package and creates GitHub releases automatically
Where to Find the K‑Skill Release History
Because both systems generate releases dynamically, no static release history file exists at the repository root. The authoritative sources are:
| Location | What It Contains |
|---|---|
| GitHub Releases page | All version tags with automated release notes |
.git/refs/tags (remote) |
Tag objects created by CI workflows |
Per‑package CHANGELOG.md files |
Generated changelogs for individual packages |
package.json files |
Current version strings for npm workspaces |
From a shallow clone, the local repository shows only the initial commit (06d017ac05317da31ab2c8d6a9accf4ad4db70ad from 2024‑08‑04) with no tags. All release metadata lives on GitHub's servers.
Viewing and Working with Releases Locally
Use these commands to inspect the k‑skill release history from your terminal:
# List all tags created on the remote (GitHub)
git ls-remote --tags origin
# View current version of an npm workspace package
cd packages/k-skill-cli && npm pkg get version
# Simulate the Changesets version step locally
npx changeset version
# Check release‑please status for Python packages
npx release-please release-pr --token=$GITHUB_TOKEN --repo-url=NomaDamas/k-skill
Key Files That Power the Release Pipeline
| File | Purpose |
|---|---|
package.json |
Defines monorepo workspaces and npm release scripts |
.changeset/config.json |
Configures Changeset versioning strategy |
.github/workflows/release-npm.yml |
CI job for npm package releases |
.github/workflows/release-python.yml |
CI job for Python package releases |
.github/release-please/ |
JSON manifests for release‑please configuration |
packages/*/CHANGELOG.md |
Auto‑generated changelogs per npm package |
Summary
- The k‑skill release history is fully automated — no hand‑written changelog exists
- Changesets handle npm packages through
.changeset/files and therelease-npm.ymlworkflow - release‑please handles Python packages through the
release-python.ymlworkflow - All releases appear on the GitHub Releases page with auto‑generated notes
- Local clones only show the initial commit; use
git ls-remote --tags originto see all releases
Frequently Asked Questions
How do I find the current version of a k‑skill package?
Check the package.json for npm packages or run npm pkg get version inside the workspace directory. For Python packages, inspect the pyproject.toml or setup.py version field. The latest release version always appears on the GitHub Releases page.
Why doesn't k‑skill have a CHANGELOG.md at the repository root?
The project uses automated release tools that generate changelogs per‑package rather than maintaining a single root‑level file. This approach ensures each workspace member has accurate, scoped release notes without manual synchronization.
Can I trigger a release manually?
You can simulate the version bump locally with npx changeset version (npm) or npx release‑please release-pr (Python), but actual releases require merging through the GitHub workflows. The release-npm.yml and release-python.yml workflows enforce the production release process.
How do I add a changeset for my npm package change?
Run npx changeset in the repository root, select the affected packages, and describe the change. This creates a .changeset/*.md file that the CI will consume when generating the next release.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →