[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698VK9WDFM5P70646ZJP8KA":3,"skill-same:01M698VK9WDFM5P70646ZJP8KA":139},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":53,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M698VK9WDFM5P70646ZJP8KA","knowledge-source-ingest",null,"Incrementally ingest enumerable external sources into Knowledge with canonical source identity, retained snapshot manifests, overlap-aware diffing, and reconciliation of changed or deleted items. Includes a generic manifest tool and a read-only Discrawl adapter.","openclaw\u002Fopenclaw","openclaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252820863?v=4","01M698P3FSAZ6B4R928ZF19KPT","01M698PDMDRVH56MV30D253NFP",394302,"MIT","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"knowledge source ingest","source","ingest","knowledge","source ingest","manifest","tool","read","snapshot","only","identity","reconciliation","adapter","sources","with","read-only","canonical","manifests","discrawl","generic","2026-11-10 10:12:30",false,"---\nname: knowledge-source-ingest\ndescription: Incrementally ingest enumerable external sources into Knowledge with canonical source identity, retained snapshot manifests, overlap-aware diffing, and reconciliation of changed or deleted items. Includes a generic manifest tool and a read-only Discrawl adapter.\n---\n\n# Source Ingest Skill\n\nUse this for bounded collections such as chat channels, issue streams, feeds, or\nmailboxes where later runs can overlap prior coverage. Read\n[shared conventions](references\u002Fconventions.md),\n[publication](references\u002Fpublication.md), and the\n[manifest protocol](references\u002Fsource-manifest.md). After acquisition, route\ndocuments and conversations through `knowledge-ingest`, which uses\n`knowledge-entities` for entity enrichment. Route meetings through\n`knowledge-meeting-ingest`. This skill owns source identity and coverage; the\ningestion workflows turn the retained content into useful connected knowledge.\nFor creating recurring ingestion jobs, use `knowledge-automation` first.\n\n## Contract\n\n- Resolve a stable provider\u002Fsource key before reading content. Display names are labels, never identity.\n- Maintain one canonical `source` page with `source_role: canonical`, `provider`, and `source_key`. Reuse it on every run.\n- For each bounded observation, preserve the generated manifest as an attachment on a `source` page with `source_role: snapshot`, exact coverage, observation time, manifest hash, count, completeness, watermark, and dependency on the canonical source page.\n- Manifests retain stable item IDs and content hashes, not source text. Preserve original\u002Fexported content separately as evidence where authorized.\n- Query prior snapshot pages for the same provider\u002Fsource key before planning. Download their manifests, verify attachment hashes, and pass all overlapping snapshots to the planner. Do not rely on conversation memory.\n- Reuse unchanged source bytes and existing records. Continue previously omitted enrichment from those retained sources when requested; an unchanged manifest does not mean entity enrichment already happened. Ingest added items. Reconcile changed items against existing pages\u002Fclaims. Treat deletion as observed source state, not permission to erase Knowledge; correct or withdraw only when the evidence warrants it.\n- A complete snapshot can establish absence inside its exact coverage. Partial or unknown snapshots cannot; unresolved missing IDs remain unresolved.\n\n## Procedure\n\n1. Inspect `knowledge_status` and `knowledge_ontology` for the intended vault scope and the `source` fields, then search Knowledge for the canonical source and prior snapshots by provider\u002Fsource key. If an owner-private ingestion unexpectedly resolves to a conversation scope or an empty vault after a restart, stop before writing and restore the intended authorized scope; never infer that prior coverage is absent from the wrong scope.\n2. Acquire a bounded export with an approved reader. For Discrawl, run `scripts\u002Fdiscrawl-normalize.mjs` with its configured read-only archive, exact channel ID when known, and `[since,before)` RFC3339 bounds. The normalized payload includes stable author IDs plus archive-observed display fields. Preserve the raw JSONL, and create a separate line-stable readable transcript when human review or line citations are needed.\n3. Generate a deterministic manifest with `scripts\u002Fsource-manifest.mjs snapshot`. Attach it before publishing the snapshot page; record the returned SHA-256.\n4. Download all overlapping prior manifests and run `scripts\u002Fsource-manifest.mjs plan`. Inspect covered\u002Funcovered intervals and the added\u002Fchanged\u002Fdeleted\u002Funchanged\u002Funresolved lists.\n5. Test 3–5 substantive items or discussions, then ingest through `knowledge-ingest` (or `knowledge-meeting-ingest` for meetings). For chat, group related messages with their reply context; use `knowledge-entities` to enrich relevant people, companies, projects and concepts from their contributions. Carry supported developments into State, dated claims and source notes, not only a channel digest. Use stable external IDs in source citations and the retained snapshot as a dependency. Reuse its originals rather than uploading one copy per discussion.\n6. Publish or update derived records, then publish the snapshot page. A snapshot is `complete` only when acquisition and manifest creation covered the declared interval; derived extraction may still be partial and must be reported as such.\n7. Read back the canonical page, snapshot page, attachment, derived records, and source-dependent connections. Verify hashes and exact coverage.\n\n## Discrawl example\n\n    node scripts\u002Fdiscrawl-normalize.mjs --config \u002Fapproved\u002Fdiscrawl.yaml \\\n      --channel 1234567890 --since 2026-09-21T00:00:00-07:00 \\\n      --before 2026-09-28T00:00:00-07:00 --output messages.jsonl\n    node scripts\u002Fsource-manifest.mjs snapshot --provider discord \\\n      --source-key discord:GUILD_ID:1234567890 \\\n      --coverage-start 2026-09-21T00:00:00-07:00 \\\n      --coverage-end 2026-09-28T00:00:00-07:00 \\\n      --input messages.jsonl --output manifest.jsonl.gz --summary snapshot.json\n    node scripts\u002Fsource-manifest.mjs plan --current manifest.jsonl.gz \\\n      --previous prior-1.jsonl.gz --previous prior-2.jsonl.gz --output plan.json\n\nDo not include credentials, archive paths, or raw private content in Knowledge page prose. No scheduler, connector daemon, or plugin-owned ingestion job is created; the skill and scripts support an authorized agent-run workflow.\n","# Source Ingest Skill\n\nUse this for bounded collections such as chat channels, issue streams, feeds, or\nmailboxes where later runs can overlap prior coverage. Read\n[shared conventions](references\u002Fconventions.md),\n[publication](references\u002Fpublication.md), and the\n[manifest protocol](references\u002Fsource-manifest.md). After acquisition, route\ndocuments and conversations through `knowledge-ingest`, which uses\n`knowledge-entities` for entity enrichment. Route meetings through\n`knowledge-meeting-ingest`. This skill owns source identity and coverage; the\ningestion workflows turn the retained content into useful connected knowledge.\nFor creating recurring ingestion jobs, use `knowledge-automation` first.\n\n## Contract\n\n- Resolve a stable provider\u002Fsource key before reading content. Display names are labels, never identity.\n- Maintain one canonical `source` page with `source_role: canonical`, `provider`, and `source_key`. Reuse it on every run.\n- For each bounded observation, preserve the generated manifest as an attachment on a `source` page with `source_role: snapshot`, exact coverage, observation time, manifest hash, count, completeness, watermark, and dependency on the canonical source page.\n- Manifests retain stable item IDs and content hashes, not source text. Preserve original\u002Fexported content separately as evidence where authorized.\n- Query prior snapshot pages for the same provider\u002Fsource key before planning. Download their manifests, verify attachment hashes, and pass all overlapping snapshots to the planner. Do not rely on conversation memory.\n- Reuse unchanged source bytes and existing records. Continue previously omitted enrichment from those retained sources when requested; an unchanged manifest does not mean entity enrichment already happened. Ingest added items. Reconcile changed items against existing pages\u002Fclaims. Treat deletion as observed source state, not permission to erase Knowledge; correct or withdraw only when the evidence warrants it.\n- A complete snapshot can establish absence inside its exact coverage. Partial or unknown snapshots cannot; unresolved missing IDs remain unresolved.\n\n## Procedure\n\n1. Inspect `knowledge_status` and `knowledge_ontology` for the intended vault scope and the `source` fields, then search Knowledge for the canonical source and prior snapshots by provider\u002Fsource key. If an owner-private ingestion unexpectedly resolves to a conversation scope or an empty vault after a restart, stop before writing and restore the intended authorized scope; never infer that prior coverage is absent from the wrong scope.\n2. Acquire a bounded export with an approved reader. For Discrawl, run `scripts\u002Fdiscrawl-normalize.mjs` with its configured read-only archive, exact channel ID when known, and `[since,before)` RFC3339 bounds. The normalized payload includes stable author IDs plus archive-observed display fields. Preserve the raw JSONL, and create a separate line-stable readable transcript when human review or line citations are needed.\n3. Generate a deterministic manifest with `scripts\u002Fsource-manifest.mjs snapshot`. Attach it before publishing the snapshot page; record the returned SHA-256.\n4. Download all overlapping prior manifests and run `scripts\u002Fsource-manifest.mjs plan`. Inspect covered\u002Funcovered intervals and the added\u002Fchanged\u002Fdeleted\u002Funchanged\u002Funresolved lists.\n5. Test 3–5 substantive items or discussions, then ingest through `knowledge-ingest` (or `knowledge-meeting-ingest` for meetings). For chat, group related messages with their reply context; use `knowledge-entities` to enrich relevant people, companies, projects and concepts from their contributions. Carry supported developments into State, dated claims and source notes, not only a channel digest. Use stable external IDs in source citations and the retained snapshot as a dependency. Reuse its originals rather than uploading one copy per discussion.\n6. Publish or update derived records, then publish the snapshot page. A snapshot is `complete` only when acquisition and manifest creation covered the declared interval; derived extraction may still be partial and must be reported as such.\n7. Read back the canonical page, snapshot page, attachment, derived records, and source-dependent connections. Verify hashes and exact coverage.\n\n## Discrawl example\n\n    node scripts\u002Fdiscrawl-normalize.mjs --config \u002Fapproved\u002Fdiscrawl.yaml \\\n      --channel 1234567890 --since 2026-09-21T00:00:00-07:00 \\\n      --before 2026-09-28T00:00:00-07:00 --output messages.jsonl\n    node scripts\u002Fsource-manifest.mjs snapshot --provider discord \\\n      --source-key discord:GUILD_ID:1234567890 \\\n      --coverage-start 2026-09-21T00:00:00-07:00 \\\n      --coverage-end 2026-09-28T00:00:00-07:00 \\\n      --input messages.jsonl --output manifest.jsonl.gz --summary snapshot.json\n    node scripts\u002Fsource-manifest.mjs plan --current manifest.jsonl.gz \\\n      --previous prior-1.jsonl.gz --previous prior-2.jsonl.gz --output plan.json\n\nDo not include credentials, archive paths, or raw private content in Knowledge page prose. No scheduler, connector daemon, or plugin-owned ingestion job is created; the skill and scripts support an authorized agent-run workflow.\n",{"name":5,"description":7},"main","f1c93577085244aa96aa87b53a2df9b59d293bd7","extensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest",82862,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw","https:\u002F\u002Fopenclaw.ai","https:\u002F\u002Fgithub.com\u002Fopenclaw","Your personal, open source AI assistant.","2026-11-11 08:46:30",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add openclaw\u002Fopenclaw --skill knowledge-source-ingest",{"tool":63,"command":64},"bunx","bunx skills add openclaw\u002Fopenclaw --skill knowledge-source-ingest",{"tool":66,"command":67},"pnpm","pnpm dlx skills add openclaw\u002Fopenclaw --skill knowledge-source-ingest","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002FSKILL.md",true,[71,77,81,85,89,93,97,101,105,109,113,117,121,125,131,135],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fassertions.md","REFERENCE","参考文档",4745,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fassertions.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fconventions.md",14676,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fconventions.md",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fidentity.md",4903,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fidentity.md",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fmeeting-entity-example.md",6838,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fmeeting-entity-example.md",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fprofiles.md",5775,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fprofiles.md",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fpublication.md",22868,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fpublication.md",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fpublish.md",5259,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fpublish.md",{"path":102,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Frecovery.md",1998,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Frecovery.md",{"path":106,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fsetup.md",1788,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fsetup.md",{"path":110,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fsource-manifest.md",1395,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fsource-manifest.md",{"path":114,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fsources.md",3108,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fsources.md",{"path":118,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002Fverify.md",2743,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fverify.md",{"path":122,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":123,"sourceHtmlUrl":124},"references\u002Fwriting.md",1958,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Freferences\u002Fwriting.md",{"path":126,"resourceType":127,"resourceTypeDesc":128,"sizeBytes":129,"sourceHtmlUrl":130},"scripts\u002Fchat-transcript.mjs","SCRIPT","脚本",8983,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Fscripts\u002Fchat-transcript.mjs",{"path":132,"resourceType":127,"resourceTypeDesc":128,"sizeBytes":133,"sourceHtmlUrl":134},"scripts\u002Fdiscrawl-normalize.mjs",7548,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Fscripts\u002Fdiscrawl-normalize.mjs",{"path":136,"resourceType":127,"resourceTypeDesc":128,"sizeBytes":137,"sourceHtmlUrl":138},"scripts\u002Fsource-manifest.mjs",14417,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Fknowledge\u002Fskills\u002Fknowledge-source-ingest\u002Fscripts\u002Fsource-manifest.mjs",[140,146,169,186,208,230],{"skillNo":141,"name":142,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":43},"01M698VP84FNM6G9MR1HPX7MF7","lobster","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Flobster\u002FSKILL.md",[],[142],{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":43},"01M698YY8QGQ7S8TJNKJG6VTPH","xurl","xurl CLI for authenticated X posts, replies, reads\u002Fsearch, DMs, media upload, followers, auth status, or raw v2 API calls.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[],[148,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168],"for","api","calls","replies","posts","upload","tap","install","brew","node","Media","search","npm","status","auth","cli",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":43},"01M698YWT1CJ0WK88WB909R9RT","weather","Current weather and forecasts with web_fetch, falling back to wttr.in curl for locations, rain, temperature, travel planning.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[171,176,177,160,178,161,179,180,181,182,183,184,153,185,37],"travel planning","travel","fetch","curl","https","help","planning","web","back","temperature",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":197,"publishedAt":43},"01M698YV2Q0R0JJKAWGFS21K0N","visualize","Create inline visuals for code and explanations, or author persistent OpenClaw dashboard widgets with show_widget.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fvisualize\u002FSKILL.md",[192],{"categoryNo":193,"categoryName":194,"taxonomyType":195,"taxonomyTypeDesc":196},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[188,198,199,200,201,153,37,202,203,204,205,206,9,207],"widgets","openclaw dashboard","author","inline","show","code","create","visuals","dashboard","widget",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":220,"publishedAt":43},"01M698YS2TRJH9ENG28HD9CD87","trello","Manage Trello boards, lists, and cards via the Trello REST API.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftrello\u002FSKILL.md",[214,217],{"categoryNo":215,"categoryName":216,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":218,"categoryName":219,"taxonomyType":195,"taxonomyTypeDesc":196},"01JBSEEDCAT000000000000030","开发工程师",[210,180,221,222,223,224,225,226,160,161,227,179,154,228,229],"cloud","manage","via","rest api","token","atlassian","jq","REST","developer",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":234,"categories":235,"keywords":236,"publishedAt":43},"01M698YQ9Q3M4W78EWV2KSCSVW","tmux","Control tmux sessions\u002Fpanes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002FSKILL.md",[],[232,160,237,238,153,239,240,241,242,243,244,245,161,246,247,248,249,250,251],"send","darwin","keys","paste","output","control","prompts","interactive","list","capture","panes","text","monitor","sessions","linux"]