원클릭으로
l-changeset
// Generate a changeset file for the current branch. Analyzes commits, determines bump types, and writes a user-facing changelog entry. Use when preparing version bumps.
// Generate a changeset file for the current branch. Analyzes commits, determines bump types, and writes a user-facing changelog entry. Use when preparing version bumps.
Stage and commit changes with conventional commit format. Smart analysis groups changes, proposes splits, and writes structured commit descriptions. Use when committing code changes.
Generate comprehensive e2e tests for Lowdefy blocks using Playwright. Use when creating end-to-end tests for block functionality, testing block rendering, properties, events, and user interactions.
Create a GitHub issue for the lowdefy repo. Auto-detects bug vs feature, drafts with appropriate template, and creates with labels. Use when filing bugs, feature requests, or enhancements.
Update a single dependency by reading its full changelog and assessing impact. Safe updates are applied directly, major updates are flagged for design review. Use when updating packages.
Create a draft pull request targeting develop. Auto-generates PR body from design files, GitHub issues, and/or commit history. Use when opening a PR.
| name | l-changeset |
| description | Generate a changeset file for the current branch. Analyzes commits, determines bump types, and writes a user-facing changelog entry. Use when preparing version bumps. |
| argument-hint | [patch | minor | major] |
Create a changeset file describing the changes on the current branch for the changelog.
patch, minor, or major — Override the bump type for all packagesRun in a single bash call:
echo "===BRANCH==="
git branch --show-current
echo "===COMMITS==="
git log develop..HEAD --oneline 2>/dev/null || git log origin/develop..HEAD --oneline
echo "===CHANGED-SRC==="
git diff develop..HEAD --name-only -- 'packages/*/src/**' 2>/dev/null
echo "===EXISTING-CHANGESETS==="
git diff develop..HEAD --name-only -- '.changeset/*.md' 2>/dev/null
If no commits ahead of develop: "No changes to create a changeset for." and stop.
From the changed source files, extract unique package names:
packages/build/src/... → @lowdefy/buildpackages/helpers/src/... → @lowdefy/helperspackages/plugins/blocks/blocks-antd/src/... → @lowdefy/blocks-antdIMPORTANT: The CLI package name is lowdefy, NOT @lowdefy/cli. Using @lowdefy/cli will cause changeset processing to fail.
If no source files changed (only tests, docs, config), say: "No source changes found. Changesets are only needed for functional changes to package source code." and stop.
Read any existing changeset files added on this branch. Parse their YAML frontmatter to see which packages are already covered.
If all affected packages are already covered by existing changesets, say: "All changed packages are already covered by existing changesets: {list files}." and stop, unless the user explicitly asked to create a new one.
If the user provided an override (patch, minor, major): use that for all packages.
Otherwise, auto-detect from commits:
feat: or feat(...) → minorfix:, chore:, refactor:, docs:, test: → patchBREAKING CHANGE or !: → majorFor each affected package, assign the bump type. If different packages have different bump levels based on the commits that touch them, assign per-package.
This is critical. Changeset descriptions appear in the public changelog that users read. They must be:
Guidelines:
feat(build): ... → feat: ...Small change format:
fix(build): Preserve inline page content in dev server builds.
Pages declared inline in lowdefy.yaml were showing as empty in dev mode. Inline pages are now correctly detected and preserved during incremental builds.
Large change format:
feat: Single-pass async walker for ref resolution
**Single-Pass Walker (`@lowdefy/build`)**
- New walker resolves refs, evaluates build operators, and tags provenance in one pass
- Improved build performance by eliminating redundant serialization passes
**In-Place Operator Evaluation (`@lowdefy/operators`)**
- Build operators are now evaluated inline during ref resolution instead of in a separate pass
File name: Descriptive, kebab-case, based on the change. Examples:
fix-build-inline-pages.mdfeat-walker-single-pass.mdfix-serializer-marker-mutation.mdDo NOT use random names.
File format:
---
'@lowdefy/build': minor
'@lowdefy/operators': minor
---
{description}
Write the file to .changeset/{name}.md.
Present the changeset for confirmation:
Question: "Generated changeset:"
Header: "Changeset"
Options:
- label: "Looks good"
description: "{name}.md — {packages} ({bump})"
- label: "Skip"
description: "Don't create the changeset"
If the user provides feedback via "Other", incorporate it and write the updated file (don't re-prompt).
Show the file path and a summary of what was written.
If changes are uncommitted, remind: "Run /l-commit to commit the changeset."