Back to list
robzolkos

fizzy

by robzolkos

Agent SKILL for Claude Code and Opencode and others.

26🍴 1📅 Jan 22, 2026

SKILL.md


name: fizzy description: Manages Fizzy boards, cards, steps, comments, and reactions. Use when user asks about boards, cards, tasks, backlog or anything Fizzy.

Fizzy CLI Skill

Manage Fizzy boards, cards, steps, comments, and reactions.

Quick Reference

ResourceListShowCreateUpdateDeleteOther
boardboard listboard show IDboard createboard update IDboard delete IDmigrate board ID
cardcard listcard show NUMBERcard createcard update NUMBERcard delete NUMBERcard move NUMBER
searchsearch QUERY-----
columncolumn list --board IDcolumn show ID --board IDcolumn createcolumn update IDcolumn delete ID-
commentcomment list --card NUMBERcomment show ID --card NUMBERcomment createcomment update IDcomment delete ID-
step-step show ID --card NUMBERstep createstep update IDstep delete ID-
reactionreaction list-reaction create-reaction delete ID-
tagtag list-----
useruser listuser show ID----
notificationnotification list-----

ID Formats

IMPORTANT: Cards use TWO identifiers:

FieldFormatUse For
id03fe4rug9kt1mpgyy51lq8i5iInternal ID (in JSON responses)
number579CLI 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": { ... },           // Single object or array
  "summary": "4 boards",     // Human-readable description
  "meta": {
    "timestamp": "2026-01-12T21:21:48Z"
  }
}

Summary field formats:

CommandExample 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": { ... }
}

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.

FieldTypeDescription
numberintegerUse this for CLI commands
idstringInternal ID (in responses only)
titlestringCard title
descriptionstringPlain text content (NOT an object)
description_htmlstringHTML version with attachments
statusstringUsually "published" for active cards
closedbooleantrue = card is closed
goldenbooleantrue = starred/important
image_urlstring/nullHeader/background image URL
has_more_assigneesbooleanMore assignees than shown
created_attimestampISO 8601
last_active_attimestampISO 8601
urlstringWeb URL
comments_urlstringComments endpoint URL
boardobjectNested Board (see below)
creatorobjectNested User (see below)
assigneesarrayArray of User objects
tagsarrayArray of Tag objects
stepsarrayOnly in card show, not in list

Board Schema

FieldTypeDescription
idstringBoard ID (use for CLI commands)
namestringBoard name
all_accessbooleanAll users have access
created_attimestampISO 8601
urlstringWeb URL
creatorobjectNested User

User Schema

FieldTypeDescription
idstringUser ID (use for CLI commands)
namestringDisplay name
email_addressstringEmail
rolestring"owner", "admin", or "member"
activebooleanAccount is active
created_attimestampISO 8601
urlstringWeb URL

Comment Schema

FieldTypeDescription
idstringComment ID (use for CLI commands)
bodyobjectNested object with html and plain_text
body.htmlstringHTML content
body.plain_textstringPlain text content
created_attimestampISO 8601
updated_attimestampISO 8601
urlstringWeb URL
reactions_urlstringReactions endpoint URL
creatorobjectNested User
cardobjectNested {id, url}

Step Schema

FieldTypeDescription
idstringStep ID (use for CLI commands)
contentstringStep text
completedbooleanCompletion status

Column Schema

FieldTypeDescription
idstringColumn ID or pseudo ID ("not-now", "maybe", "done")
namestringDisplay name
kindstring"not_now", "triage", "closed", or custom
pseudobooleantrue = built-in column

Tag Schema

FieldTypeDescription
idstringTag ID
titlestringTag name
created_attimestampISO 8601
urlstringWeb URL

Reaction Schema

FieldTypeDescription
idstringReaction ID (use for CLI commands)
contentstringEmoji
urlstringWeb URL
reacterobjectNested User

Identity Schema (from identity show)

FieldTypeDescription
accountsarrayArray of Account objects
accounts[].idstringAccount ID
accounts[].namestringAccount name
accounts[].slugstringAccount slug (use with --account)
accounts[].userobjectYour User in this account

Key Schema Differences

ResourceText FieldHTML Field
Card.description (string).description_html (string)
Comment.body.plain_text (nested).body.html (nested)

Global Flags

All commands support:

FlagDescription
--account SLUGAccount slug (for multi-account users)
--prettyPretty-print JSON output
--verboseShow request/response details

Pagination

List commands use --page for pagination. There is NO --limit flag.

# Get first page (default)
fizzy card list --page 1

# Get specific number of results using jq
fizzy card list --page 1 | jq '.data[:5]'

# Fetch ALL pages at once
fizzy card list --all

Commands supporting --all and --page:

  • board list
  • card list
  • search
  • comment list
  • tag list
  • user list
  • notification list

Common jq Patterns

Reducing Output

# Card summary (most useful)
fizzy card list | jq '[.data[] | {number, title, status, board: .board.name}]'

# First N items
fizzy card list | jq '.data[:5]'

# Just IDs
fizzy board list | jq '[.data[].id]'

# Specific fields from single item
fizzy card show 579 | jq '.data | {number, title, status, golden}'

# Card with description length (description is a string, not object)
fizzy card show 579 | jq '.data | {number, title, desc_length: (.description | length)}'

Filtering

# Cards with a specific status
fizzy card list --all | jq '[.data[] | select(.status == "published")]'

# Golden cards only
fizzy card list --indexed-by golden | jq '[.data[] | {number, title}]'

# Cards with non-empty descriptions
fizzy card list | jq '[.data[] | select(.description | length > 0) | {number, title}]'

# Cards with steps (must use card show, steps not in list)
fizzy card show 579 | jq '.data.steps'

Extracting Nested Data

# Comment text only (body.plain_text for comments)
fizzy comment list --card 579 | jq '[.data[].body.plain_text]'

# Card description (just .description for cards - it's a string)
fizzy card show 579 | jq '.data.description'

# Step completion status
fizzy card show 579 | jq '[.data.steps[] | {content, completed}]'

Activity Analysis

# Cards with steps count (requires card show for each)
fizzy card show 579 | jq '.data | {number, title, steps_count: (.steps | length)}'

# Comments count for a card
fizzy comment list --card 579 | jq '.data | length'

Command Reference

Identity

fizzy identity show                    # Show your identity and accessible accounts

Quick text search across cards. Multiple words are treated as separate terms (AND).

fizzy search QUERY [flags]
  --board ID                           # Filter by board
  --assignee ID                        # Filter by assignee user ID
  --tag ID                             # Filter by tag ID
  --indexed-by LANE                    # Filter: all, closed, not_now, golden
  --sort ORDER                         # Sort: newest, oldest, or latest (default)
  --page N                             # Page number
  --all                                # Fetch all pages

Examples:

fizzy search "bug"                     # Search for "bug"
fizzy search "login error"             # Search for cards containing both "login" AND "error"
fizzy search "bug" --board BOARD_ID    # Search within a specific board
fizzy search "bug" --indexed-by closed # Include closed cards
fizzy search "feature" --sort newest   # Sort by newest first

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                       # Migrate card header images and inline attachments
  --include-comments                     # Migrate card comments
  --include-steps                        # Migrate card steps (to-do items)
  --dry-run                              # Preview migration without making changes

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.

# Preview migration first
fizzy migrate board BOARD_ID --from personal --to team-account --dry-run

# Basic migration
fizzy migrate board BOARD_ID --from personal --to team-account

# Full migration with all content
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                           # Filter by board
  --column ID                          # Filter by column ID or pseudo: not-yet, maybe, done
  --assignee ID                        # Filter by assignee user ID
  --tag ID                             # Filter by tag ID
  --indexed-by LANE                    # Filter: all, closed, not_now, stalled, postponing_soon, golden
  --search "terms"                     # Search by text (space-separated for multiple terms)
  --sort ORDER                         # Sort: newest, oldest, or latest (default)
  --creator ID                         # Filter by creator user ID
  --closer ID                          # Filter by user who closed the card
  --unassigned                         # Only show unassigned cards
  --created PERIOD                     # Filter by creation: today, yesterday, thisweek, lastweek, thismonth, lastmonth
  --closed PERIOD                      # Filter by closure: today, yesterday, thisweek, lastweek, thismonth, lastmonth
  --page N                             # Page number
  --all                                # Fetch all pages

fizzy card show CARD_NUMBER            # Show card details (includes steps)

Creating & Updating

fizzy card create --board ID --title "Title" [flags]
  --description "HTML"                 # Card description (HTML)
  --description_file PATH              # Read description from file
  --image SIGNED_ID                    # Header image (use signed_id from upload)
  --tag-ids "id1,id2"                  # Comma-separated tag IDs
  --created-at TIMESTAMP               # Custom created_at

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           # Close card (sets closed: true)
fizzy card reopen CARD_NUMBER          # Reopen closed card
fizzy card postpone CARD_NUMBER        # Move to Not Now lane
fizzy card untriage CARD_NUMBER        # Remove from column, back to triage

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     # Move to column (use column ID or: maybe, not-yet, done)
fizzy card move CARD_NUMBER --to BOARD_ID     # Move card to a different board
fizzy card assign CARD_NUMBER --user ID       # Toggle user assignment
fizzy card tag CARD_NUMBER --tag "name"       # Toggle tag (creates tag if needed)
fizzy card watch CARD_NUMBER                  # Subscribe to notifications
fizzy card unwatch CARD_NUMBER                # Unsubscribe
fizzy card golden CARD_NUMBER                 # Mark as golden/starred
fizzy card ungolden CARD_NUMBER               # Remove golden status
fizzy card image-remove CARD_NUMBER           # Remove header image

Attachments

fizzy card attachments show CARD_NUMBER                    # List attachments
fizzy card attachments download CARD_NUMBER [INDEX]        # Download (1-based index)
  -o, --output FILENAME                                    # Output filename (single file)

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

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

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

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
# Returns: { "signed_id": "...", "attachable_sgid": "..." }
IDUse For
signed_idCard header/background images (--image flag)
attachable_sgidInline images in rich text (descriptions, comments)

Example Workflows

Create Card with Steps

# Create the card
CARD=$(fizzy card create --board BOARD_ID --title "New Feature" \
  --description "<p>Feature description</p>" | jq -r '.data.number')

# Add steps
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

# Upload image
SGID=$(fizzy upload file screenshot.png | jq -r '.data.attachable_sgid')

# Create description file with embedded image
cat > desc.html << EOF
<p>See the screenshot below:</p>
<action-text-attachment sgid="$SGID"></action-text-attachment>
EOF

# Create card
fizzy card create --board BOARD_ID --title "Bug Report" --description_file desc.html

Create Card with Background Image (only when explicitly requested)

# Validate file is an image
MIME=$(file --mime-type -b /path/to/image.png)
if [[ ! "$MIME" =~ ^image/ ]]; then
  echo "Error: Not a valid image (detected: $MIME)"
  exit 1
fi

# Upload and get signed_id
SIGNED_ID=$(fizzy upload file /path/to/header.png | jq -r '.data.signed_id')

# Create card with background
fizzy card create --board BOARD_ID --title "Card" --image "$SIGNED_ID"

Move Card Through Workflow

# Move to a column
fizzy card column 579 --column maybe

# Assign to user
fizzy card assign 579 --user USER_ID

# Mark as golden (important)
fizzy card golden 579

# When done, close it
fizzy card close 579

Move Card to Different Board

# Move card to another board
fizzy card move 579 --to TARGET_BOARD_ID

Search and Filter Cards

# Quick search
fizzy search "bug" | jq '[.data[] | {number, title}]'

# Search with filters
fizzy search "login" --board BOARD_ID --sort newest

# Find recently created cards
fizzy card list --created today --sort newest

# Find cards closed this week
fizzy card list --indexed-by closed --closed thisweek

# Find unassigned cards
fizzy card list --unassigned --board BOARD_ID

Add Comment with Reaction

# Add comment
COMMENT=$(fizzy comment create --card 579 --body "<p>Looks good!</p>" | jq -r '.data.id')

# Add reaction
fizzy reaction create --card 579 --comment $COMMENT --content "👍"

Rich Text Formatting

Card descriptions and comments support HTML. 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

  1. Determine the action - What does the user want?
  2. Check for account context - Use --account=SLUG if needed
  3. Run the fizzy command using Bash
  4. Parse JSON output with jq to reduce tokens
  5. Report outcome clearly, including card numbers/entity IDs for reference

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

0/5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon