@raw-works/fizzy-cli
v1.0.4
Published
CLI for Fizzy (https://fizzy.do) - designed for AI agents like Claude Code
Downloads
454
Maintainers
Readme
@raw-works/fizzy-cli
CLI for Fizzy - designed for AI agents like Claude Code
Manage your Fizzy boards, cards, and workflows from the terminal or through AI agents. Fully agent-friendly with non-interactive authentication, JSON output, and comprehensive API coverage.
🚀 Quick Start
No installation required - use bunx or npx:
# List your boards (with bunx - fastest!)
bunx @raw-works/fizzy-cli boards list
# Create a card (with npx)
npx @raw-works/fizzy-cli cards create --board <board-id> --title "Ship it!"
# Or install globally
npm install -g @raw-works/fizzy-cli
fizzy boards list⚡️ Installation
Choose your preferred method:
Option 1: bunx (Fastest)
# Bun's npx equivalent - much faster:
bunx @raw-works/fizzy-cli <command>
# Example: create a card
bunx @raw-works/fizzy-cli cards create --board abc123 --title "New card"Option 2: npx (No Installation)
# Run any command without installing:
npx @raw-works/fizzy-cli <command>
# Example: list boards
npx @raw-works/fizzy-cli boards listOption 3: Global Install
# Install once, use everywhere:
npm install -g @raw-works/fizzy-cli
# Now just use 'fizzy':
fizzy boards list
fizzy cards create --board abc123 --title "New card"Option 4: Local Project
# Add to your project:
npm install @raw-works/fizzy-cli
# Use via package.json scripts or npx:
npx fizzy boards list💡 Why This CLI?
- ✅ 100% API Coverage - All 55 Fizzy endpoints supported
- ✅ Zero Config - Works with npx, no setup needed
- ✅ Type Safe - Built with TypeScript, validated with Zod
- ✅ Battle Tested - 293 tests, dogfooded daily
- ✅ Rich Features - File uploads, search, filters, retries, confirmations
- ✅ Great DX - Markdown support, templates, auto-complete ready
- ✅ Multi-Account - Switch between Fizzy accounts seamlessly
- ✅ Scriptable - JSON output for automation
🎯 Features
Core Resources
- Boards: Create, list, update, delete boards
- Cards: Full lifecycle management - create, update, move, close, reopen, postpone, triage
- Columns: Organize your board workflows
- Steps: Checklists and todos for cards
- Comments: Discuss and collaborate
- Reactions: React with emojis
- Tags: Organize and filter
- Users: Manage team members
- Notifications: Stay updated
Power Features
- 📁 File Uploads: Card images, user avatars
- 🔍 Search & Filter: Advanced filtering, sorting, date ranges
- 📝 Rich Text: Markdown support with templates (bug, feature, task)
- ✅ Validation: Client-side validation for better error messages
- 🔄 Retries: Automatic retry with exponential backoff
- ⚠️ Confirmations: Prevent accidents with delete confirmations
- 📄 Pagination: Handle large datasets efficiently
- 🎨 Beautiful Output: Tables, colors, spinners
Quick Start
1. Authentication
The easiest way to authenticate is using a Personal Access Token (PAT):
fizzy auth loginThis will guide you through:
- Visit https://app.fizzy.do/my/access_tokens
- Create a token with "Read + Write" permission
- Paste the token when prompted
Your token is stored securely in ~/.fizzy-cli/tokens.json.
Alternatively, use magic link authentication:
fizzy auth login --magic-link [email protected]2. List Your Boards
fizzy boards list3. Create Your First Card
fizzy cards create --board <board-id> --title "My first CLI card" --description "Created from fizzy-cli!"4. Explore Commands
fizzy --help
fizzy boards --help
fizzy cards --helpConfiguration
Environment Variables
FIZZY_BASE_URL: Override the default Fizzy API URL (default:https://app.fizzy.do)
Token Storage
Tokens are stored in ~/.fizzy-cli/tokens.json with the following structure:
{
"accounts": [
{
"account_slug": "your-account",
"account_name": "Your Account",
"access_token": "your_token_here",
"user": {
"id": "user_id",
"name": "Your Name",
"email_address": "[email protected]",
"role": "owner"
}
}
],
"defaultAccount": "your-account"
}Multiple Accounts
fizzy-cli supports multiple accounts. You can:
# List all accounts
fizzy auth accounts
# Switch default account
fizzy auth switch another-account
# Use specific account for a command
fizzy boards list --account another-accountCommand Overview
All commands support --json for JSON output and --account <slug> for multi-account usage.
Authentication
fizzy auth login- Authenticate with PAT or magic linkfizzy auth logout- Remove stored credentialsfizzy auth status- Show authentication statusfizzy auth accounts- List all authenticated accountsfizzy auth switch <slug>- Switch default account
Boards
fizzy boards list- List all boardsfizzy boards get <id>- Get board detailsfizzy boards create <name>- Create a new boardfizzy boards update <id>- Update board propertiesfizzy boards delete <id>- Delete a board
Cards
fizzy cards list- List cards with filtersfizzy cards get <number>- Get card detailsfizzy cards create- Create a new cardfizzy cards update <number>- Update card propertiesfizzy cards delete <number>- Delete a cardfizzy cards close <number>- Close a cardfizzy cards reopen <number>- Reopen a closed cardfizzy cards move <number>- Move card to columnfizzy cards postpone <number>- Postpone card (Not Now)fizzy cards triage <number>- Send card to triagefizzy cards tag <number>- Add/remove tagsfizzy cards assign <number>- Assign/unassign usersfizzy cards watch <number>- Watch a cardfizzy cards unwatch <number>- Unwatch a card
Columns
fizzy columns list --board <id>- List board columnsfizzy columns get <id> --board <id>- Get column detailsfizzy columns create --board <id> --name <name>- Create columnfizzy columns update <id> --board <id>- Update columnfizzy columns delete <id> --board <id>- Delete column
Steps (Card Checklists)
fizzy steps list --card <number>- List card stepsfizzy steps get <id> --card <number>- Get step detailsfizzy steps create --card <number> --content <text>- Create stepfizzy steps update <id> --card <number>- Update stepfizzy steps delete <id> --card <number>- Delete step
Comments
fizzy comments list <card-number>- List card commentsfizzy comments get <card-number> <comment-id>- Get comment detailsfizzy comments create <card-number> --body <text>- Create commentfizzy comments update <card-number> <comment-id> --body <text>- Update commentfizzy comments delete <card-number> <comment-id>- Delete comment
Reactions
fizzy reactions list --card <number> --comment <id>- List reactionsfizzy reactions create --card <number> --comment <id> --content <emoji>- Add reactionfizzy reactions delete <id> --card <number> --comment <id>- Remove reaction
Tags
fizzy tags list- List all tags
Users
fizzy users list- List all usersfizzy users get <id>- Get user detailsfizzy users me- Get current user profilefizzy users update <id>- Update user detailsfizzy users deactivate <id>- Deactivate a user
Notifications
fizzy notifications list- List notificationsfizzy notifications read <id>- Mark as readfizzy notifications unread <id>- Mark as unreadfizzy notifications mark-all-read- Mark all as read
Documentation
- Complete Command Reference - Detailed documentation for every command
- Usage Examples - Real-world examples and workflows
- Troubleshooting Guide - Common issues and solutions
- Contributing Guide - How to contribute to fizzy-cli
Development
Running Locally
# Run in development mode
bun run dev
# Build the project
bun run build
# Type checking
bun run typecheck
# Run tests
bun testTesting
This project has comprehensive test coverage across multiple layers:
Unit Tests
Run the unit test suite:
bun testTests are located in src/commands/__tests__/ and cover individual commands and utilities.
Smoke Tests
Basic CLI functionality tests:
./scripts/smoke-test.shVerifies all commands are accessible and display help correctly.
E2E Tests
End-to-end integration tests:
bun test src/commands/__tests__/e2e.test.tsTests complete workflows and command interactions.
Dogfooding Tests (Optional)
Test against a real Fizzy instance:
export FIZZY_TOKEN="your_token"
export FIZZY_BASE_URL="https://app.fizzy.do"
./scripts/dogfood-test.shSecurity Note: Never commit credentials. Use environment variables or GitHub Secrets in CI/CD.
Secret Scanning
All commits are scanned for leaked credentials using gitleaks:
gitleaks detect --no-git --verboseConfiguration: .gitleaks.toml
Project Structure
fizzy-cli/
├── src/
│ ├── index.ts # Main entry point
│ ├── cli.ts # CLI setup with Commander
│ ├── commands/ # Command implementations
│ │ ├── auth.ts # Authentication commands
│ │ ├── boards.ts # Board management
│ │ ├── cards.ts # Card management
│ │ ├── columns.ts # Column management
│ │ ├── steps.ts # Step/checklist management
│ │ ├── comments.ts # Comment management
│ │ ├── reactions.ts # Reaction management
│ │ ├── tags.ts # Tag listing
│ │ ├── users.ts # User management
│ │ └── notifications.ts # Notification management
│ ├── lib/
│ │ ├── api/ # API client and utilities
│ │ ├── auth/ # Authentication utilities
│ │ └── output/ # Output formatting utilities
│ ├── middleware/ # Command middleware (auth, validation)
│ ├── schemas/ # Zod schemas for API validation
│ └── types/ # TypeScript type definitions
├── docs/ # Documentation
├── scripts/ # Build and test scripts
├── package.json
└── tsconfig.jsonAutomated Updates
This CLI stays in sync with the upstream Fizzy repository through:
Nightly Updates
A GitHub Actions workflow runs every night at 2 AM UTC to:
- Check for updates in the
fizzy-apisubmodule - Update to the latest commit from upstream
- Run comprehensive tests:
- Type checking
- Unit tests
- CLI smoke tests
- Create a pull request if updates are available and tests pass
The workflow can also be triggered manually via the Actions tab.
Examples
Create a card with an image
fizzy cards create \
--board abc123 \
--title "Design mockup review" \
--description "Please review the new homepage design" \
--image ./mockup.pngList cards filtered by status
# Show only closed cards
fizzy cards list --status closed
# Show cards with specific tag
fizzy cards list --tag tag-id-hereBulk tag multiple cards
# Tag cards in a loop
for card in 42 43 44; do
fizzy cards tag $card --add "urgent"
doneGet JSON output for scripting
# Parse JSON with jq
fizzy boards list --json | jq '.[] | select(.name | contains("Design"))'Watch a card for updates
fizzy cards watch 42Update your profile avatar
fizzy users update <your-user-id> --avatar ./profile.jpgFor more examples, see docs/EXAMPLES.md.
Changelog
See CHANGELOG.md for version history and release notes.
License
ISC
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
Support
- Issues: GitHub Issues
- Fizzy API Documentation: fizzy-api/docs/API.md
