{"id":"b46acff8-5c05-49a1-8e4a-f5bdf043d97c","slug":"clawhub-iampennyli-ima-skills","name":"ima skills","description":"统一的 IMA OpenAPI 技能，支持笔记管理和知识库操作。 当用户提到知识库、资料库、笔记、备忘录、记事，或者想要上传文件、添加网页到知识库、 搜索知识库内容、搜索/浏览/创建/编辑笔记时，使用此 skill。 即使用户没有明确说\"知识库\"或\"笔记\"，只要意图涉及文件上传到知识库、网页收藏、 知识搜索、个人...","canonicalUrl":"https://www.xpersona.co/agent/clawhub-iampennyli-ima-skills","sourceUrl":"https://clawhub.ai/iampennyli/ima-skills","homepage":"https://clawhub.ai/iampennyli/skills/ima-skills","source":"CLAWHUB","vendor":{"slug":"clawhub","label":"Clawhub","url":"https://clawhub.ai/iampennyli/skills/ima-skills"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":"1.1.7","freshnessAt":"2026-10-09T01:50:36.800Z","freshnessLabel":"Oct 9, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Oct 9, 2026"},{"label":"Vendor","value":"Clawhub"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"1.1.7"}],"factsPreview":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Clawhub","href":"https://clawhub.ai/iampennyli/skills/ima-skills","sourceUrl":"https://clawhub.ai/iampennyli/skills/ima-skills","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T01:50:36.800Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-iampennyli-ima-skills/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-iampennyli-ima-skills/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-09T01:50:36.800Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"16.1K downloads","href":"https://clawhub.ai/iampennyli/ima-skills","sourceUrl":"https://clawhub.ai/iampennyli/ima-skills","sourceType":"profile","confidence":"medium","observedAt":"2026-10-09T01:50:36.800Z","isPublic":true},{"factKey":"latest_release","category":"release","label":"Latest release","value":"1.1.7","href":"https://clawhub.ai/iampennyli/ima-skills","sourceUrl":"https://clawhub.ai/iampennyli/ima-skills","sourceType":"release","confidence":"medium","observedAt":"2026-04-24T10:05:59.209Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-iampennyli-ima-skills/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-iampennyli-ima-skills/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["16.1K downloads","Trust evidence available"],"agentCard":{"name":"ima skills","description":"统一的 IMA OpenAPI 技能，支持笔记管理和知识库操作。 当用户提到知识库、资料库、笔记、备忘录、记事，或者想要上传文件、添加网页到知识库、 搜索知识库内容、搜索/浏览/创建/编辑笔记时，使用此 skill。 即使用户没有明确说\"知识库\"或\"笔记\"，只要意图涉及文件上传到知识库、网页收藏、 知识搜索、个人...","source":"CLAWHUB","sourceId":"clawhub:s17b8zpkvjjj39qt4e1wx3r8a583gg9t:ima-skills","homepage":"https://clawhub.ai/iampennyli/skills/ima-skills","repository":"https://clawhub.ai/iampennyli/ima-skills","documentation":"https://www.xpersona.co/agent/clawhub-iampennyli-ima-skills","protocols":["OPENCLEW"],"examples":[{"kind":"example","language":"text","snippet":"GATE 1 [TYPE CHECK]\n  Run preflight-check.cjs FIRST. pass=false → reject immediately.\n  NEVER ask \"do you still want to try?\" for unsupported types.\n  Video files, Bilibili/YouTube URLs, file:// URLs → tell user to use IMA desktop client.\n\nGATE 2 [NAMING]\n  add_knowledge title MUST equal file_name (with extension).\n  NEVER rename, shorten, translate, or modify the original filename.\n  Example: file is \"音频.mp3\" → title=\"音频.mp3\", file_name=\"音频.mp3\"\n\nGATE 3 [DUPLICATES]\n  Call check_repeated_names BEFORE create_media for ALL file uploads.\n  is_repeated=true → ask user: keep both (append timestamp) or cancel.\n  \"Replace\" is NOT supported.\n  Timestamp format: {name}_YYYYMMDDHHmmss.{ext}\n\nGATE 4 [UPLOAD EXIT]\n  cos-upload.cjs non-zero exit → STOP immediately.\n  Do NOT call add_knowledge. Report error to user."},{"kind":"example","language":"bash","snippet":"# ── Step 1: preflight-check.cjs ← ⛔ GATE 1 ──\n# 有扩展名时自动推断；无扩展名时需传 --content-type\nPREFLIGHT=$(node .claude/skills/ima-skill/knowledge-base/scripts/preflight-check.cjs \\\n  --file \"/path/to/report.pdf\")\necho \"$PREFLIGHT\"\n# pass=false → 终止，将 reason 展示给用户。NEVER ask \"want to try?\"\n\n# ── Step 2: Extract fields ──\nFILE_NAME=$(echo \"$PREFLIGHT\" | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(d.file_name)\")\nFILE_EXT=$(echo \"$PREFLIGHT\" | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(d.file_ext)\")\nFILE_SIZE=$(echo \"$PREFLIGHT\" | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(String(d.file_size))\")\nMEDIA_TYPE=$(echo \"$PREFLIGHT\" | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(String(d.media_type))\")\nCONTENT_TYPE=$(echo \"$PREFLIGHT\" | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(d.content_type)\")\n\n# ── Step 3: check_repeated_names ← ⛔ GATE 3 ──\n# MANDATORY for ALL file uploads (media_type 1/3/4/5/7/9/13/14/15).\n# is_repeated=true → ask user: keep both (append _YYYYMMDDHHmmss) or cancel.\nima_api \"openapi/wiki/v1/check_repeated_names\" \"{\n  \\\"params\\\": [{\\\"name\\\": \\\"$FILE_NAME\\\", \\\"media_type\\\": $MEDIA_TYPE}],\n  \\\"knowledge_base_id\\\": \\\"<kb_id>\\\"\n}\"\n# folder_id is optional — omit for root, include for subfolder\n\n# ── Step 4: create_media ──\nCREATE_MEDIA_RESP=$(ima_api \"openapi/wiki/v1/create_media\" \"{\n  \\\"file_name\\\": \\\"$FILE_NAME\\\",\n  \\\"file_size\\\": $FILE_SIZE,\n  \\\"content_type\\\": \\\"$CONTENT_TYPE\\\",\n  \\\"knowledge_base_id\\\": \\\"<kb_id>\\\",\n  \\\"file_ext\\\": \\\"$FILE_EXT\\\"\n}\")\n# Extract media_id, url, and cos_credential fields. code≠0 → terminate.\n# COS_URL is the file's accessible URL — used for verification in Step 6.\n\n# ── Step 5: cos-upload.cjs ← ⛔ GATE 5 (non-zero = STOP) ──\n# ⚠️ Large files may exceed default 120s timeout — set --timeout explicitly.\nnode .claude/skills/ima-skill/"}]}}