vibe-ticket
A high-performance ticket management system for Vibe Coding environment, built with Rust for maximum speed and reliability.
Features
- Fast Performance: Built with Rust for maximum speed and reliability
- Git Integration: Automatic branch creation and management
- Flexible Storage: YAML-based storage with efficient file handling
- Rich CLI: Intuitive command-line interface with comprehensive options
- Task Management: Built-in task tracking within tickets
- Export/Import: Support for JSON, YAML, CSV, and Markdown formats
- Search & Filter: Powerful search capabilities with regex support
- Archive System: Keep completed tickets organized
- Timestamp-based Naming: Automatic chronological ordering with YYYYMMDDHHMM prefixes
- Open Tickets View: Quickly view all active tickets (todo/doing status)
- Spec-Driven Development: Built-in support for specifications and requirements tracking
- AI Integration: Claude Code integration with automatic CLAUDE.md generation
Installation
From Source
# Clone the repository
# Build with cargo
# Install to PATH
From crates.io (Coming Soon)
Prerequisites
- Rust 1.70 or higher
- Git (for branch management features)
Quick Start
# Initialize a new project
# Create a new ticket
# List all tickets
# Start working on a ticket (creates Git branch)
# Check current status
# Complete a ticket
Command Reference
Project Management
init
Initialize a new vibe-ticket project in the current directory.
Ticket Operations
new
Create a new ticket with automatic timestamp prefix.
<SLUG> Ticket )
)
Example:
# Creates: 202507201345-user-auth
list
List tickets with various filtering options.
)
start
Start working on a ticket (sets status to "In Progress" and creates Git branch).
)
)
close
Complete a ticket and optionally archive it.
)
)
edit
Edit ticket properties.
)
)
)
open
Show all open tickets (alias for list --open). This is a quick way to see tickets that need attention.
Example:
# Show all open tickets sorted by update time
# Show high priority open tickets
show
Display detailed information about a ticket.
)
Task Management
task add
Add a task to a ticket.
<TITLE> Task
)
task complete
Mark a task as completed.
<TASK> Task )
)
task list
List tasks for a ticket.
)
Search and Filter
search
Search tickets by content.
<QUERY> Search
Data Management
archive
Archive or unarchive tickets.
<TICKET> Ticket
export
Export tickets to various formats.
<FORMAT> Export
)
import
Import tickets from files.
<FILE> Import
)
Configuration Management
config
Manage project configuration settings.
Utility Commands
check
Check project status and active ticket.
Global Options
These options can be used with any command:
-p, --project <DIR>: Use specific project directory-j, --json: Output in JSON format-n, --no-color: Disable colored output-v, --verbose: Enable verbose logging
Data Formats
Export/Import JSON Format
CSV Format
CSV exports include the following columns:
- ID, Slug, Title, Status, Priority, Assignee, Tags, Created At, Started At, Closed At, Tasks Total, Tasks Completed, Description
Configuration
Project configuration is stored in .vibe-ticket/config.yaml:
project:
name: "My Project"
description: "Project description"
default_assignee: null
default_priority: "medium"
git:
enabled: true
auto_branch: true
branch_prefix: "ticket/"
remote: "origin"
ui:
theme: "auto"
emoji: true
page_size: 20
date_format: "%Y-%m-%d %H:%M"
archive:
auto_archive: false
archive_after_days: 30
export:
default_format: "json"
include_archived: false
Configuration Keys
project.name: Project nameproject.description: Project descriptionproject.default_assignee: Default assignee for new ticketsproject.default_priority: Default priority (low, medium, high, critical)git.enabled: Enable Git integrationgit.auto_branch: Automatically create branches when starting ticketsgit.branch_prefix: Prefix for Git branchesui.emoji: Enable emoji in outputui.page_size: Number of items per page in listsarchive.auto_archive: Automatically archive completed ticketsarchive.archive_after_days: Days before auto-archiving
File Structure
.vibe-ticket/
├── config.yaml # Project configuration
├── state.yaml # Project state and metadata
├── active_ticket # Currently active ticket ID
├── tickets/ # Ticket YAML files
│ ├── <ticket-id>.yaml
│ └── ...
├── specs/ # Specification files
│ ├── <spec-id>.yaml
│ └── ...
├── templates/ # Custom ticket templates
│ ├── bug.yaml
│ └── feature.yaml
├── plugins/ # Plugin extensions
└── backups/ # Backup files
Tips and Best Practices
- Ticket Naming: Use descriptive slugs that clearly indicate the ticket's purpose
- Git Integration: Always use
--branchwhen starting tickets for better Git workflow - Task Breakdown: Break complex tickets into smaller tasks for better tracking
- Regular Archiving: Archive completed tickets to keep the active list manageable
- Tag Consistently: Use consistent tag names for better organization
- Export Regularly: Export tickets periodically for backup
Development
Building from Source
# Debug build
# Release build with optimizations
# Run tests
# Run with verbose output
RUST_LOG=debug
Architecture
- Core: Data models and business logic (
src/core/) - Storage: File-based storage implementation (
src/storage/) - CLI: Command-line interface and handlers (
src/cli/) - Error Handling: Comprehensive error types with user-friendly messages
Claude Code Integration
vibe-ticket includes built-in support for Claude Code through automatic CLAUDE.md generation. This feature enhances AI-assisted development by providing project context to Claude.
Overview
CLAUDE.md files help Claude Code understand your project structure, commands, and workflows. vibe-ticket can automatically generate and maintain these files with project-specific information.
Generating CLAUDE.md
During Project Initialization
The simplest way to get started is during project initialization:
# Initialize project with CLAUDE.md
# Alternative syntax
This creates a comprehensive CLAUDE.md file that includes:
- Project name and description
- Common vibe-ticket commands with examples
- Current project configuration
- Workflow guidelines
- Best practices for ticket management
- The initialization command itself (for reproducibility)
For Existing Projects
Add CLAUDE.md to existing projects using the config command:
# Generate basic CLAUDE.md
# Generate with advanced template
# Append to existing CLAUDE.md (preserves custom content)
# Custom output location
# Combine options
Template Options
Basic Template (default)
The basic template includes:
- Project Overview: Name, description, and purpose
- Essential Commands: Common vibe-ticket operations with examples
- Configuration: Current project settings (Git integration, default priority, etc.)
- Statistics: Real-time ticket counts (total, active, completed)
- Workflow Guidelines: Standard ticket management practices
- Best Practices: Naming conventions and organizational tips
Advanced Template
The advanced template includes everything from basic plus:
- Git Worktree Support: Examples for parallel development
- Advanced Search: Complex filtering and regex patterns
- Export/Import: Data migration and backup commands
- Environment Variables:
VIDE_TICKET_PROJECT,VIDE_TICKET_NO_COLOR, etc. - Git Hooks Integration: Pre-commit and post-checkout examples
- Troubleshooting: Common issues and solutions
- Performance Tips: Optimization strategies
Dynamic Content
Generated CLAUDE.md files include dynamically populated information:
- Current date of generation
- Active project configuration values
- Real-time ticket statistics
- Git integration status
- Project-specific settings
Workflow Examples
New Project with AI Assistance
# Create and initialize project
&&
# Open with Claude Code
# Claude now understands your project structure
Adding to Existing Project
# Generate initial CLAUDE.md
# Later, after configuration changes
Team Onboarding
# Generate comprehensive documentation
# Add team-specific instructions
Claude Code Benefits
With a properly configured CLAUDE.md, Claude Code can:
-
Understand Project Context
- Knows available commands and their usage
- Understands project structure and conventions
- Aware of current configuration and settings
-
Provide Better Assistance
- Suggests appropriate vibe-ticket commands
- Follows established workflows
- Respects project-specific conventions
-
Automate Common Tasks
- Generate tickets from error logs
- Create task breakdowns
- Suggest implementation approaches
-
Maintain Consistency
- Uses correct naming conventions
- Follows team practices
- Applies project standards
Best Practices
- Initial Setup: Always use
--claude-mdduring initialization for new projects - Regular Updates: Run
config claude --appendafter major configuration changes - Customization: Add project-specific sections after generation
- Version Control: Commit CLAUDE.md to track project evolution
- Team Alignment: Review and update CLAUDE.md during team meetings
Advanced Usage
Custom Sections
After generation, add custom sections for your team:
- -
- -
Integration with CI/CD
# .github/workflows/update-claude.yml
on:
push:
paths:
- '.vibe-ticket/config.yaml'
jobs:
update-claude:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: vibe-ticket config claude --append
- uses: EndBug/add-and-commit@v9
with:
message: 'chore: update CLAUDE.md'
License
[Your License Here]
Contributing
[Your Contributing Guidelines Here]