with one click
changeset-generator
// Generates changeset files based on changes. Use when user asks to create a changeset or at the end of a feature implementation, when the user asks to wrap up or finalize changes
// Generates changeset files based on changes. Use when user asks to create a changeset or at the end of a feature implementation, when the user asks to wrap up or finalize changes
Use when working with `.c4`/`.likec4` files or LikeC4 CLI/config questions where exact DSL/CLI syntax is required, especially for strict command/snippet-first answers, validate/export flags, predicates `*`/`_`/`**`, deployment snippets, dynamic views, or relationship extension matching.
Use when you need to add a new element shape to the LikeC4 codebase. Trigger this skill whenever the user mentions adding a shape, creating a new shape, implementing a shape, or asks about how shapes work in LikeC4. Also trigger when the user provides a visual reference image and wants it turned into an element shape. Even if the user just says "new shape" or drops an image of a shape they want — use this skill.
| name | changeset-generator |
| description | Generates changeset files based on changes. Use when user asks to create a changeset or at the end of a feature implementation, when the user asks to wrap up or finalize changes |
Generate changeset files based on current branch changes or staged files.
Determine where to read changes from, in this priority order:
# First: check for staged changes
STAGED=$(git diff --staged --name-only)
if [ -n "$STAGED" ]; then
echo "Using staged changes"
else
# Second: check for branch changes vs main
BRANCH_DIFF=$(git diff --name-only main...HEAD 2>/dev/null)
if [ -n "$BRANCH_DIFF" ]; then
echo "Using branch changes vs main"
else
# Third: check for uncommitted changes
UNCOMMITTED=$(git diff --name-only)
echo "Using uncommitted changes"
fi
fi
Use whichever source has changes. If none have changes, tell the user and stop.
For staged changes:
git diff --staged --name-only # changed files
git diff --staged --stat # change size overview
git diff --staged -- '*.ts' '*.tsx' # actual code diff for key files
For branch changes:
git diff --name-only main...HEAD # changed files
git log --oneline main..HEAD # commit list
git log --format="%s%n%b" main..HEAD # commit messages for intent
Read the actual diff for non-trivial files when commit messages are vague — file names alone are often insufficient for writing a good summary.
Conventional Commits hints:
feat: / fix: — usually needs a changesetchore: / test: / refactor: — usually skip unless user-facingGroup changed files by their package:
packages/<name>/* → read packages/<name>/package.json for the package nameapps/<name>/* → read apps/<name>/package.jsonstyled-system/<name>/* → read styled-system/<name>/package.jsonSkip packages where the only changes are:
*.spec.ts, __tests__/*, __snapshots__/*).gitignore)@likec4/icons, @likec4/tsconfigIf no packages remain after filtering, tell the user there are no user-facing changes and stop — do not create a changeset.
Write from the user's perspective — what they can now do, what was fixed, what changed for them.
Rules:
Fixes [#123](https://github.com/likec4/likec4/issues/123)Do NOT mention: test changes, internal refactors, config changes, code cleanup, dependency bumps.
Always use patch — versioning is handled manually by maintainers.
Derive the filename from the summary — lowercase, hyphens, descriptive:
add-cloud-shape.mdfix-diagram-zoom-reset.mdelement-notes-feature.mdCreate at .changeset/<name>.md:
---
'<package-name>': patch
'<another-package>': patch
---
<summary>
Before creating the file, verify each package name exists:
# For each package in your changeset, confirm it's real
cat packages/<name>/package.json | grep '"name"'
If a package name doesn't match, fix it before writing the changeset.
Show the user the changeset content and file path before or after writing. If something looks off, iterate.
---
'@likec4/diagram': patch
---
Add reset manual layout button with tooltip guidance
---
'@likec4/core': patch
'@likec4/diagram': patch
---
First iteration of element notes feature:
- Add notes property to elements
- Display visual indicator on diagrams