[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EFF72KSW9X908WDA8E5BP0":3,"skill-same:01M6EFF72KSW9X908WDA8E5BP0":108},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M6EFF72KSW9X908WDA8E5BP0","markdown-writer",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fmarkdown-writer\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30],"markdown","writer","markdown writer","2026-11-10 10:12:30",false,"# Markdown Writer\n\n## Overview\n\nGenerate well-structured technical documentation in Markdown format. Covers READMEs, API docs, how-to guides, changelogs, and any structured technical content using documentation best practices.\n\n## Instructions\n\nWhen a user asks you to write documentation or Markdown content, follow these steps:\n\n### Step 1: Determine the document type\n\n| Type | Purpose | Audience |\n|------|---------|----------|\n| README | Project introduction, setup, usage | New users and contributors |\n| API docs | Endpoint reference with parameters and responses | Developers integrating the API |\n| How-to guide | Step-by-step walkthrough for a specific task | Users solving a problem |\n| Tutorial | Learning-oriented, progressive complexity | Beginners |\n| Reference | Complete technical specification | Experienced users |\n| Changelog | Version history with changes | All users |\n| ADR | Architecture decision record | Team members |\n\n### Step 2: Gather information\n\nBefore writing, collect:\n- Read the codebase to understand what the project does\n- Check existing docs for tone and style\n- Identify the target audience (beginner, intermediate, expert)\n- Note any prerequisites or dependencies\n- Find code examples that demonstrate real usage\n\n### Step 3: Write using these templates\n\n**README template:**\n```markdown\n# Project Name\n\nOne-line description of what this project does.\n\n## Installation\n\n\\`\\`\\`bash\nnpm install project-name\n\\`\\`\\`\n\n## Quick Start\n\n\\`\\`\\`javascript\nconst lib = require('project-name');\nlib.doSomething();\n\\`\\`\\`\n\n## Usage\n\n### Feature One\nExplain the feature with a code example.\n\n### Feature Two\nExplain the feature with a code example.\n\n## API Reference\n\n### `functionName(param1, param2)`\n- `param1` (string): Description\n- `param2` (number, optional): Description. Default: `10`\n- Returns: `Promise\u003CResult>`\n\n## Configuration\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `port` | number | `3000` | Server port |\n| `debug` | boolean | `false` | Enable debug logging |\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT\n```\n\n**API endpoint documentation:**\n```markdown\n### Create a User\n\n\\`\\`\\`\nPOST \u002Fapi\u002Fusers\n\\`\\`\\`\n\n**Request body:**\n| Field | Type | Required | Description |\n|-------|------|----------|-------------|\n| `name` | string | Yes | Full name |\n| `email` | string | Yes | Email address |\n| `role` | string | No | Default: `\"user\"` |\n\n**Example request:**\n\\`\\`\\`bash\ncurl -X POST https:\u002F\u002Fapi.example.com\u002Fusers \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Jane Doe\", \"email\": \"jane@example.com\"}'\n\\`\\`\\`\n\n**Response (201 Created):**\n\\`\\`\\`json\n{\n  \"id\": 42,\n  \"name\": \"Jane Doe\",\n  \"email\": \"jane@example.com\",\n  \"role\": \"user\",\n  \"created_at\": \"2024-03-15T10:30:00Z\"\n}\n\\`\\`\\`\n\n**Error responses:**\n| Status | Description |\n|--------|-------------|\n| `400` | Invalid request body |\n| `409` | Email already exists |\n```\n\n**How-to guide template:**\n```markdown\n# How to Deploy to Production\n\n## Prerequisites\n- Docker 20+ installed\n- AWS CLI configured with credentials\n\n## Steps\n\n### 1. Build the image\n\\`\\`\\`bash\ndocker build -t myapp:latest .\n\\`\\`\\`\n\n### 2. Push to registry\n\\`\\`\\`bash\ndocker tag myapp:latest ecr.example.com\u002Fmyapp:latest\ndocker push ecr.example.com\u002Fmyapp:latest\n\\`\\`\\`\n\n### 3. Deploy\n\\`\\`\\`bash\naws ecs update-service --cluster prod --service myapp --force-new-deployment\n\\`\\`\\`\n\n## Troubleshooting\n\n**Build fails with \"out of memory\":**\nIncrease Docker memory limit to at least 4GB in Docker Desktop settings.\n\n**Deployment times out:**\nCheck that the health check endpoint returns 200 within 30 seconds.\n```\n\n### Step 4: Review and polish\n\nChecklist before delivering:\n- [ ] Title clearly states what the document covers\n- [ ] Code examples are copy-paste ready (no placeholders that would break)\n- [ ] Tables are used for structured data instead of long prose\n- [ ] Headings follow a logical hierarchy (H1 > H2 > H3)\n- [ ] Links are included for external references\n- [ ] Prerequisites are listed before steps that require them\n\n## Examples\n\n### Example 1: Generate a README for a CLI tool\n\n**User request:** \"Write a README for my Node.js CLI tool that converts images\"\n\n**Output structure:**\n```\n# img-convert\n\nFast image format conversion from the command line.\n\n## Installation\n  npm install -g img-convert\n\n## Usage\n  img-convert input.png output.webp\n  img-convert --quality 80 --resize 800x600 photo.jpg photo.webp\n  img-convert --batch src\u002F*.png --format webp --outdir dist\u002F\n\n## Options (table with flag, type, default, description)\n\n## Supported Formats (table)\n\n## Examples (3-4 real usage scenarios)\n\n## Contributing\n\n## License\n```\n\n### Example 2: Document an existing API from code\n\n**User request:** \"Generate API docs from my Express routes\"\n\n**Process:**\n1. Read all route files to identify endpoints\n2. Extract HTTP method, path, middleware, request\u002Fresponse types\n3. Generate one section per endpoint with method, path, parameters, body, response, and example\n\n**Output structure:**\n```\n# API Reference\n\nBase URL: `https:\u002F\u002Fapi.example.com\u002Fv1`\nAuthentication: Bearer token in Authorization header\n\n## Users\n### GET \u002Fusers - List all users\n### GET \u002Fusers\u002F:id - Get a user\n### POST \u002Fusers - Create a user\n### PUT \u002Fusers\u002F:id - Update a user\n### DELETE \u002Fusers\u002F:id - Delete a user\n\n## Orders\n### GET \u002Forders - List orders\n### POST \u002Forders - Create an order\n```\n\nEach endpoint includes parameters table, example request, and example response.\n\n## Guidelines\n\n- Write for the reader, not yourself. Assume the reader has never seen this project.\n- Start with the most common use case, not edge cases.\n- Every code example must be complete enough to run. Do not leave out imports or setup.\n- Use tables for anything with more than 3 key-value pairs. Tables are faster to scan than paragraphs.\n- Keep paragraphs short (3-4 sentences max). Use bullet points for lists of items.\n- Link to related documents rather than duplicating content.\n- Use consistent formatting: backticks for code, bold for UI elements, italics sparingly.\n- For API docs, always include at least one complete request\u002Fresponse example per endpoint.\n- Version documentation alongside code. If the API changes, the docs must change.\n- Do not document obvious things. \"The `name` field is the name\" adds no value.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FTerminalSkills\u002Fskills\u002Fmarkdown-writer",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill markdown-writer",{"tool":50,"command":51},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill markdown-writer",{"tool":53,"command":54},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill markdown-writer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fmarkdown-writer\u002FSKILL.md",true,[58,64,70,74,80,84,88,92,96,100,104],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"forms.md","REFERENCE","参考文档",9438,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fforms.md",{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"LICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002FLICENSE.txt",{"path":71,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":72,"sourceHtmlUrl":73},"reference.md",16692,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Freference.md",{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"scripts\u002Fexecutable_check_bounding_boxes_test.py","SCRIPT","脚本",8818,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_check_bounding_boxes_test.py",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Fexecutable_check_bounding_boxes.py",3137,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_check_bounding_boxes.py",{"path":85,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fexecutable_check_fillable_fields.py",361,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_check_fillable_fields.py",{"path":89,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fexecutable_convert_pdf_to_images.py",1123,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_convert_pdf_to_images.py",{"path":93,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Fexecutable_extract_form_field_info.py",6126,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_extract_form_field_info.py",{"path":97,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Fexecutable_fill_fillable_fields.py",4863,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_fill_fillable_fields.py",{"path":101,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002Fexecutable_fill_pdf_form_with_annotations.py",3596,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_fill_pdf_form_with_annotations.py",{"path":105,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002Fexecutable_literal_create_validation_image.py",1602,"https:\u002F\u002Fgithub.com\u002FThamielis\u002F.agents\u002Fblob\u002Fmain\u002Fskills\u002Fpdf\u002Fscripts\u002Fexecutable_literal_create_validation_image.py",[109,121,131,140,146,153],{"skillNo":110,"name":111,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":117,"publishedAt":31},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[118,119,120],"model","model hierarchy","model hierarchy skill",{"skillNo":122,"name":123,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":31},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[126],{"categoryNo":115,"categoryName":116,"taxonomyType":20,"taxonomyTypeDesc":21},[128,129,130],"MCP","zoom","zoom mcp",{"skillNo":132,"name":133,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":31},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[137,138,139,129],"sdk","zoom apps sdk","apps",{"skillNo":141,"name":142,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":31},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[142],{"skillNo":147,"name":148,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":31},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[151],{"categoryNo":115,"categoryName":116,"taxonomyType":20,"taxonomyTypeDesc":21},[148],{"skillNo":154,"name":155,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":31},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[155]]