[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MXF5RYF720YXZGSZYXC17V":3,"skill-same:01M6MXF5RYF720YXZGSZYXC17V":62},{"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":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6MXF5RYF720YXZGSZYXC17V","api-designer",null,"miniidealab\u002Fopenlogos","miniidealab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4251156?v=4","01M6MX6BM454XESZCRPBQQHKRT","FredHuang","01M6MX6BR4417H4QA658D4GW9X",581,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Flogos\u002Fchanges\u002Farchive\u002F20260829-2333-release-0-14-1-local\u002Fdeployment-artifacts-20260830T0554Z\u002Fcandidate-unpack\u002Fpackage\u002Fskills\u002Fapi-designer\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30],"api","designer","api designer","2026-11-10 10:12:30",false,"# Skill: API Designer\n\n> 基于时序图设计 OpenAPI 3.0+ YAML 规格，让 API 从场景中自然浮现而非凭空定义。每个端点可追溯到时序图的 Step 编号，确保\"无场景不设计 API\"。\n\n## 触发条件\n\n- 用户要求设计 API 或编写 API 文档\n- 用户提到 \"Phase 3 Step 2\"、\"API 设计\"\n- 已有场景时序图，需要细化 API 规格\n- 用户提供了一个 API 端点需要详细设计\n\n## 前置依赖\n\n- `logos\u002Fresources\u002Fprd\u002F3-technical-plan\u002F2-scenario-implementation\u002F` 中包含场景时序图\n- `logos\u002Fresources\u002Fprd\u002F3-technical-plan\u002F1-architecture\u002F` 中包含架构概要（确认前后端分离方式、认证方案等）\n- `logos-project.yaml` 的 `tech_stack` 已填写\n\n如果时序图目录为空，提示用户先完成 Phase 3 Step 1（scenario-architect）。\n\n## 核心能力\n\n1. 从时序图中提取所有跨系统边界的 API 调用\n2. 去重、合并、按领域分组，形成端点清单\n3. 设计 OpenAPI 3.0+ YAML 规格（路径、参数、请求体、响应结构）\n4. 定义统一的错误响应格式和错误码体系\n5. 设计认证方案（Bearer Token \u002F API Key \u002F Cookie）\n6. 设计分页、排序、过滤的标准化参数\n\n## 执行步骤\n\n### Step 1: 读取场景上下文\n\n读取以下文件建立完整上下文：\n\n- **场景时序图**（`logos\u002Fresources\u002Fprd\u002F3-technical-plan\u002F2-scenario-implementation\u002F`）：提取所有跨系统边界的箭头\n- **架构概要**（`logos\u002Fresources\u002Fprd\u002F3-technical-plan\u002F1-architecture\u002F`）：确认认证方案、前后端分离方式、API 网关等\n- **`logos-project.yaml`**：读取 `tech_stack` 确认后端框架和部署方式\n\n### Step 2: 提取端点清单\n\n遍历所有场景时序图，收集每个跨系统边界的调用箭头：\n\n1. 识别\"跨系统边界\"的箭头——客户端到服务端、服务端到外部服务、服务间调用\n2. 为每个箭头提取：HTTP 方法、路径、所属场景编号和 Step 编号\n3. 去重合并——同一个端点可能在多个场景中出现（如 `POST \u002Fapi\u002Fauth\u002Flogin` 可能在 S02 和 S03 都有）\n4. 输出端点清单摘要供用户确认：\n\n```markdown\n从时序图中识别到 N 个 API 端点：\n\n| # | 方法 | 路径 | 来源场景 | 领域 |\n|---|------|------|---------|------|\n| 1 | POST | \u002Fapi\u002Fauth\u002Fregister | S01 Step 2 | auth |\n| 2 | POST | \u002Fapi\u002Fauth\u002Flogin | S02 Step 1 | auth |\n| 3 | GET  | \u002Fapi\u002Fprojects | S04 Step 1 | projects |\n```\n\n### Step 3: 按领域分组\n\n将端点按业务领域分组，每组对应一个 YAML 文件：\n\n- `auth.yaml` — 认证相关（注册、登录、登出、重置密码）\n- `projects.yaml` — 核心业务对象的 CRUD\n- `billing.yaml` — 支付和订阅\n\n分组原则：\n- 同一数据实体的操作放在一起\n- 认证\u002F授权独立分组\n- 第三方服务回调（如支付回调）放在对应业务领域\n\n### Step 4: 设计统一约定\n\n在生成具体端点前，先确定全局约定：\n\n**认证方案**（从架构概要中读取）：\n\n```yaml\ncomponents:\n  securitySchemes:\n    bearerAuth:\n      type: http\n      scheme: bearer\n      bearerFormat: JWT\n```\n\n**统一错误响应**：\n\n```yaml\ncomponents:\n  schemas:\n    ErrorResponse:\n      type: object\n      required: [code, message]\n      properties:\n        code:\n          type: string\n          description: 机器可读的错误码（如 EMAIL_EXISTS）\n        message:\n          type: string\n          description: 人类可读的错误描述\n        details:\n          type: object\n          description: 附加错误信息（如字段级校验错误）\n```\n\n**分页参数**（适用于列表端点）：\n\n```yaml\nparameters:\n  - name: page\n    in: query\n    schema: { type: integer, minimum: 1, default: 1 }\n  - name: per_page\n    in: query\n    schema: { type: integer, minimum: 1, maximum: 100, default: 20 }\n```\n\n### Step 5: 逐端点设计详细规格\n\n为每个端点设计完整的 OpenAPI 规格，**逐领域输出**，每完成一个领域暂停让用户 review：\n\n每个端点必须包含：\n- `operationId`：唯一标识符，用于代码生成\n- `summary`：一句话描述\n- `description`：标注来源时序图步骤（如 `来源：S01 Step 2 → Step 3`）\n- `requestBody`：包含所有字段的 schema（含 required、类型、校验规则如 minLength\u002Fformat）\n- `responses`：覆盖正常响应 + 所有已知异常（从时序图的 EX 用例中提取）\n\n**示例**：\n\n```yaml\npaths:\n  \u002Fapi\u002Fauth\u002Fregister:\n    post:\n      operationId: register\n      summary: 用户注册\n      description: \"来源：S01 Step 2 → Step 3\"\n      requestBody:\n        required: true\n        content:\n          application\u002Fjson:\n            schema:\n              type: object\n              required: [email, password]\n              properties:\n                email: { type: string, format: email }\n                password: { type: string, minLength: 8 }\n      responses:\n        '201':\n          description: 注册成功，发送验证邮件\n          content:\n            application\u002Fjson:\n              schema:\n                type: object\n                properties:\n                  userId: { type: string, format: uuid }\n                  message: { type: string }\n        '409':\n          description: \"邮箱已被注册（EX-2.1）\"\n          content:\n            application\u002Fjson:\n              schema:\n                $ref: '#\u002Fcomponents\u002Fschemas\u002FErrorResponse'\n        '422':\n          description: 请求参数校验失败\n          content:\n            application\u002Fjson:\n              schema:\n                $ref: '#\u002Fcomponents\u002Fschemas\u002FErrorResponse'\n```\n\n### Step 6: 验证追溯完整性\n\n输出完成后，做一次追溯检查：\n\n1. **正向检查**：每个时序图中的跨系统箭头都有对应的 API 端点\n2. **反向检查**：每个 API 端点的 `description` 都标注了来源 Step\n3. **异常覆盖**：时序图中的每个 EX 用例都有对应的 HTTP 错误响应\n\n如果发现遗漏，补充后再输出最终版本。\n\n## 输出规范\n\n- 文件格式：OpenAPI 3.1 YAML\n- 存放位置：`logos\u002Fresources\u002Fapi\u002F`\n- 按领域分文件：`auth.yaml`、`projects.yaml`、`billing.yaml`\n- 每个文件包含完整的 `openapi`、`info`、`paths`、`components` 段\n- 错误响应统一引用 `$ref: '#\u002Fcomponents\u002Fschemas\u002FErrorResponse'`\n- 每个端点的 `description` 必须标注来源时序图步骤\n\n## YAML 格式规则（必须遵守）\n\nYAML 对空白和特殊字符敏感。AI 生成的 YAML 经常因为特殊字符未加引号而导致解析失败。**必须严格遵守以下规则：**\n\n1. **`description` 和 `summary` 的值必须用双引号包裹** — 任何包含 `:`、`→`、`#`、`&`、`*`、`!`、`>`、`|`、`%`、`@`、`` ` ``、`{`、`}`、`[`、`]` 的字符串都必须用 `\"...\"` 包裹。\n   ```yaml\n   # ❌ 错误 — 冒号和箭头导致 YAML 解析失败\n   description: 来源：S05 Step 1 → Step 4.\n\n   # ✅ 正确\n   description: \"来源：S05 Step 1 → Step 4.\"\n   ```\n2. **响应状态码 key 必须加引号** — 使用 `'201'` 而非 `201`，防止 YAML 将其解析为整数。\n3. **生成后自检** — 每生成一个 YAML 文件后，重新审视是否存在未加引号的特殊字符。尤其注意引用场景步骤的 `description` 字段（它们总是包含 `:`）。\n4. **拿不准就加引号** — 给安全字符串加引号无害，但漏掉危险字符串的引号会导致整个文件解析失败。\n\n## 实践经验\n\n- **API 从时序图浮现**：如果一个 API 在时序图中找不到出处，它大概率不应该存在。先画时序图再设计 API，而非反过来\n- **路径命名**：RESTful 风格，使用复数名词，`\u002Fapi\u002F{resource}`\n- **版本前缀**：初期不加版本前缀（`\u002Fapi\u002Fauth\u002Fregister`），需要版本管理时再加 `\u002Fapi\u002Fv2\u002F`\n- **状态码语义**：严格遵循 HTTP 状态码语义——200 成功、201 创建、400 参数错误、401 未认证、403 无权限、404 不存在、409 冲突、422 校验失败、500 服务错误\n- **幂等设计**：PUT\u002FDELETE 操作必须幂等\n- **敏感数据**：响应中不包含密码、token 等敏感信息的明文\n- **逐领域输出**：不要一次输出所有端点——按领域分批输出，每批让用户 review 后再继续\n- **字段命名一致**：API 中的字段名要与后续 DB 设计中的列名保持一致（或有明确的映射规则），避免代码层出现不必要的字段转换\n\n## 推荐提示词\n\n以下提示词可以直接复制给 AI 使用：\n\n- `帮我设计 API`\n- `基于时序图帮我生成 OpenAPI YAML`\n- `帮我设计 S01 相关的 API 规格`\n- `帮我把所有时序图中的跨系统调用提取为 API`\n\n## ⚠️ 收尾步骤（强制）：更新 resource_index\n\n完成本 Skill 的所有 OpenAPI YAML 产出后，**必须**将新生成的文件追加写入 `logos\u002Flogos-project.yaml` 的 `resource_index` 字段：\n\n```yaml\nresource_index:\n  # ...已有条目...\n  - path: logos\u002Fresources\u002Fapi\u002F\u003C文件名>.yaml\n    desc: \u003C领域名称> API 规格（OpenAPI 3.x）。涉及 \u003C相关端点> 的请求\u002F响应结构、状态码、认证方式时必读。\n```\n\n**不执行此步骤将导致后续 test-writer\u002Fcode-implementor 无法感知 API 规格文件，AI 将无法基于正确的接口定义编写测试和代码。**\n\n## S39 delta 模式：从 effective sequence 生成唯一 API delta\n\n### 激活与前置\n\n仅当 on-touch-v1 闭包矩阵判定 API\u002Finterface 适用时启用。必须先存在 effective scenario sequence；若没有时序来源，返回 AMBIGUOUS\u002F前置缺失，禁止直接从用户一句话猜 OpenAPI。\n\n当前 change-writer 拥有最终文件写入权；本 Skill 返回 API 内容、验证结论与 orchestration 影响，不得创建第二份“API 基线 delta”。\n\n### 适用性\n\n以下任一成立则 API 适用：HTTP、RPC、GraphQL、稳定 CLI\u002F进程协议、消息 topic\u002Fevent、webhook 或其它跨边界公开契约。纯进程内调用且无稳定外部协议可证据化 SKIP。\n\nadopted 历史 `skip_phases: [api]` 不是永久禁用；与时序冲突时必须让 plan 暴露冲突。\n\n### MODIFY\n\n- 读取主 API + 当前同目标 delta 的 effective view；\n- 对已有 endpoint\u002Fschema 做兼容修改，对新 endpoint\u002Fschema 在同一文件增加；\n- 保留未变更 endpoint\u002Fschema\u002FoperationId 与稳定 ID，遵守守恒\u002F兼容策略；\n- 多场景共享一个 OpenAPI 文件时聚合为一份最终态 delta。\n- 对 `.yaml|.yml|.json` 目标，输出必须是**整文件最终态**而非片段，首行为 `## MODIFIED — \u003Ccanonical target>（整文件替换）`；其后 payload 是完整 OpenAPI。change-writer 不得再包一层 Markdown marker。\n\n### CREATE\n\n目标缺失时返回完整可校验接口文档，至少含：\n\n- OpenAPI\u002F协议版本与 info；\n- servers\u002Fchannels（适用时）；\n- paths\u002Foperations 或消息 channel；\n- 唯一 operationId\u002Fmessage name；\n- request\u002Fresponse\u002Fschema 与必填\u002F约束；\n- error\u002F状态码；\n- auth\u002Fpermission；\n- 幂等、分页、并发或重试中适用项；\n- 版本兼容\u002F弃用策略；\n- 从 scenario 步骤到 operation 的追溯。\n\nMarkdown 外的 YAML\u002FJSON delta 在剥离首行控制 marker 后必须是有效 OpenAPI；含冒号等特殊字符的文本按项目规范引用。禁止 TODO\u002F空 paths\u002F只有示例无 schema。\n\n对 non-Markdown API target，完整输出格式固定：\n\n```text\n## ADDED — logos\u002Fresources\u002Fapi\u002F\u003Cfile>.yaml（新文件，整文件）\nopenapi: 3.1.0\n...\n```\n\n- 首行声明 target 必须与 delta 路径映射结果一致；CREATE 只能用 ADDED，目标必须缺失。\n- marker 不是 YAML 内容；merge\u002Flint 在 parse 前剥离且仅剥离首行，最终 API 文件不得含 marker。\n- `.yaml\u002F.yml` 必须 duplicate-key fail-closed 解析，`.json` 必须 duplicate-key-aware 解析，并通过 OpenAPI 3.x schema\u002Fref\u002FoperationId 校验与 CREATE 完整度检查。\n- marker\u002F路径\u002Fmode\u002F存在性\u002F语法\u002F引用任一失败时返回 `non_markdown_delta_invalid` 或 `create_target_incomplete`，整批零落盘。协议权威定义见 merge-executor 的 non-Markdown 整文件章节。\n\n### 输出给下游\n\n同时返回：\n\n- 受影响 operation 与 schema 清单；\n- 每个 operation 对应的 scenario step；\n- 需要 test-orchestrator 覆盖的主\u002F异常链；\n- 兼容\u002F迁移风险。\n\nAPI 适用即编排测试适用；change-writer 必须规划对应唯一 orchestration target，除非已有目标 MODIFY。\n\n### 完成检查\n\n- 全部 API 可追溯到 effective sequence；\n- 目标模式与磁盘事实一致；\n- 同 canonical target 只有一个输出；\n- 语法验证与最低完整度均通过；\n- 不读 seed staging，不写 verified\u002F确认字段，不新增 JIT 流程。\n",{},"master","abf55fdedadaeb660f928aa7258b9ec35d4ab003","logos\u002Fchanges\u002Farchive\u002F20260829-2333-release-0-14-1-local\u002Fdeployment-artifacts-20260830T0554Z\u002Fcandidate-unpack\u002Fpackage\u002Fskills\u002Fapi-designer",9,"https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos","https:\u002F\u002Fgithub.com\u002Fminiidealab","2026-10-18 11:36:11",{"source":7,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add miniidealab\u002Fopenlogos --skill api-designer",{"tool":48,"command":49},"bunx","bunx skills add miniidealab\u002Fopenlogos --skill api-designer",{"tool":51,"command":52},"pnpm","pnpm dlx skills add miniidealab\u002Fopenlogos --skill api-designer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Flogos\u002Fchanges\u002Farchive\u002F20260829-2333-release-0-14-1-local\u002Fdeployment-artifacts-20260830T0554Z\u002Fcandidate-unpack\u002Fpackage\u002Fskills\u002Fapi-designer\u002FSKILL.md",true,[56],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"SKILL.en.md","REFERENCE","参考文档",9768,"https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Flogos\u002Fchanges\u002Farchive\u002F20260829-2333-release-0-14-1-local\u002Fdeployment-artifacts-20260830T0554Z\u002Fcandidate-unpack\u002Fpackage\u002Fskills\u002Fapi-designer\u002FSKILL.en.md",[63,105,117,126,134,143],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":84,"publishedAt":31},"01M6MXX45142DGRFD9ZYPT5YC9","ui-ux-pro-max","UI\u002FUX design intelligence. 67 styles, 96 palettes, 57 font pairings, 25 charts, 13 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn\u002Fui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI\u002FUX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient. Integrations: shadcn\u002Fui MCP for component search and examples.","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Fskills\u002Fui-ux-pro-max\u002FSKILL.md",[69,72,75,78,81],{"categoryNo":70,"categoryName":71,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":73,"categoryName":74,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":76,"categoryName":77,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":79,"categoryName":80,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000032","设计师",{"categoryNo":82,"categoryName":83,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师",[85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],"ui ux","pro","max","ui ux pro max","ui","ux","projects","mode","card","app","tsx","fix","improve","Tailwind","Charts","Animation","design","actions","MCP","search",{"skillNo":106,"name":107,"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":108,"categories":109,"keywords":113,"publishedAt":31},"01M6MXWY8HJV93BBR8FPNJXAMV","test-writer","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Fskills\u002Ftest-writer\u002FSKILL.md",[110],{"categoryNo":111,"categoryName":112,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",[114,115,116],"writer","test writer","test",{"skillNo":118,"name":119,"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":120,"categories":121,"keywords":123,"publishedAt":31},"01M6MXWSAMN9AD3T8F6N099ZGY","test-orchestrator","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Fskills\u002Ftest-orchestrator\u002FSKILL.md",[122],{"categoryNo":111,"categoryName":112,"taxonomyType":20,"taxonomyTypeDesc":21},[124,125,116],"orchestrator","test orchestrator",{"skillNo":127,"name":128,"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":129,"categories":130,"keywords":131,"publishedAt":31},"01M6MXWN29FY7K9ASMFRSPWQCN","slice-planner","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Fskills\u002Fslice-planner\u002FSKILL.md",[],[132,133],"slice planner","planner",{"skillNo":135,"name":136,"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":137,"categories":138,"keywords":139,"publishedAt":31},"01M6MXWFR1C1V66NSRTAM1FZPR","scenario-architect","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Fskills\u002Fscenario-architect\u002FSKILL.md",[],[140,141,142],"architect","scenario","scenario architect",{"skillNo":144,"name":145,"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":146,"categories":147,"keywords":148,"publishedAt":31},"01M6MXWD6ZCGPT4FDT580S8K96","project-init","https:\u002F\u002Fgithub.com\u002Fminiidealab\u002Fopenlogos\u002Fblob\u002Fmaster\u002Fskills\u002Fproject-init\u002FSKILL.md",[],[149,150,151],"project init","init","project"]