Files
platform/seed/skills/fizzy-cli/chat/messages.json
T
2026-02-16 19:34:35 +00:00

1 line
40 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[{"role":"user","text":"Help me create the content for this new skill file: /home/pastilhas/projects/officer.dev/data/skills/fizzy-cli/SKILL.md\nuse https://github.com/robzolkos/fizzy-cli for refference"},{"role":"assistant","text":"\n\nLet me start by reading the existing skill file and fetching information about fizzy-cli from the GitHub repository."},{"role":"tool","toolName":"Read","toolInput":{"file_path":"/home/pastilhas/projects/officer.dev/data/skills/fizzy-cli/SKILL.md"},"toolUseId":"toolu_018zTYy7TPaB2CTWi6BKgZwC","output":" 1→---\n 2→name: fizzy-cli\n 3→description: \n 4→---\n 5→","isError":false},{"role":"tool","toolName":"WebFetch","toolInput":{"url":"https://github.com/robzolkos/fizzy-cli","prompt":"Extract all details about fizzy-cli: what it is, how to install it, how to use it, all command-line options and flags, examples, and any other relevant information."},"toolUseId":"toolu_01Ca6E4Eij539KgVTfri5ob6","output":"# Fizzy CLI: Comprehensive Overview\n\n## What It Is\nFizzy CLI is a command-line interface for the Fizzy API, enabling users to manage boards, cards, and related items from the terminal. It's written in Go and supports multiple platforms.\n\n## Installation Methods\n\n**Arch Linux (AUR):**\n```bash\nyay -S fizzy-cli\n```\n\n**macOS (Homebrew):**\n```bash\nbrew install robzolkos/fizzy-cli/fizzy-cli\n```\n\n**Debian/Ubuntu:**\nDownload `.deb` packages from releases and install via `dpkg`.\n\n**Fedora/RHEL:**\nDownload `.rpm` packages from releases and install via `rpm`.\n\n**Windows:**\nDownload `fizzy-windows-amd64.exe` from GitHub Releases, rename to `fizzy.exe`, and add to PATH.\n\n**Via Go:**\n```bash\ngo install github.com/robzolkos/fizzy-cli/cmd/fizzy@latest\n```\n\n**Binary or Source:**\nAvailable directly from GitHub Releases or by cloning and building locally.\n\n## Configuration\n\nConfiguration supports three priority levels (highest to lowest):\n1. Command-line flags (`--token`, `--account`, `--api-url`)\n2. Environment variables (`FIZZY_TOKEN`, `FIZZY_ACCOUNT`, `FIZZY_API_URL`, `FIZZY_BOARD`)\n3. Local project config (`.fizzy.yaml` in current/parent directories)\n4. Global config (`~/.config/fizzy/config.yaml` or `~/.fizzy/config.yaml`)\n5. Defaults\n\n**Setup wizard:** Run `fizzy setup` for interactive configuration.\n\n## Global Options\n\n| Option | Environment Variable | Purpose |\n|--------|----------------------|---------|\n| `--token` | `FIZZY_TOKEN` | API access token |\n| `--account` | `FIZZY_ACCOUNT` | Account identifier |\n| `--api-url` | `FIZZY_API_URL` | API base URL (default: https://app.fizzy.do) |\n| `--verbose` | — | Display request/response details |\n\n## Command Categories\n\n### Boards\n- `fizzy board list` — List all boards\n- `fizzy board show BOARD_ID` — Display board details\n- `fizzy board create --name \"Name\"` — Create new board\n- `fizzy board update BOARD_ID --name \"Name\"` — Modify board\n- `fizzy board delete BOARD_ID` — Remove board\n\n### Cards\n**List cards** (with extensive filtering):\n```bash\nfizzy card list [--board ID] [--column ID] [--tag ID] [--assignee ID]\nfizzy card list [--sort newest|oldest|latest] [--search \"text\"]\nfizzy card list [--created thisweek] [--closed thisweek] [--unassigned]\n```\n\n**CRUD operations:**\n- `fizzy card show 42` — View card details\n- `fizzy card create --board ID --title \"Title\"` — Add card\n- `fizzy card update 42 --title \"New title\"` — Modify card\n- `fizzy card delete 42` — Remove card\n\n**Card actions:**\n- Close/reopen: `fizzy card close 42` / `fizzy card reopen 42`\n- Move: `fizzy card move 42 --to BOARD_ID` / `fizzy card postpone 42`\n- Column assignment: `fizzy card column 42 --column COLUMN_ID`\n- Assignment: `fizzy card assign 42 --user USER_ID`\n- Tags: `fizzy card tag 42 --tag \"bug\"`\n- Pins: `fizzy card pin 42` / `fizzy card unpin 42`\n- Golden cards: `fizzy card golden 42` / `fizzy card ungolden 42`\n- Watchers: `fizzy card watch 42` / `fizzy card unwatch 42`\n\n### Card Attachments\n- `fizzy card attachments show 42` — List attachments\n- `fizzy card attachments download 42` — Download all attachments\n- `fizzy card attachments download 42 1` — Download specific attachment\n\n### Columns\n- `fizzy column list --board ID` — List columns\n- `fizzy column show COLUMN_ID --board ID` — View column\n- `fizzy column create --board ID --name \"Name\"` — Add column\n- `fizzy column update COLUMN_ID --board ID --name \"Name\"` — Modify\n- `fizzy column delete COLUMN_ID --board ID` — Remove\n\n### Comments\n- `fizzy comment list --card 42` — List comments\n- `fizzy comment show COMMENT_ID --card 42` — View comment\n- `fizzy comment create --card 42 --body \"Text\"` — Add comment\n- `fizzy comment update COMMENT_ID --card 42 --body \"Text\"` — Edit\n- `fizzy comment delete COMMENT_ID --card 42` — Remove\n\n### Comment Attachments\n- `fizzy comment attachments show --card 42` — List attachments\n- `fizzy comment attachments download --card 42` — Download all\n- `fizzy comment attachments download --card 42 1` — Download specific\n\n### Steps (To-Do Items)\n- `fizzy step show STEP_ID --card 42` — View step\n- `fizzy step create --card 42 --content \"Task\"` — Add step\n- `fizzy step update STEP_ID --card 42 --completed` — Mark complete\n- `fizzy step delete STEP_ID --card 42` — Remove\n\n### Reactions\n- `fizzy reaction list --card 42` — List card reactions\n- `fizzy reaction create --card 42 --content \"👍\"` — Add reaction\n- `fizzy reaction delete REACTION_ID --card 42` — Remove reaction\n\n### Other Resources\n- `fizzy user list` / `fizzy user show USER_ID` — User information\n- `fizzy tag list` — Available tags\n- `fizzy pin list` — Your pinned cards\n- `fizzy search \"term\"` — Full-text card search\n- `fizzy notification list` — Notifications; `read`, `unread`, `read-all` actions\n\n### File Uploads\n```bash\nfizzy upload file /path/to/file.png\n# Returns: { \"signed_id\": \"...\", \"attachable_sgid\": \"...\" }\n```\n\nUse `signed_id` for card headers; `attachable_sgid` for inline images in rich text.\n\n## Key Features\n\n- **Multiple configuration sources** with clear precedence\n- **Rich filtering and sorting** for card queries\n- **Status management** (open, closed, not-now, golden, stalled)\n- **Pseudo-columns** (not-now, maybe, done) alongside real columns\n- **Bulk operations** (download multiple attachments, manage reactions)\n- **Custom timestamps** for data imports\n- **Verbose mode** for debugging API interactions\n\n## License\nMIT\n\n---\n\n**Repository:** [github.com/robzolkos/fizzy-cli](https://github.com/robzolkos/fizzy-cli) | **83 stars** | **11 forks**","isError":false},{"role":"tool","toolName":"Read","toolInput":{"file_path":"/home/pastilhas/projects/officer.dev/data/skills/whisper.cpp/SKILL.md"},"toolUseId":"toolu_01WmJnT7riHDq5wiCmHQ7v1f","output":" 1→---\n 2→name: whisper.cpp\n 3→description: Transcribe audio files to text using whisper.cpp. Use when the user wants to transcribe audio, convert speech to text, or extract text from an audio/video file.\n 4→---\n 5→\n 6→# Whisper.cpp\n 7→\n 8→API reference for the whisper.cpp HTTP server running at `http://macmini:8178`.\n 9→\n 10→whisper.cpp is a C/C++ port of OpenAI's Whisper speech recognition model. The server accepts audio files via HTTP and returns transcriptions in various formats.\n 11→\n 12→## Server\n 13→\n 14→- **Base URL:** `http://macmini:8178`\n 15→- **No authentication required**\n 16→\n 17→## Endpoints\n 18→\n 19→### POST /inference\n 20→\n 21→Transcribes an audio file. Accepts `multipart/form-data`.\n 22→\n 23→#### Example\n 24→\n 25→```bash\n 26→curl -s http://macmini:8178/inference \\\n 27→ -F file=\"@/path/to/audio.mp3\" \\\n 28→ -F temperature=\"0.0\" \\\n 29→ -F temperature_inc=\"0.2\" \\\n 30→ -F response_format=\"json\"\n 31→```\n 32→\n 33→#### Parameters\n 34→\n 35→##### File (required)\n 36→\n 37→| Parameter | Type | Description |\n 38→|-----------|------|-------------|\n 39→| `file` | file | Audio file to transcribe. Accepts at least WAV and MP3. |\n 40→\n 41→##### Response Format\n 42→\n 43→| Parameter | Type | Default | Description |\n 44→|-----------|------|---------|-------------|\n 45→| `response_format` | string | `json` | Output format: `json`, `verbose_json` (or `vjson`), `text`, `srt`, `vtt` |\n 46→\n 47→##### Language\n 48→\n 49→| Parameter | Type | Default | Description |\n 50→|-----------|------|---------|-------------|\n 51→| `language` | string | `en` | Spoken language code (e.g. `en`, `pt`, `es`, `fr`). Use `auto` for auto-detection. |\n 52→| `detect_language` | bool | `false` | Exit after detecting the language (no transcription). |\n 53→| `translate` | bool | `false` | Translate from source language to English. |\n 54→\n 55→##### Decoding\n 56→\n 57→| Parameter | Type | Default | Description |\n 58→|-----------|------|---------|-------------|\n 59→| `temperature` | float | `0.0` | Sampling temperature. `0.0` is deterministic. |\n 60→| `temperature_inc` | float | `0.2` | Temperature increment on fallback attempts. |\n 61→| `best_of` | int | `2` | Number of candidate decodings to keep. |\n 62→| `beam_size` | int | `-1` | Beam search size. `-1` disables beam search. |\n 63→| `entropy_thold` | float | `2.40` | Entropy threshold — decoder fails and retries if exceeded. |\n 64→| `logprob_thold` | float | `-1.00` | Log probability threshold for decoder failure. |\n 65→| `no_fallback` | bool | `false` | Disable temperature fallback on decode failure. |\n 66→\n 67→##### Segmentation\n 68→\n 69→| Parameter | Type | Default | Description |\n 70→|-----------|------|---------|-------------|\n 71→| `max_len` | int | `0` | Maximum segment length in characters. `0` for unlimited. |\n 72→| `max_context` | int | `-1` | Maximum text context tokens to store. `-1` for unlimited. |\n 73→| `split_on_word` | bool | `false` | Split segments at word boundaries instead of token boundaries. |\n 74→| `no_timestamps` | bool | `false` | Suppress timestamps in output. |\n 75→| `word_thold` | float | `0.01` | Word timestamp probability threshold. |\n 76→\n 77→##### Audio Processing\n 78→\n 79→| Parameter | Type | Default | Description |\n 80→|-----------|------|---------|-------------|\n 81→| `offset_t` | int | `0` | Time offset in milliseconds — skip this much audio from the start. |\n 82→| `offset_n` | int | `0` | Segment index offset. |\n 83→| `duration` | int | `0` | Duration of audio to process in milliseconds. `0` for all. |\n 84→| `audio_ctx` | int | `0` | Audio context size. `0` for all. |\n 85→\n 86→##### Speaker Diarization\n 87→\n 88→| Parameter | Type | Default | Description |\n 89→|-----------|------|---------|-------------|\n 90→| `diarize` | bool | `false` | Enable speaker diarization (requires stereo audio). |\n 91→| `tinydiarize` | bool | `false` | Enable tinydiarize (requires a tdrz model). |\n 92→\n 93→##### Voice Activity Detection (VAD)\n 94→\n 95→| Parameter | Type | Default | Description |\n 96→|-----------|------|---------|-------------|\n 97→| `vad` | bool | `false` | Enable VAD preprocessing. |\n 98→| `vad_threshold` | float | `0.50` | Speech confidence threshold (0.01.0). |\n 99→| `vad_min_speech_duration_ms` | int | `250` | Minimum speech segment duration in ms. |\n 100→| `vad_min_silence_duration_ms` | int | `100` | Minimum silence duration to split segments. |\n 101→| `vad_max_speech_duration_s` | float | `FLT_MAX` | Auto-split segments longer than this (seconds). |\n 102→| `vad_speech_pad_ms` | int | `30` | Padding added around speech segments (ms). |\n 103→| `vad_samples_overlap` | float | `0.10` | Overlap between segments (seconds). |\n 104→\n 105→##### Other\n 106→\n 107→| Parameter | Type | Default | Description |\n 108→|-----------|------|---------|-------------|\n 109→| `prompt` | string | `\"\"` | Initial prompt to condition the model (e.g. for vocabulary hints). |\n 110→| `suppress_nst` | bool | `false` | Suppress non-speech tokens. |\n 111→| `no_context` | bool | `false` | Do not use previous audio context for subsequent segments. |\n 112→| `debug_mode` | bool | `false` | Enable debug output. |\n 113→\n 114→#### Response Formats\n 115→\n 116→##### `json` (default)\n 117→\n 118→Minimal JSON with just the transcribed text.\n 119→\n 120→```json\n 121→{\"text\": \"The transcribed content goes here.\"}\n 122→```\n 123→\n 124→##### `verbose_json` (or `vjson`)\n 125→\n 126→Extended JSON including task type, language, audio duration, per-segment timestamps, token-level timing, confidence scores, and language probability distribution.\n 127→\n 128→##### `text`\n 129→\n 130→Plain text transcription. Includes speaker labels if diarization is enabled.\n 131→\n 132→##### `srt`\n 133→\n 134→SubRip subtitle format with sequential numbering, `HH:MM:SS,mmm` timestamps, and text content.\n 135→\n 136→```\n 137→1\n 138→00:00:00,000 --> 00:00:03,500\n 139→The transcribed content goes here.\n 140→```\n 141→\n 142→##### `vtt`\n 143→\n 144→WebVTT subtitle format with `WEBVTT` header and `HH:MM:SS.mmm` timestamps.\n 145→\n 146→```\n 147→WEBVTT\n 148→\n 149→00:00:00.000 --> 00:00:03.500\n 150→The transcribed content goes here.\n 151→```\n 152→\n 153→### POST /load\n 154→\n 155→Loads a different model file on the server at runtime.\n 156→\n 157→```bash\n 158→curl -s http://macmini:8178/load \\\n 159→ -F model=\"/path/to/model.bin\"\n 160→```\n 161→\n 162→| Parameter | Type | Description |\n 163→|-----------|------|-------------|\n 164→| `model` | string | Path to the model file on the server. |\n 165→\n 166→## Supported Audio Formats\n 167→\n 168→The server accepts at least WAV (16-bit PCM) and MP3 files directly. If the server was started with `--convert`, it can use ffmpeg to handle additional formats (ogg, flac, m4a, etc.).\n 169→\n 170→## Source\n 171→\n 172→- Repository: https://github.com/ggml-org/whisper.cpp\n 173→- Server docs: https://github.com/ggml-org/whisper.cpp/blob/master/examples/server/README.md\n 174→","isError":false},{"role":"tool","toolName":"Read","toolInput":{"file_path":"/home/pastilhas/projects/officer.dev/data/skills/ffmpeg/SKILL.md"},"toolUseId":"toolu_01L86G4vkwCuU2jEtLjfA1ho","output":" 1→---\n 2→name: ffmpeg\n 3→description: Process audio and video files using ffmpeg/ffprobe. Use when the user wants to convert, transcode, trim, merge, extract, resize, compress, or analyze multimedia files.\n 4→---\n 5→\n 6→# FFmpeg\n 7→\n 8→CLI reference for FFmpeg v8.x — a complete, cross-platform solution for recording, converting, and streaming audio and video.\n 9→\n 10→Official docs: https://www.ffmpeg.org/documentation.html\n 11→\n 12→## Tools\n 13→\n 14→| Tool | Purpose |\n 15→|------|---------|\n 16→| `ffmpeg` | Transcode, convert, filter, mux/demux multimedia |\n 17→| `ffprobe` | Analyze and inspect multimedia streams |\n 18→| `ffplay` | Play multimedia files (interactive) |\n 19→\n 20→---\n 21→\n 22→## ffmpeg\n 23→\n 24→### Synopsis\n 25→\n 26→```\n 27→ffmpeg [global_options] {[input_options] -i input_url} ... {[output_options] output_url} ...\n 28→```\n 29→\n 30→Options before `-i` apply to the input; options before the output URL apply to the output.\n 31→\n 32→### Global Options\n 33→\n 34→| Flag | Description |\n 35→|------|-------------|\n 36→| `-y` | Overwrite output files without asking |\n 37→| `-n` | Do not overwrite; exit if output exists |\n 38→| `-hide_banner` | Suppress copyright/build info banner |\n 39→| `-loglevel level` | Set log level: `quiet`, `error`, `warning`, `info` (default), `verbose`, `debug` |\n 40→| `-stats` | Print encoding progress/statistics |\n 41→| `-progress url` | Send machine-readable progress to url |\n 42→| `-report` | Dump full command line and log to a file |\n 43→| `-filter_threads n` | Number of threads for filter processing |\n 44→\n 45→### Input/Output Options\n 46→\n 47→| Flag | Description |\n 48→|------|-------------|\n 49→| `-i url` | Input file URL |\n 50→| `-f fmt` | Force input or output format |\n 51→| `-c[:stream] codec` | Select encoder/decoder; use `copy` for stream copying |\n 52→| `-t duration` | Limit duration (as input: read limit; as output: write limit) |\n 53→| `-to position` | Stop at position (timestamp) |\n 54→| `-ss position` | Seek to position (before `-i`: fast input seek; after: output seek) |\n 55→| `-sseof position` | Seek relative to end of file |\n 56→| `-itsoffset offset` | Set input time offset |\n 57→| `-itsscale scale` | Rescale input timestamps |\n 58→| `-metadata key=value` | Set metadata key/value pair |\n 59→| `-disposition value` | Set stream disposition flags |\n 60→| `-target type` | Specify target type: `vcd`, `svcd`, `dvd`, `dv`, `dv50` |\n 61→| `-stream_loop n` | Loop input stream n times (-1 = infinite) |\n 62→| `-frames[:stream] n` | Stop after n frames |\n 63→| `-fs limit` | Set file size limit in bytes |\n 64→| `-timestamp date` | Set recording timestamp |\n 65→\n 66→### Video Options\n 67→\n 68→| Flag | Description |\n 69→|------|-------------|\n 70→| `-vn` | Disable video |\n 71→| `-vcodec codec` | Set video codec (alias for `-c:v`) |\n 72→| `-r fps` | Set frame rate |\n 73→| `-fpsmax fps` | Set maximum frame rate |\n 74→| `-s WxH` | Set frame size |\n 75→| `-aspect ratio` | Set display aspect ratio (e.g. `16:9`) |\n 76→| `-pix_fmt format` | Set pixel format |\n 77→| `-vf filtergraph` | Apply video filter graph (alias for `-filter:v`) |\n 78→| `-pass n` | Two-pass encoding pass (1 or 2) |\n 79→| `-passlogfile prefix` | Two-pass log file prefix |\n 80→| `-vframes n` | Set number of video frames to output |\n 81→| `-autorotate` | Auto-rotate based on metadata (default on) |\n 82→| `-display_rotation angle` | Set video rotation metadata |\n 83→| `-display_hflip` | Horizontal flip metadata |\n 84→| `-display_vflip` | Vertical flip metadata |\n 85→| `-force_key_frames expr` | Force keyframes at specified times/expression |\n 86→| `-copyinkf` | Copy non-key frames at the beginning during stream copy |\n 87→\n 88→### Audio Options\n 89→\n 90→| Flag | Description |\n 91→|------|-------------|\n 92→| `-an` | Disable audio |\n 93→| `-acodec codec` | Set audio codec (alias for `-c:a`) |\n 94→| `-ar freq` | Set audio sample rate (Hz) |\n 95→| `-ac channels` | Set number of audio channels |\n 96→| `-af filtergraph` | Apply audio filter graph (alias for `-filter:a`) |\n 97→| `-sample_fmt fmt` | Set audio sample format |\n 98→| `-channel_layout layout` | Set audio channel layout |\n 99→| `-aq q` | Set audio quality (codec-specific VBR) |\n 100→| `-aframes n` | Set number of audio frames to output |\n 101→\n 102→### Subtitle Options\n 103→\n 104→| Flag | Description |\n 105→|------|-------------|\n 106→| `-sn` | Disable subtitles |\n 107→| `-scodec codec` | Set subtitle codec (alias for `-c:s`) |\n 108→| `-fix_sub_duration` | Fix subtitle durations to avoid overlap |\n 109→\n 110→### Stream Selection\n 111→\n 112→| Flag | Description |\n 113→|------|-------------|\n 114→| `-map input:stream` | Manually select streams for output |\n 115→| `-dn` | Disable data streams |\n 116→\n 117→Stream specifiers: `v` (video), `V` (video, no images), `a` (audio), `s` (subtitle), `d` (data). Index with `:N` (e.g. `a:0` = first audio).\n 118→\n 119→### Hardware Acceleration\n 120→\n 121→| Flag | Description |\n 122→|------|-------------|\n 123→| `-hwaccel method` | HW accel method: `cuda`, `vaapi`, `qsv`, `vulkan`, `auto` |\n 124→| `-hwaccel_device device` | Select HW device |\n 125→| `-init_hw_device type=name` | Initialize HW device |\n 126→\n 127→---\n 128→\n 129→## ffprobe\n 130→\n 131→### Synopsis\n 132→\n 133→```\n 134→ffprobe [options] input_url\n 135→```\n 136→\n 137→### Main Options\n 138→\n 139→| Flag | Description |\n 140→|------|-------------|\n 141→| `-show_format` | Show container format info |\n 142→| `-show_streams` | Show per-stream info |\n 143→| `-show_packets` | Show per-packet info |\n 144→| `-show_frames` | Show per-frame info |\n 145→| `-show_chapters` | Show chapter info |\n 146→| `-show_programs` | Show program info |\n 147→| `-show_entries section=key1,key2` | Show only specific fields |\n 148→| `-show_error` | Show probe errors |\n 149→| `-select_streams specifier` | Filter to specific streams (e.g. `v:0`, `a`) |\n 150→| `-count_frames` | Count frames per stream |\n 151→| `-count_packets` | Count packets per stream |\n 152→| `-read_intervals intervals` | Analyze specific time ranges |\n 153→\n 154→### Output Formats\n 155→\n 156→Set with `-output_format` (or `-of`, `-print_format`):\n 157→\n 158→| Format | Description |\n 159→|--------|-------------|\n 160→| `default` | `[SECTION] key=value [/SECTION]` |\n 161→| `json` | JSON output (most useful for parsing) |\n 162→| `xml` | XML output |\n 163→| `csv` | Comma-separated values |\n 164→| `flat` | Flat `key=value` per line |\n 165→| `ini` | INI-style sections |\n 166→\n 167→### Display Options\n 168→\n 169→| Flag | Description |\n 170→|------|-------------|\n 171→| `-pretty` | Human-readable units and time formatting |\n 172→| `-unit` | Show value units |\n 173→| `-sexagesimal` | Format times as HH:MM:SS.us |\n 174→| `-hide_banner` | Suppress copyright/build info |\n 175→| `-o output_url` | Write output to file instead of stdout |\n 176→\n 177→---\n 178→\n 179→## Common Codecs\n 180→\n 181→### Video Encoders\n 182→\n 183→#### libx264 (H.264)\n 184→\n 185→| Option | Description |\n 186→|--------|-------------|\n 187→| `-preset` | Speed/quality: `ultrafast`, `superfast`, `veryfast`, `faster`, `fast`, `medium` (default), `slow`, `slower`, `veryslow` |\n 188→| `-crf` | Constant quality: 0 (lossless) to 51 (worst). 18-23 is typical |\n 189→| `-profile:v` | `baseline`, `main`, `high` |\n 190→| `-tune` | `film`, `animation`, `grain`, `stillimage`, `fastdecode`, `zerolatency` |\n 191→| `-b:v` | Target bitrate (e.g. `2M`) |\n 192→\n 193→#### libx265 (H.265/HEVC)\n 194→\n 195→| Option | Description |\n 196→|--------|-------------|\n 197→| `-preset` | Same presets as x264 |\n 198→| `-crf` | 0-51, default 28. Similar quality to x264 at lower bitrate |\n 199→| `-profile:v` | `main`, `main10`, `main12` |\n 200→| `-b:v` | Target bitrate |\n 201→\n 202→#### libvpx-vp9 (VP9)\n 203→\n 204→| Option | Description |\n 205→|--------|-------------|\n 206→| `-crf` | 0-63. 31 is a good default |\n 207→| `-b:v` | Target bitrate (set to `0` for pure CRF mode) |\n 208→| `-cpu-used` | Speed: 0 (slowest/best) to 8 (fastest) |\n 209→| `-deadline` | `best`, `good` (default), `realtime` |\n 210→| `-row-mt 1` | Enable row-based multithreading |\n 211→\n 212→#### libsvtav1 (SVT-AV1)\n 213→\n 214→| Option | Description |\n 215→|--------|-------------|\n 216→| `-crf` | 0-63. 30 is a good default |\n 217→| `-preset` | 0 (slowest/best) to 13 (fastest). 8 is a good default |\n 218→| `-b:v` | Target bitrate |\n 219→\n 220→#### libaom-av1 (AOM AV1)\n 221→\n 222→| Option | Description |\n 223→|--------|-------------|\n 224→| `-crf` | 0-63 |\n 225→| `-cpu-used` | 0 (best) to 8 (fastest) |\n 226→| `-b:v` | Target bitrate (set to `0` for pure CRF mode) |\n 227→| `-tiles` | Tile columns x rows for parallelism |\n 228→\n 229→### Audio Encoders\n 230→\n 231→#### aac (Native AAC)\n 232→\n 233→| Option | Description |\n 234→|--------|-------------|\n 235→| `-b:a` | Bitrate: `128k`, `192k`, `256k` |\n 236→| `-profile:a` | `aac_low` (default), `aac_he`, `aac_he_v2` |\n 237→\n 238→#### libmp3lame (MP3)\n 239→\n 240→| Option | Description |\n 241→|--------|-------------|\n 242→| `-b:a` | CBR bitrate: `128k`, `192k`, `320k` |\n 243→| `-q:a` | VBR quality: 0 (best) to 9 (worst). 2 is a good default |\n 244→\n 245→#### libopus (Opus)\n 246→\n 247→| Option | Description |\n 248→|--------|-------------|\n 249→| `-b:a` | Bitrate: `64k` to `256k`. 128k is a good default |\n 250→| `-vbr` | `on` (default), `off`, `constrained` |\n 251→| `-application` | `audio` (default), `voip`, `lowdelay` |\n 252→\n 253→#### libvorbis (Vorbis)\n 254→\n 255→| Option | Description |\n 256→|--------|-------------|\n 257→| `-q:a` | VBR quality: -1 to 10. 5 is a good default |\n 258→| `-b:a` | ABR bitrate |\n 259→\n 260→#### flac (FLAC)\n 261→\n 262→| Option | Description |\n 263→|--------|-------------|\n 264→| `-compression_level` | 0 (fast) to 12 (best). 5 is default |\n 265→\n 266→---\n 267→\n 268→## Common Container Formats\n 269→\n 270→| Format | Extensions | Notes |\n 271→|--------|-----------|-------|\n 272→| `mp4` | .mp4, .m4a, .m4v | Use `-movflags +faststart` for web streaming |\n 273→| `matroska` | .mkv | Supports virtually all codecs |\n 274→| `webm` | .webm | VP8/VP9/AV1 + Vorbis/Opus for web |\n 275→| `avi` | .avi | Legacy; limited codec support |\n 276→| `mpegts` | .ts | Broadcast transport stream |\n 277→| `ogg` | .ogg, .ogv | Vorbis/Opus/Theora container |\n 278→| `wav` | .wav | Uncompressed PCM audio |\n 279→| `flac` | .flac | Lossless audio |\n 280→| `mp3` | .mp3 | MPEG audio layer 3 |\n 281→| `hls` | .m3u8 | HTTP Live Streaming |\n 282→| `dash` | .mpd | DASH adaptive streaming |\n 283→| `gif` | .gif | Animated GIF |\n 284→| `image2` | various | Image sequence input/output |\n 285→| `concat` | text file | Concatenation demuxer (file list) |\n 286→| `null` | — | Discard output (benchmarking) |\n 287→\n 288→---\n 289→\n 290→## Common Video Filters (`-vf`)\n 291→\n 292→| Filter | Description | Example |\n 293→|--------|-------------|---------|\n 294→| `scale=W:H` | Resize video. Use `-1` or `-2` to auto-calculate | `scale=1280:720`, `scale=-2:480` |\n 295→| `crop=W:H:X:Y` | Crop to WxH starting at X,Y | `crop=640:480:100:50` |\n 296→| `pad=W:H:X:Y:color` | Pad video with borders | `pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black` |\n 297→| `overlay=X:Y` | Composite second input over first | `overlay=10:10` |\n 298→| `transpose=N` | Rotate: 0=90ccw+vflip, 1=90cw, 2=90ccw, 3=90cw+vflip | `transpose=1` |\n 299→| `hflip` / `vflip` | Horizontal / vertical flip | `hflip` |\n 300→| `rotate=angle` | Rotate by arbitrary angle (radians) | `rotate=PI/4` |\n 301→| `fps=N` | Change frame rate | `fps=30` |\n 302→| `setpts=expr` | Modify presentation timestamps | `setpts=0.5*PTS` (2x speed) |\n 303→| `trim=start:end` | Extract time range | `trim=start=10:end=20` |\n 304→| `drawtext=opts` | Overlay text | `drawtext=text='Hello':fontsize=24:x=10:y=10` |\n 305→| `fade=t=type:st=S:d=D` | Fade in/out | `fade=t=in:st=0:d=2` |\n 306→| `eq=opts` | Adjust brightness/contrast/saturation | `eq=brightness=0.1:contrast=1.2` |\n 307→| `format=pix_fmt` | Convert pixel format | `format=yuv420p` |\n 308→| `concat=n:v:a` | Concatenate segments | `concat=n=2:v=1:a=1` |\n 309→| `split` / `select` | Duplicate / select frames | `select='eq(pict_type,I)'` |\n 310→| `deinterlace` / `yadif` | Remove interlacing | `yadif=1` |\n 311→| `boxblur=R` | Apply box blur | `boxblur=5:1` |\n 312→| `subtitles=file` | Burn in subtitles from file | `subtitles=subs.srt` |\n 313→| `palettegen` / `paletteuse` | Generate/apply palette for GIF | Used in two-pass GIF creation |\n 314→| `colorchannelmixer` | Mix color channels | `colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3` (grayscale) |\n 315→\n 316→## Common Audio Filters (`-af`)\n 317→\n 318→| Filter | Description | Example |\n 319→|--------|-------------|---------|\n 320→| `volume=V` | Adjust volume | `volume=1.5`, `volume=-3dB` |\n 321→| `loudnorm` | EBU R128 loudness normalization | `loudnorm=I=-16:TP=-1.5:LRA=11` |\n 322→| `atempo=T` | Change tempo (0.5-100.0) | `atempo=2.0` (2x speed) |\n 323→| `aresample=rate` | Resample audio | `aresample=44100` |\n 324→| `amerge` | Merge audio channels | `amerge=inputs=2` |\n 325→| `afade=t=type:st=S:d=D` | Audio fade in/out | `afade=t=in:st=0:d=3` |\n 326→| `highpass=f=freq` | High-pass filter | `highpass=f=200` |\n 327→| `lowpass=f=freq` | Low-pass filter | `lowpass=f=3000` |\n 328→| `equalizer=f:t:w:g` | Parametric EQ | `equalizer=f=1000:t=q:w=1:g=5` |\n 329→| `acompressor` | Dynamic range compression | `acompressor=threshold=-20dB:ratio=4` |\n 330→| `silenceremove` | Remove silence | `silenceremove=1:0:-50dB` |\n 331→| `silencedetect` | Detect silence | `silencedetect=n=-30dB:d=2` |\n 332→| `adelay=delays` | Delay audio channels | `adelay=1000\\|1000` (ms) |\n 333→| `aecho=id:ig:delays:decays` | Add echo effect | `aecho=0.8:0.88:60:0.4` |\n 334→| `pan=layout:gains` | Remix channels | `pan=mono\\|c0=0.5*c0+0.5*c1` |\n 335→\n 336→---\n 337→\n 338→## Common Recipes\n 339→\n 340→### Convert format\n 341→\n 342→```bash\n 343→ffmpeg -i input.mkv output.mp4\n 344→```\n 345→\n 346→### Transcode with CRF quality\n 347→\n 348→```bash\n 349→ffmpeg -i input.mp4 -c:v libx264 -crf 20 -c:a aac -b:a 192k output.mp4\n 350→```\n 351→\n 352→### Extract audio\n 353→\n 354→```bash\n 355→ffmpeg -i video.mp4 -vn -c:a copy audio.m4a\n 356→```\n 357→\n 358→### Extract video (no audio)\n 359→\n 360→```bash\n 361→ffmpeg -i input.mp4 -an -c:v copy output.mp4\n 362→```\n 363→\n 364→### Trim / cut\n 365→\n 366→```bash\n 367→ffmpeg -ss 00:01:30 -to 00:03:00 -i input.mp4 -c copy output.mp4\n 368→```\n 369→\n 370→### Resize video\n 371→\n 372→```bash\n 373→ffmpeg -i input.mp4 -vf \"scale=1280:720\" -c:a copy output.mp4\n 374→```\n 375→\n 376→### Compress video (lower quality)\n 377→\n 378→```bash\n 379→ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 128k output.mp4\n 380→```\n 381→\n 382→### Two-pass encoding\n 383→\n 384→```bash\n 385→ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 1 -f null /dev/null\n 386→ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 2 output.mp4\n 387→```\n 388→\n 389→### Concatenate files (concat demuxer)\n 390→\n 391→```bash\n 392→# files.txt contains:\n 393→# file 'part1.mp4'\n 394→# file 'part2.mp4'\n 395→ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4\n 396→```\n 397→\n 398→### Add subtitles (burn-in)\n 399→\n 400→```bash\n 401→ffmpeg -i input.mp4 -vf \"subtitles=subs.srt\" output.mp4\n 402→```\n 403→\n 404→### Create GIF\n 405→\n 406→```bash\n 407→ffmpeg -i input.mp4 -vf \"fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse\" output.gif\n 408→```\n 409→\n 410→### Add watermark / overlay\n 411→\n 412→```bash\n 413→ffmpeg -i video.mp4 -i logo.png -filter_complex \"overlay=10:10\" output.mp4\n 414→```\n 415→\n 416→### Change speed (video + audio)\n 417→\n 418→```bash\n 419→ffmpeg -i input.mp4 -vf \"setpts=0.5*PTS\" -af \"atempo=2.0\" output.mp4\n 420→```\n 421→\n 422→### Extract frames as images\n 423→\n 424→```bash\n 425→ffmpeg -i input.mp4 -vf \"fps=1\" frame_%04d.png\n 426→```\n 427→\n 428→### Merge audio and video\n 429→\n 430→```bash\n 431→ffmpeg -i video.mp4 -i audio.m4a -c:v copy -c:a copy -shortest output.mp4\n 432→```\n 433→\n 434→### Normalize audio loudness\n 435→\n 436→```bash\n 437→ffmpeg -i input.mp4 -af \"loudnorm=I=-16:TP=-1.5:LRA=11\" -c:v copy output.mp4\n 438→```\n 439→\n 440→### Convert to web-optimized MP4\n 441→\n 442→```bash\n 443→ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k -movflags +faststart output.mp4\n 444→```\n 445→\n 446→### Probe file info (JSON)\n 447→\n 448→```bash\n 449→ffprobe -v quiet -print_format json -show_format -show_streams input.mp4\n 450→```\n 451→\n 452→### Get duration only\n 453→\n 454→```bash\n 455→ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4\n 456→```\n 457→\n 458→### Get resolution only\n 459→\n 460→```bash\n 461→ffprobe -v quiet -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4\n 462→```\n 463→\n 464→---\n 465→\n 466→## Source\n 467→\n 468→- Website: https://ffmpeg.org/\n 469→- Documentation: https://www.ffmpeg.org/documentation.html\n 470→- CLI reference: https://www.ffmpeg.org/ffmpeg.html\n 471→- Filters reference: https://www.ffmpeg.org/ffmpeg-filters.html\n 472→- Codecs reference: https://www.ffmpeg.org/ffmpeg-codecs.html\n 473→- Formats reference: https://www.ffmpeg.org/ffmpeg-formats.html\n 474→- Wiki: https://trac.ffmpeg.org/wiki\n 475→","isError":false},{"role":"assistant","text":"Now I have a good understanding of fizzy-cli and the style/format used in the other skill files. Let me create the SKILL.md content."},{"role":"tool","toolName":"Edit","toolInput":{"replace_all":false,"file_path":"/home/pastilhas/projects/officer.dev/data/skills/fizzy-cli/SKILL.md","old_string":"---\nname: fizzy-cli\ndescription: \n---","new_string":"---\nname: fizzy-cli\ndescription: Manage Fizzy boards, cards, columns, and comments from the command line. Use when the user wants to create, list, update, or organize cards and boards on Fizzy.\n---\n\n# Fizzy CLI\n\nCLI reference for fizzy-cli — a command-line interface for the Fizzy API to manage boards, cards, columns, comments, and more.\n\nSource: https://github.com/robzolkos/fizzy-cli\n\n## Configuration\n\nConfiguration sources in order of precedence (highest first):\n\n1. **Command-line flags** (`--token`, `--account`, `--api-url`)\n2. **Environment variables** (`FIZZY_TOKEN`, `FIZZY_ACCOUNT`, `FIZZY_API_URL`, `FIZZY_BOARD`)\n3. **Local project config** (`.fizzy.yaml` in current or parent directories)\n4. **Global config** (`~/.config/fizzy/config.yaml` or `~/.fizzy/config.yaml`)\n\nRun `fizzy setup` for interactive configuration.\n\n## Global Options\n\n| Flag | Env Variable | Description |\n|------|-------------|-------------|\n| `--token` | `FIZZY_TOKEN` | API access token |\n| `--account` | `FIZZY_ACCOUNT` | Account identifier |\n| `--api-url` | `FIZZY_API_URL` | API base URL (default: `https://app.fizzy.do`) |\n| `--verbose` | — | Display request/response details |\n\n---\n\n## Commands\n\n### Boards\n\n| Command | Description |\n|---------|-------------|\n| `fizzy board list` | List all boards |\n| `fizzy board show BOARD_ID` | Display board details |\n| `fizzy board create --name \"Name\"` | Create a new board |\n| `fizzy board update BOARD_ID --name \"Name\"` | Update a board |\n| `fizzy board delete BOARD_ID` | Delete a board |\n\n### Cards\n\n#### List cards\n\n```bash\nfizzy card list [--board ID] [--column ID] [--tag ID] [--assignee ID]\nfizzy card list [--sort newest|oldest|latest] [--search \"text\"]\nfizzy card list [--created thisweek] [--closed thisweek] [--unassigned]\n```\n\n#### CRUD\n\n| Command | Description |\n|---------|-------------|\n| `fizzy card show CARD_ID` | View card details |\n| `fizzy card create --board ID --title \"Title\"` | Create a card |\n| `fizzy card update CARD_ID --title \"Title\"` | Update a card |\n| `fizzy card delete CARD_ID` | Delete a card |\n\n#### Card actions\n\n| Command | Description |\n|---------|-------------|\n| `fizzy card close CARD_ID` | Close a card |\n| `fizzy card reopen CARD_ID` | Reopen a card |\n| `fizzy card move CARD_ID --to BOARD_ID` | Move card to another board |\n| `fizzy card postpone CARD_ID` | Postpone a card |\n| `fizzy card column CARD_ID --column COLUMN_ID` | Assign card to a column |\n| `fizzy card assign CARD_ID --user USER_ID` | Assign card to a user |\n| `fizzy card tag CARD_ID --tag \"tag\"` | Tag a card |\n| `fizzy card pin CARD_ID` | Pin a card |\n| `fizzy card unpin CARD_ID` | Unpin a card |\n| `fizzy card golden CARD_ID` | Mark card as golden |\n| `fizzy card ungolden CARD_ID` | Remove golden status |\n| `fizzy card watch CARD_ID` | Watch a card |\n| `fizzy card unwatch CARD_ID` | Unwatch a card |\n\n#### Card attachments\n\n| Command | Description |\n|---------|-------------|\n| `fizzy card attachments show CARD_ID` | List attachments |\n| `fizzy card attachments download CARD_ID` | Download all attachments |\n| `fizzy card attachments download CARD_ID ATT_ID` | Download specific attachment |\n\n### Columns\n\n| Command | Description |\n|---------|-------------|\n| `fizzy column list --board ID` | List columns |\n| `fizzy column show COLUMN_ID --board ID` | View column |\n| `fizzy column create --board ID --name \"Name\"` | Create column |\n| `fizzy column update COLUMN_ID --board ID --name \"Name\"` | Update column |\n| `fizzy column delete COLUMN_ID --board ID` | Delete column |\n\n### Comments\n\n| Command | Description |\n|---------|-------------|\n| `fizzy comment list --card CARD_ID` | List comments |\n| `fizzy comment show COMMENT_ID --card CARD_ID` | View comment |\n| `fizzy comment create --card CARD_ID --body \"Text\"` | Add comment |\n| `fizzy comment update COMMENT_ID --card CARD_ID --body \"Text\"` | Edit comment |\n| `fizzy comment delete COMMENT_ID --card CARD_ID` | Delete comment |\n\n#### Comment attachments\n\n| Command | Description |\n|---------|-------------|\n| `fizzy comment attachments show --card CARD_ID` | List attachments |\n| `fizzy comment attachments download --card CARD_ID` | Download all |\n| `fizzy comment attachments download --card CARD_ID ATT_ID` | Download specific |\n\n### Steps (To-Do Items)\n\n| Command | Description |\n|---------|-------------|\n| `fizzy step show STEP_ID --card CARD_ID` | View step |\n| `fizzy step create --card CARD_ID --content \"Task\"` | Create step |\n| `fizzy step update STEP_ID --card CARD_ID --completed` | Mark step complete |\n| `fizzy step delete STEP_ID --card CARD_ID` | Delete step |\n\n### Reactions\n\n| Command | Description |\n|---------|-------------|\n| `fizzy reaction list --card CARD_ID` | List reactions |\n| `fizzy reaction create --card CARD_ID --content \"👍\"` | Add reaction |\n| `fizzy reaction delete REACTION_ID --card CARD_ID` | Remove reaction |\n\n### Users & Tags\n\n| Command | Description |\n|---------|-------------|\n| `fizzy user list` | List users |\n| `fizzy user show USER_ID` | View user details |\n| `fizzy tag list` | List available tags |\n\n### Pins, Search & Notifications\n\n| Command | Description |\n|---------|-------------|\n| `fizzy pin list` | List pinned cards |\n| `fizzy search \"term\"` | Full-text card search |\n| `fizzy notification list` | List notifications |\n| `fizzy notification read ID` | Mark notification as read |\n| `fizzy notification unread ID` | Mark notification as unread |\n| `fizzy notification read-all` | Mark all notifications as read |\n\n### File Uploads\n\n```bash\nfizzy upload file /path/to/file.png\n# Returns: { \"signed_id\": \"...\", \"attachable_sgid\": \"...\" }\n```\n\nUse `signed_id` for card headers; `attachable_sgid` for inline images in rich text.\n\n---\n\n## Source\n\n- Repository: https://github.com/robzolkos/fizzy-cli"},"toolUseId":"toolu_017rgVDnJ32j3iCCdKm2EQXE","output":"The file /home/pastilhas/projects/officer.dev/data/skills/fizzy-cli/SKILL.md has been updated successfully.","isError":false}]