[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PWBFY7XWFZPXJ1W2DH6SM":3,"skill-same:01M71PWBFY7XWFZPXJ1W2DH6SM":96},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":15,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":13,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M71PWBFY7XWFZPXJ1W2DH6SM","data-structure-protocol",null,"Build and navigate DSP (Data Structure Protocol) — graph-based long-term structural memory of codebases for LLM agents. Stores entities (modules, functions), their dependencies (imports), public API (shared\u002Fexports), and reasons for every connection. Use when: (1) project has a .dsp\u002F directory, (2) user asks to set up DSP or bootstrap project structure, (3) creating\u002Fmodifying\u002Fdeleting code files in a DSP-tracked project, (4) navigating project structure, understanding dependencies, or finding modules, (5) user mentions DSP, dsp-cli, .dsp, or structure mapping.","Thamielis\u002F.agents","Thamielis","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F52717133?v=4","01M71NG040Z4RAKTDW6JVQTZA0","01M71NG04N9WFE1H3RH0BF6VDY",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000033","数据分析师",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"protocol","data","data structure protocol","structure","when","cli","navigate","imports","public api","structural","project","shared","files","modules","up","api","SET","code","project structure","memory","2026-11-10 13:02:02",false,"---\nname: data-structure-protocol\ndescription: >-\n  Build and navigate DSP (Data Structure Protocol) — graph-based long-term structural memory of codebases for LLM agents.\n  Stores entities (modules, functions), their dependencies (imports), public API (shared\u002Fexports), and reasons for every connection.\n  Use when: (1) project has a .dsp\u002F directory, (2) user asks to set up DSP or bootstrap project structure,\n  (3) creating\u002Fmodifying\u002Fdeleting code files in a DSP-tracked project, (4) navigating project structure, understanding dependencies,\n  or finding modules, (5) user mentions DSP, dsp-cli, .dsp, or structure mapping.\n---\n\n# Data Structure Protocol (DSP)\n\nDSP builds a dependency graph of project entities in a `.dsp\u002F` directory. Each entity (module, function, external dependency) gets a UID, description, import list, and export index. The graph answers: what exists, why it exists, what depends on what, and who uses what.\n\n**DSP is NOT documentation for humans or AST dump.** It captures _meaning_ (purpose), _boundaries_ (imports\u002Fexports), and _reasons for connections_ (why).\n\n## Agent Prompt\n\nEmbed this context when working on a DSP-tracked project:\n\n> **This project uses DSP (Data Structure Protocol).**\n> The `.dsp\u002F` directory is the entity graph of this project: modules, functions, dependencies, public API. It is your long-term memory of the code structure.\n>\n> **Core rules:**\n>\n> 1. **Before changing code** — find affected entities via `dsp-cli search`, `find-by-source`, or `read-toc`. Read their `description` and `imports` to understand context.\n> 2. **When creating a file\u002Fmodule** — call `dsp-cli create-object`. For each exported function — `create-function` (with `--owner`). Register exports via `create-shared`.\n> 3. **When adding an import** — call `dsp-cli add-import` with a brief `why`. For external dependencies — first `create-object --kind external` if the entity doesn't exist yet.\n> 4. **When removing import \u002F export \u002F file** — call `remove-import`, `remove-shared`, `remove-entity` respectively. Cascade cleanup is automatic.\n> 5. **When renaming\u002Fmoving a file** — call `move-entity`. UID does not change.\n> 6. **Don't touch DSP** if only internal implementation changed without affecting purpose or dependencies.\n> 7. **Bootstrap** — if `.dsp\u002F` is empty, traverse the project from root entrypoint via DFS on imports, documenting every file.\n>\n> **Key commands:**\n> ```\n> dsp-cli init\n> dsp-cli create-object \u003Csource> \u003Cpurpose> [--kind external] [--toc ROOT_UID]\n> dsp-cli create-function \u003Csource> \u003Cpurpose> [--owner UID] [--toc ROOT_UID]\n> dsp-cli create-shared \u003Cexporter_uid> \u003Cshared_uid> [\u003Cshared_uid> ...]\n> dsp-cli add-import \u003Cimporter_uid> \u003Cimported_uid> \u003Cwhy> [--exporter UID]\n> dsp-cli remove-import \u003Cimporter_uid> \u003Cimported_uid> [--exporter UID]\n> dsp-cli remove-shared \u003Cexporter_uid> \u003Cshared_uid>\n> dsp-cli remove-entity \u003Cuid>\n> dsp-cli move-entity \u003Cuid> \u003Cnew_source>\n> dsp-cli update-description \u003Cuid> [--source S] [--purpose P] [--kind K]\n> dsp-cli get-entity \u003Cuid>\n> dsp-cli get-children \u003Cuid> [--depth N]\n> dsp-cli get-parents \u003Cuid> [--depth N]\n> dsp-cli search \u003Cquery>\n> dsp-cli find-by-source \u003Cpath>\n> dsp-cli read-toc [--toc ROOT_UID]\n> dsp-cli get-stats\n> ```\n\n## Using the CLI\n\nThe script is at `scripts\u002Fdsp-cli.py` relative to this skill directory.\n\n```\npython \u003Cskill-path>\u002Fscripts\u002Fdsp-cli.py [--root \u003Cproject-root>] \u003Ccommand> [args]\n```\n\n`--root` defaults to current working directory. All paths in arguments are repo-relative.\n\n## Core Concepts\n\n- **Code = graph.** Nodes are Objects and Functions. Edges are `imports` and `shared\u002Fexports`.\n- **Identity by UID, not file path.** Path is an attribute; renames\u002Fmoves don't change UID.\n- **\"Shared\" creates an entity.** If something becomes public (exported), it gets its own UID.\n- **Import tracks both \"from where\" and \"what\".** One code import may create two DSP links: to the module and to the specific shared entity.\n- **Full import coverage.** Every imported file\u002Fasset must be an Object in `.dsp` — code, images, styles, configs, everything.\n- **`why` lives next to the imported entity** in its `exports\u002F` directory (reverse index).\n- **Start from roots.** Each root entrypoint has its own TOC file.\n- **External deps — record only.** `kind: external`, no deep dive into `node_modules`\u002F`site-packages`\u002Fetc. But `exports index` works — shows who imports it.\n\n## UID Format\n\n- Objects: `obj-\u003C8 hex>` (e.g., `obj-a1b2c3d4`)\n- Functions: `func-\u003C8 hex>` (e.g., `func-7f3a9c12`)\n\nUID marker in source code — comment `@dsp \u003Cuid>` before declaration:\n\n```js\n\u002F\u002F @dsp func-7f3a9c12\nexport function calculateTotal(items) { ... }\n```\n\n```python\n# @dsp obj-e5f6g7h8\nclass UserService:\n```\n\n## Workflows\n\n### Setting Up DSP\n\n1. Run `dsp-cli init` to create `.dsp\u002F` directory.\n2. Identify root entrypoint(s) — `package.json` main, framework entry, etc.\n3. Run bootstrap (DFS from root). See [bootstrap.md](references\u002Fbootstrap.md).\n\n### Creating Entities (when writing new code)\n\n1. Create module: `dsp-cli create-object \u003Cpath> \u003Cpurpose>`\n2. Create functions: `dsp-cli create-function \u003Cpath>#\u003Csymbol> \u003Cpurpose> --owner \u003Cmodule-uid>`\n3. Register exports: `dsp-cli create-shared \u003Cmodule-uid> \u003Cfunc-uid> [\u003Cfunc-uid> ...]`\n4. Register imports: `dsp-cli add-import \u003Cthis-uid> \u003Cimported-uid> \u003Cwhy> [--exporter \u003Cmodule-uid>]`\n5. External deps: `dsp-cli create-object \u003Cpackage-name> \u003Cpurpose> --kind external`\n\n### Navigating the Graph (when reading\u002Funderstanding code)\n\n- **Find entity by file**: `dsp-cli find-by-source \u003Cpath>`\n- **Search by keyword**: `dsp-cli search \u003Cquery>`\n- **Read TOC**: `dsp-cli read-toc` → get all UIDs, then `get-entity` for details\n- **Dependency tree down**: `dsp-cli get-children \u003Cuid> --depth N`\n- **Dependency tree up**: `dsp-cli get-parents \u003Cuid> --depth N`\n- **Impact analysis**: `dsp-cli get-recipients \u003Cuid>` — who depends on this entity\n- **Path between entities**: `dsp-cli get-path \u003Cfrom> \u003Cto>`\n\n### Updating (when modifying code)\n\n- Purpose changed: `dsp-cli update-description \u003Cuid> --purpose \u003Cnew>`\n- File moved: `dsp-cli move-entity \u003Cuid> \u003Cnew-path>`\n- Import reason changed: `dsp-cli update-import-why \u003Cimporter> \u003Cimported> \u003Cnew-why>`\n\n### Deleting (when removing code)\n\n- Import removed: `dsp-cli remove-import \u003Cimporter> \u003Cimported> [--exporter UID]`\n- Export removed: `dsp-cli remove-shared \u003Cexporter> \u003Cshared>`\n- File\u002Fmodule deleted: `dsp-cli remove-entity \u003Cuid>` (cascading cleanup)\n\n### Diagnostics\n\n- `dsp-cli detect-cycles` — circular dependencies\n- `dsp-cli get-orphans` — unused entities\n- `dsp-cli get-stats` — project graph overview\n\n## When to Update DSP\n\n| Code Change | DSP Action |\n|---|---|\n| New file\u002Fmodule | `create-object` + `create-function` + `create-shared` + `add-import` |\n| New import added | `add-import` (+ `create-object --kind external` if new external dep) |\n| Import removed | `remove-import` |\n| Export added | `create-shared` (+ `create-function` if new function) |\n| Export removed | `remove-shared` |\n| File renamed\u002Fmoved | `move-entity` |\n| File deleted | `remove-entity` |\n| Purpose changed | `update-description` |\n| Internal-only change | **No DSP update needed** |\n\n## References\n\n- **[Storage format](references\u002Fstorage-format.md)** — `.dsp\u002F` directory structure, file formats, TOC\n- **[Bootstrap procedure](references\u002Fbootstrap.md)** — initial project markup (DFS algorithm)\n- **[Operations reference](references\u002Foperations.md)** — detailed semantics of all operations with import examples\n","# Data Structure Protocol (DSP)\n\nDSP builds a dependency graph of project entities in a `.dsp\u002F` directory. Each entity (module, function, external dependency) gets a UID, description, import list, and export index. The graph answers: what exists, why it exists, what depends on what, and who uses what.\n\n**DSP is NOT documentation for humans or AST dump.** It captures _meaning_ (purpose), _boundaries_ (imports\u002Fexports), and _reasons for connections_ (why).\n\n## Agent Prompt\n\nEmbed this context when working on a DSP-tracked project:\n\n> **This project uses DSP (Data Structure Protocol).**\n> The `.dsp\u002F` directory is the entity graph of this project: modules, functions, dependencies, public API. It is your long-term memory of the code structure.\n>\n> **Core rules:**\n>\n> 1. **Before changing code** — find affected entities via `dsp-cli search`, `find-by-source`, or `read-toc`. Read their `description` and `imports` to understand context.\n> 2. **When creating a file\u002Fmodule** — call `dsp-cli create-object`. For each exported function — `create-function` (with `--owner`). Register exports via `create-shared`.\n> 3. **When adding an import** — call `dsp-cli add-import` with a brief `why`. For external dependencies — first `create-object --kind external` if the entity doesn't exist yet.\n> 4. **When removing import \u002F export \u002F file** — call `remove-import`, `remove-shared`, `remove-entity` respectively. Cascade cleanup is automatic.\n> 5. **When renaming\u002Fmoving a file** — call `move-entity`. UID does not change.\n> 6. **Don't touch DSP** if only internal implementation changed without affecting purpose or dependencies.\n> 7. **Bootstrap** — if `.dsp\u002F` is empty, traverse the project from root entrypoint via DFS on imports, documenting every file.\n>\n> **Key commands:**\n> ```\n> dsp-cli init\n> dsp-cli create-object \u003Csource> \u003Cpurpose> [--kind external] [--toc ROOT_UID]\n> dsp-cli create-function \u003Csource> \u003Cpurpose> [--owner UID] [--toc ROOT_UID]\n> dsp-cli create-shared \u003Cexporter_uid> \u003Cshared_uid> [\u003Cshared_uid> ...]\n> dsp-cli add-import \u003Cimporter_uid> \u003Cimported_uid> \u003Cwhy> [--exporter UID]\n> dsp-cli remove-import \u003Cimporter_uid> \u003Cimported_uid> [--exporter UID]\n> dsp-cli remove-shared \u003Cexporter_uid> \u003Cshared_uid>\n> dsp-cli remove-entity \u003Cuid>\n> dsp-cli move-entity \u003Cuid> \u003Cnew_source>\n> dsp-cli update-description \u003Cuid> [--source S] [--purpose P] [--kind K]\n> dsp-cli get-entity \u003Cuid>\n> dsp-cli get-children \u003Cuid> [--depth N]\n> dsp-cli get-parents \u003Cuid> [--depth N]\n> dsp-cli search \u003Cquery>\n> dsp-cli find-by-source \u003Cpath>\n> dsp-cli read-toc [--toc ROOT_UID]\n> dsp-cli get-stats\n> ```\n\n## Using the CLI\n\nThe script is at `scripts\u002Fdsp-cli.py` relative to this skill directory.\n\n```\npython \u003Cskill-path>\u002Fscripts\u002Fdsp-cli.py [--root \u003Cproject-root>] \u003Ccommand> [args]\n```\n\n`--root` defaults to current working directory. All paths in arguments are repo-relative.\n\n## Core Concepts\n\n- **Code = graph.** Nodes are Objects and Functions. Edges are `imports` and `shared\u002Fexports`.\n- **Identity by UID, not file path.** Path is an attribute; renames\u002Fmoves don't change UID.\n- **\"Shared\" creates an entity.** If something becomes public (exported), it gets its own UID.\n- **Import tracks both \"from where\" and \"what\".** One code import may create two DSP links: to the module and to the specific shared entity.\n- **Full import coverage.** Every imported file\u002Fasset must be an Object in `.dsp` — code, images, styles, configs, everything.\n- **`why` lives next to the imported entity** in its `exports\u002F` directory (reverse index).\n- **Start from roots.** Each root entrypoint has its own TOC file.\n- **External deps — record only.** `kind: external`, no deep dive into `node_modules`\u002F`site-packages`\u002Fetc. But `exports index` works — shows who imports it.\n\n## UID Format\n\n- Objects: `obj-\u003C8 hex>` (e.g., `obj-a1b2c3d4`)\n- Functions: `func-\u003C8 hex>` (e.g., `func-7f3a9c12`)\n\nUID marker in source code — comment `@dsp \u003Cuid>` before declaration:\n\n```js\n\u002F\u002F @dsp func-7f3a9c12\nexport function calculateTotal(items) { ... }\n```\n\n```python\n# @dsp obj-e5f6g7h8\nclass UserService:\n```\n\n## Workflows\n\n### Setting Up DSP\n\n1. Run `dsp-cli init` to create `.dsp\u002F` directory.\n2. Identify root entrypoint(s) — `package.json` main, framework entry, etc.\n3. Run bootstrap (DFS from root). See [bootstrap.md](references\u002Fbootstrap.md).\n\n### Creating Entities (when writing new code)\n\n1. Create module: `dsp-cli create-object \u003Cpath> \u003Cpurpose>`\n2. Create functions: `dsp-cli create-function \u003Cpath>#\u003Csymbol> \u003Cpurpose> --owner \u003Cmodule-uid>`\n3. Register exports: `dsp-cli create-shared \u003Cmodule-uid> \u003Cfunc-uid> [\u003Cfunc-uid> ...]`\n4. Register imports: `dsp-cli add-import \u003Cthis-uid> \u003Cimported-uid> \u003Cwhy> [--exporter \u003Cmodule-uid>]`\n5. External deps: `dsp-cli create-object \u003Cpackage-name> \u003Cpurpose> --kind external`\n\n### Navigating the Graph (when reading\u002Funderstanding code)\n\n- **Find entity by file**: `dsp-cli find-by-source \u003Cpath>`\n- **Search by keyword**: `dsp-cli search \u003Cquery>`\n- **Read TOC**: `dsp-cli read-toc` → get all UIDs, then `get-entity` for details\n- **Dependency tree down**: `dsp-cli get-children \u003Cuid> --depth N`\n- **Dependency tree up**: `dsp-cli get-parents \u003Cuid> --depth N`\n- **Impact analysis**: `dsp-cli get-recipients \u003Cuid>` — who depends on this entity\n- **Path between entities**: `dsp-cli get-path \u003Cfrom> \u003Cto>`\n\n### Updating (when modifying code)\n\n- Purpose changed: `dsp-cli update-description \u003Cuid> --purpose \u003Cnew>`\n- File moved: `dsp-cli move-entity \u003Cuid> \u003Cnew-path>`\n- Import reason changed: `dsp-cli update-import-why \u003Cimporter> \u003Cimported> \u003Cnew-why>`\n\n### Deleting (when removing code)\n\n- Import removed: `dsp-cli remove-import \u003Cimporter> \u003Cimported> [--exporter UID]`\n- Export removed: `dsp-cli remove-shared \u003Cexporter> \u003Cshared>`\n- File\u002Fmodule deleted: `dsp-cli remove-entity \u003Cuid>` (cascading cleanup)\n\n### Diagnostics\n\n- `dsp-cli detect-cycles` — circular dependencies\n- `dsp-cli get-orphans` — unused entities\n- `dsp-cli get-stats` — project graph overview\n\n## When to Update DSP\n\n| Code Change | DSP Action |\n|---|---|\n| New file\u002Fmodule | `create-object` + `create-function` + `create-shared` + `add-import` |\n| New import added | `add-import` (+ `create-object --kind external` if new external dep) |\n| Import removed | `remove-import` |\n| Export added | `create-shared` (+ `create-function` if new function) |\n| Export removed | `remove-shared` |\n| File renamed\u002Fmoved | `move-entity` |\n| File deleted | `remove-entity` |\n| Purpose changed | `update-description` |\n| Internal-only change | **No DSP update needed** |\n\n## References\n\n- **[Storage format](references\u002Fstorage-format.md)** — `.dsp\u002F` directory structure, file formats, TOC\n- **[Bootstrap procedure](references\u002Fbootstrap.md)** — initial project markup (DFS algorithm)\n- **[Operations reference](references\u002Foperations.md)** — detailed semantics of all operations with import examples\n",{"name":5,"description":7},"main","dd673a28ba66191245f0e384c525b1dcff1c427a","skills\u002Fdata-structure-protocol","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents","https:\u002F\u002Fgithub.com\u002FThamielis","2026-06-08 04:03:12",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add Thamielis\u002F.agents --skill data-structure-protocol",{"tool":64,"command":65},"bunx","bunx skills add Thamielis\u002F.agents --skill data-structure-protocol",{"tool":67,"command":68},"pnpm","pnpm dlx skills add Thamielis\u002F.agents --skill data-structure-protocol","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002FSKILL.md",true,[72,76,82,86,90],{"path":73,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":15},"LICENSE","许可证",10942,{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fbootstrap.md","REFERENCE","参考文档",4253,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002Freferences\u002Fbootstrap.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Foperations.md",7780,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002Freferences\u002Foperations.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fstorage-format.md",3579,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002Freferences\u002Fstorage-format.md",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Fdsp-cli.py","SCRIPT","脚本",40295,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fdata-structure-protocol\u002Fscripts\u002Fdsp-cli.py",[97,130,156,182,212,236],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":101,"sourceHtmlUrl":102,"categories":103,"keywords":112,"publishedAt":47},"01M71QFD7835D0JG8MS43NRRVE","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[104,109],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":110,"categoryName":111,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000009","前端开发",[113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129],"webapp","testing","webapp testing","local","frontend","debugging","logs","browser","ui","screenshots","for","applications","toolkit","with","playwright","web","behavior",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":134,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":47},"01M71QF1RVYQPZ2HPHXYWBC27K","web-artifacts-builder","Suite of tools for creating elaborate, multi-component Codex.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[137],{"categoryNo":110,"categoryName":111,"taxonomyType":107,"taxonomyTypeDesc":108},[139,140,141,128,142,143,144,123,145,146,117,147,148,149,150,151,152,153,154,155],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","use","file","components","react","multi","state","routing","state management",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":160,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":165,"publishedAt":47},"01M71QEMXGG7MTTMSRVE3YFCXC","visual-explainer","Generate beautiful, self-contained HTML pages that visually explain systems, code changes, plans, and data. Use when the user asks for a diagram, architecture overview, diff review, plan review, project recap, comparison table, or any visual explanation of technical concepts. Also use proactively when you are about to render a complex ASCII table (4+ rows or 3+ columns) — present it as a styled HTML page instead.","MIT","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-explainer\u002FSKILL.md",[163,164],{"categoryNo":110,"categoryName":111,"taxonomyType":107,"taxonomyTypeDesc":108},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,168,37,39,169,170,171,172,173,174,175,176,177,178,123,179,180,181,148],"visual","visual explainer","explainer","image","you","architecture","plan","generate","present","concepts","table","as","view","ascii table","ascii","surf",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":160,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":194,"publishedAt":47},"01M71QDJVMVM82514TRK7VHXC5","transloadit-media-processing","Process media files (video, audio, images, documents) using Transloadit. Use when asked to encode video to HLS\u002FMP4, generate thumbnails, resize or watermark images, extract audio, concatenate clips, add subtitles, OCR documents, or run any media processing pipeline. Covers 86+ processing robots for file transformation at scale.","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Ftransloadit-media-processing\u002FSKILL.md",[188,191],{"categoryNo":189,"categoryName":190,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":192,"categoryName":193,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000023","Skill与智能体开发",[195,196,197,198,199,200,201,202,203,204,39,205,206,207,31,208,209,210,211,32],"Media","processing","transloadit media processing","media processing","transloadit","images","Video","ocr","Audio","pipeline","MCP","free","documents","mcp server","thumbnails","server","mcp-server",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":216,"sourceHtmlUrl":217,"categories":218,"keywords":222,"publishedAt":47},"01M71QDEJ4M9TP6VZRNK3J9NKX","theme-factory","Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors\u002Ffonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Ftheme-factory\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Ftheme-factory\u002FSKILL.md",[219],{"categoryNo":220,"categoryName":221,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000015","视觉设计",[223,224,225,43,226,123,227,228,229,230,170,141,231,125,232,233,126,234,173,235],"theme","theme factory","factory","slides","landing","pages","new","themes","apply","can","fonts","artifact","fly",{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":160,"licenseFileUrl":6,"sourceHtmlUrl":240,"categories":241,"keywords":245,"publishedAt":47},"01M71QD9QXM9M9RWQX40E981D4","terraform-azurerm-set-diff-analyzer","Analyze Terraform plan JSON output for AzureRM Provider to distinguish between false-positive diffs (order-only changes in Set-type attributes) and actual resource changes. Use when reviewing terraform plan output for Azure resources like Application Gateway, Load Balancer, Firewall, Front Door, NSG, and other resources with Set-type attributes that cause spurious diffs due to internal ordering changes.","https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fterraform-azurerm-set-diff-analyzer\u002FSKILL.md",[242],{"categoryNo":243,"categoryName":244,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000011","运维与部署",[43,246,247,248,249,250,251,252,253,123,254,255,256,257,258,259,260,261,148,262],"diff","terraform azurerm set diff analyzer","analyzer","terraform","gateway","firewall","resources","attributes","provider","resource changes","balancer","front","azure","diffs","load balancer","only","load"]