changelog generator & diff tool
stormlightlabs.github.io/git-storm/
changelog
changeset
markdown
golang
git
1---
2title: Storm CLI Manual
3---
4
5# NAME
6
7**storm** is a git powered aware changelog manager for Go projects.
8
9## SYNOPSIS
10
11```text
12storm [--repo <path>] [--output <file>] <command> [flags]
13```
14
15## DESCRIPTION
16
17Storm keeps unreleased notes in `.changes/*.md`, promotes them into
18`CHANGELOG.md`, and offers TUIs for reviewing diffs and entries. The binary
19is composed of self-contained subcommands that chain well inside scripts
20or CI jobs.
21
22### GLOBAL FLAGS
23
24| Flag | Description |
25| ----------------------- | -------------------------------------------------------- |
26| `--repo <path>` | Working tree to operate on (default: current directory). |
27| `-o`, `--output <file>` | Target changelog (default: `CHANGELOG.md`). |
28
29### COMMANDS
30
31#### `storm bump`
32
33Calculate the next semantic version by inspecting `CHANGELOG.md`.
34
35```text
36storm bump --bump <major|minor|patch> [--toolchain value...]
37```
38
39##### Flags
40
41| Flag | Description |
42| ---------------------------- | ------------------------------------------------------------------------------------------------------------- |
43| `--bump <type>` _(required)_ | Which semver component to increment. |
44| `--toolchain <value>` | Update language manifests (`Cargo.toml`, `pyproject.toml`, `package.json`, `deno.json`). |
45| | Accepts explicit paths, type aliases like `cargo`/`npm`, or the literal `interactive` to launch a picker TUI. |
46
47#### `storm release`
48
49Promote `.changes/*.md` into the changelog and optionally tag the repo.
50
51```text
52storm release (--version X.Y.Z | --bump <type>) [flags]
53```
54
55##### Flags
56
57| Flag | Description |
58| --------------------- | ----------------------------------------------------------------------------------- |
59| `--version <X.Y.Z>` | Explicit version for the new changelog entry. |
60| `--bump <type>` | Derive the version from the previous release (mutually exclusive with `--version`). |
61| `--date <YYYY-MM-DD>` | Override the release date (default: today). |
62| `--clear-changes` | Remove `.changes/*.md` files after a successful release. |
63| `--dry-run` | Render a preview without touching any files. |
64| `--tag` | Create an annotated git tag containing the release notes. |
65| `--toolchain <value>` | Update manifest files just like in `storm bump`. |
66| `--output-json` | Emit machine-readable JSON instead of styled text. |
67
68#### `storm generate`
69
70Create `.changes/*.md` files from commit history, with optional TUI review.
71
72```text
73storm generate <from> <to>
74storm generate --since <tag> [to]
75```
76
77##### Flags
78
79| Flag | Description |
80| --------------------- | -------------------------------------------------- |
81| `-i`, `--interactive` | Open a commit selector TUI for choosing entries. |
82| `--since <tag>` | Shortcut for `<from>`; defaults `<to>` to `HEAD`. |
83| `--output-json` | Emit machine-readable JSON instead of styled text. |
84
85#### `storm diff`
86
87Side-by-side or unified diff with TUI navigation.
88
89```text
90storm diff <from>..<to> [flags]
91storm diff <from> <to> [flags]
92```
93
94| Flag | Description |
95| ------------------------------- | ----------------------------------------------------- |
96| `-f`, `--file <path>` | Restrict the diff to a single file. |
97| `-e`, `--expanded` | Show all unchanged lines instead of compressed hunks. |
98| `-v`, `--view <split\|unified>` | Rendering style (default: split). |
99
100#### `storm check`
101
102Verify every commit in a range has a corresponding unreleased entry.
103
104```text
105storm check <from> <to>
106storm check --since <tag> [to]
107```
108
109| Flag | Description |
110| --------------- | ---------------------------------------------------------- |
111| `--since <tag>` | Start range at the provided tag and default end to `HEAD`. |
112
113Non-zero exit status indicates missing entries. Messages containing
114`[nochanges]` or `[skip changelog]` are ignored.
115
116#### `storm unreleased`
117
118Manage `.changes` entries directly.
119
120##### `add`
121
122```text
123storm unreleased add --type <kind> --summary <text> [--scope value]
124```
125
126| Flag | Description |
127| --------------------------------------------------- | ------------------------------------------- |
128| `--type <added\|changed\|fixed\|removed\|security>` | Entry category. |
129| `--summary <text>` | Short human readable note. |
130| `--scope <value>` | Optional component indicator (e.g., `cli`). |
131
132##### `list`
133
134```text
135storm unreleased list [--json]
136```
137
138| Flag | Description |
139| -------- | -------------------------------------------------- |
140| `--json` | Emit machine-readable JSON instead of styled text. |
141
142##### `partial`
143
144```text
145storm unreleased partial <commit-ref> [flags]
146```
147
148| Flag | Description |
149| ------------------ | --------------------------------------------------- |
150| `--type <value>` | Override the inferred type from the commit message. |
151| `--summary <text>` | Override the inferred summary. |
152| `--scope <value>` | Optional component indicator. |
153
154##### `review`
155
156```text
157storm unreleased review
158```
159
160Launch a Bubble Tea TUI for editing and deleting entries before release.
161Requires a TTY; fall back to `storm unreleased list` otherwise.
162
163#### `storm version`
164
165Print the current build’s version string.
166
167## FILES
168
169- `.changes/` — queue of unreleased entries created by `storm generate` or `storm unreleased add`.
170- `CHANGELOG.md` — Keep a Changelog-compatible file updated by `storm release`.
171
172## SEE ALSO
173
174`CHANGELOG.md`, [Keep a Changelog](https://keepachangelog.com), semantic versioning at [semver.org](https://semver.org).