# K‑Skill Release History: How Automated Releases Work in This Monorepo

> Explore k-skill's automated release history. Learn how Changesets and release-please manage npm and Python packages, with all versions tracked on GitHub Releases.

- Repository: [NomaDamas/k-skill](https://github.com/NomaDamas/k-skill)
- Tags: release-history
- Published: 2026-08-04

---

**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`](https://github.com/NomaDamas/k-skill/blob/main/.changeset/config.json)
- The CI workflow [`.github/workflows/release-npm.yml`](https://github.com/NomaDamas/k-skill/blob/main/.github/workflows/release-npm.yml) runs `changeset version` on merge
- This command updates [`package.json`](https://github.com/NomaDamas/k-skill/blob/main/package.json) version fields and creates a "Version Packages" pull request
- Upon merging that PR, `changeset publish` pushes tags and releases to npm

Each package maintains its own generated changelog. For example, [`packages/k-skill-cli/CHANGELOG.md`](https://github.com/NomaDamas/k-skill/blob/main/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.yml`](https://github.com/NomaDamas/k-skill/blob/main/.github/workflows/release-python.yml) triggers on commits touching Python package paths
- `release‑please` parses **Conventional Commits** to determine version bumps
- It generates a [`CHANGELOG.md`](https://github.com/NomaDamas/k-skill/blob/main/CHANGELOG.md) for 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](https://github.com/NomaDamas/k-skill/releases) | All version tags with automated release notes |
| `.git/refs/tags` (remote) | Tag objects created by CI workflows |
| Per‑package [`CHANGELOG.md`](https://github.com/NomaDamas/k-skill/blob/main/CHANGELOG.md) files | Generated changelogs for individual packages |
| [`package.json`](https://github.com/NomaDamas/k-skill/blob/main/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:

```bash

# 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`](https://github.com/NomaDamas/k-skill/blob/main/package.json) | Defines monorepo workspaces and npm release scripts |
| [`.changeset/config.json`](https://github.com/NomaDamas/k-skill/blob/main/.changeset/config.json) | Configures Changeset versioning strategy |
| [`.github/workflows/release-npm.yml`](https://github.com/NomaDamas/k-skill/blob/main/.github/workflows/release-npm.yml) | CI job for npm package releases |
| [`.github/workflows/release-python.yml`](https://github.com/NomaDamas/k-skill/blob/main/.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 the [`release-npm.yml`](https://github.com/NomaDamas/k-skill/blob/main/release-npm.yml) workflow
- **release‑please** handles Python packages through the [`release-python.yml`](https://github.com/NomaDamas/k-skill/blob/main/release-python.yml) workflow
- All releases appear on the [GitHub Releases page](https://github.com/NomaDamas/k-skill/releases) with auto‑generated notes
- Local clones only show the initial commit; use `git ls-remote --tags origin` to see all releases

## Frequently Asked Questions

### How do I find the current version of a k‑skill package?

Check the [`package.json`](https://github.com/NomaDamas/k-skill/blob/main/package.json) for npm packages or run `npm pkg get version` inside the workspace directory. For Python packages, inspect the [`pyproject.toml`](https://github.com/NomaDamas/k-skill/blob/main/pyproject.toml) or [`setup.py`](https://github.com/NomaDamas/k-skill/blob/main/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`](https://github.com/NomaDamas/k-skill/blob/main/release-npm.yml) and [`release-python.yml`](https://github.com/NomaDamas/k-skill/blob/main/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.