[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CFHD3HFBT96ME2WPPR1WSQ":3,"skill-same:01M6CFHD3HFBT96ME2WPPR1WSQ":152},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6CFHD3HFBT96ME2WPPR1WSQ","ai-multimodal",null,"Analyze images\u002Faudio\u002Fvideo with Gemini API (better vision than Claude). Generate images (Imagen 4), videos (Veo 3). Use for vision analysis, transcription, OCR, design extraction, multimodal AI.","hoanghd218\u002Fdocons","hoanghd218","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F49197448?v=4","01M6CEG06HBF8MQKQX19CR32ME","Hoang218","01M6CFGYFPDRM365Q0JTRNVJJ8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"multimodal","ai multimodal","Bash","transcription","images","vision","use","edit","write","read","analyze","design","Audio","Video","api","analysis","ocr","generate","gemini api","gemini","2026-11-10 10:12:30",false,"---\nname: ai-multimodal\ndescription: Analyze images\u002Faudio\u002Fvideo with Gemini API (better vision than Claude). Generate images (Imagen 4), videos (Veo 3). Use for vision analysis, transcription, OCR, design extraction, multimodal AI.\nlicense: MIT\nallowed-tools:\n  - Bash\n  - Read\n  - Write\n  - Edit\n---\n\n# AI Multimodal\n\nProcess audio, images, videos, documents, and generate images\u002Fvideos using Google Gemini's multimodal API.\n\n## Setup\n\n```bash\nexport GEMINI_API_KEY=\"your-key\"  # Get from https:\u002F\u002Faistudio.google.com\u002Fapikey\npip install google-genai python-dotenv pillow\n```\n\n### API Key Rotation (Optional)\n\nFor high-volume usage or when hitting rate limits, configure multiple API keys:\n\n```bash\n# Primary key (required)\nexport GEMINI_API_KEY=\"key1\"\n\n# Additional keys for rotation (optional)\nexport GEMINI_API_KEY_2=\"key2\"\nexport GEMINI_API_KEY_3=\"key3\"\n```\n\nOr in your `.env` file:\n```\nGEMINI_API_KEY=key1\nGEMINI_API_KEY_2=key2\nGEMINI_API_KEY_3=key3\n```\n\n**Features:**\n- Auto-rotates on rate limit (429\u002FRESOURCE_EXHAUSTED) errors\n- 60-second cooldown per key after rate limit\n- Logs rotation events with `--verbose` flag\n- Backward compatible: single key still works\n\n## Quick Start\n\n**Verify setup**: `python scripts\u002Fcheck_setup.py`\n**Analyze media**: `python scripts\u002Fgemini_batch_process.py --files \u003Cfile> --task \u003Canalyze|transcribe|extract>`\n  - TIP: When you're asked to analyze an image, check if `gemini` command is available, then use `echo \"\u003Cprompt to analyze image>\" | gemini -y -m \u003Cgemini.model>` command (read model from `.claude\u002F.ck.json`: `gemini.model`). If `gemini` command is not available, use `python scripts\u002Fgemini_batch_process.py --files \u003Cfile> --task analyze` command.\n**Generate content**: `python scripts\u002Fgemini_batch_process.py --task \u003Cgenerate|generate-video> --prompt \"description\"`\n\n> **Stdin support**: You can pipe files directly via stdin (auto-detects PNG\u002FJPG\u002FPDF\u002FWAV\u002FMP3).\n> - `cat image.png | python scripts\u002Fgemini_batch_process.py --task analyze --prompt \"Describe this\"`\n> - `python scripts\u002Fgemini_batch_process.py --files image.png --task analyze` (traditional)\n\n## Models\n\n- **Image generation**: `imagen-4.0-generate-001` (standard), `imagen-4.0-ultra-generate-001` (quality), `imagen-4.0-fast-generate-001` (speed)\n- **Video generation**: `veo-3.1-generate-preview` (8s clips with audio)\n- **Analysis**: `gemini-2.5-flash` (recommended), `gemini-2.5-pro` (advanced)\n\n## Scripts\n\n- **`gemini_batch_process.py`**: CLI orchestrator for `transcribe|analyze|extract|generate|generate-video` that auto-resolves API keys, picks sensible default models per task, streams files inline vs File API, and saves structured outputs (text\u002FJSON\u002FCSV\u002Fmarkdown plus generated assets) for Imagen 4 + Veo workflows.\n- **`media_optimizer.py`**: ffmpeg\u002FPillow-based preflight tool that compresses\u002Fresizes\u002Fconverts audio, image, and video inputs, enforces target sizes\u002Fbitrates, splits long clips into hour chunks, and batch-processes directories so media stays within Gemini limits.\n- **`document_converter.py`**: Gemini-powered converter that uploads PDFs\u002Fimages\u002FOffice docs, applies a markdown-preserving prompt, batches multiple files, auto-names outputs under `docs\u002Fassets`, and exposes CLI flags for model, prompt, auto-file naming, and verbose logging.\n- **`check_setup.py`**: Interactive readiness checker that verifies directory layout, centralized env resolver, required Python deps, and GEMINI_API_KEY availability\u002Fformat, then performs a live Gemini API call and prints remediation instructions if anything fails.\n\nUse `--help` for options.\n\n## References\n\nLoad for detailed guidance:\n\n| Topic | File | Description |\n|-------|------|-------------|\n| Music | `references\u002Fmusic-generation.md` | Lyria RealTime API for background music generation, style prompts, real-time control, integration with video production. |\n| Audio | `references\u002Faudio-processing.md` | Audio formats and limits, transcription (timestamps, speakers, segments), non-speech analysis, File API vs inline input, TTS models, best practices, cost and token math, and concrete meeting\u002Fpodcast\u002Finterview recipes. |\n| Images | `references\u002Fvision-understanding.md` | Vision capabilities overview, supported formats and models, captioning\u002Fclassification\u002FVQA, detection and segmentation, OCR and document reading, multi-image workflows, structured JSON output, token costs, best practices, and common product\u002Fscreenshot\u002Fchart\u002Fscene use cases. |\n| Image Gen | `references\u002Fimage-generation.md` | Imagen 4 and Gemini image model overview, generate_images vs generate_content APIs, aspect ratios and costs, text\u002Fimage\u002Fboth modalities, editing and composition, style and quality control, safety settings, best practices, troubleshooting, and common marketing\u002Fconcept-art\u002FUI scenarios. |\n| Video | `references\u002Fvideo-analysis.md` | Video analysis capabilities and supported formats, model\u002Fcontext choices, local\u002Finline\u002FYouTube inputs, clipping and FPS control, multi-video comparison, temporal Q&A and scene detection, transcription with visual context, token and cost guidance, and optimization\u002Fbest-practice patterns. |\n| Video Gen | `references\u002Fvideo-generation.md` | Veo model matrix, text-to-video and image-to-video quick start, multi-reference and extension flows, camera and timing control, configuration (resolution, aspect, audio, safety), prompt design patterns, performance tips, limitations, troubleshooting, and cost estimates. |\n\n## Limits\n\n**Formats**: Audio (WAV\u002FMP3\u002FAAC, 9.5h), Images (PNG\u002FJPEG\u002FWEBP, 3.6k), Video (MP4\u002FMOV, 6h), PDF (1k pages)\n**Size**: 20MB inline, 2GB File API\n**Important:** \n- If you are going to generate a transcript of the audio, and the audio length is longer than 15 minutes, the transcript often gets truncated due to output token limits in the Gemini API response. To get the full transcript, you need to split the audio into smaller chunks (max 15 minutes per chunk) and transcribe each segment for a complete transcript.\n- If you are going to generate a transcript of the video and the video length is longer than 15 minutes, use ffmpeg to extract the audio from the video, truncate the audio to 15 minutes, transcribe all audio segments, and then combine the transcripts into a single transcript.\n**Transcription Output Requirements:**\n- Format: Markdown\n- Metadata: Duration, file size, generated date, description, file name, topics covered, etc.\n- Parts: from-to (e.g., 00:00-00:15), audio chunk name, transcript, status, etc.\n- Transcript format: \n  ```\n  [HH:MM:SS -> HH:MM:SS] transcript content\n  [HH:MM:SS -> HH:MM:SS] transcript content\n  ...\n  ```\n\n## Resources\n\n- [API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002F)\n- [Pricing](https:\u002F\u002Fai.google.dev\u002Fpricing)\n","# AI Multimodal\n\nProcess audio, images, videos, documents, and generate images\u002Fvideos using Google Gemini's multimodal API.\n\n## Setup\n\n```bash\nexport GEMINI_API_KEY=\"your-key\"  # Get from https:\u002F\u002Faistudio.google.com\u002Fapikey\npip install google-genai python-dotenv pillow\n```\n\n### API Key Rotation (Optional)\n\nFor high-volume usage or when hitting rate limits, configure multiple API keys:\n\n```bash\n# Primary key (required)\nexport GEMINI_API_KEY=\"key1\"\n\n# Additional keys for rotation (optional)\nexport GEMINI_API_KEY_2=\"key2\"\nexport GEMINI_API_KEY_3=\"key3\"\n```\n\nOr in your `.env` file:\n```\nGEMINI_API_KEY=key1\nGEMINI_API_KEY_2=key2\nGEMINI_API_KEY_3=key3\n```\n\n**Features:**\n- Auto-rotates on rate limit (429\u002FRESOURCE_EXHAUSTED) errors\n- 60-second cooldown per key after rate limit\n- Logs rotation events with `--verbose` flag\n- Backward compatible: single key still works\n\n## Quick Start\n\n**Verify setup**: `python scripts\u002Fcheck_setup.py`\n**Analyze media**: `python scripts\u002Fgemini_batch_process.py --files \u003Cfile> --task \u003Canalyze|transcribe|extract>`\n  - TIP: When you're asked to analyze an image, check if `gemini` command is available, then use `echo \"\u003Cprompt to analyze image>\" | gemini -y -m \u003Cgemini.model>` command (read model from `.claude\u002F.ck.json`: `gemini.model`). If `gemini` command is not available, use `python scripts\u002Fgemini_batch_process.py --files \u003Cfile> --task analyze` command.\n**Generate content**: `python scripts\u002Fgemini_batch_process.py --task \u003Cgenerate|generate-video> --prompt \"description\"`\n\n> **Stdin support**: You can pipe files directly via stdin (auto-detects PNG\u002FJPG\u002FPDF\u002FWAV\u002FMP3).\n> - `cat image.png | python scripts\u002Fgemini_batch_process.py --task analyze --prompt \"Describe this\"`\n> - `python scripts\u002Fgemini_batch_process.py --files image.png --task analyze` (traditional)\n\n## Models\n\n- **Image generation**: `imagen-4.0-generate-001` (standard), `imagen-4.0-ultra-generate-001` (quality), `imagen-4.0-fast-generate-001` (speed)\n- **Video generation**: `veo-3.1-generate-preview` (8s clips with audio)\n- **Analysis**: `gemini-2.5-flash` (recommended), `gemini-2.5-pro` (advanced)\n\n## Scripts\n\n- **`gemini_batch_process.py`**: CLI orchestrator for `transcribe|analyze|extract|generate|generate-video` that auto-resolves API keys, picks sensible default models per task, streams files inline vs File API, and saves structured outputs (text\u002FJSON\u002FCSV\u002Fmarkdown plus generated assets) for Imagen 4 + Veo workflows.\n- **`media_optimizer.py`**: ffmpeg\u002FPillow-based preflight tool that compresses\u002Fresizes\u002Fconverts audio, image, and video inputs, enforces target sizes\u002Fbitrates, splits long clips into hour chunks, and batch-processes directories so media stays within Gemini limits.\n- **`document_converter.py`**: Gemini-powered converter that uploads PDFs\u002Fimages\u002FOffice docs, applies a markdown-preserving prompt, batches multiple files, auto-names outputs under `docs\u002Fassets`, and exposes CLI flags for model, prompt, auto-file naming, and verbose logging.\n- **`check_setup.py`**: Interactive readiness checker that verifies directory layout, centralized env resolver, required Python deps, and GEMINI_API_KEY availability\u002Fformat, then performs a live Gemini API call and prints remediation instructions if anything fails.\n\nUse `--help` for options.\n\n## References\n\nLoad for detailed guidance:\n\n| Topic | File | Description |\n|-------|------|-------------|\n| Music | `references\u002Fmusic-generation.md` | Lyria RealTime API for background music generation, style prompts, real-time control, integration with video production. |\n| Audio | `references\u002Faudio-processing.md` | Audio formats and limits, transcription (timestamps, speakers, segments), non-speech analysis, File API vs inline input, TTS models, best practices, cost and token math, and concrete meeting\u002Fpodcast\u002Finterview recipes. |\n| Images | `references\u002Fvision-understanding.md` | Vision capabilities overview, supported formats and models, captioning\u002Fclassification\u002FVQA, detection and segmentation, OCR and document reading, multi-image workflows, structured JSON output, token costs, best practices, and common product\u002Fscreenshot\u002Fchart\u002Fscene use cases. |\n| Image Gen | `references\u002Fimage-generation.md` | Imagen 4 and Gemini image model overview, generate_images vs generate_content APIs, aspect ratios and costs, text\u002Fimage\u002Fboth modalities, editing and composition, style and quality control, safety settings, best practices, troubleshooting, and common marketing\u002Fconcept-art\u002FUI scenarios. |\n| Video | `references\u002Fvideo-analysis.md` | Video analysis capabilities and supported formats, model\u002Fcontext choices, local\u002Finline\u002FYouTube inputs, clipping and FPS control, multi-video comparison, temporal Q&A and scene detection, transcription with visual context, token and cost guidance, and optimization\u002Fbest-practice patterns. |\n| Video Gen | `references\u002Fvideo-generation.md` | Veo model matrix, text-to-video and image-to-video quick start, multi-reference and extension flows, camera and timing control, configuration (resolution, aspect, audio, safety), prompt design patterns, performance tips, limitations, troubleshooting, and cost estimates. |\n\n## Limits\n\n**Formats**: Audio (WAV\u002FMP3\u002FAAC, 9.5h), Images (PNG\u002FJPEG\u002FWEBP, 3.6k), Video (MP4\u002FMOV, 6h), PDF (1k pages)\n**Size**: 20MB inline, 2GB File API\n**Important:** \n- If you are going to generate a transcript of the audio, and the audio length is longer than 15 minutes, the transcript often gets truncated due to output token limits in the Gemini API response. To get the full transcript, you need to split the audio into smaller chunks (max 15 minutes per chunk) and transcribe each segment for a complete transcript.\n- If you are going to generate a transcript of the video and the video length is longer than 15 minutes, use ffmpeg to extract the audio from the video, truncate the audio to 15 minutes, transcribe all audio segments, and then combine the transcripts into a single transcript.\n**Transcription Output Requirements:**\n- Format: Markdown\n- Metadata: Duration, file size, generated date, description, file name, topics covered, etc.\n- Parts: from-to (e.g., 00:00-00:15), audio chunk name, transcript, status, etc.\n- Transcript format: \n  ```\n  [HH:MM:SS -> HH:MM:SS] transcript content\n  [HH:MM:SS -> HH:MM:SS] transcript content\n  ...\n  ```\n\n## Resources\n\n- [API Docs](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002F)\n- [Pricing](https:\u002F\u002Fai.google.dev\u002Fpricing)\n",{"name":5,"license":15,"description":7,"allowed-tools":49},[26,50,51,52],"Read","Write","Edit","main","863082984c7c65197a5d20dc7c6e1fda6045b372","landingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal",1,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons","https:\u002F\u002Fdocons.vercel.app","https:\u002F\u002Fgithub.com\u002Fhoanghd218","2026-08-25 23:11:43",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add hoanghd218\u002Fdocons --skill ai-multimodal",{"tool":67,"command":68},"bunx","bunx skills add hoanghd218\u002Fdocons --skill ai-multimodal",{"tool":70,"command":71},"pnpm","pnpm dlx skills add hoanghd218\u002Fdocons --skill ai-multimodal","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002FSKILL.md",true,[75,81,87,91,95,99,103,107,113,117,121,125,129,133,136,140,144,148],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},".env.example","OTHER","其他",8282,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002F.env.example",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Faudio-processing.md","REFERENCE","参考文档",10122,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Freferences\u002Faudio-processing.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fimage-generation.md",26973,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fimage-generation.md",{"path":92,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fmusic-generation.md",9007,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fmusic-generation.md",{"path":96,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fvideo-analysis.md",11916,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fvideo-analysis.md",{"path":100,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fvideo-generation.md",11094,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fvideo-generation.md",{"path":104,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fvision-understanding.md",11040,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Freferences\u002Fvision-understanding.md",{"path":108,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":111,"sourceHtmlUrl":112},"scripts\u002F.coverage","SCRIPT","脚本",53248,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002F.coverage",{"path":114,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":115,"sourceHtmlUrl":116},"scripts\u002Fcheck_setup.py",9661,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fcheck_setup.py",{"path":118,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":119,"sourceHtmlUrl":120},"scripts\u002Fdocument_converter.py",12487,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fdocument_converter.py",{"path":122,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":123,"sourceHtmlUrl":124},"scripts\u002Fgemini_batch_process.py",43576,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fgemini_batch_process.py",{"path":126,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":127,"sourceHtmlUrl":128},"scripts\u002Fmedia_optimizer.py",16467,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Fmedia_optimizer.py",{"path":130,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":131,"sourceHtmlUrl":132},"scripts\u002Frequirements.txt",442,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Frequirements.txt",{"path":134,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":111,"sourceHtmlUrl":135},"scripts\u002Ftests\u002F.coverage","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002F.coverage",{"path":137,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":138,"sourceHtmlUrl":139},"scripts\u002Ftests\u002Frequirements.txt",352,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Frequirements.txt",{"path":141,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":142,"sourceHtmlUrl":143},"scripts\u002Ftests\u002Ftest_document_converter.py",2229,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_document_converter.py",{"path":145,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":146,"sourceHtmlUrl":147},"scripts\u002Ftests\u002Ftest_gemini_batch_process.py",12677,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_gemini_batch_process.py",{"path":149,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":150,"sourceHtmlUrl":151},"scripts\u002Ftests\u002Ftest_media_optimizer.py",11824,"https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.claude\u002Fskills\u002Fai-multimodal\u002Fscripts\u002Ftests\u002Ftest_media_optimizer.py",[153,181,198,223,247,259],{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":157,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":163,"publishedAt":44},"01M6CFWQKBPK223JYTA0T4WKGF","web-testing","Web testing with Playwright, Vitest, k6. E2E\u002Funit\u002Fintegration\u002Fload\u002Fsecurity\u002Fvisual\u002Fa11y testing. Use for test automation, flakiness, Core Web Vitals, mobile gestures, cross-browser.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.opencode\u002Fskills\u002Fweb-testing\u002FSKILL.md",[160],{"categoryNo":161,"categoryName":162,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,30,180],"web testing","web","testing","security","gestures","automation","playwright","test","test automation","core","browser","integration","core web vitals","k6","e2e","vitest","mobile",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":44},"01M6CFWKWR6J11YJRE9EX702JY","web-frameworks","Build with Next.js (App Router, RSC, SSR, ISR), Turborepo monorepos. Use for React apps, server rendering, build optimization, caching strategies, shared dependencies.","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.opencode\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[188,165,189,190,191,30,192,193,194,195,196,197],"web frameworks","Optimization","build","router","js","Next.js","turborepo","server","ssr","react",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":212,"publishedAt":44},"01M6CFW31HEVJTMWZNXXH6RJZW","ui-styling","Style UIs with shadcn\u002Fui components (Radix UI + Tailwind CSS). Use for accessible components, themes, dark mode, responsive layouts, design systems, color customization.","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.opencode\u002Fskills\u002Fui-styling\u002FSKILL.md",[204,207],{"categoryNo":205,"categoryName":206,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":208,"categoryName":209,"taxonomyType":210,"taxonomyTypeDesc":211},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[213,214,215,30,216,217,218,219,220,221,222,35],"ui styling","styling","ui","radix ui","customization","Tailwind","shadcn","design systems","components","css",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":227,"categories":228,"keywords":232,"publishedAt":44},"01M6CFVY2N18A5J9YW3X14GDHZ","threejs","Build 3D web apps with Three.js (WebGL\u002FWebGPU). 556 searchable examples, 60 API classes, 20 use cases. Actions: create 3D scene, load model, add animation, implement physics, build VR\u002FXR. Topics: GLTF loader, PBR materials, particle effects, shadows, post-processing, compute shaders, TSL. Integrations: WebGPU, physics engines, spatial audio.","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.opencode\u002Fskills\u002Fthreejs\u002FSKILL.md",[229],{"categoryNo":230,"categoryName":231,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[225,233,38,234,235,236,237,238,165,239,240,241,242,190,243,30,244,245,36,246],"webgl","actions","examples","shaders","create","webgpu","implement","Animation","pbr","gltf","Spatial","integrations","model","3D",{"skillNo":248,"name":249,"nameZh":6,"description":250,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":251,"categories":252,"keywords":253,"publishedAt":44},"01M6CFVFW9NS3M49KX9K9GKFF7","sequential-thinking","Apply step-by-step analysis for complex problems with revision capability. Use for multi-step reasoning, hypothesis verification, adaptive planning, problem decomposition, course correction.","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.opencode\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",[],[254,255,30,39,256,257,258],"sequential thinking","planning","hypothesis","verification","reasoning",{"skillNo":260,"name":261,"nameZh":6,"description":262,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":263,"categories":264,"keywords":268,"publishedAt":44},"01M6CFVA3RNA0DGFNFDM0NZPW5","research","Research technical solutions, analyze architectures, gather requirements thoroughly. Use for technology evaluation, best practices research, solution design, scalability\u002Fsecurity\u002Fmaintainability analysis.","https:\u002F\u002Fgithub.com\u002Fhoanghd218\u002Fdocons\u002Fblob\u002Fmain\u002Flandingpage-app-render\u002F.opencode\u002Fskills\u002Fresearch\u002FSKILL.md",[265],{"categoryNo":266,"categoryName":267,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[261,269,270,39,34,167,271,35,30],"best practices","Evaluation","technical"]