[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6J061CNDD3H5SV7RJR92W":3,"skill-same:01M6C6J061CNDD3H5SV7RJR92W":68},{"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":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6C6J061CNDD3H5SV7RJR92W","javascript-typescript",null,"JavaScript and TypeScript development with ES6+, Node.js, React, and modern web frameworks. Use for frontend, backend, or full-stack JavaScript\u002FTypeScript projects.","julianromli\u002Fopencode-template","julianromli","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F203207881?v=4","01M6C6GJEG5K9YR2STFXT11YMS","faizntfd","01M6C6GJJZJN5SSD8ZWRSPN63A",146,"MIT","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fjavascript-typescript\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37],"typescript","javascript","javascript typescript","frontend","web","react","development","js","projects","stack","node","use","backend","web frameworks","2026-11-10 10:12:30",false,"---\nname: javascript-typescript\ndescription: JavaScript and TypeScript development with ES6+, Node.js, React, and modern web frameworks. Use for frontend, backend, or full-stack JavaScript\u002FTypeScript projects.\nsource: wshobson\u002Fagents\nlicense: MIT\n---\n\n# JavaScript\u002FTypeScript Development\n\n## TypeScript Configuration\n\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"noImplicitOverride\": true,\n    \"skipLibCheck\": true,\n    \"declaration\": true,\n    \"outDir\": \".\u002Fdist\"\n  },\n  \"include\": [\"src\u002F**\u002F*\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n```\n\n## Type Patterns\n\n### Utility Types\n```typescript\n\u002F\u002F Pick specific properties\ntype UserPreview = Pick\u003CUser, 'id' | 'name'>;\n\n\u002F\u002F Omit properties\ntype CreateUser = Omit\u003CUser, 'id' | 'createdAt'>;\n\n\u002F\u002F Make all properties optional\ntype PartialUser = Partial\u003CUser>;\n\n\u002F\u002F Make all properties required\ntype RequiredUser = Required\u003CUser>;\n\n\u002F\u002F Extract union types\ntype Status = 'pending' | 'active' | 'inactive';\ntype ActiveStatus = Extract\u003CStatus, 'active' | 'pending'>;\n```\n\n### Discriminated Unions\n```typescript\ntype Result\u003CT> =\n  | { success: true; data: T }\n  | { success: false; error: Error };\n\nfunction handleResult\u003CT>(result: Result\u003CT>) {\n  if (result.success) {\n    console.log(result.data); \u002F\u002F T\n  } else {\n    console.error(result.error); \u002F\u002F Error\n  }\n}\n```\n\n### Generic Constraints\n```typescript\ninterface HasId {\n  id: string | number;\n}\n\nfunction findById\u003CT extends HasId>(items: T[], id: T['id']): T | undefined {\n  return items.find(item => item.id === id);\n}\n```\n\n## Modern JavaScript\n\n### Destructuring & Spread\n```javascript\nconst { name, ...rest } = user;\nconst merged = { ...defaults, ...options };\nconst [first, ...others] = items;\n```\n\n### Optional Chaining & Nullish Coalescing\n```javascript\nconst city = user?.address?.city ?? 'Unknown';\nconst count = data?.items?.length ?? 0;\n```\n\n### Array Methods\n```javascript\nconst adults = users.filter(u => u.age >= 18);\nconst names = users.map(u => u.name);\nconst total = items.reduce((sum, item) => sum + item.price, 0);\nconst hasAdmin = users.some(u => u.role === 'admin');\nconst allActive = users.every(u => u.active);\n```\n\n## React Patterns\n\n```typescript\n\u002F\u002F Props with children\ninterface CardProps {\n  title: string;\n  children: React.ReactNode;\n}\n\n\u002F\u002F Event handlers\ninterface ButtonProps {\n  onClick: (event: React.MouseEvent\u003CHTMLButtonElement>) => void;\n}\n\n\u002F\u002F Custom hooks\nfunction useLocalStorage\u003CT>(key: string, initial: T) {\n  const [value, setValue] = useState\u003CT>(() => {\n    const stored = localStorage.getItem(key);\n    return stored ? JSON.parse(stored) : initial;\n  });\n\n  useEffect(() => {\n    localStorage.setItem(key, JSON.stringify(value));\n  }, [key, value]);\n\n  return [value, setValue] as const;\n}\n```\n\n## Node.js Patterns\n\n```typescript\n\u002F\u002F ES Modules\nimport { readFile } from 'node:fs\u002Fpromises';\nimport { join } from 'node:path';\n\n\u002F\u002F Error handling\nprocess.on('unhandledRejection', (reason) => {\n  console.error('Unhandled Rejection:', reason);\n  process.exit(1);\n});\n```\n","# JavaScript\u002FTypeScript Development\n\n## TypeScript Configuration\n\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"noImplicitOverride\": true,\n    \"skipLibCheck\": true,\n    \"declaration\": true,\n    \"outDir\": \".\u002Fdist\"\n  },\n  \"include\": [\"src\u002F**\u002F*\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n```\n\n## Type Patterns\n\n### Utility Types\n```typescript\n\u002F\u002F Pick specific properties\ntype UserPreview = Pick\u003CUser, 'id' | 'name'>;\n\n\u002F\u002F Omit properties\ntype CreateUser = Omit\u003CUser, 'id' | 'createdAt'>;\n\n\u002F\u002F Make all properties optional\ntype PartialUser = Partial\u003CUser>;\n\n\u002F\u002F Make all properties required\ntype RequiredUser = Required\u003CUser>;\n\n\u002F\u002F Extract union types\ntype Status = 'pending' | 'active' | 'inactive';\ntype ActiveStatus = Extract\u003CStatus, 'active' | 'pending'>;\n```\n\n### Discriminated Unions\n```typescript\ntype Result\u003CT> =\n  | { success: true; data: T }\n  | { success: false; error: Error };\n\nfunction handleResult\u003CT>(result: Result\u003CT>) {\n  if (result.success) {\n    console.log(result.data); \u002F\u002F T\n  } else {\n    console.error(result.error); \u002F\u002F Error\n  }\n}\n```\n\n### Generic Constraints\n```typescript\ninterface HasId {\n  id: string | number;\n}\n\nfunction findById\u003CT extends HasId>(items: T[], id: T['id']): T | undefined {\n  return items.find(item => item.id === id);\n}\n```\n\n## Modern JavaScript\n\n### Destructuring & Spread\n```javascript\nconst { name, ...rest } = user;\nconst merged = { ...defaults, ...options };\nconst [first, ...others] = items;\n```\n\n### Optional Chaining & Nullish Coalescing\n```javascript\nconst city = user?.address?.city ?? 'Unknown';\nconst count = data?.items?.length ?? 0;\n```\n\n### Array Methods\n```javascript\nconst adults = users.filter(u => u.age >= 18);\nconst names = users.map(u => u.name);\nconst total = items.reduce((sum, item) => sum + item.price, 0);\nconst hasAdmin = users.some(u => u.role === 'admin');\nconst allActive = users.every(u => u.active);\n```\n\n## React Patterns\n\n```typescript\n\u002F\u002F Props with children\ninterface CardProps {\n  title: string;\n  children: React.ReactNode;\n}\n\n\u002F\u002F Event handlers\ninterface ButtonProps {\n  onClick: (event: React.MouseEvent\u003CHTMLButtonElement>) => void;\n}\n\n\u002F\u002F Custom hooks\nfunction useLocalStorage\u003CT>(key: string, initial: T) {\n  const [value, setValue] = useState\u003CT>(() => {\n    const stored = localStorage.getItem(key);\n    return stored ? JSON.parse(stored) : initial;\n  });\n\n  useEffect(() => {\n    localStorage.setItem(key, JSON.stringify(value));\n  }, [key, value]);\n\n  return [value, setValue] as const;\n}\n```\n\n## Node.js Patterns\n\n```typescript\n\u002F\u002F ES Modules\nimport { readFile } from 'node:fs\u002Fpromises';\nimport { join } from 'node:path';\n\n\u002F\u002F Error handling\nprocess.on('unhandledRejection', (reason) => {\n  console.error('Unhandled Rejection:', reason);\n  process.exit(1);\n});\n```\n",{"name":5,"source":43,"license":15,"description":7},"wshobson\u002Fagents","main","37ceab2d64a33708c9b54c3a002007082a49c3b6","skill\u002Fjavascript-typescript",21,"https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template","https:\u002F\u002Fthreads.com\u002F@faizntfd","https:\u002F\u002Fgithub.com\u002Fjulianromli","faizintifada.my.id","make it minimalist.","2026-02-03 09:49:24",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add julianromli\u002Fopencode-template --skill javascript-typescript",{"tool":60,"command":61},"bunx","bunx skills add julianromli\u002Fopencode-template --skill javascript-typescript",{"tool":63,"command":64},"pnpm","pnpm dlx skills add julianromli\u002Fopencode-template --skill javascript-typescript","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fjavascript-typescript\u002FSKILL.md",true,[],[69,87,106,136,159,174],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":38},"01M6C6JDAQ0KJ6H99RV5ZCPVVY","python-development","Modern Python development with Python 3.12+, Django, FastAPI, async patterns, and production best practices. Use for Python projects, APIs, data processing, or automation scripts.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fpython-development\u002FSKILL.md",[],[76,77,30,78,79,80,81,32,82,83,84,35,85,86],"python development","python","automation","best practices","data","Production","data processing","django","fastapi","modern python","async",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":96,"publishedAt":38},"01M6C6J3ABG2Q5CGHE54EVB27X","llm-application-dev","Building applications with Large Language Models - prompt engineering, RAG patterns, and LLM integration. Use for AI-powered features, chatbots, or LLM-based automation.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fllm-application-dev\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[97,98,99,100,101,78,102,103,104,105,35],"dev","llm application dev","large language models","prompt","prompt engineering","rag","integration","engineering","applications",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":123,"publishedAt":38},"01M6C6HAD8YQQ1F8QG04VKXFQ5","database-design","Database schema design, optimization, and migration patterns for PostgreSQL, MySQL, and NoSQL databases. Use for designing schemas, writing migrations, or optimizing queries.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fdatabase-design\u002FSKILL.md",[112,115,118],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[124,125,126,127,128,129,130,35,131,132,133,134,135],"design","database","database design","schema design","databases","migration","schema","nosql","Optimization","writing","mysql","postgresql",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":140,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":149,"publishedAt":38},"01M6C6H7TSM5J3BE0AKXY2DMT7","code-review","Automated code review for pull requests using specialized review patterns. Analyzes code for quality, security, performance, and best practices. Use when reviewing code changes, PRs, or doing code audits.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fcode-review\u002FSKILL.md",[143,146],{"categoryNo":144,"categoryName":145,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":147,"categoryName":148,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000030","开发工程师",[150,151,152,35,153,154,155,79,156,157,158],"code review","review","code","security","performance","pull requests","pull","quality","specialized",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":38},"01M6C6H5B43Y3S2BHKQ828G6W4","code-refactoring","Code refactoring patterns and techniques for improving code quality without changing behavior. Use for cleaning up legacy code, reducing complexity, or improving maintainability.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fcode-refactoring\u002FSKILL.md",[165],{"categoryNo":147,"categoryName":148,"taxonomyType":121,"taxonomyTypeDesc":122},[167,168,152,157,169,170,35,171,172,173],"code refactoring","refactoring","code quality","behavior","up","complexity","Legacy",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":140,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":183,"publishedAt":38},"01M6C6GVSM08MQKJR0PNC5E17N","backend-dev","Comprehensive backend development workflow that orchestrates expert analysis, architecture design, implementation, and deployment using the integrated toolset. Handles everything from API design and database architecture to security implementation and DevOps automation.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fbackend-dev\u002FSKILL.md",[180,181,182],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":94,"categoryName":95,"taxonomyType":21,"taxonomyTypeDesc":22},[184,36,97,125,185,186,187,188,189,190,30,191,192,193,78,194,153,124],"backend dev","implementation","development workflow","backend development","devops","api","analysis","deployment","api design","architecture","workflow"]