1. Scaffold the config

    Run ferrflow init at the root of your repository. It detects your version files and writes a .ferrflow config:

    ferrflow init
    

    For 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" }
          ]
        }
      ]
    }
    
  2. Preview what would happen

    Before touching anything, run a dry-run to see what FerrFlow would do:

    ferrflow check
    

    Output:

    Scanning . ...
    → feat: add user authentication
    → fix: correct pagination offset
    
    

    Bump my-app 0.1.0 → 0.2.0 Tag v0.2.0

  3. Run the release

    ferrflow release
    

    FerrFlow will:

    • Update Cargo.toml to 0.2.0
    • Append to CHANGELOG.md
    • Commit the changes
    • Create and push v0.2.0
    • Create a GitHub release (if GITHUB_TOKEN is set)

Next steps