| name | fizzy |
| description | Manages Fizzy boards, cards, steps, comments, reactions, and pins. Use when user asks about boards, cards, tasks, backlog or anything Fizzy. |
Fizzy CLI Skill
Manage Fizzy boards, cards, steps, comments, reactions, and pins.
Quick Reference
| Resource | List | Show | Create | Update | Delete | Other |
|---|
| board | board list | board show ID | board create | board update ID | board delete ID | migrate board ID |
| card | card list | card show NUMBER | card create | card update NUMBER | card delete NUMBER | card move NUMBER |
| search | search QUERY | - | - | - | - | - |
| column | column list --board ID | column show ID --board ID | column create | column update ID | column delete ID | - |
| comment | comment list --card NUMBER | comment show ID --card NUMBER | comment create | comment update ID | comment delete ID | - |
| step | - | step show ID --card NUMBER | step create | step update ID | step delete ID | - |
| reaction | reaction list | - | reaction create | - | reaction delete ID | - |
| tag | tag list | - | - | - | - | - |
| user | user list | user show ID | - | - | - | - |
| notification | notification list | - | - | - | - | - |
| pin | pin list | - | - | - | - | card pin NUMBER, card unpin NUMBER |
ID Formats
IMPORTANT: Cards use TWO identifiers:
| Field | Format | Use For |
|---|
id | 03fe4rug9kt1mpgyy51lq8i5i | Internal ID (in JSON responses) |
number | 579 | CLI commands (card show, card update, etc.) |
All card CLI commands use the card NUMBER, not the ID.
Other resources (boards, columns, comments, steps, reactions, users) use their id field.
Response Structure
All responses follow this structure:
{
"success": true,
"data": { ... },
"summary": "4 boards",
"breadcrumbs": [ ... ],
"meta": {
"timestamp": "2026-01-12T21:21:48Z"
}
}
Summary field formats:
| Command | Example Summary |
|---|
board list | "5 boards" |
board show ID | "Board: Engineering" |
card list | "42 cards (page 1)" or "42 cards (all)" |
card show 123 | "Card #123: Fix login bug" |
search "bug" | "7 results for "bug"" |
notification list | "8 notifications (3 unread)" |
List responses with pagination:
{
"success": true,
"data": [ ... ],
"summary": "10 cards (page 1)",
"pagination": {
"has_next": true,
"next_url": "https://..."
},
"meta": { ... }
}
Breadcrumbs (contextual next actions):
Responses include a breadcrumbs array suggesting what you can do next. Each breadcrumb has:
action: Short action name (e.g., "comment", "close", "assign")
cmd: Ready-to-run command with actual values interpolated
description: Human-readable description
fizzy card show 42 | jq '.breadcrumbs'
[
{"action": "comment", "cmd": "fizzy comment create --card 42 --body \"text\"", "description": "Add comment"},
{"action": "triage", "cmd": "fizzy card column 42 --column <column_id>", "description": "Move to column"},
{"action": "close", "cmd": "fizzy card close 42", "description": "Close card"},
{"action": "assign", "cmd": "fizzy card assign 42 --user <user_id>", "description": "Assign user"}
]
Use breadcrumbs to discover available actions without memorizing the full CLI. Values like card numbers and board IDs are pre-filled; placeholders like <column_id> need to be replaced.
Error responses:
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Not Found",
"status": 404
},
"meta": { ... }
}
Create/update responses include location:
{
"success": true,
"data": { ... },
"location": "/6102600/cards/579.json",
"meta": { ... }
}
Resource Schemas
Complete field reference for all resources. Use these exact field paths in jq queries.
Card Schema
IMPORTANT: card list and card show return different fields. steps only in card show.
| Field | Type | Description |
|---|
number | integer | Use this for CLI commands |
id | string | Internal ID (in responses only) |
title | string | Card title |
description | string | Plain text content (NOT an object) |
description_html | string | HTML version with attachments |
status | string | Usually "published" for active cards |
closed | boolean | true = card is closed |
golden | boolean | true = starred/important |
image_url | string/null | Header/background image URL |
has_more_assignees | boolean | More assignees than shown |
created_at | timestamp | ISO 8601 |
last_active_at | timestamp | ISO 8601 |
url | string | Web URL |
comments_url | string | Comments endpoint URL |
board | object | Nested Board (see below) |
creator | object | Nested User (see below) |
assignees | array | Array of User objects |
tags | array | Array of Tag objects |
steps | array | Only in card show, not in list |
Board Schema
| Field | Type | Description |
|---|
id | string | Board ID (use for CLI commands) |
name | string | Board name |
all_access | boolean | All users have access |
created_at | timestamp | ISO 8601 |
url | string | Web URL |
creator | object | Nested User |
User Schema
| Field | Type | Description |
|---|
id | string | User ID (use for CLI commands) |
name | string | Display name |
email_address | string | Email |
role | string | "owner", "admin", or "member" |
active | boolean | Account is active |
created_at | timestamp | ISO 8601 |
url | string | Web URL |
Comment Schema
| Field | Type | Description |
|---|
id | string | Comment ID (use for CLI commands) |
body | object | Nested object with html and plain_text |
body.html | string | HTML content |
body.plain_text | string | Plain text content |
created_at | timestamp | ISO 8601 |
updated_at | timestamp | ISO 8601 |
url | string | Web URL |
reactions_url | string | Reactions endpoint URL |
creator | object | Nested User |
card | object | Nested {id, url} |
Step Schema
| Field | Type | Description |
|---|
id | string | Step ID (use for CLI commands) |
content | string | Step text |
completed | boolean | Completion status |
Column Schema
| Field | Type | Description |
|---|
id | string | Column ID or pseudo ID ("not-now", "maybe", "done") |
name | string | Display name |
kind | string | "not_now", "triage", "closed", or custom |
pseudo | boolean | true = built-in column |
Tag Schema
| Field | Type | Description |
|---|
id | string | Tag ID |
title | string | Tag name |
created_at | timestamp | ISO 8601 |
url | string | Web URL |
Reaction Schema
| Field | Type | Description |
|---|
id | string | Reaction ID (use for CLI commands) |
content | string | Emoji |
url | string | Web URL |
reacter | object | Nested User |
Identity Schema (from identity show)
| Field | Type | Description |
|---|
accounts | array | Array of Account objects |
accounts[].id | string | Account ID |
accounts[].name | string | Account name |
accounts[].slug | string | Account slug (use with --account) |
accounts[].user | object | Your User in this account |
Key Schema Differences
| Resource | Text Field | HTML Field |
|---|
| Card | .description (string) | .description_html (string) |
| Comment | .body.plain_text (nested) | .body.html (nested) |
Card Description Formatting
Always pass card descriptions as HTML, not Markdown or plain text. Fizzy stores a plain-text .description, but the rendered card body is ActionText HTML in .description_html. Plain text with headings like ContextFoo or list markers like • item renders poorly and breaks existing card styling.
Use these tags for card descriptions:
<p> for paragraphs
<h2> for sections
<ul> / <ol> / <li> for lists
<code> for paths, commands, identifiers, and code symbols
<a href="..."> for links
Relationship links are mandatory:
- Link every
Card #123 and Fizzy #123 reference to https://app.fizzy.do/6104728/cards/123.
- Link every parent, child, blocker, duplicate, Shortcut, GitHub PR, GitHub issue, and external relationship reference when a URL is available.
- Do not leave bare card references in card descriptions.
Before updating an existing card description:
- Read
.description_html, not just .description.
- Preserve existing HTML structure and links unless intentionally replacing the whole body.
- Do not round-trip through
.description; it loses structure and can remove links.
After creating or updating a card description:
- Read
.description_html to verify that headings, paragraphs, lists, code spans, and links render as HTML tags.
- Check that all
Card #... / Fizzy #... references are clickable links.
Recommended creation/update pattern:
fizzy card create --board BOARD_ID --title "Title" --description "$(cat <<'HTML'
<p>Short intro paragraph.</p>
<h2>Context</h2>
<p>Structured HTML body.</p>
<h2>Related cards</h2>
<ul>
<li><a href="https://app.fizzy.do/6104728/cards/123">Card #123 Example</a></li>
</ul>
HTML
)"
Verification pattern:
fizzy card show CARD_NUMBER | jq -r '.data.description_html'
Global Flags
All commands support:
| Flag | Description |
|---|
--account SLUG | Account slug (for multi-account users) |
--pretty | Pretty-print JSON output |
--verbose | Show request/response details |
Pagination
List commands use --page for pagination. There is NO --limit flag.
fizzy card list --page 1
fizzy card list --page 1 | jq '.data[:5]'
fizzy card list --all
IMPORTANT: The --all flag controls pagination only - it fetches all pages of results for your current filter. It does NOT change which cards are included. By default, card list returns only open cards. See Card Statuses for how to fetch closed or postponed cards.
Commands supporting --all and --page:
board list
card list
search
comment list
tag list
user list
notification list
Card Statuses
Cards exist in different states. By default, fizzy card list returns open cards only (cards in triage or columns). To fetch cards in other states, use the --indexed-by or --column flags:
| Status | How to fetch | Description |
|---|
| Open (default) | fizzy card list | Cards in triage ("Maybe?") or any column |
| Closed/Done | fizzy card list --indexed-by closed | Completed cards |
| Not Now | fizzy card list --indexed-by not_now | Postponed cards |
| Golden | fizzy card list --indexed-by golden | Starred/important cards |
| Stalled | fizzy card list --indexed-by stalled | Cards with no recent activity |
You can also use pseudo-columns:
fizzy card list --column done --all
fizzy card list --column not-now --all
fizzy card list --column maybe --all
Fetching all cards on a board:
To get all cards regardless of status (for example, to build a complete board view), make separate queries:
fizzy card list --board BOARD_ID --all
fizzy card list --board BOARD_ID --indexed-by closed --all
fizzy card list --board BOARD_ID --indexed-by not_now --all
Common jq Patterns
Reducing Output
fizzy card list | jq '[.data[] | {number, title, status, board: .board.name}]'
fizzy card list | jq '.data[:5]'
fizzy board list | jq '[.data[].id]'
fizzy card show 579 | jq '.data | {number, title, status, golden}'
fizzy card show 579 | jq '.data | {number, title, desc_length: (.description | length)}'
Filtering
fizzy card list --all | jq '[.data[] | select(.status == "published")]'
fizzy card list --indexed-by golden | jq '[.data[] | {number, title}]'
fizzy card list | jq '[.data[] | select(.description | length > 0) | {number, title}]'
fizzy card show 579 | jq '.data.steps'
Extracting Nested Data
fizzy comment list --card 579 | jq '[.data[].body.plain_text]'
fizzy card show 579 | jq -r '.data.description_html'
fizzy card show 579 | jq '[.data.steps[] | {content, completed}]'
Activity Analysis
fizzy card show 579 | jq '.data | {number, title, steps_count: (.steps | length)}'
fizzy comment list --card 579 | jq '.data | length'
Command Reference
Identity
fizzy identity show
Search
Quick text search across cards. Multiple words are treated as separate terms (AND).
fizzy search QUERY [flags]
--board ID
--assignee ID
--tag ID
--indexed-by LANE
--sort ORDER
--page N
--all
Examples:
fizzy search "bug"
fizzy search "login error"
fizzy search "bug" --board BOARD_ID
fizzy search "bug" --indexed-by closed
fizzy search "feature" --sort newest
Boards
fizzy board list [--page N] [--all]
fizzy board show BOARD_ID
fizzy board create --name "Name" [--all_access true/false] [--auto_postpone_period N]
fizzy board update BOARD_ID [--name "Name"] [--all_access true/false] [--auto_postpone_period N]
fizzy board delete BOARD_ID
Board Migration
Migrate boards between accounts (e.g., from personal to team account).
fizzy migrate board BOARD_ID --from SOURCE_SLUG --to TARGET_SLUG [flags]
--include-images
--include-comments
--include-steps
--dry-run
What gets migrated:
- Board with same name
- All columns (preserving order and colors)
- All cards with titles, descriptions, timestamps, and tags
- Card states (closed, golden, column placement)
- Optional: header images, inline attachments, comments, and steps
What cannot be migrated:
- Card creators (become the migrating user)
- Card numbers (new sequential numbers in target)
- Comment authors (become the migrating user)
- User assignments (team must reassign manually)
Requirements: You must have API access to both source and target accounts. Verify with fizzy identity show.
fizzy migrate board BOARD_ID --from personal --to team-account --dry-run
fizzy migrate board BOARD_ID --from personal --to team-account
fizzy migrate board BOARD_ID --from personal --to team-account \
--include-images --include-comments --include-steps
Cards
Listing & Viewing
fizzy card list [flags]
--board ID
--column ID
--assignee ID
--tag ID
--indexed-by LANE
--search "terms"
--sort ORDER
--creator ID
--closer ID
--unassigned
--created PERIOD
--closed PERIOD
--page N
--all
fizzy card show CARD_NUMBER
Creating & Updating
fizzy card create --board ID --title "Title" [flags]
--description "HTML"
--description_file PATH
--image SIGNED_ID
--tag-ids "id1,id2"
--created-at TIMESTAMP
fizzy card update CARD_NUMBER [flags]
--title "Title"
--description "HTML"
--description_file PATH
--image SIGNED_ID
--created-at TIMESTAMP
fizzy card delete CARD_NUMBER
Status Changes
fizzy card close CARD_NUMBER
fizzy card reopen CARD_NUMBER
fizzy card postpone CARD_NUMBER
fizzy card untriage CARD_NUMBER
Note: Card status field stays "published" for active cards. Use:
closed: true/false to check if closed
--indexed-by not_now to find postponed cards
--indexed-by closed to find closed cards
Actions
fizzy card column CARD_NUMBER --column ID
fizzy card move CARD_NUMBER --to BOARD_ID
fizzy card assign CARD_NUMBER --user ID
fizzy card tag CARD_NUMBER --tag "name"
fizzy card watch CARD_NUMBER
fizzy card unwatch CARD_NUMBER
fizzy card pin CARD_NUMBER
fizzy card unpin CARD_NUMBER
fizzy card golden CARD_NUMBER
fizzy card ungolden CARD_NUMBER
fizzy card image-remove CARD_NUMBER
Attachments
fizzy card attachments show CARD_NUMBER
fizzy card attachments download CARD_NUMBER [INDEX]
-o, --output FILENAME
Columns
Boards have pseudo columns by default: not-yet, maybe, done
fizzy column list --board ID
fizzy column show COLUMN_ID --board ID
fizzy column create --board ID --name "Name" [--color HEX]
fizzy column update COLUMN_ID --board ID [--name "Name"] [--color HEX]
fizzy column delete COLUMN_ID --board ID
Comments
fizzy comment list --card NUMBER [--page N] [--all]
fizzy comment show COMMENT_ID --card NUMBER
fizzy comment create --card NUMBER --body "HTML" [--body_file PATH] [--created-at TIMESTAMP]
fizzy comment update COMMENT_ID --card NUMBER [--body "HTML"] [--body_file PATH]
fizzy comment delete COMMENT_ID --card NUMBER
Steps (To-Do Items)
Steps are returned in card show response. No separate list command.
fizzy step show STEP_ID --card NUMBER
fizzy step create --card NUMBER --content "Text" [--completed]
fizzy step update STEP_ID --card NUMBER [--content "Text"] [--completed] [--not_completed]
fizzy step delete STEP_ID --card NUMBER
Reactions
Reactions can be added to cards directly or to comments on cards.
fizzy reaction list --card NUMBER
fizzy reaction create --card NUMBER --content "emoji"
fizzy reaction delete REACTION_ID --card NUMBER
fizzy reaction list --card NUMBER --comment COMMENT_ID
fizzy reaction create --card NUMBER --comment COMMENT_ID --content "emoji"
fizzy reaction delete REACTION_ID --card NUMBER --comment COMMENT_ID
| Flag | Required | Description |
|---|
--card | Yes | Card number (always required) |
--comment | No | Comment ID (omit for card reactions) |
--content | Yes (create) | Emoji or text, max 16 characters |
Tags
Tags are created automatically when using card tag. List shows all existing tags.
fizzy tag list [--page N] [--all]
Users
fizzy user list [--page N] [--all]
fizzy user show USER_ID
Pins
fizzy pin list
Notifications
fizzy notification list [--page N] [--all]
fizzy notification read NOTIFICATION_ID
fizzy notification read-all
fizzy notification unread NOTIFICATION_ID
File Uploads
fizzy upload file PATH
| ID | Use For |
|---|
signed_id | Card header/background images (--image flag) |
attachable_sgid | Inline images in rich text (descriptions, comments) |
Example Workflows
Create Card with Steps
CARD=$(fizzy card create --board BOARD_ID --title "New Feature" \
--description "<p>Feature description</p>" | jq -r '.data.number')
fizzy step create --card $CARD --content "Design the feature"
fizzy step create --card $CARD --content "Implement backend"
fizzy step create --card $CARD --content "Write tests"
Create Card with Inline Image
SGID=$(fizzy upload file screenshot.png | jq -r '.data.attachable_sgid')
cat > desc.html << EOF
<p>See the screenshot below:</p>
<action-text-attachment sgid="$SGID"></action-text-attachment>
EOF
fizzy card create --board BOARD_ID --title "Bug Report" --description_file desc.html
Create Card with Background Image (only when explicitly requested)
MIME=$(file --mime-type -b /path/to/image.png)
if [[ ! "$MIME" =~ ^image/ ]]; then
echo "Error: Not a valid image (detected: $MIME)"
exit 1
fi
SIGNED_ID=$(fizzy upload file /path/to/header.png | jq -r '.data.signed_id')
fizzy card create --board BOARD_ID --title "Card" --image "$SIGNED_ID"
Move Card Through Workflow
fizzy card column 579 --column maybe
fizzy card assign 579 --user USER_ID
fizzy card golden 579
fizzy card close 579
Move Card to Different Board
fizzy card move 579 --to TARGET_BOARD_ID
Search and Filter Cards
fizzy search "bug" | jq '[.data[] | {number, title}]'
fizzy search "login" --board BOARD_ID --sort newest
fizzy card list --created today --sort newest
fizzy card list --indexed-by closed --closed thisweek
fizzy card list --unassigned --board BOARD_ID
React to a Card
fizzy reaction create --card 579 --content "👍"
fizzy reaction list --card 579 | jq '[.data[] | {id, content, reacter: .reacter.name}]'
Add Comment with Reaction
COMMENT=$(fizzy comment create --card 579 --body "<p>Looks good!</p>" | jq -r '.data.id')
fizzy reaction create --card 579 --comment $COMMENT --content "👍"
Rich Text Formatting
Card descriptions and comments support HTML. Card descriptions must be authored as HTML; do not use Markdown or plain text. For multiple paragraphs with spacing:
<p>First paragraph.</p>
<p><br></p>
<p>Second paragraph with spacing above.</p>
Note: Each attachable_sgid can only be used once. Upload the file again for multiple uses.
Default Behaviors
- Card images: Use inline (via
attachable_sgid in description) by default. Only use background/header (signed_id with --image) when user explicitly says "background" or "header".
- Comment images: Always inline. Comments do not support background images.
Workflow Summary
- Determine the action - What does the user want?
- Check for account context - Use
--account=SLUG if needed
- Run the fizzy command using Bash
- Parse JSON output with jq to reduce tokens
- Report outcome clearly, including card numbers/entity IDs for reference