[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CAAFDHMYTYJ6QP05VQ4GTX":3,"skill-same:01M6CAAFDHMYTYJ6QP05VQ4GTX":121},{"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":28,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":70,"commitSha":71,"skillDirectory":72,"forksCount":73,"repositoryHtmlUrl":74,"repositoryHomepageUrl":6,"ownerHtmlUrl":75,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":76,"install":77,"resources":90},"01M6CAAFDHMYTYJ6QP05VQ4GTX","clip",null,"OpenAI's model connecting vision and language. Enables zero-shot image classification, image-text matching, and cross-modal retrieval. Trained on 400M image-text pairs. Use for image search, content moderation, or vision-language tasks without fine-tuning. Best for general-purpose image understanding.","adnichols\u002Fai-configs","adnichols","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F493746?v=4","01M6C33VRY9WF6XWYPT1AFA7JJ","Aaron Nichols","01M6C33VWTNKGRM92E9G643V4W",5,"MIT","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fprofiles\u002Fnerd\u002Fskills\u002Fmlops\u002Fmodels\u002Fclip\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"Content Moderation","vision","use","moderation","model","text","classification","modal","tuning","image","Transformers","Fine-Tuning","ZeRO","content","multimodal","search","openai","tasks","research","2026-11-10 10:12:30",false,"---\nname: clip\ndescription: OpenAI's model connecting vision and language. Enables zero-shot image classification, image-text matching, and cross-modal retrieval. Trained on 400M image-text pairs. Use for image search, content moderation, or vision-language tasks without fine-tuning. Best for general-purpose image understanding.\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ndependencies: [transformers, torch, pillow]\nmetadata:\n  hermes:\n    tags: [Multimodal, CLIP, Vision-Language, Zero-Shot, Image Classification, OpenAI, Image Search, Cross-Modal Retrieval, Content Moderation]\n\n---\n\n# CLIP - Contrastive Language-Image Pre-Training\n\nOpenAI's model that understands images from natural language.\n\n## When to use CLIP\n\n**Use when:**\n- Zero-shot image classification (no training data needed)\n- Image-text similarity\u002Fmatching\n- Semantic image search\n- Content moderation (detect NSFW, violence)\n- Visual question answering\n- Cross-modal retrieval (image→text, text→image)\n\n**Metrics**:\n- **25,300+ GitHub stars**\n- Trained on 400M image-text pairs\n- Matches ResNet-50 on ImageNet (zero-shot)\n- MIT License\n\n**Use alternatives instead**:\n- **BLIP-2**: Better captioning\n- **LLaVA**: Vision-language chat\n- **Segment Anything**: Image segmentation\n\n## Quick start\n\n### Installation\n\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP.git\npip install torch torchvision ftfy regex tqdm\n```\n\n### Zero-shot classification\n\n```python\nimport torch\nimport clip\nfrom PIL import Image\n\n# Load model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load(\"ViT-B\u002F32\", device=device)\n\n# Load image\nimage = preprocess(Image.open(\"photo.jpg\")).unsqueeze(0).to(device)\n\n# Define possible labels\ntext = clip.tokenize([\"a dog\", \"a cat\", \"a bird\", \"a car\"]).to(device)\n\n# Compute similarity\nwith torch.no_grad():\n    image_features = model.encode_image(image)\n    text_features = model.encode_text(text)\n\n    # Cosine similarity\n    logits_per_image, logits_per_text = model(image, text)\n    probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n# Print results\nlabels = [\"a dog\", \"a cat\", \"a bird\", \"a car\"]\nfor label, prob in zip(labels, probs[0]):\n    print(f\"{label}: {prob:.2%}\")\n```\n\n## Available models\n\n```python\n# Models (sorted by size)\nmodels = [\n    \"RN50\",           # ResNet-50\n    \"RN101\",          # ResNet-101\n    \"ViT-B\u002F32\",       # Vision Transformer (recommended)\n    \"ViT-B\u002F16\",       # Better quality, slower\n    \"ViT-L\u002F14\",       # Best quality, slowest\n]\n\nmodel, preprocess = clip.load(\"ViT-B\u002F32\")\n```\n\n| Model | Parameters | Speed | Quality |\n|-------|------------|-------|---------|\n| RN50 | 102M | Fast | Good |\n| ViT-B\u002F32 | 151M | Medium | Better |\n| ViT-L\u002F14 | 428M | Slow | Best |\n\n## Image-text similarity\n\n```python\n# Compute embeddings\nimage_features = model.encode_image(image)\ntext_features = model.encode_text(text)\n\n# Normalize\nimage_features \u002F= image_features.norm(dim=-1, keepdim=True)\ntext_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Cosine similarity\nsimilarity = (image_features @ text_features.T).item()\nprint(f\"Similarity: {similarity:.4f}\")\n```\n\n## Semantic image search\n\n```python\n# Index images\nimage_paths = [\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"]\nimage_embeddings = []\n\nfor img_path in image_paths:\n    image = preprocess(Image.open(img_path)).unsqueeze(0).to(device)\n    with torch.no_grad():\n        embedding = model.encode_image(image)\n        embedding \u002F= embedding.norm(dim=-1, keepdim=True)\n    image_embeddings.append(embedding)\n\nimage_embeddings = torch.cat(image_embeddings)\n\n# Search with text query\nquery = \"a sunset over the ocean\"\ntext_input = clip.tokenize([query]).to(device)\nwith torch.no_grad():\n    text_embedding = model.encode_text(text_input)\n    text_embedding \u002F= text_embedding.norm(dim=-1, keepdim=True)\n\n# Find most similar images\nsimilarities = (text_embedding @ image_embeddings.T).squeeze(0)\ntop_k = similarities.topk(3)\n\nfor idx, score in zip(top_k.indices, top_k.values):\n    print(f\"{image_paths[idx]}: {score:.3f}\")\n```\n\n## Content moderation\n\n```python\n# Define categories\ncategories = [\n    \"safe for work\",\n    \"not safe for work\",\n    \"violent content\",\n    \"graphic content\"\n]\n\ntext = clip.tokenize(categories).to(device)\n\n# Check image\nwith torch.no_grad():\n    logits_per_image, _ = model(image, text)\n    probs = logits_per_image.softmax(dim=-1)\n\n# Get classification\nmax_idx = probs.argmax().item()\nmax_prob = probs[0, max_idx].item()\n\nprint(f\"Category: {categories[max_idx]} ({max_prob:.2%})\")\n```\n\n## Batch processing\n\n```python\n# Process multiple images\nimages = [preprocess(Image.open(f\"img{i}.jpg\")) for i in range(10)]\nimages = torch.stack(images).to(device)\n\nwith torch.no_grad():\n    image_features = model.encode_image(images)\n    image_features \u002F= image_features.norm(dim=-1, keepdim=True)\n\n# Batch text\ntexts = [\"a dog\", \"a cat\", \"a bird\"]\ntext_tokens = clip.tokenize(texts).to(device)\n\nwith torch.no_grad():\n    text_features = model.encode_text(text_tokens)\n    text_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Similarity matrix (10 images × 3 texts)\nsimilarities = image_features @ text_features.T\nprint(similarities.shape)  # (10, 3)\n```\n\n## Integration with vector databases\n\n```python\n# Store CLIP embeddings in Chroma\u002FFAISS\nimport chromadb\n\nclient = chromadb.Client()\ncollection = client.create_collection(\"image_embeddings\")\n\n# Add image embeddings\nfor img_path, embedding in zip(image_paths, image_embeddings):\n    collection.add(\n        embeddings=[embedding.cpu().numpy().tolist()],\n        metadatas=[{\"path\": img_path}],\n        ids=[img_path]\n    )\n\n# Query with text\nquery = \"a sunset\"\ntext_embedding = model.encode_text(clip.tokenize([query]))\nresults = collection.query(\n    query_embeddings=[text_embedding.cpu().numpy().tolist()],\n    n_results=5\n)\n```\n\n## Best practices\n\n1. **Use ViT-B\u002F32 for most cases** - Good balance\n2. **Normalize embeddings** - Required for cosine similarity\n3. **Batch processing** - More efficient\n4. **Cache embeddings** - Expensive to recompute\n5. **Use descriptive labels** - Better zero-shot performance\n6. **GPU recommended** - 10-50× faster\n7. **Preprocess images** - Use provided preprocess function\n\n## Performance\n\n| Operation | CPU | GPU (V100) |\n|-----------|-----|------------|\n| Image encoding | ~200ms | ~20ms |\n| Text encoding | ~50ms | ~5ms |\n| Similarity compute | \u003C1ms | \u003C1ms |\n\n## Limitations\n\n1. **Not for fine-grained tasks** - Best for broad categories\n2. **Requires descriptive text** - Vague labels perform poorly\n3. **Biased on web data** - May have dataset biases\n4. **No bounding boxes** - Whole image only\n5. **Limited spatial understanding** - Position\u002Fcounting weak\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP ⭐ 25,300+\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.00020\n- **Colab**: https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopenai\u002Fclip\u002F\n- **License**: MIT\n\n\n","# CLIP - Contrastive Language-Image Pre-Training\n\nOpenAI's model that understands images from natural language.\n\n## When to use CLIP\n\n**Use when:**\n- Zero-shot image classification (no training data needed)\n- Image-text similarity\u002Fmatching\n- Semantic image search\n- Content moderation (detect NSFW, violence)\n- Visual question answering\n- Cross-modal retrieval (image→text, text→image)\n\n**Metrics**:\n- **25,300+ GitHub stars**\n- Trained on 400M image-text pairs\n- Matches ResNet-50 on ImageNet (zero-shot)\n- MIT License\n\n**Use alternatives instead**:\n- **BLIP-2**: Better captioning\n- **LLaVA**: Vision-language chat\n- **Segment Anything**: Image segmentation\n\n## Quick start\n\n### Installation\n\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP.git\npip install torch torchvision ftfy regex tqdm\n```\n\n### Zero-shot classification\n\n```python\nimport torch\nimport clip\nfrom PIL import Image\n\n# Load model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load(\"ViT-B\u002F32\", device=device)\n\n# Load image\nimage = preprocess(Image.open(\"photo.jpg\")).unsqueeze(0).to(device)\n\n# Define possible labels\ntext = clip.tokenize([\"a dog\", \"a cat\", \"a bird\", \"a car\"]).to(device)\n\n# Compute similarity\nwith torch.no_grad():\n    image_features = model.encode_image(image)\n    text_features = model.encode_text(text)\n\n    # Cosine similarity\n    logits_per_image, logits_per_text = model(image, text)\n    probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n# Print results\nlabels = [\"a dog\", \"a cat\", \"a bird\", \"a car\"]\nfor label, prob in zip(labels, probs[0]):\n    print(f\"{label}: {prob:.2%}\")\n```\n\n## Available models\n\n```python\n# Models (sorted by size)\nmodels = [\n    \"RN50\",           # ResNet-50\n    \"RN101\",          # ResNet-101\n    \"ViT-B\u002F32\",       # Vision Transformer (recommended)\n    \"ViT-B\u002F16\",       # Better quality, slower\n    \"ViT-L\u002F14\",       # Best quality, slowest\n]\n\nmodel, preprocess = clip.load(\"ViT-B\u002F32\")\n```\n\n| Model | Parameters | Speed | Quality |\n|-------|------------|-------|---------|\n| RN50 | 102M | Fast | Good |\n| ViT-B\u002F32 | 151M | Medium | Better |\n| ViT-L\u002F14 | 428M | Slow | Best |\n\n## Image-text similarity\n\n```python\n# Compute embeddings\nimage_features = model.encode_image(image)\ntext_features = model.encode_text(text)\n\n# Normalize\nimage_features \u002F= image_features.norm(dim=-1, keepdim=True)\ntext_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Cosine similarity\nsimilarity = (image_features @ text_features.T).item()\nprint(f\"Similarity: {similarity:.4f}\")\n```\n\n## Semantic image search\n\n```python\n# Index images\nimage_paths = [\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"]\nimage_embeddings = []\n\nfor img_path in image_paths:\n    image = preprocess(Image.open(img_path)).unsqueeze(0).to(device)\n    with torch.no_grad():\n        embedding = model.encode_image(image)\n        embedding \u002F= embedding.norm(dim=-1, keepdim=True)\n    image_embeddings.append(embedding)\n\nimage_embeddings = torch.cat(image_embeddings)\n\n# Search with text query\nquery = \"a sunset over the ocean\"\ntext_input = clip.tokenize([query]).to(device)\nwith torch.no_grad():\n    text_embedding = model.encode_text(text_input)\n    text_embedding \u002F= text_embedding.norm(dim=-1, keepdim=True)\n\n# Find most similar images\nsimilarities = (text_embedding @ image_embeddings.T).squeeze(0)\ntop_k = similarities.topk(3)\n\nfor idx, score in zip(top_k.indices, top_k.values):\n    print(f\"{image_paths[idx]}: {score:.3f}\")\n```\n\n## Content moderation\n\n```python\n# Define categories\ncategories = [\n    \"safe for work\",\n    \"not safe for work\",\n    \"violent content\",\n    \"graphic content\"\n]\n\ntext = clip.tokenize(categories).to(device)\n\n# Check image\nwith torch.no_grad():\n    logits_per_image, _ = model(image, text)\n    probs = logits_per_image.softmax(dim=-1)\n\n# Get classification\nmax_idx = probs.argmax().item()\nmax_prob = probs[0, max_idx].item()\n\nprint(f\"Category: {categories[max_idx]} ({max_prob:.2%})\")\n```\n\n## Batch processing\n\n```python\n# Process multiple images\nimages = [preprocess(Image.open(f\"img{i}.jpg\")) for i in range(10)]\nimages = torch.stack(images).to(device)\n\nwith torch.no_grad():\n    image_features = model.encode_image(images)\n    image_features \u002F= image_features.norm(dim=-1, keepdim=True)\n\n# Batch text\ntexts = [\"a dog\", \"a cat\", \"a bird\"]\ntext_tokens = clip.tokenize(texts).to(device)\n\nwith torch.no_grad():\n    text_features = model.encode_text(text_tokens)\n    text_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Similarity matrix (10 images × 3 texts)\nsimilarities = image_features @ text_features.T\nprint(similarities.shape)  # (10, 3)\n```\n\n## Integration with vector databases\n\n```python\n# Store CLIP embeddings in Chroma\u002FFAISS\nimport chromadb\n\nclient = chromadb.Client()\ncollection = client.create_collection(\"image_embeddings\")\n\n# Add image embeddings\nfor img_path, embedding in zip(image_paths, image_embeddings):\n    collection.add(\n        embeddings=[embedding.cpu().numpy().tolist()],\n        metadatas=[{\"path\": img_path}],\n        ids=[img_path]\n    )\n\n# Query with text\nquery = \"a sunset\"\ntext_embedding = model.encode_text(clip.tokenize([query]))\nresults = collection.query(\n    query_embeddings=[text_embedding.cpu().numpy().tolist()],\n    n_results=5\n)\n```\n\n## Best practices\n\n1. **Use ViT-B\u002F32 for most cases** - Good balance\n2. **Normalize embeddings** - Required for cosine similarity\n3. **Batch processing** - More efficient\n4. **Cache embeddings** - Expensive to recompute\n5. **Use descriptive labels** - Better zero-shot performance\n6. **GPU recommended** - 10-50× faster\n7. **Preprocess images** - Use provided preprocess function\n\n## Performance\n\n| Operation | CPU | GPU (V100) |\n|-----------|-----|------------|\n| Image encoding | ~200ms | ~20ms |\n| Text encoding | ~50ms | ~5ms |\n| Similarity compute | \u003C1ms | \u003C1ms |\n\n## Limitations\n\n1. **Not for fine-grained tasks** - Best for broad categories\n2. **Requires descriptive text** - Vague labels perform poorly\n3. **Biased on web data** - May have dataset biases\n4. **No bounding boxes** - Whole image only\n5. **Limited spatial understanding** - Position\u002Fcounting weak\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP ⭐ 25,300+\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.00020\n- **Colab**: https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopenai\u002Fclip\u002F\n- **License**: MIT\n\n\n",{"name":5,"author":53,"license":15,"version":54,"metadata":55,"description":7,"dependencies":66},"Orchestra Research","1.0.0",{"hermes":56},{"tags":57},[58,59,60,61,62,63,64,65,29],"Multimodal","CLIP","Vision-Language","Zero-Shot","Image Classification","OpenAI","Image Search","Cross-Modal Retrieval",[67,68,69],"transformers","torch","pillow","main","64e2fc9afa7bb3da1138eb73399144d0e7e73e9d","_hermes\u002Fdefault\u002Fprofiles\u002Fnerd\u002Fskills\u002Fmlops\u002Fmodels\u002Fclip",4,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs","https:\u002F\u002Fgithub.com\u002Fadnichols","2026-11-06 00:28:38",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":89},[79,82,85],{"tool":80,"command":81},"npx","npx skills add adnichols\u002Fai-configs --skill clip",{"tool":83,"command":84},"bunx","bunx skills add adnichols\u002Fai-configs --skill clip",{"tool":86,"command":87},"pnpm","pnpm dlx skills add adnichols\u002Fai-configs --skill clip","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fprofiles\u002Fnerd\u002Fskills\u002Fmlops\u002Fmodels\u002Fclip\u002FSKILL.md",true,[91,97,101,105,109,113,117],{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fapplications.md","REFERENCE","参考文档",5360,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fprofiles\u002Fnerd\u002Fskills\u002Fmlops\u002Fmodels\u002Fclip\u002Freferences\u002Fapplications.md",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fconformers_module.md",5022,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fdatamol\u002Freferences\u002Fconformers_module.md",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fcore_api.md",4242,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fdatamol\u002Freferences\u002Fcore_api.md",{"path":106,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fdescriptors_viz.md",7366,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fdatamol\u002Freferences\u002Fdescriptors_viz.md",{"path":110,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Ffragments_scaffolds.md",5808,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fdatamol\u002Freferences\u002Ffragments_scaffolds.md",{"path":114,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fio_module.md",4315,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fdatamol\u002Freferences\u002Fio_module.md",{"path":118,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002Freactions_data.md",6656,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fdatamol\u002Freferences\u002Freactions_data.md",[122,142,170,195,206,222],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":48},"01M6CB7RN791P5RRRCJWWC7DAR","blocked-page-recovery","Use when a fetch fails: 403\u002F429, paywall, WAF, bot wall.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fweb\u002Fblocked-page-recovery\u002FSKILL.md",[],[129,130,131,132,133,31,134,135,136,137,138,139,47,140,141],"recovery","page","blocked page recovery","bot","fallback","fetch","hermes agent","hermes","Citations","waf","windows","linux","macos",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":155,"publishedAt":48},"01M6CB7NQY2VVYCQJ1QBXACQF4","writing-plans","Use when creating or updating executable software plans. Keep plans as local files unless the user explicitly asks to register them in Doct.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[148,151,154],{"categoryNo":149,"categoryName":150,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[156,157,158,159,160,161,162,163,164,165,166,167,31,168,135,136,169],"writing","writing plans","documentation","test","workflow","design","user","development","planning","files","implementation","html","ops","plan",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":185,"publishedAt":48},"01M6CB7JME246KZQHP73Z2STDF","test-driven-development","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Ftest-driven-development\u002FSKILL.md",[176,179,182],{"categoryNo":177,"categoryName":178,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":180,"categoryName":181,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":183,"categoryName":184,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[159,163,186,187,188,135,136,189,169,190,191,192,141,193,140,194,139],"test driven development","red-green-refactor","superpowers","quality","refactor","code","debugging","tdd","testing",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":199,"categories":200,"keywords":202,"publishedAt":48},"01M6CB7FQ407KQTD4Z9VAWKY54","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[201],{"categoryNo":180,"categoryName":181,"taxonomyType":21,"taxonomyTypeDesc":22},[192,203,163,188,135,136,204,169,205,139,159,140,141],"systematic debugging","troubleshooting","investigation",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":210,"categories":211,"keywords":215,"publishedAt":48},"01M6CB7D57MK88HE5YPZHKH68Q","spike","Throwaway experiments to validate an idea before build.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fspike\u002FSKILL.md",[212],{"categoryNo":213,"categoryName":214,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[208,139,216,217,47,218,140,141,219,220,221,135,136,169,164],"validate","experiments","prototype","feasibility","sketch","experiment",{"skillNo":223,"name":224,"nameZh":6,"description":225,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":232,"publishedAt":48},"01M6CB7APAQ37YE5YE1MAAFT42","simplify-code","Parallel 3-agent cleanup of recent code changes.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsimplify-code\u002FSKILL.md",[228,229],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":230,"categoryName":231,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[233,234,191,235,135,136,236,169,190,237,238,239,163,139,159,140,240,141],"simplify code","simplify","subagent","parallel","code-review","delegation","cleanup","review"]