Skip to content

Penify CLI - Commit Commands

The commit command allows you to generate smart, AI-powered commit messages for your Git changes. This document explains all available options and combinations.

Basic Usage

bash
penify commit

By default, this command:

  • Analyzes your staged Git changes
  • Generates a concise commit title only
  • Uses local LLM if configured, or falls back to Penify API

Command Options

-m, --message

Provide context for the commit message generation:

bash
penify commit -m "Fix login flow"

This hint helps the AI understand your intention and improves the quality of the generated message.

-e, --terminal

Open an editor to review and edit the generated commit message before committing:

bash
penify commit -e

This opens your default Git editor with the generated message for review.

-d, --description

Generate a detailed commit message with both title and description:

bash
penify commit -d

Without this flag, only the commit title is generated.

Option Combinations

You can combine these options for different workflows:

Generate Title Only with Context

bash
penify commit -m "Update login UI"

Generate Title and Description with Context

bash
penify commit -m "Update login UI" -d

Generate and Edit Full Commit Message

bash
penify commit -d -e

Generate, Edit, and Provide Context

bash
penify commit -m "Refactor authentication" -d -e

LLM and JIRA Integration

Using Local LLM

If you've configured a local LLM using penify config llm, the commit command will automatically use it for message generation.

Benefits:

  • Privacy: your code changes don't leave your machine
  • Speed: no network latency
  • Works offline

JIRA Enhancement

If you've configured JIRA integration using penify config jira, the commit command will:

  1. Detect JIRA issue references in your changes
  2. Fetch issue details from your JIRA instance
  3. Include issue information in the commit message
  4. Format the commit message according to JIRA's smart commit format

Example output:

PROJ-123: Fix authentication bug in login flow

- Updated OAuth token validation
- Fixed session timeout handling
- Added unit tests for edge cases

[PROJ-123]

Configuration Requirements

For the commit command to work:

  1. You must have configured either:

    • Local LLM via penify config llm, OR
    • Logged in via penify login
  2. For JIRA enhancement (optional):

    • Configure JIRA via penify config jira

Examples

Basic Commit with Default Settings

bash
# Stage your changes
git add .

# Generate commit message
penify commit

# Commit with the generated message
git commit -m "Generated message here"

Full Workflow with All Features

bash
# Stage your changes
git add .

# Generate detailed commit message with JIRA integration, 
# provide context, and open editor for review
penify commit -m "Fix login issue" -d -e

# The commit is automatically completed after you save and exit the editor

Troubleshooting

Common Issues

  1. "No LLM model or API token provided"

    • Run penify config llm to configure a local LLM, or
    • Run penify login to authenticate with Penify
  2. "Failed to connect to JIRA"

    • Check your JIRA configuration with cat ~/.penify
    • Verify your network connection
    • Ensure your JIRA credentials are valid
  3. "Error initializing LLM client"

    • Verify your LLM configuration settings
    • Ensure the LLM API is accessible