Ruby gem — command-line client for Fizzy project management.
Ask more questions until you have enough context to give an accurate & confident answer.
- Ruby 4.0.1 gem with Thor 1.5 CLI framework
- Production gem, MIT licensed
- HTTP client talking to
https://app.fizzy.doREST API - Token auth stored at
~/.config/fizzy-cli/tokens.yml
bin/fizzy # Entry point
lib/fizzy.rb # Requires all modules
lib/fizzy/
cli.rb # Root Thor CLI with subcommands
cli/base.rb # Shared module (client, auth, output helpers)
cli/boards.rb # Board CRUD
cli/cards.rb # Card CRUD + actions (close, triage, tag, assign, etc.)
cli/columns.rb # Column CRUD (board-scoped)
cli/steps.rb # Step CRUD (card-scoped)
cli/comments.rb # Comment CRUD (card-scoped)
cli/reactions.rb # Reaction CRUD
cli/tags.rb # Tag listing
cli/users.rb # User management
cli/notifications.rb # Notification management
cli/pins.rb # Pin/unpin cards
cli/auth.rb # Auth subcommands (login, status, switch)
auth.rb # Token resolution (file + env var)
project_config.rb # .fizzy.yml resolution (walks up from pwd)
client.rb # HTTP client (Net::HTTP, JSON, bearer auth)
paginator.rb # Link-header pagination
formatter.rb # Output: table, json, detail
errors.rb # Error hierarchy
version.rb # VERSION constant
skills/fizzy-cli/ # Claude Code skill for using the CLI
CLI for managing Fizzy boards, cards, columns, steps, comments, reactions, tags, users, notifications, and pins. All commands support --json for machine output and --account SLUG for multi-account targeting.
- Cards are addressed by number (integer), everything else by ID (base36 UUID)
- Columns and Steps are scoped (
--board/--card, or board from.fizzy.yml) - "Done" and "Deferred" are card states, not columns. The Fizzy UI renders them as columns, but the API exposes them as boolean flags:
closed(set viacards close) andpostponed(set viacards not-now). Thecolumns listAPI only returns user-created columns. To list done/deferred cards, filter by--status closedor--status all(postponed cards are included inall). ClientusesNet::HTTPdirectly, returnsFizzy::Response(Data.define). Auto-prepends/{account_slug}/to relative paths; absolute paths (starting with/) pass through as-isPaginatorfollows RFC 5988 Link headers for pagination- CLI subcommands pass relative paths (e.g.
"cards/#{number}") — the Client handles slug prefixing - All CLI subcommands include
Basemodule for sharedclient,account,board,require_board!,json?,output_list,output_detail ProjectConfigfinds.fizzy.ymlby walking up fromDir.pwd— providesaccountandboarddefaults- Resolution priority: CLI flag >
.fizzy.yml> global default from tokens.yml
gem build fizzy-cli.gemspec
gem install fizzy-cli-0.1.0.gembundle install
ruby -Ilib bin/fizzy helpbundle exec rake # tests + rubocop
bundle exec rake test # tests only- Create
lib/fizzy/cli/resource.rb— Thor subclass includingBase - Add
require_relativeinlib/fizzy/cli.rb - Register with
subcommandinFizzy::CLI - Follow existing patterns:
output_list/output_detailfor display,paginator.allfor lists
- Ruby 4.0.1 features allowed (Data.define, pattern matching, etc.)
- Snake_case methods,
frozen_string_literal: trueincluded by convention (not required in Ruby 4) - Minimal dependencies — stdlib
net/http,json,urionly - Thor conventions for CLI option declarations