[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K5CPTS661SEAS2EFP4VNFD":3,"skill-same:01M6K5CPTS661SEAS2EFP4VNFD":78},{"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":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":55,"ownerDescription":57,"updatedAt":58,"install":59,"resources":71},"01M6K5CPTS661SEAS2EFP4VNFD","index-assets",null,"Index the brand photo library with AI vision so assets are searchable and matchable. \"catalogue our brand photos\"","indranilbanerjee\u002Fsocialforge","indranilbanerjee","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1857369?v=4","01M6K5AJ210R87KXT6WF07RC4T","Indranil Banerjee","01M6K5AJ6FXW6Y1CDESBGX191P",43,"MIT","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Findex-assets\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42],"index","assets","index assets","library","brand","refresh","vision","photos","name","with","true","high","path","source","2026-11-10 10:12:30",false,"---\nname: index-assets\ndescription: \"Index the brand photo library with AI vision so assets are searchable and matchable. \\\"catalogue our brand photos\\\"\"\nargument-hint: \"\u003Cbrand-name> [--source \u003Cpath>] [--refresh]\"\neffort: high\nuser-invocable: true\n---\n\n# \u002Fsocialforge:index-assets — Asset Indexer\n\n> **Script location.** If your host does not set `${CLAUDE_PLUGIN_ROOT}`, the scripts are in this plugin's `scripts\u002F` folder, next to `skills\u002F`. Run them with Python 3.10 or newer: `python`, or `python3` where `python` is not found (macOS, many Linux systems).\n\nScan a brand's photo library and create an AI-powered asset index. Each image is analyzed by a vision model, chosen from your Google key's own model list (see \"Which model\" below), to understand what's in it, what mood it conveys, what posts it's suitable for, and how it can be cropped for different platforms.\n\n## Context efficiency\n\nAsset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}\u002Fsocialforge\u002Fbrands\u002F\u003Cbrand>\u002Fasset-index.json`) — never list the asset directory. Reference generated images \u002F videos by path, not by loading metadata. Brand profile loads once per session.\n\n## How It Works\n\n1. **Locate assets** — Read asset-source.json for the brand's photo library location\n2. **Scan files** — Find all .jpg, .jpeg, .png, .webp files in the source\n3. **AI analysis** — For each image, use the vision model chosen for the run (decided once, before the first image) to generate:\n   - Natural language description of the image\n   - Tags (categories, subjects, setting, mood)\n   - Dominant colors detected\n   - Lighting and composition assessment\n   - What types of social media posts this image suits\n   - Whether background is removable (for compositing)\n   - Platform crop feasibility (can this be cropped to 1:1, 4:5, 16:9 without losing key content?)\n4. **Build index** — Create asset-index.json with all analyzed assets\n5. **Identify style references** — Suggest 2-8 images as style reference candidates (best represent the brand's visual DNA)\n\n## Which model\n\nThe script decides the model once per run and never swaps one silently. In order:\n\n1. **The brand's pin** — `model_pins[\"index-assets.vision.google\"]` in the brand's `brand-config.json` (see `references\u002Fbrand-config-schema.md`). Pin when a library must stay analysed by one model so its tags remain comparable.\n2. **`--model \u003Cid>`** — for one run.\n3. **The router** — `scripts\u002Fmodel_router.py` reads the models your `GEMINI_API_KEY` can use (one list call at most every 7 days) and takes the newest generally available Flash-class model. Previews, \"latest\" aliases, lite, image, speech and live variants, models shut down or redirected, and models younger than 14 days are never picked.\n4. **The registry alias `latest-vision-google`**, tagged `offline` — when the list cannot be read, `MODEL_ROUTER_OFFLINE=1` is set, or Vertex AI serves the run (its catalogue is not the Gemini API's list).\n\nA pin or `--model` is a name asked for: a deprecated model is kept with a warning that names its retirement date and replacement; a retired one stops the run (exit 2, nothing sent) and names the replacement. That holds offline too: with no list to read, the name is checked against the shipped registry and the hint book's record of Google's deprecations page, and the stricter wins. On a Vertex AI run neither applies (Vertex retires models on its own schedule), so the name is sent as asked and the run says it was not checked. A rejected key stops the run the same way. `index_assets.py --brand \u003Cbrand> --show-model` prints the decision and stops. `asset-index.json` then records `vision_model` (what was asked, what was sent, the basis `live`, `cache`, `requested` or `offline`, the source and the time) and, on each analysed asset, `analysis_model` and `analyzed_at`, so a refresh that mixes models says so.\n\n## Pre-Flight Check\n\nBefore indexing, verify:\n- Brand profile exists for the specified brand\n- Asset source is configured (Google Drive URL or local path)\n- If Google Drive: verify Drive MCP is connected or platform integration is available\n\nIf asset source is not configured:\n```\n⚠️ No asset source configured for brand \"{brand}\".\nRun \u002Fsocialforge:brand-setup {brand} --update to add an asset source.\nOr provide a path now: \u002Fsocialforge:index-assets {brand} --source \u002Fpath\u002Fto\u002Fphotos\n```\n\n## Progress Updates\n\n```\n[1\u002F4] Scanning asset source...\n  Found: 47 images (32 .jpg, 12 .png, 3 .webp)\n\n[2\u002F4] Analyzing images with AI Vision...\n  Analyzed: 12\u002F47 (25%) — ~3 min remaining\n  Analyzed: 24\u002F47 (51%) — ~2 min remaining\n  Analyzed: 47\u002F47 (100%) ✓\n\n[3\u002F4] Building asset index...\n  Tags generated: 184 unique tags across 47 assets\n  Platform crops: 47 images × 6 platforms = 282 crop assessments\n\n[4\u002F4] Identifying style reference candidates...\n  Top 8 candidates selected based on visual consistency and quality\n```\n\n## Output\n\n```\nAsset Index Complete: acme-corp\n  Total assets: 47\n  Categories: people (12), products (8), office (6), events (5), lifestyle (9), graphics (7)\n  Background-removable: 23 assets (suitable for ANCHOR_COMPOSE mode)\n  Style reference candidates: 8 images suggested\n\n  Saved: ${CLAUDE_PLUGIN_DATA}\u002Fsocialforge\u002Fbrands\u002Facme-corp\u002Fasset-index.json\n\nWould you like to:\n- Review style reference candidates? (I'll show all 8 with descriptions)\n- Start monthly production? (\u002Fsocialforge:new-month)\n- Update specific assets? (\u002Fsocialforge:index-assets acme-corp --source \u002Fpath\u002Fto\u002Fphotos --refresh)\n```\n\n## Timeout & Fallback\n\n- Per-image AI analysis: 15-second timeout. If an image times out, mark as `analysis_pending` and continue.\n- Large libraries (100+ images): Process in batches of 20. Show progress after each batch.\n- If AI Vision is unavailable: Create basic index from file metadata only (dimensions, filename, folder) — flag as `ai_analysis_missing`.\n\n## Refresh Mode\n\n`\u002Fsocialforge:index-assets [brand] --source \u003Cpath> --refresh`\n\n`--source` may be omitted on a refresh: the script reuses the source recorded by the previous index and stops only when none was recorded. Only re-analyzes new or modified images since last index. Compares file timestamps with `indexed_at` in asset-index.json.\n\nWhere the index is written (including the fallback location when no plugin data directory is set) and how `--source` is resolved: read [storage-and-refresh.md](storage-and-refresh.md) when the user asks where the index lives or why a refresh behaved a given way.\n\n## Cost Awareness\n\nEach image analysis is a billed call, and its rate depends on the vision model the run will use. This skill therefore states no price — it quotes one that was looked up, for the model the run will actually use (which the router may have moved past the registry alias):\n\n1. Ask the script which model the run will use: `python \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Findex_assets.py\" --brand \u003Cbrand> --show-model` (it reads no image, sends nothing and writes no index; the `model` field of its answer is the id to quote, and its `warnings` are shown to the user)\n2. Quote the run: `python \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fprice_book.py\" --action quote --model \"\u003Cresolved model id>\" --provider vertex --units \u003Cnumber of images to analyze>` (on `--refresh`, count only the new or modified images)\n\nIf `price_book.py` answers `unknown` or `stale`, follow `\u002Fsocialforge:price-check`: read the provider's pricing page, record the rate with its source URL, then quote. If the vendor bills by token rather than per image, or no price can be quoted at all, say so and give the pricing URL — never an estimate and never a per-image figure converted from memory.\n\nShow the quoted total before starting (\"Indexing {N} images will cost {total} at {rate} per image, priced {age_hours}h ago. Proceed?\") and wait for an explicit yes. A quote is not approval.\n","# \u002Fsocialforge:index-assets — Asset Indexer\n\n> **Script location.** If your host does not set `${CLAUDE_PLUGIN_ROOT}`, the scripts are in this plugin's `scripts\u002F` folder, next to `skills\u002F`. Run them with Python 3.10 or newer: `python`, or `python3` where `python` is not found (macOS, many Linux systems).\n\nScan a brand's photo library and create an AI-powered asset index. Each image is analyzed by a vision model, chosen from your Google key's own model list (see \"Which model\" below), to understand what's in it, what mood it conveys, what posts it's suitable for, and how it can be cropped for different platforms.\n\n## Context efficiency\n\nAsset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}\u002Fsocialforge\u002Fbrands\u002F\u003Cbrand>\u002Fasset-index.json`) — never list the asset directory. Reference generated images \u002F videos by path, not by loading metadata. Brand profile loads once per session.\n\n## How It Works\n\n1. **Locate assets** — Read asset-source.json for the brand's photo library location\n2. **Scan files** — Find all .jpg, .jpeg, .png, .webp files in the source\n3. **AI analysis** — For each image, use the vision model chosen for the run (decided once, before the first image) to generate:\n   - Natural language description of the image\n   - Tags (categories, subjects, setting, mood)\n   - Dominant colors detected\n   - Lighting and composition assessment\n   - What types of social media posts this image suits\n   - Whether background is removable (for compositing)\n   - Platform crop feasibility (can this be cropped to 1:1, 4:5, 16:9 without losing key content?)\n4. **Build index** — Create asset-index.json with all analyzed assets\n5. **Identify style references** — Suggest 2-8 images as style reference candidates (best represent the brand's visual DNA)\n\n## Which model\n\nThe script decides the model once per run and never swaps one silently. In order:\n\n1. **The brand's pin** — `model_pins[\"index-assets.vision.google\"]` in the brand's `brand-config.json` (see `references\u002Fbrand-config-schema.md`). Pin when a library must stay analysed by one model so its tags remain comparable.\n2. **`--model \u003Cid>`** — for one run.\n3. **The router** — `scripts\u002Fmodel_router.py` reads the models your `GEMINI_API_KEY` can use (one list call at most every 7 days) and takes the newest generally available Flash-class model. Previews, \"latest\" aliases, lite, image, speech and live variants, models shut down or redirected, and models younger than 14 days are never picked.\n4. **The registry alias `latest-vision-google`**, tagged `offline` — when the list cannot be read, `MODEL_ROUTER_OFFLINE=1` is set, or Vertex AI serves the run (its catalogue is not the Gemini API's list).\n\nA pin or `--model` is a name asked for: a deprecated model is kept with a warning that names its retirement date and replacement; a retired one stops the run (exit 2, nothing sent) and names the replacement. That holds offline too: with no list to read, the name is checked against the shipped registry and the hint book's record of Google's deprecations page, and the stricter wins. On a Vertex AI run neither applies (Vertex retires models on its own schedule), so the name is sent as asked and the run says it was not checked. A rejected key stops the run the same way. `index_assets.py --brand \u003Cbrand> --show-model` prints the decision and stops. `asset-index.json` then records `vision_model` (what was asked, what was sent, the basis `live`, `cache`, `requested` or `offline`, the source and the time) and, on each analysed asset, `analysis_model` and `analyzed_at`, so a refresh that mixes models says so.\n\n## Pre-Flight Check\n\nBefore indexing, verify:\n- Brand profile exists for the specified brand\n- Asset source is configured (Google Drive URL or local path)\n- If Google Drive: verify Drive MCP is connected or platform integration is available\n\nIf asset source is not configured:\n```\n⚠️ No asset source configured for brand \"{brand}\".\nRun \u002Fsocialforge:brand-setup {brand} --update to add an asset source.\nOr provide a path now: \u002Fsocialforge:index-assets {brand} --source \u002Fpath\u002Fto\u002Fphotos\n```\n\n## Progress Updates\n\n```\n[1\u002F4] Scanning asset source...\n  Found: 47 images (32 .jpg, 12 .png, 3 .webp)\n\n[2\u002F4] Analyzing images with AI Vision...\n  Analyzed: 12\u002F47 (25%) — ~3 min remaining\n  Analyzed: 24\u002F47 (51%) — ~2 min remaining\n  Analyzed: 47\u002F47 (100%) ✓\n\n[3\u002F4] Building asset index...\n  Tags generated: 184 unique tags across 47 assets\n  Platform crops: 47 images × 6 platforms = 282 crop assessments\n\n[4\u002F4] Identifying style reference candidates...\n  Top 8 candidates selected based on visual consistency and quality\n```\n\n## Output\n\n```\nAsset Index Complete: acme-corp\n  Total assets: 47\n  Categories: people (12), products (8), office (6), events (5), lifestyle (9), graphics (7)\n  Background-removable: 23 assets (suitable for ANCHOR_COMPOSE mode)\n  Style reference candidates: 8 images suggested\n\n  Saved: ${CLAUDE_PLUGIN_DATA}\u002Fsocialforge\u002Fbrands\u002Facme-corp\u002Fasset-index.json\n\nWould you like to:\n- Review style reference candidates? (I'll show all 8 with descriptions)\n- Start monthly production? (\u002Fsocialforge:new-month)\n- Update specific assets? (\u002Fsocialforge:index-assets acme-corp --source \u002Fpath\u002Fto\u002Fphotos --refresh)\n```\n\n## Timeout & Fallback\n\n- Per-image AI analysis: 15-second timeout. If an image times out, mark as `analysis_pending` and continue.\n- Large libraries (100+ images): Process in batches of 20. Show progress after each batch.\n- If AI Vision is unavailable: Create basic index from file metadata only (dimensions, filename, folder) — flag as `ai_analysis_missing`.\n\n## Refresh Mode\n\n`\u002Fsocialforge:index-assets [brand] --source \u003Cpath> --refresh`\n\n`--source` may be omitted on a refresh: the script reuses the source recorded by the previous index and stops only when none was recorded. Only re-analyzes new or modified images since last index. Compares file timestamps with `indexed_at` in asset-index.json.\n\nWhere the index is written (including the fallback location when no plugin data directory is set) and how `--source` is resolved: read [storage-and-refresh.md](storage-and-refresh.md) when the user asks where the index lives or why a refresh behaved a given way.\n\n## Cost Awareness\n\nEach image analysis is a billed call, and its rate depends on the vision model the run will use. This skill therefore states no price — it quotes one that was looked up, for the model the run will actually use (which the router may have moved past the registry alias):\n\n1. Ask the script which model the run will use: `python \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Findex_assets.py\" --brand \u003Cbrand> --show-model` (it reads no image, sends nothing and writes no index; the `model` field of its answer is the id to quote, and its `warnings` are shown to the user)\n2. Quote the run: `python \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fprice_book.py\" --action quote --model \"\u003Cresolved model id>\" --provider vertex --units \u003Cnumber of images to analyze>` (on `--refresh`, count only the new or modified images)\n\nIf `price_book.py` answers `unknown` or `stale`, follow `\u002Fsocialforge:price-check`: read the provider's pricing page, record the rate with its source URL, then quote. If the vendor bills by token rather than per image, or no price can be quoted at all, say so and give the pricing URL — never an estimate and never a per-image figure converted from memory.\n\nShow the quoted total before starting (\"Indexing {N} images will cost {total} at {rate} per image, priced {age_hours}h ago. Proceed?\") and wait for an explicit yes. A quote is not approval.\n",{"name":5,"effort":40,"description":7,"argument-hint":48,"user-invocable":49},"\u003Cbrand-name> [--source \u003Cpath>] [--refresh]",true,"main","552dba358f148de8439795c5e8becb57f9943ec8","skills\u002Findex-assets",9,"https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge","https:\u002F\u002Findranil.in","https:\u002F\u002Fgithub.com\u002Findranilbanerjee","Builder across trustworthy AI, agentic systems, and marketing engineering. Security roots; focused on human capability amplified by software.","2026-11-08 01:03:55",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":49},[61,64,67],{"tool":62,"command":63},"npx","npx skills add indranilbanerjee\u002Fsocialforge --skill index-assets",{"tool":65,"command":66},"bunx","bunx skills add indranilbanerjee\u002Fsocialforge --skill index-assets",{"tool":68,"command":69},"pnpm","pnpm dlx skills add indranilbanerjee\u002Fsocialforge --skill index-assets","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Findex-assets\u002FSKILL.md",[72],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"storage-and-refresh.md","REFERENCE","参考文档",1705,"https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Findex-assets\u002Fstorage-and-refresh.md",[79,106,128,154,172,199],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":88,"publishedAt":43},"01M6K5E21QEYHCT7Z2HA4AQ804","setup","One-time setup of image and video generation credentials, verified before use. \"set up my API keys\"","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Fsetup\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[81,89,90,91,92,93,39,94,95,96,97,98,99,100,101,102,103,104,105],"video generation","api keys","verified","keys","my","reset","generation","time","fallback","up","use","Video","api","credentials","SET","status","image",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":115,"publishedAt":43},"01M6K5DWRWPF1ZHZ93VE8Z1NB4","research-month","Turn supplied comment exports and competitor ads into a what's-working brief before planning a month. \"analyse these competitor ads and comments\"","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Fresearch-month\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[116,117,118,119,33,120,121,122,123,124,125,37,40,39,126,127],"research month","research","csv","export","text","ads","brief","planning","screenshots","comments","posts","mm",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":137,"publishedAt":43},"01M6K5DQ47966ZG9N916VA7Y68","render-carousels","Render multi-slide carousels from HTML templates into platform-ready images or PDF. \"build the carousel slides\"","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Frender-carousels\u002FSKILL.md",[134],{"categoryNo":135,"categoryName":136,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[138,139,140,141,142,143,144,145,40,39,146,147,148,149,150,151,152,153],"render carousels","render","platform","type","id","carousel","post","multi","template","images","ready","html","slides","templates","PDF","build",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":43},"01M6K5DHDFMZAK4BN2QFEVM614","price-check","Price a generation run from live provider rates before any spend. \"how much will this cost\"","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Fprice-check\u002FSKILL.md",[],[161,162,163,164,39,165,37,142,95,166,167,168,169,170,171],"check","price","price check","live","compare","provider","cost","model","how","batch","run",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":185,"publishedAt":43},"01M6K5DDGBCGTN4SBEHZD5G9H8","parse-calendar","Parse a content calendar or plan from DOCX, XLSX, Notion or pasted text into structured posts. \"load this month's calendar\"","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Fparse-calendar\u002FSKILL.md",[178,179,182],{"categoryNo":135,"categoryName":136,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":180,"categoryName":181,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000004","电子表格",{"categoryNo":183,"categoryName":184,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000034","行政与办公人员",[186,187,126,188,189,190,120,191,192,193,194,195,196,197,41,198,39],"parse calendar","calendar","URL","structured","content calendar","plan","file","content","notion","xlsx","docx","paste","load",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":205,"publishedAt":43},"01M6K5D9NZ6QEP1F5M9P8EXM7E","model-check","Find the best current model for a capability from the live catalogue and record its source. \"which model should we use\"","https:\u002F\u002Fgithub.com\u002Findranilbanerjee\u002Fsocialforge\u002Fblob\u002Fmain\u002Fskills\u002Fmodel-check\u002FSKILL.md",[],[206,168,161,42,207,208,39,209,37,164,210,166,99,211],"model check","for","which","kind","record","find"]