Scaffold the config
Run
ferrflow initat the root of your repository. It detects your version files and writes a.ferrflowconfig:ferrflow initFor a Rust project this produces:
{ "$schema": "https://ferrflow.com/schema/ferrflow.json", "workspace": { "tagTemplate": "v{version}" }, "package": [ { "name": "my-app", "path": ".", "changelog": "CHANGELOG.md", "versionedFiles": [ { "path": "Cargo.toml", "format": "toml" } ] } ] }Preview what would happen
Before touching anything, run a dry-run to see what FerrFlow would do:
ferrflow checkOutput:
Scanning . ... → feat: add user authentication → fix: correct pagination offsetBump my-app 0.1.0 → 0.2.0 Tag v0.2.0Run the release
ferrflow releaseFerrFlow will:
- Update
Cargo.tomlto0.2.0 - Append to
CHANGELOG.md - Commit the changes
- Create and push
v0.2.0 - Create a GitHub release (if
GITHUB_TOKENis set)
- Update
Next steps
- Set up GitHub Actions to run releases automatically on push to
main - Configure a monorepo if you have multiple packages
- Add pre/post-release hooks for custom scripts during the release lifecycle
- Use
ferrflow versionandferrflow tagin CI scripts — see the CLI reference - Review the full config reference