{
  "schemaVersion": "1.0",
  "item": {
    "slug": "fizzy",
    "name": "Fizzy",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/Portavion/fizzy",
    "canonicalUrl": "https://clawhub.ai/Portavion/fizzy",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/fizzy",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fizzy",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "skill.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/fizzy"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/fizzy",
    "agentPageUrl": "https://openagent3.xyz/skills/fizzy/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fizzy/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fizzy/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Install via Homebrew (macOS)",
        "body": "brew install robzolkos/fizzy-cli/fizzy-cli"
      },
      {
        "title": "Configure Credentials",
        "body": "The CLI needs your API token and account. You can set these via environment variables or config files.\n\nEnvironment variables (recommended for Clawdbot):\n\n# Set these before running fizzy commands\nexport FIZZY_TOKEN=\"your_token_here\"\nexport FIZZY_ACCOUNT=\"your_account_slug\"  # e.g., \"0000001\"\nexport FIZZY_API_URL=\"https://fizzy.domain.net/\"  # self-hosted\nexport FIZZY_BOARD=\"your_default_board_id\"  # optional\n\nOr use a config file (~/.config/fizzy/config.yaml):\n\ntoken: your_token_here\naccount: your_account_slug\napi_url: https://fizzy.domain.net/\nboard: your_default_board_id"
      },
      {
        "title": "Get Your Token",
        "body": "Go to your Fizzy profile → Personal Access Tokens\nGenerate a new token with Read + Write permissions"
      },
      {
        "title": "ID Formats",
        "body": "IMPORTANT: Cards use TWO identifiers:\n\nFieldFormatUse Forid03fe4rug9kt1mpgyy51lq8i5iInternal ID (in JSON responses)number579CLI commands (card show, card update, etc.)\n\nAll card CLI commands use the card NUMBER, not the ID.\n\nOther resources (boards, columns, comments, steps, reactions, users) use their id field."
      },
      {
        "title": "Response Structure",
        "body": "All responses follow this structure:\n\n{\n  \"success\": true,\n  \"data\": { ... },           // Single object or array\n  \"meta\": {\n    \"timestamp\": \"2026-01-12T21:21:48Z\"\n  }\n}\n\nList responses with pagination:\n\n{\n  \"success\": true,\n  \"data\": [ ... ],\n  \"pagination\": {\n    \"has_next\": true,\n    \"next_url\": \"https://...\"\n  },\n  \"meta\": { ... }\n}\n\nError responses:\n\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"Not Found\",\n    \"status\": 404\n  },\n  \"meta\": { ... }\n}\n\nCreate/update responses include location:\n\n{\n  \"success\": true,\n  \"data\": { ... },\n  \"location\": \"/6102600/cards/579.json\",\n  \"meta\": { ... }\n}"
      },
      {
        "title": "Resource Schemas",
        "body": "Complete field reference for all resources. Use these exact field paths in jq queries."
      },
      {
        "title": "Card Schema",
        "body": "IMPORTANT: card list and card show return different fields. steps only in card show.\n\nFieldTypeDescriptionnumberintegerUse this for CLI commandsidstringInternal ID (in responses only)titlestringCard titledescriptionstringPlain text content (NOT an object)description_htmlstringHTML version with attachmentsstatusstringUsually \"published\" for active cardsclosedbooleantrue = card is closedgoldenbooleantrue = starred/importantimage_urlstring/nullHeader/background image URLhas_more_assigneesbooleanMore assignees than showncreated_attimestampISO 8601last_active_attimestampISO 8601urlstringWeb URLcomments_urlstringComments endpoint URLboardobjectNested Board (see below)creatorobjectNested User (see below)assigneesarrayArray of User objectstagsarrayArray of Tag objectsstepsarrayOnly in card show, not in list"
      },
      {
        "title": "Board Schema",
        "body": "FieldTypeDescriptionidstringBoard ID (use for CLI commands)namestringBoard nameall_accessbooleanAll users have accesscreated_attimestampISO 8601urlstringWeb URLcreatorobjectNested User"
      },
      {
        "title": "User Schema",
        "body": "FieldTypeDescriptionidstringUser ID (use for CLI commands)namestringDisplay nameemail_addressstringEmailrolestring\"owner\", \"admin\", or \"member\"activebooleanAccount is activecreated_attimestampISO 8601urlstringWeb URL"
      },
      {
        "title": "Comment Schema",
        "body": "FieldTypeDescriptionidstringComment ID (use for CLI commands)bodyobjectNested object with html and plain_textbody.htmlstringHTML contentbody.plain_textstringPlain text contentcreated_attimestampISO 8601updated_attimestampISO 8601urlstringWeb URLreactions_urlstringReactions endpoint URLcreatorobjectNested UsercardobjectNested {id, url}"
      },
      {
        "title": "Step Schema",
        "body": "FieldTypeDescriptionidstringStep ID (use for CLI commands)contentstringStep textcompletedbooleanCompletion status"
      },
      {
        "title": "Column Schema",
        "body": "FieldTypeDescriptionidstringColumn ID or pseudo ID (\"not-now\", \"maybe\", \"done\")namestringDisplay namekindstring\"not_now\", \"triage\", \"closed\", or custompseudobooleantrue = built-in column"
      },
      {
        "title": "Tag Schema",
        "body": "FieldTypeDescriptionidstringTag IDtitlestringTag namecreated_attimestampISO 8601urlstringWeb URL"
      },
      {
        "title": "Reaction Schema",
        "body": "FieldTypeDescriptionidstringReaction ID (use for CLI commands)contentstringEmojiurlstringWeb URLreacterobjectNested User"
      },
      {
        "title": "Identity Schema (from identity show)",
        "body": "FieldTypeDescriptionaccountsarrayArray of Account objectsaccounts[].idstringAccount IDaccounts[].namestringAccount nameaccounts[].slugstringAccount slug (use with --account)accounts[].userobjectYour User in this account"
      },
      {
        "title": "Key Schema Differences",
        "body": "ResourceText FieldHTML FieldCard.description (string).description_html (string)Comment.body.plain_text (nested).body.html (nested)"
      },
      {
        "title": "Global Flags",
        "body": "All commands support:\n\nFlagDescription--account SLUGAccount slug (for multi-account users)--prettyPretty-print JSON output--verboseShow request/response details"
      },
      {
        "title": "Pagination",
        "body": "List commands use --page for pagination. There is NO --limit flag.\n\n# Get first page (default)\nfizzy card list --page 1\n\n# Get specific number of results using jq\nfizzy card list --page 1 | jq '.data[:5]'\n\n# Fetch ALL pages at once\nfizzy card list --all\n\nCommands supporting --all and --page:\n\nboard list\ncard list\ncomment list\ntag list\nuser list\nnotification list"
      },
      {
        "title": "Reducing Output",
        "body": "# Card summary (most useful)\nfizzy card list | jq '[.data[] | {number, title, status, board: .board.name}]'\n\n# First N items\nfizzy card list | jq '.data[:5]'\n\n# Just IDs\nfizzy board list | jq '[.data[].id]'\n\n# Specific fields from single item\nfizzy card show 579 | jq '.data | {number, title, status, golden}'\n\n# Card with description length (description is a string, not object)\nfizzy card show 579 | jq '.data | {number, title, desc_length: (.description | length)}'"
      },
      {
        "title": "Filtering",
        "body": "# Cards with a specific status\nfizzy card list --all | jq '[.data[] | select(.status == \"published\")]'\n\n# Golden cards only\nfizzy card list --indexed-by golden | jq '[.data[] | {number, title}]'\n\n# Cards with non-empty descriptions\nfizzy card list | jq '[.data[] | select(.description | length > 0) | {number, title}]'\n\n# Cards with steps (must use card show, steps not in list)\nfizzy card show 579 | jq '.data.steps'"
      },
      {
        "title": "Extracting Nested Data",
        "body": "# Comment text only (body.plain_text for comments)\nfizzy comment list --card 579 | jq '[.data[].body.plain_text]'\n\n# Card description (just .description for cards - it's a string)\nfizzy card show 579 | jq '.data.description'\n\n# Step completion status\nfizzy card show 579 | jq '[.data.steps[] | {content, completed}]'"
      },
      {
        "title": "Activity Analysis",
        "body": "# Cards with steps count (requires card show for each)\nfizzy card show 579 | jq '.data | {number, title, steps_count: (.steps | length)}'\n\n# Comments count for a card\nfizzy comment list --card 579 | jq '.data | length'"
      },
      {
        "title": "Identity",
        "body": "fizzy identity show                    # Show your identity and accessible accounts"
      },
      {
        "title": "Boards",
        "body": "fizzy board list [--page N] [--all]\nfizzy board show BOARD_ID\nfizzy board create --name \"Name\" [--all_access true/false] [--auto_postpone_period N]\nfizzy board update BOARD_ID [--name \"Name\"] [--all_access true/false] [--auto_postpone_period N]\nfizzy board delete BOARD_ID"
      },
      {
        "title": "Cards",
        "body": "Listing & Viewing\n\nfizzy card list [flags]\n  --board ID                           # Filter by board\n  --column ID                          # Filter by column ID or pseudo: not-yet, maybe, done\n  --assignee ID                        # Filter by assignee user ID\n  --tag ID                             # Filter by tag ID\n  --indexed-by LANE                    # Filter: all, closed, not_now, stalled, postponing_soon, golden\n  --page N                             # Page number\n  --all                                # Fetch all pages\n\nfizzy card show CARD_NUMBER            # Show card details (includes steps)\n\nCreating & Updating\n\nfizzy card create --board ID --title \"Title\" [flags]\n  --description \"HTML\"                 # Card description (HTML)\n  --description_file PATH              # Read description from file\n  --image SIGNED_ID                    # Header image (use signed_id from upload)\n  --tag-ids \"id1,id2\"                  # Comma-separated tag IDs\n  --created-at TIMESTAMP               # Custom created_at\n\nfizzy card update CARD_NUMBER [flags]\n  --title \"Title\"\n  --description \"HTML\"\n  --description_file PATH\n  --image SIGNED_ID\n  --created-at TIMESTAMP\n\nfizzy card delete CARD_NUMBER\n\nStatus Changes\n\nfizzy card close CARD_NUMBER           # Close card (sets closed: true)\nfizzy card reopen CARD_NUMBER          # Reopen closed card\nfizzy card postpone CARD_NUMBER        # Move to Not Now lane\nfizzy card untriage CARD_NUMBER        # Remove from column, back to triage\n\nNote: Card status field stays \"published\" for active cards. Use:\n\nclosed: true/false to check if closed\n--indexed-by not_now to find postponed cards\n--indexed-by closed to find closed cards\n\nActions\n\nfizzy card column CARD_NUMBER --column ID     # Move to column (use column ID or: maybe, not-yet, done)\nfizzy card assign CARD_NUMBER --user ID       # Toggle user assignment\nfizzy card tag CARD_NUMBER --tag \"name\"       # Toggle tag (creates tag if needed)\nfizzy card watch CARD_NUMBER                  # Subscribe to notifications\nfizzy card unwatch CARD_NUMBER                # Unsubscribe\nfizzy card golden CARD_NUMBER                 # Mark as golden/starred\nfizzy card ungolden CARD_NUMBER               # Remove golden status\nfizzy card image-remove CARD_NUMBER           # Remove header image\n\nAttachments\n\nfizzy card attachments show CARD_NUMBER                    # List attachments\nfizzy card attachments download CARD_NUMBER [INDEX]        # Download (1-based index)\n  -o, --output FILENAME                                    # Output filename (single file)"
      },
      {
        "title": "Columns",
        "body": "Boards have pseudo columns by default: not-yet, maybe, done\n\nfizzy column list --board ID\nfizzy column show COLUMN_ID --board ID\nfizzy column create --board ID --name \"Name\" [--color HEX]\nfizzy column update COLUMN_ID --board ID [--name \"Name\"] [--color HEX]\nfizzy column delete COLUMN_ID --board ID"
      },
      {
        "title": "Comments",
        "body": "fizzy comment list --card NUMBER [--page N] [--all]\nfizzy comment show COMMENT_ID --card NUMBER\nfizzy comment create --card NUMBER --body \"HTML\" [--body_file PATH] [--created-at TIMESTAMP]\nfizzy comment update COMMENT_ID --card NUMBER [--body \"HTML\"] [--body_file PATH]\nfizzy comment delete COMMENT_ID --card NUMBER"
      },
      {
        "title": "Steps (To-Do Items)",
        "body": "Steps are returned in card show response. No separate list command.\n\nfizzy step show STEP_ID --card NUMBER\nfizzy step create --card NUMBER --content \"Text\" [--completed]\nfizzy step update STEP_ID --card NUMBER [--content \"Text\"] [--completed] [--not_completed]\nfizzy step delete STEP_ID --card NUMBER"
      },
      {
        "title": "Reactions",
        "body": "fizzy reaction list --card NUMBER --comment COMMENT_ID\nfizzy reaction create --card NUMBER --comment COMMENT_ID --content \"emoji\"\nfizzy reaction delete REACTION_ID --card NUMBER --comment COMMENT_ID"
      },
      {
        "title": "Tags",
        "body": "Tags are created automatically when using card tag. List shows all existing tags.\n\nfizzy tag list [--page N] [--all]"
      },
      {
        "title": "Users",
        "body": "fizzy user list [--page N] [--all]\nfizzy user show USER_ID"
      },
      {
        "title": "Notifications",
        "body": "fizzy notification list [--page N] [--all]\nfizzy notification read NOTIFICATION_ID\nfizzy notification read-all\nfizzy notification unread NOTIFICATION_ID"
      },
      {
        "title": "File Uploads",
        "body": "fizzy upload file PATH\n# Returns: { \"signed_id\": \"...\", \"attachable_sgid\": \"...\" }\n\nIDUse Forsigned_idCard header/background images (--image flag)attachable_sgidInline images in rich text (descriptions, comments)"
      },
      {
        "title": "Create Card with Steps",
        "body": "# Create the card\nCARD=$(fizzy card create --board BOARD_ID --title \"New Feature\" \\\n  --description \"<p>Feature description</p>\" | jq -r '.data.number')\n\n# Add steps\nfizzy step create --card $CARD --content \"Design the feature\"\nfizzy step create --card $CARD --content \"Implement backend\"\nfizzy step create --card $CARD --content \"Write tests\""
      },
      {
        "title": "Create Card with Inline Image",
        "body": "# Upload image\nSGID=$(fizzy upload file screenshot.png | jq -r '.data.attachable_sgid')\n\n# Create description file with embedded image\ncat > desc.html << EOF\n<p>See the screenshot below:</p>\n<action-text-attachment sgid=\"$SGID\"></action-text-attachment>\nEOF\n\n# Create card\nfizzy card create --board BOARD_ID --title \"Bug Report\" --description_file desc.html"
      },
      {
        "title": "Create Card with Background Image (only when explicitly requested)",
        "body": "# Validate file is an image\nMIME=$(file --mime-type -b /path/to/image.png)\nif [[ ! \"$MIME\" =~ ^image/ ]]; then\n  echo \"Error: Not a valid image (detected: $MIME)\"\n  exit 1\nfi\n\n# Upload and get signed_id\nSIGNED_ID=$(fizzy upload file /path/to/header.png | jq -r '.data.signed_id')\n\n# Create card with background\nfizzy card create --board BOARD_ID --title \"Card\" --image \"$SIGNED_ID\""
      },
      {
        "title": "Move Card Through Workflow",
        "body": "# Move to a column\nfizzy card column 579 --column maybe\n\n# Assign to user\nfizzy card assign 579 --user USER_ID\n\n# Mark as golden (important)\nfizzy card golden 579\n\n# When done, close it\nfizzy card close 579"
      },
      {
        "title": "Add Comment with Reaction",
        "body": "# Add comment\nCOMMENT=$(fizzy comment create --card 579 --body \"<p>Looks good!</p>\" | jq -r '.data.id')\n\n# Add reaction\nfizzy reaction create --card 579 --comment $COMMENT --content \"👍\""
      },
      {
        "title": "Rich Text Formatting",
        "body": "Card descriptions and comments support HTML. For multiple paragraphs with spacing:\n\n<p>First paragraph.</p>\n<p><br /></p>\n<p>Second paragraph with spacing above.</p>\n\nNote: Each attachable_sgid can only be used once. Upload the file again for multiple uses."
      },
      {
        "title": "Default Behaviors",
        "body": "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\".\nComment images: Always inline. Comments do not support background images."
      },
      {
        "title": "Workflow Summary",
        "body": "Determine the action - What does the user want?\nCheck for account context - Use --account=SLUG if needed\nRun the fizzy command using Bash\nParse JSON output with jq to reduce tokens\nReport outcome clearly, including card numbers/entity IDs for reference"
      }
    ],
    "body": "Fizzy CLI Skill\nRequirements (Install & Auth)\nInstall via Homebrew (macOS)\nbrew install robzolkos/fizzy-cli/fizzy-cli\n\nConfigure Credentials\n\nThe CLI needs your API token and account. You can set these via environment variables or config files.\n\nEnvironment variables (recommended for Clawdbot):\n\n# Set these before running fizzy commands\nexport FIZZY_TOKEN=\"your_token_here\"\nexport FIZZY_ACCOUNT=\"your_account_slug\"  # e.g., \"0000001\"\nexport FIZZY_API_URL=\"https://fizzy.domain.net/\"  # self-hosted\nexport FIZZY_BOARD=\"your_default_board_id\"  # optional\n\n\nOr use a config file (~/.config/fizzy/config.yaml):\n\ntoken: your_token_here\naccount: your_account_slug\napi_url: https://fizzy.domain.net/\nboard: your_default_board_id\n\nGet Your Token\nGo to your Fizzy profile → Personal Access Tokens\nGenerate a new token with Read + Write permissions\nID Formats\n\nIMPORTANT: Cards use TWO identifiers:\n\nField\tFormat\tUse For\nid\t03fe4rug9kt1mpgyy51lq8i5i\tInternal ID (in JSON responses)\nnumber\t579\tCLI commands (card show, card update, etc.)\n\nAll card CLI commands use the card NUMBER, not the ID.\n\nOther resources (boards, columns, comments, steps, reactions, users) use their id field.\n\nResponse Structure\n\nAll responses follow this structure:\n\n{\n  \"success\": true,\n  \"data\": { ... },           // Single object or array\n  \"meta\": {\n    \"timestamp\": \"2026-01-12T21:21:48Z\"\n  }\n}\n\n\nList responses with pagination:\n\n{\n  \"success\": true,\n  \"data\": [ ... ],\n  \"pagination\": {\n    \"has_next\": true,\n    \"next_url\": \"https://...\"\n  },\n  \"meta\": { ... }\n}\n\n\nError responses:\n\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"Not Found\",\n    \"status\": 404\n  },\n  \"meta\": { ... }\n}\n\n\nCreate/update responses include location:\n\n{\n  \"success\": true,\n  \"data\": { ... },\n  \"location\": \"/6102600/cards/579.json\",\n  \"meta\": { ... }\n}\n\nResource Schemas\n\nComplete field reference for all resources. Use these exact field paths in jq queries.\n\nCard Schema\n\nIMPORTANT: card list and card show return different fields. steps only in card show.\n\nField\tType\tDescription\nnumber\tinteger\tUse this for CLI commands\nid\tstring\tInternal ID (in responses only)\ntitle\tstring\tCard title\ndescription\tstring\tPlain text content (NOT an object)\ndescription_html\tstring\tHTML version with attachments\nstatus\tstring\tUsually \"published\" for active cards\nclosed\tboolean\ttrue = card is closed\ngolden\tboolean\ttrue = starred/important\nimage_url\tstring/null\tHeader/background image URL\nhas_more_assignees\tboolean\tMore assignees than shown\ncreated_at\ttimestamp\tISO 8601\nlast_active_at\ttimestamp\tISO 8601\nurl\tstring\tWeb URL\ncomments_url\tstring\tComments endpoint URL\nboard\tobject\tNested Board (see below)\ncreator\tobject\tNested User (see below)\nassignees\tarray\tArray of User objects\ntags\tarray\tArray of Tag objects\nsteps\tarray\tOnly in card show, not in list\nBoard Schema\nField\tType\tDescription\nid\tstring\tBoard ID (use for CLI commands)\nname\tstring\tBoard name\nall_access\tboolean\tAll users have access\ncreated_at\ttimestamp\tISO 8601\nurl\tstring\tWeb URL\ncreator\tobject\tNested User\nUser Schema\nField\tType\tDescription\nid\tstring\tUser ID (use for CLI commands)\nname\tstring\tDisplay name\nemail_address\tstring\tEmail\nrole\tstring\t\"owner\", \"admin\", or \"member\"\nactive\tboolean\tAccount is active\ncreated_at\ttimestamp\tISO 8601\nurl\tstring\tWeb URL\nComment Schema\nField\tType\tDescription\nid\tstring\tComment ID (use for CLI commands)\nbody\tobject\tNested object with html and plain_text\nbody.html\tstring\tHTML content\nbody.plain_text\tstring\tPlain text content\ncreated_at\ttimestamp\tISO 8601\nupdated_at\ttimestamp\tISO 8601\nurl\tstring\tWeb URL\nreactions_url\tstring\tReactions endpoint URL\ncreator\tobject\tNested User\ncard\tobject\tNested {id, url}\nStep Schema\nField\tType\tDescription\nid\tstring\tStep ID (use for CLI commands)\ncontent\tstring\tStep text\ncompleted\tboolean\tCompletion status\nColumn Schema\nField\tType\tDescription\nid\tstring\tColumn ID or pseudo ID (\"not-now\", \"maybe\", \"done\")\nname\tstring\tDisplay name\nkind\tstring\t\"not_now\", \"triage\", \"closed\", or custom\npseudo\tboolean\ttrue = built-in column\nTag Schema\nField\tType\tDescription\nid\tstring\tTag ID\ntitle\tstring\tTag name\ncreated_at\ttimestamp\tISO 8601\nurl\tstring\tWeb URL\nReaction Schema\nField\tType\tDescription\nid\tstring\tReaction ID (use for CLI commands)\ncontent\tstring\tEmoji\nurl\tstring\tWeb URL\nreacter\tobject\tNested User\nIdentity Schema (from identity show)\nField\tType\tDescription\naccounts\tarray\tArray of Account objects\naccounts[].id\tstring\tAccount ID\naccounts[].name\tstring\tAccount name\naccounts[].slug\tstring\tAccount slug (use with --account)\naccounts[].user\tobject\tYour User in this account\nKey Schema Differences\nResource\tText Field\tHTML Field\nCard\t.description (string)\t.description_html (string)\nComment\t.body.plain_text (nested)\t.body.html (nested)\nGlobal Flags\n\nAll commands support:\n\nFlag\tDescription\n--account SLUG\tAccount slug (for multi-account users)\n--pretty\tPretty-print JSON output\n--verbose\tShow request/response details\nPagination\n\nList commands use --page for pagination. There is NO --limit flag.\n\n# Get first page (default)\nfizzy card list --page 1\n\n# Get specific number of results using jq\nfizzy card list --page 1 | jq '.data[:5]'\n\n# Fetch ALL pages at once\nfizzy card list --all\n\n\nCommands supporting --all and --page:\n\nboard list\ncard list\ncomment list\ntag list\nuser list\nnotification list\nCommon jq Patterns\nReducing Output\n# Card summary (most useful)\nfizzy card list | jq '[.data[] | {number, title, status, board: .board.name}]'\n\n# First N items\nfizzy card list | jq '.data[:5]'\n\n# Just IDs\nfizzy board list | jq '[.data[].id]'\n\n# Specific fields from single item\nfizzy card show 579 | jq '.data | {number, title, status, golden}'\n\n# Card with description length (description is a string, not object)\nfizzy card show 579 | jq '.data | {number, title, desc_length: (.description | length)}'\n\nFiltering\n# Cards with a specific status\nfizzy card list --all | jq '[.data[] | select(.status == \"published\")]'\n\n# Golden cards only\nfizzy card list --indexed-by golden | jq '[.data[] | {number, title}]'\n\n# Cards with non-empty descriptions\nfizzy card list | jq '[.data[] | select(.description | length > 0) | {number, title}]'\n\n# Cards with steps (must use card show, steps not in list)\nfizzy card show 579 | jq '.data.steps'\n\nExtracting Nested Data\n# Comment text only (body.plain_text for comments)\nfizzy comment list --card 579 | jq '[.data[].body.plain_text]'\n\n# Card description (just .description for cards - it's a string)\nfizzy card show 579 | jq '.data.description'\n\n# Step completion status\nfizzy card show 579 | jq '[.data.steps[] | {content, completed}]'\n\nActivity Analysis\n# Cards with steps count (requires card show for each)\nfizzy card show 579 | jq '.data | {number, title, steps_count: (.steps | length)}'\n\n# Comments count for a card\nfizzy comment list --card 579 | jq '.data | length'\n\nCommand Reference\nIdentity\nfizzy identity show                    # Show your identity and accessible accounts\n\nBoards\nfizzy board list [--page N] [--all]\nfizzy board show BOARD_ID\nfizzy board create --name \"Name\" [--all_access true/false] [--auto_postpone_period N]\nfizzy board update BOARD_ID [--name \"Name\"] [--all_access true/false] [--auto_postpone_period N]\nfizzy board delete BOARD_ID\n\nCards\nListing & Viewing\nfizzy card list [flags]\n  --board ID                           # Filter by board\n  --column ID                          # Filter by column ID or pseudo: not-yet, maybe, done\n  --assignee ID                        # Filter by assignee user ID\n  --tag ID                             # Filter by tag ID\n  --indexed-by LANE                    # Filter: all, closed, not_now, stalled, postponing_soon, golden\n  --page N                             # Page number\n  --all                                # Fetch all pages\n\nfizzy card show CARD_NUMBER            # Show card details (includes steps)\n\nCreating & Updating\nfizzy card create --board ID --title \"Title\" [flags]\n  --description \"HTML\"                 # Card description (HTML)\n  --description_file PATH              # Read description from file\n  --image SIGNED_ID                    # Header image (use signed_id from upload)\n  --tag-ids \"id1,id2\"                  # Comma-separated tag IDs\n  --created-at TIMESTAMP               # Custom created_at\n\nfizzy card update CARD_NUMBER [flags]\n  --title \"Title\"\n  --description \"HTML\"\n  --description_file PATH\n  --image SIGNED_ID\n  --created-at TIMESTAMP\n\nfizzy card delete CARD_NUMBER\n\nStatus Changes\nfizzy card close CARD_NUMBER           # Close card (sets closed: true)\nfizzy card reopen CARD_NUMBER          # Reopen closed card\nfizzy card postpone CARD_NUMBER        # Move to Not Now lane\nfizzy card untriage CARD_NUMBER        # Remove from column, back to triage\n\n\nNote: Card status field stays \"published\" for active cards. Use:\n\nclosed: true/false to check if closed\n--indexed-by not_now to find postponed cards\n--indexed-by closed to find closed cards\nActions\nfizzy card column CARD_NUMBER --column ID     # Move to column (use column ID or: maybe, not-yet, done)\nfizzy card assign CARD_NUMBER --user ID       # Toggle user assignment\nfizzy card tag CARD_NUMBER --tag \"name\"       # Toggle tag (creates tag if needed)\nfizzy card watch CARD_NUMBER                  # Subscribe to notifications\nfizzy card unwatch CARD_NUMBER                # Unsubscribe\nfizzy card golden CARD_NUMBER                 # Mark as golden/starred\nfizzy card ungolden CARD_NUMBER               # Remove golden status\nfizzy card image-remove CARD_NUMBER           # Remove header image\n\nAttachments\nfizzy card attachments show CARD_NUMBER                    # List attachments\nfizzy card attachments download CARD_NUMBER [INDEX]        # Download (1-based index)\n  -o, --output FILENAME                                    # Output filename (single file)\n\nColumns\n\nBoards have pseudo columns by default: not-yet, maybe, done\n\nfizzy column list --board ID\nfizzy column show COLUMN_ID --board ID\nfizzy column create --board ID --name \"Name\" [--color HEX]\nfizzy column update COLUMN_ID --board ID [--name \"Name\"] [--color HEX]\nfizzy column delete COLUMN_ID --board ID\n\nComments\nfizzy comment list --card NUMBER [--page N] [--all]\nfizzy comment show COMMENT_ID --card NUMBER\nfizzy comment create --card NUMBER --body \"HTML\" [--body_file PATH] [--created-at TIMESTAMP]\nfizzy comment update COMMENT_ID --card NUMBER [--body \"HTML\"] [--body_file PATH]\nfizzy comment delete COMMENT_ID --card NUMBER\n\nSteps (To-Do Items)\n\nSteps are returned in card show response. No separate list command.\n\nfizzy step show STEP_ID --card NUMBER\nfizzy step create --card NUMBER --content \"Text\" [--completed]\nfizzy step update STEP_ID --card NUMBER [--content \"Text\"] [--completed] [--not_completed]\nfizzy step delete STEP_ID --card NUMBER\n\nReactions\nfizzy reaction list --card NUMBER --comment COMMENT_ID\nfizzy reaction create --card NUMBER --comment COMMENT_ID --content \"emoji\"\nfizzy reaction delete REACTION_ID --card NUMBER --comment COMMENT_ID\n\nTags\n\nTags are created automatically when using card tag. List shows all existing tags.\n\nfizzy tag list [--page N] [--all]\n\nUsers\nfizzy user list [--page N] [--all]\nfizzy user show USER_ID\n\nNotifications\nfizzy notification list [--page N] [--all]\nfizzy notification read NOTIFICATION_ID\nfizzy notification read-all\nfizzy notification unread NOTIFICATION_ID\n\nFile Uploads\nfizzy upload file PATH\n# Returns: { \"signed_id\": \"...\", \"attachable_sgid\": \"...\" }\n\nID\tUse For\nsigned_id\tCard header/background images (--image flag)\nattachable_sgid\tInline images in rich text (descriptions, comments)\nExample Workflows\nCreate Card with Steps\n# Create the card\nCARD=$(fizzy card create --board BOARD_ID --title \"New Feature\" \\\n  --description \"<p>Feature description</p>\" | jq -r '.data.number')\n\n# Add steps\nfizzy step create --card $CARD --content \"Design the feature\"\nfizzy step create --card $CARD --content \"Implement backend\"\nfizzy step create --card $CARD --content \"Write tests\"\n\nCreate Card with Inline Image\n# Upload image\nSGID=$(fizzy upload file screenshot.png | jq -r '.data.attachable_sgid')\n\n# Create description file with embedded image\ncat > desc.html << EOF\n<p>See the screenshot below:</p>\n<action-text-attachment sgid=\"$SGID\"></action-text-attachment>\nEOF\n\n# Create card\nfizzy card create --board BOARD_ID --title \"Bug Report\" --description_file desc.html\n\nCreate Card with Background Image (only when explicitly requested)\n# Validate file is an image\nMIME=$(file --mime-type -b /path/to/image.png)\nif [[ ! \"$MIME\" =~ ^image/ ]]; then\n  echo \"Error: Not a valid image (detected: $MIME)\"\n  exit 1\nfi\n\n# Upload and get signed_id\nSIGNED_ID=$(fizzy upload file /path/to/header.png | jq -r '.data.signed_id')\n\n# Create card with background\nfizzy card create --board BOARD_ID --title \"Card\" --image \"$SIGNED_ID\"\n\nMove Card Through Workflow\n# Move to a column\nfizzy card column 579 --column maybe\n\n# Assign to user\nfizzy card assign 579 --user USER_ID\n\n# Mark as golden (important)\nfizzy card golden 579\n\n# When done, close it\nfizzy card close 579\n\nAdd Comment with Reaction\n# Add comment\nCOMMENT=$(fizzy comment create --card 579 --body \"<p>Looks good!</p>\" | jq -r '.data.id')\n\n# Add reaction\nfizzy reaction create --card 579 --comment $COMMENT --content \"👍\"\n\nRich Text Formatting\n\nCard descriptions and comments support HTML. For multiple paragraphs with spacing:\n\n<p>First paragraph.</p>\n<p><br /></p>\n<p>Second paragraph with spacing above.</p>\n\n\nNote: Each attachable_sgid can only be used once. Upload the file again for multiple uses.\n\nDefault Behaviors\nCard 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\".\nComment images: Always inline. Comments do not support background images.\nWorkflow Summary\nDetermine the action - What does the user want?\nCheck for account context - Use --account=SLUG if needed\nRun the fizzy command using Bash\nParse JSON output with jq to reduce tokens\nReport outcome clearly, including card numbers/entity IDs for reference"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Portavion/fizzy",
    "publisherUrl": "https://clawhub.ai/Portavion/fizzy",
    "owner": "Portavion",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/fizzy",
    "downloadUrl": "https://openagent3.xyz/downloads/fizzy",
    "agentUrl": "https://openagent3.xyz/skills/fizzy/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fizzy/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fizzy/agent.md"
  }
}