1 line
40 KiB
JSON
1 line
40 KiB
JSON
[{"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.0–1.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}] |