[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HY8SAMKNGQSXV7TMSVCQTJ":3,"skill-same:01M6HY8SAMKNGQSXV7TMSVCQTJ":71},{"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":23,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6HY8SAMKNGQSXV7TMSVCQTJ","skill-template-generator",null,"Generate properly-formatted SKILL.md files from extracted architectural patterns. Turns raw pattern descriptions into reusable skills that OpenSpace can discover, select, and evolve.","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",8024,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fskill-template-generator\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37],"template","skill template","generator","skill template generator","generate","select","evolve","files","reusable","patterns","pattern","discover","can","openspace","2026-11-10 10:12:30",false,"---\nname: skill-template-generator\ndescription: Generate properly-formatted SKILL.md files from extracted architectural patterns. Turns raw pattern descriptions into reusable skills that OpenSpace can discover, select, and evolve.\n---\n\n# Skill Template Generator\n\nGiven a structured pattern description (from `codebase-pattern-analyzer` or manual analysis), generate a valid SKILL.md file that OpenSpace can register, select for tasks, and evolve over time.\n\n## When to Use\n\n- After extracting a pattern from a reference codebase, you need to package it as a reusable skill\n- You want to create a new skill that teaches an agent how to perform a specific kind of task\n- You are converting informal documentation or code examples into the SKILL.md format\n\n## SKILL.md Format\n\nEvery skill is a directory containing at minimum a `SKILL.md` file:\n\n```\nmy-skill-name\u002F\n├── SKILL.md            # Required — the skill definition\n├── scripts\u002F            # Optional — helper scripts\n├── references\u002F         # Optional — reference data files\n└── assets\u002F             # Optional — images, templates\n```\n\n### Frontmatter (Required)\n\nThe file MUST start with YAML frontmatter containing exactly two fields:\n\n```yaml\n---\nname: my-skill-name\ndescription: One-sentence description of what this skill teaches. Must be specific enough for LLM skill selection to match it to relevant tasks.\n---\n```\n\n**Rules:**\n- `name` must match the directory name (kebab-case, lowercase)\n- `description` should be 15-40 words, include key terms an LLM would search for\n- No other frontmatter fields — everything else goes in the markdown body\n\n### Body Structure\n\nThe markdown body follows this template:\n\n```markdown\n# [Skill Title]\n\n[1-2 sentence summary of what this skill enables]\n\n## When to Use\n\n- [Trigger condition 1]\n- [Trigger condition 2]\n- [Trigger condition 3]\n\n## [Core Content Sections]\n\n[Step-by-step instructions, code templates, API references, etc.]\n\n## Key Patterns\n\n1. [Convention or best practice 1]\n2. [Convention or best practice 2]\n...\n```\n\n## Step 1: Determine Skill Category\n\nMatch the pattern to one of three OpenSpace categories:\n\n| Category | Use When | Example |\n|----------|----------|---------|\n| `tool_guide` | The skill teaches how to use a specific tool or technique | \"How to analyze a codebase\", \"How to use Finnhub API\" |\n| `workflow` | The skill prescribes an end-to-end procedure with ordered steps | \"Create a panel component\", \"Set up API proxy endpoint\" |\n| `reference` | The skill provides knowledge that informs decisions | \"WorldMonitor architecture index\", \"News API comparison\" |\n\nThe category affects how OpenSpace judges the skill during execution analysis:\n- **workflow**: Was the agent able to follow the prescribed steps?\n- **tool_guide**: Did the agent use the described tool\u002Fapproach?\n- **reference**: Did the knowledge influence agent decisions?\n\n## Step 2: Write the Description\n\nThe `description` field is the **most critical line** — it determines whether OpenSpace selects this skill for a given task.\n\n**Good descriptions** (specific, searchable):\n- \"Create a dashboard panel component using vanilla TypeScript DOM API, following the worldmonitor Panel architecture.\"\n- \"Integrate with Finnhub Stock API for real-time and historical stock market data.\"\n- \"CSS grid layout system for a responsive panel dashboard with dark theme.\"\n\n**Bad descriptions** (vague, generic):\n- \"A useful skill for building things.\"\n- \"TypeScript patterns.\"\n- \"How to make a panel.\"\n\n**Formula**: `[Action verb] + [specific subject] + [key technology\u002Fapproach] + [context\u002Fproject reference]`\n\n## Step 3: Write Actionable Instructions\n\nThe body must be concrete enough that an AI agent can follow it without guessing.\n\n### For Workflow Skills\n\nInclude:\n1. **File paths** — exact paths where files should be created (`src\u002Fcomponents\u002FMyPanel.ts`)\n2. **Code templates** — complete, runnable code blocks (not pseudocode)\n3. **Import statements** — every import the code needs\n4. **Interface definitions** — typed data shapes\n5. **Integration points** — how this connects to other parts of the project\n\nUse `{baseDir}` for paths relative to the skill directory:\n```\nRead the reference file at {baseDir}\u002Freferences\u002Fexample.json\n```\n\n### For Tool Guide Skills\n\nInclude:\n1. **API endpoints** — full URLs with parameter documentation\n2. **Auth mechanism** — how to authenticate (query param, header, etc.)\n3. **Response shapes** — JSON examples with field descriptions\n4. **Rate limits** — free tier limitations\n5. **Error handling** — common errors and how to handle them\n\n### For Reference Skills\n\nInclude:\n1. **Structured index** — tables, lists, or maps of the reference material\n2. **Key file paths** — where to find specific things in the reference codebase\n3. **Architecture decisions** — WHY certain patterns were chosen\n4. **Comparison tables** — alternatives and tradeoffs\n\n## Step 4: Add Dependency Hints\n\nIf the skill depends on patterns from other skills, mention them explicitly:\n\n```markdown\n## Prerequisites\n\nThis skill builds on:\n- `panel-component` — for the Panel base class\n- `data-service` — for the circuit breaker pattern\n- `api-proxy-endpoint` — for server-side API key isolation\n```\n\nThis helps OpenSpace understand skill composition when DERIVING new skills.\n\n## Step 5: Validate the Skill\n\nBefore saving, verify:\n\n1. **Frontmatter is valid YAML** — no tabs, proper indentation, quotes around special chars\n2. **Name matches directory** — `name: foo-bar` lives in `foo-bar\u002FSKILL.md`\n3. **Code blocks are complete** — every snippet can be copy-pasted and run\n4. **No broken references** — all file paths and URLs are valid\n5. **Description is specific** — would an LLM pick this skill for the right task?\n\n## Example: Converting a Pattern to a Skill\n\n**Input** (from codebase-pattern-analyzer):\n\n```\nPattern: Circuit Breaker Data Service\nSource: worldmonitor\u002Fsrc\u002Fservices\u002F*.ts\nCategory: service\nStructure: Module-level CircuitBreaker instance, async fetch functions, typed interfaces\nKey code: createCircuitBreaker({ name, cacheTtlMs }), breaker.execute(fn, default)\n```\n\n**Output** (`data-service\u002FSKILL.md`):\n\n```markdown\n---\nname: data-service\ndescription: Create data fetching services with circuit breaker pattern for API resilience. Services handle fetch, cache, retry, and expose typed data to panel components.\n---\n\n# Data Service Pattern\n\nEach panel's data comes from a dedicated service module in `src\u002Fservices\u002F`. ...\n\n## Circuit Breaker\n\n[Full implementation code]\n\n## Service Module Pattern\n\n[Template with typed interfaces, breaker usage, export functions]\n\n## Key Patterns\n\n1. One circuit breaker per API endpoint\n2. Export typed interfaces for data shapes\n3. Wrap fetch calls in breaker.execute(fn, defaultValue)\n...\n```\n\n## Evolution Hooks\n\nSkills generated by this workflow are designed to evolve:\n\n- **FIX**: When an API changes or code pattern breaks, OpenSpace updates the skill in-place\n- **DERIVED**: When a new panel needs a similar service, OpenSpace derives a specialized version\n- **CAPTURED**: When an agent discovers a novel pattern during execution, OpenSpace captures it as a new skill\n\nThe better the initial skill quality, the better the evolved descendants.\n\n","# Skill Template Generator\n\nGiven a structured pattern description (from `codebase-pattern-analyzer` or manual analysis), generate a valid SKILL.md file that OpenSpace can register, select for tasks, and evolve over time.\n\n## When to Use\n\n- After extracting a pattern from a reference codebase, you need to package it as a reusable skill\n- You want to create a new skill that teaches an agent how to perform a specific kind of task\n- You are converting informal documentation or code examples into the SKILL.md format\n\n## SKILL.md Format\n\nEvery skill is a directory containing at minimum a `SKILL.md` file:\n\n```\nmy-skill-name\u002F\n├── SKILL.md            # Required — the skill definition\n├── scripts\u002F            # Optional — helper scripts\n├── references\u002F         # Optional — reference data files\n└── assets\u002F             # Optional — images, templates\n```\n\n### Frontmatter (Required)\n\nThe file MUST start with YAML frontmatter containing exactly two fields:\n\n```yaml\n---\nname: my-skill-name\ndescription: One-sentence description of what this skill teaches. Must be specific enough for LLM skill selection to match it to relevant tasks.\n---\n```\n\n**Rules:**\n- `name` must match the directory name (kebab-case, lowercase)\n- `description` should be 15-40 words, include key terms an LLM would search for\n- No other frontmatter fields — everything else goes in the markdown body\n\n### Body Structure\n\nThe markdown body follows this template:\n\n```markdown\n# [Skill Title]\n\n[1-2 sentence summary of what this skill enables]\n\n## When to Use\n\n- [Trigger condition 1]\n- [Trigger condition 2]\n- [Trigger condition 3]\n\n## [Core Content Sections]\n\n[Step-by-step instructions, code templates, API references, etc.]\n\n## Key Patterns\n\n1. [Convention or best practice 1]\n2. [Convention or best practice 2]\n...\n```\n\n## Step 1: Determine Skill Category\n\nMatch the pattern to one of three OpenSpace categories:\n\n| Category | Use When | Example |\n|----------|----------|---------|\n| `tool_guide` | The skill teaches how to use a specific tool or technique | \"How to analyze a codebase\", \"How to use Finnhub API\" |\n| `workflow` | The skill prescribes an end-to-end procedure with ordered steps | \"Create a panel component\", \"Set up API proxy endpoint\" |\n| `reference` | The skill provides knowledge that informs decisions | \"WorldMonitor architecture index\", \"News API comparison\" |\n\nThe category affects how OpenSpace judges the skill during execution analysis:\n- **workflow**: Was the agent able to follow the prescribed steps?\n- **tool_guide**: Did the agent use the described tool\u002Fapproach?\n- **reference**: Did the knowledge influence agent decisions?\n\n## Step 2: Write the Description\n\nThe `description` field is the **most critical line** — it determines whether OpenSpace selects this skill for a given task.\n\n**Good descriptions** (specific, searchable):\n- \"Create a dashboard panel component using vanilla TypeScript DOM API, following the worldmonitor Panel architecture.\"\n- \"Integrate with Finnhub Stock API for real-time and historical stock market data.\"\n- \"CSS grid layout system for a responsive panel dashboard with dark theme.\"\n\n**Bad descriptions** (vague, generic):\n- \"A useful skill for building things.\"\n- \"TypeScript patterns.\"\n- \"How to make a panel.\"\n\n**Formula**: `[Action verb] + [specific subject] + [key technology\u002Fapproach] + [context\u002Fproject reference]`\n\n## Step 3: Write Actionable Instructions\n\nThe body must be concrete enough that an AI agent can follow it without guessing.\n\n### For Workflow Skills\n\nInclude:\n1. **File paths** — exact paths where files should be created (`src\u002Fcomponents\u002FMyPanel.ts`)\n2. **Code templates** — complete, runnable code blocks (not pseudocode)\n3. **Import statements** — every import the code needs\n4. **Interface definitions** — typed data shapes\n5. **Integration points** — how this connects to other parts of the project\n\nUse `{baseDir}` for paths relative to the skill directory:\n```\nRead the reference file at {baseDir}\u002Freferences\u002Fexample.json\n```\n\n### For Tool Guide Skills\n\nInclude:\n1. **API endpoints** — full URLs with parameter documentation\n2. **Auth mechanism** — how to authenticate (query param, header, etc.)\n3. **Response shapes** — JSON examples with field descriptions\n4. **Rate limits** — free tier limitations\n5. **Error handling** — common errors and how to handle them\n\n### For Reference Skills\n\nInclude:\n1. **Structured index** — tables, lists, or maps of the reference material\n2. **Key file paths** — where to find specific things in the reference codebase\n3. **Architecture decisions** — WHY certain patterns were chosen\n4. **Comparison tables** — alternatives and tradeoffs\n\n## Step 4: Add Dependency Hints\n\nIf the skill depends on patterns from other skills, mention them explicitly:\n\n```markdown\n## Prerequisites\n\nThis skill builds on:\n- `panel-component` — for the Panel base class\n- `data-service` — for the circuit breaker pattern\n- `api-proxy-endpoint` — for server-side API key isolation\n```\n\nThis helps OpenSpace understand skill composition when DERIVING new skills.\n\n## Step 5: Validate the Skill\n\nBefore saving, verify:\n\n1. **Frontmatter is valid YAML** — no tabs, proper indentation, quotes around special chars\n2. **Name matches directory** — `name: foo-bar` lives in `foo-bar\u002FSKILL.md`\n3. **Code blocks are complete** — every snippet can be copy-pasted and run\n4. **No broken references** — all file paths and URLs are valid\n5. **Description is specific** — would an LLM pick this skill for the right task?\n\n## Example: Converting a Pattern to a Skill\n\n**Input** (from codebase-pattern-analyzer):\n\n```\nPattern: Circuit Breaker Data Service\nSource: worldmonitor\u002Fsrc\u002Fservices\u002F*.ts\nCategory: service\nStructure: Module-level CircuitBreaker instance, async fetch functions, typed interfaces\nKey code: createCircuitBreaker({ name, cacheTtlMs }), breaker.execute(fn, default)\n```\n\n**Output** (`data-service\u002FSKILL.md`):\n\n```markdown\n---\nname: data-service\ndescription: Create data fetching services with circuit breaker pattern for API resilience. Services handle fetch, cache, retry, and expose typed data to panel components.\n---\n\n# Data Service Pattern\n\nEach panel's data comes from a dedicated service module in `src\u002Fservices\u002F`. ...\n\n## Circuit Breaker\n\n[Full implementation code]\n\n## Service Module Pattern\n\n[Template with typed interfaces, breaker usage, export functions]\n\n## Key Patterns\n\n1. One circuit breaker per API endpoint\n2. Export typed interfaces for data shapes\n3. Wrap fetch calls in breaker.execute(fn, defaultValue)\n...\n```\n\n## Evolution Hooks\n\nSkills generated by this workflow are designed to evolve:\n\n- **FIX**: When an API changes or code pattern breaks, OpenSpace updates the skill in-place\n- **DERIVED**: When a new panel needs a similar service, OpenSpace derives a specialized version\n- **CAPTURED**: When an agent discovers a novel pattern during execution, OpenSpace captures it as a new skill\n\nThe better the initial skill quality, the better the evolved descendants.\n\n",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fskill-template-generator",941,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-12 22:26:39",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add HKUDS\u002FAgentPilot --skill skill-template-generator",{"tool":57,"command":58},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill skill-template-generator",{"tool":60,"command":61},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill skill-template-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fskill-template-generator\u002FSKILL.md",true,[65],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},".skill_id","OTHER","其他",38,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fskill-template-generator\u002F.skill_id",[72,92,110,130,154,175],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":38},"01M6HYB297NDABRERJRVG0K8R0","agentpilot","Set up AgentPilot and use its single entry to prepare missing inputs and run configured RSI experiments. Use when the user requests AgentPilot installation or work with AgentPilot.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fplugins\u002Fagentpilot\u002Fskills\u002Fagentpilot\u002FSKILL.md",[],[74,79,80,81,82,83,84,85,86,87,88,89,90,91],"prepare","requests","with","missing","installation","rsi","up","use","user","work","SET","run","experiments",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":38},"01M6HYAYWXTTE1J7DJM0MFNQ4H","remember","Review auto-memory entries and propose promotions to OPENSPACE.md, OPENSPACE.local.md, or retained auto-memory topics; detect duplicates, stale facts, conflicts, and ambiguous entries before making changes.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fskills\u002Fremember\u002FSKILL.md",[],[94,99,100,101,37,102,103,104,105,106,107,108,109],"memory","review","auto","changes","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":38},"01M6HYAVMPM4SBDV60R2B5HPV8","skill-discovery","Search reusable OpenSpace skills locally, and browse cloud packages step by step when a cloud skill may help. Reusing proven skills saves tokens, improves reliability, and extends your capabilities beyond built-in tools.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fskill-discovery\u002FSKILL.md",[116],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[118,119,32,37,120,121,122,123,124,125,126,127,128,129],"skill discovery","discovery","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":38},"01M6HYAR811B3RB0M50RBEDGN6","delegate-task","Delegate tasks to OpenSpace — a full-stack autonomous worker for coding, DevOps, web research, and desktop automation, backed by an extensive MCP tool and skill library. Skills auto-improve through use, reducing token consumption over time. A cloud community lets agents share and collectively evolve reusable skills.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fdelegate-task\u002FSKILL.md",[136],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[138,139,140,37,141,142,143,144,145,32,101,86,146,147,148,149,150,151,152,153],"delegate","task","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","for","share","tasks","automation","MCP",{"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":38},"01M6HYAM9FSGV6E52AYENDQXYH","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[161,162,163,164,31,165,166,24,167,168,169,170,171,172,149,173,174],"write special chars ts check","write","check","type","filters","only","file","python","typescript","output","Existing","type-checking","errors","script",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":38},"01M6HYAH05HGV7SVWSVR8PJRQD","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[182,183,162,81,149,174,184,185,186,187,188,24,167,189,190,168],"write special chars readback","readback","helper","post","via","scripts","read","verification","cleanup"]