[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CRCKEFFMM20PFERR5VQQC1":3,"skill-same:01M6CRCKEFFMM20PFERR5VQQC1":70},{"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":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":69},"01M6CRCKEFFMM20PFERR5VQQC1","hp-gen",null,"Generate Astro pages and sections from page plans. Run \u002Fhomepage-plugin:hp-plan first.","ohmyhotelco\u002Fhare-cc-plugins","ohmyhotelco","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F258133233?v=4","01M6CR4HP2N9F9ZWNX1KRHQ2W1","01M6CR4HSJC5J80RVQMD5K9QRN",2,"MIT","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fhomepage-plugin\u002Fskills\u002Fhp-gen\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"hp gen","grep","true","name","plans","pages","plan first","edit","write","read","workflow","page","plan","Bash","astro","first","run","generate","plugin","2026-11-10 10:12:30",false,"---\nname: hp-gen\ndescription: \"Generate Astro pages and sections from page plans. Run \u002Fhomepage-plugin:hp-plan first.\"\nargument-hint: \"[page-name]\"\nuser-invocable: true\nallowed-tools: Read, Write, Edit, Glob, Grep, Bash, Workflow\n---\n\n# Code Generation Skill (3-Phase Pipeline)\n\nGenerates Astro pages, sections, and shared infrastructure from page plans (`page-plan.json`). The `homepage-plugin:hp-gen-run` workflow runs the agents and owns their order and stop rules; this skill owns what surrounds it: preconditions, locks, the user's confirmation, verification, progress and the summary.\n\nConventions: `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fhp-shared\u002FSKILL.md`.\n\n## Instructions\n\n### Step 0: Read Configuration\n\nRead `.claude\u002Fhomepage-plugin.json`. If not found, exit with instruction to run `\u002Fhomepage-plugin:hp-init`.\n\nRead `defaultLocale` — all user-facing output in this language.\n\n### Step 1: Validate Plans\n\nIf `[page-name]` argument provided:\n- Validate `docs\u002Fpages\u002F{page-name}\u002Fpage-plan.json` exists\n- Generate only this page\n\nIf no argument:\n- Scan `docs\u002Fpages\u002F*\u002Fpage-plan.json` for all planned pages\n- If none found, exit with instruction to run `\u002Fhomepage-plugin:hp-plan`\n\n### Step 2: Check Generation State\n\nFor each page, check `docs\u002Fpages\u002F{page-name}\u002F.progress\u002F{page-name}.json`:\n\n- Status `planned` → proceed with generation\n- Status `generated` or later → warn about demotion and ask to confirm re-generation\n- Status `gen-failed` → check `generation-state.json` for resume opportunity\n\n**Resume support**: If `generation-state.json` exists with incomplete phases, offer to resume from the last incomplete phase instead of starting over:\n1. Read `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json`\n2. If `phases.infrastructure.status === \"completed\"` and the layout still exists → skip Phase 1\n3. For Phase 2, check each page's status — skip pages already marked as `completed`, resume from first `pending` or `failed` page\n4. Ask user: \"Resume from {phase\u002Fpage}? Or restart from scratch?\"\n\n### Step 3: Acquire Lock\n\nTake a lock for every page in the run, and one for `_shared`, because every run writes `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json`. Lock file path: `docs\u002Fpages\u002F{page-name}\u002F.implementation\u002Fhomepage\u002F.lock`\n\n**Lock file format** (JSON):\n```json\n{\n  \"lockedBy\": \"hp-gen\",\n  \"lockedAt\": \"2026-03-23T14:30:00.000Z\",\n  \"pageName\": \"home\"\n}\n```\n\n**Acquisition protocol**:\n1. Check if `.lock` file exists\n2. If exists → read `lockedAt` field → parse as ISO-8601 → compare with current time\n   - If age \u003C 30 minutes → release any lock this run took and exit with \"Another homepage-plugin operation is in progress\"\n   - If age >= 30 minutes → delete stale lock, log warning, proceed to step 3\n3. Write new `.lock` file with `lockedBy: \"hp-gen\"`, `lockedAt: new Date().toISOString()`, `pageName`\n\n**Release**: Always delete every `.lock` file this run took on completion or failure (in Step 8 and on any early exit).\n\n### Step 4: Confirm with User\n\nDisplay the generation plan:\n- Pages to generate\n- Sections per page (static vs island)\n- Shared infrastructure to create (if first page)\n- Estimated components to generate\n\nAsk user to confirm before proceeding.\n\n### Step 5: Run the Workflow\n\nMake sure `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json` exists and lists every page in the run under `phases.pages` with status `pending`, keeping entries already there. When this run passes `infrastructure`, set `phases.infrastructure` to `pending`, so a session that dies inside that stage runs it again. `page-assembler` records each finished entry in this file, so progress survives a session that dies mid-run.\n\nCall the `Workflow` tool with `name: \"homepage-plugin:hp-gen-run\"` and `args`:\n\n- `projectRoot` — project root path\n- `config` — homepage-plugin configuration object\n- `stateFile` — `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json`\n- `layoutPlanFile` — `docs\u002Fpages\u002F_shared\u002Flayout-plan.json`\n- `infrastructure` — `{ planFile }` with the first page's `page-plan.json` when no layout or shared components exist, or when `phases.infrastructure` is recorded and not `completed`; otherwise `null`\n- `pages` — `[{ pageName, planFile }]` in order, leaving out pages a resume skips\n- `fileKey` — Figma file key from `.claude\u002Fhomepage-plugin.json` (if available)\n- `mcpToolPrefix` — MCP tool prefix (auto-detect from available tools: `mcp__figma__*`, `mcp__figma_desktop__*`, or `mcp__Figma__*`)\n\nThe workflow runs `page-assembler` for the infrastructure, then `section-generator` and `page-assembler` for each page in turn. Failed infrastructure stops the run. A failed page does not stop the next one.\n\nTell the user what will run. The result arrives as a task notification; continue at Step 6 when it does. If the call is refused or fails, release the locks and report it.\n\n### Step 6: Record Failures\n\nFrom the workflow result, update `generation-state.json`:\n\n- `stoppedAt: \"infrastructure\"` — set `phases.infrastructure` to `{ \"status\": \"failed\", \"error\": ... }`, skip Step 7, and treat every page in the run as failed\n- each entry in `pages` with `status: \"failed\"` — set `phases.pages.{page}` to `{ \"status\": \"failed\", \"error\": ... }` from its `failedAgent` and `failure`\n\n```json\n{\n  \"phases\": {\n    \"infrastructure\": { \"status\": \"completed\", \"completedAt\": \"2026-03-23T14:30:00Z\" },\n    \"pages\": {\n      \"home\": { \"status\": \"completed\", \"completedAt\": \"2026-03-23T14:32:00Z\" },\n      \"about\": { \"status\": \"completed\", \"completedAt\": \"2026-03-23T14:35:00Z\" },\n      \"contact\": { \"status\": \"failed\", \"error\": \"section-generator failed on ContactSection\" }\n    }\n  }\n}\n```\nValid `status` values per phase: `\"pending\"`, `\"completed\"`, `\"failed\"`.\n\n### Step 7: Phase 3 — Verification\n\nRun verification checks:\n\n1. **TypeScript** — `npx tsc --noEmit`\n2. **ESLint** — `npx eslint .` (skip if no config and eslintTemplate is false)\n   - If `eslintTemplate` is true and no ESLint config exists (no `.eslintrc*` or `eslint.config.*`):\n     1. Read `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Feslint-config.md`\n     2. Extract the JavaScript code block from the \"Canonical Config\" section\n     3. Write it to `{projectRoot}\u002Feslint.config.js` using the Write tool\n     4. Check dependencies: `pnpm ls eslint @eslint\u002Fjs typescript-eslint eslint-plugin-astro eslint-plugin-react-hooks globals 2>&1`\n     5. If any dependency missing: display `pnpm add -D eslint @eslint\u002Fjs typescript-eslint eslint-plugin-astro eslint-plugin-react-hooks globals` and **skip ESLint** (do not run)\n     6. If all present: run `npx eslint . 2>&1`\n   - If `eslintTemplate` is false and no config exists: skip ESLint entirely\n3. **Astro build** — `npx astro build`\n\n### Step 8: Update Progress\n\nFor each page, update `docs\u002Fpages\u002F{page-name}\u002F.progress\u002F{page-name}.json`:\n\n- The page failed in the workflow, or any verification fails → status: `gen-failed`\n- Otherwise → status: `generated`\n\nRecord verification results and timestamps.\n\nRelease the locks.\n\n### Step 9: Display Results\n\nShow:\n- Pages generated\n- Sections created (new vs reused)\n- Islands created\n- Verification results (pass\u002Ffail per check)\n- Next step guidance:\n  - If all passed: \"Run `\u002Fhomepage-plugin:hp-verify` for full quality check, or `\u002Fhomepage-plugin:hp-review` for code review.\"\n  - If failures: \"Fix the errors above, then re-run `\u002Fhomepage-plugin:hp-gen`.\"\n\n## Communication Language\n\nRead `defaultLocale` from `.claude\u002Fhomepage-plugin.json` for all user-facing output.\n","# Code Generation Skill (3-Phase Pipeline)\n\nGenerates Astro pages, sections, and shared infrastructure from page plans (`page-plan.json`). The `homepage-plugin:hp-gen-run` workflow runs the agents and owns their order and stop rules; this skill owns what surrounds it: preconditions, locks, the user's confirmation, verification, progress and the summary.\n\nConventions: `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fhp-shared\u002FSKILL.md`.\n\n## Instructions\n\n### Step 0: Read Configuration\n\nRead `.claude\u002Fhomepage-plugin.json`. If not found, exit with instruction to run `\u002Fhomepage-plugin:hp-init`.\n\nRead `defaultLocale` — all user-facing output in this language.\n\n### Step 1: Validate Plans\n\nIf `[page-name]` argument provided:\n- Validate `docs\u002Fpages\u002F{page-name}\u002Fpage-plan.json` exists\n- Generate only this page\n\nIf no argument:\n- Scan `docs\u002Fpages\u002F*\u002Fpage-plan.json` for all planned pages\n- If none found, exit with instruction to run `\u002Fhomepage-plugin:hp-plan`\n\n### Step 2: Check Generation State\n\nFor each page, check `docs\u002Fpages\u002F{page-name}\u002F.progress\u002F{page-name}.json`:\n\n- Status `planned` → proceed with generation\n- Status `generated` or later → warn about demotion and ask to confirm re-generation\n- Status `gen-failed` → check `generation-state.json` for resume opportunity\n\n**Resume support**: If `generation-state.json` exists with incomplete phases, offer to resume from the last incomplete phase instead of starting over:\n1. Read `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json`\n2. If `phases.infrastructure.status === \"completed\"` and the layout still exists → skip Phase 1\n3. For Phase 2, check each page's status — skip pages already marked as `completed`, resume from first `pending` or `failed` page\n4. Ask user: \"Resume from {phase\u002Fpage}? Or restart from scratch?\"\n\n### Step 3: Acquire Lock\n\nTake a lock for every page in the run, and one for `_shared`, because every run writes `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json`. Lock file path: `docs\u002Fpages\u002F{page-name}\u002F.implementation\u002Fhomepage\u002F.lock`\n\n**Lock file format** (JSON):\n```json\n{\n  \"lockedBy\": \"hp-gen\",\n  \"lockedAt\": \"2026-03-23T14:30:00.000Z\",\n  \"pageName\": \"home\"\n}\n```\n\n**Acquisition protocol**:\n1. Check if `.lock` file exists\n2. If exists → read `lockedAt` field → parse as ISO-8601 → compare with current time\n   - If age \u003C 30 minutes → release any lock this run took and exit with \"Another homepage-plugin operation is in progress\"\n   - If age >= 30 minutes → delete stale lock, log warning, proceed to step 3\n3. Write new `.lock` file with `lockedBy: \"hp-gen\"`, `lockedAt: new Date().toISOString()`, `pageName`\n\n**Release**: Always delete every `.lock` file this run took on completion or failure (in Step 8 and on any early exit).\n\n### Step 4: Confirm with User\n\nDisplay the generation plan:\n- Pages to generate\n- Sections per page (static vs island)\n- Shared infrastructure to create (if first page)\n- Estimated components to generate\n\nAsk user to confirm before proceeding.\n\n### Step 5: Run the Workflow\n\nMake sure `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json` exists and lists every page in the run under `phases.pages` with status `pending`, keeping entries already there. When this run passes `infrastructure`, set `phases.infrastructure` to `pending`, so a session that dies inside that stage runs it again. `page-assembler` records each finished entry in this file, so progress survives a session that dies mid-run.\n\nCall the `Workflow` tool with `name: \"homepage-plugin:hp-gen-run\"` and `args`:\n\n- `projectRoot` — project root path\n- `config` — homepage-plugin configuration object\n- `stateFile` — `docs\u002Fpages\u002F_shared\u002Fgeneration-state.json`\n- `layoutPlanFile` — `docs\u002Fpages\u002F_shared\u002Flayout-plan.json`\n- `infrastructure` — `{ planFile }` with the first page's `page-plan.json` when no layout or shared components exist, or when `phases.infrastructure` is recorded and not `completed`; otherwise `null`\n- `pages` — `[{ pageName, planFile }]` in order, leaving out pages a resume skips\n- `fileKey` — Figma file key from `.claude\u002Fhomepage-plugin.json` (if available)\n- `mcpToolPrefix` — MCP tool prefix (auto-detect from available tools: `mcp__figma__*`, `mcp__figma_desktop__*`, or `mcp__Figma__*`)\n\nThe workflow runs `page-assembler` for the infrastructure, then `section-generator` and `page-assembler` for each page in turn. Failed infrastructure stops the run. A failed page does not stop the next one.\n\nTell the user what will run. The result arrives as a task notification; continue at Step 6 when it does. If the call is refused or fails, release the locks and report it.\n\n### Step 6: Record Failures\n\nFrom the workflow result, update `generation-state.json`:\n\n- `stoppedAt: \"infrastructure\"` — set `phases.infrastructure` to `{ \"status\": \"failed\", \"error\": ... }`, skip Step 7, and treat every page in the run as failed\n- each entry in `pages` with `status: \"failed\"` — set `phases.pages.{page}` to `{ \"status\": \"failed\", \"error\": ... }` from its `failedAgent` and `failure`\n\n```json\n{\n  \"phases\": {\n    \"infrastructure\": { \"status\": \"completed\", \"completedAt\": \"2026-03-23T14:30:00Z\" },\n    \"pages\": {\n      \"home\": { \"status\": \"completed\", \"completedAt\": \"2026-03-23T14:32:00Z\" },\n      \"about\": { \"status\": \"completed\", \"completedAt\": \"2026-03-23T14:35:00Z\" },\n      \"contact\": { \"status\": \"failed\", \"error\": \"section-generator failed on ContactSection\" }\n    }\n  }\n}\n```\nValid `status` values per phase: `\"pending\"`, `\"completed\"`, `\"failed\"`.\n\n### Step 7: Phase 3 — Verification\n\nRun verification checks:\n\n1. **TypeScript** — `npx tsc --noEmit`\n2. **ESLint** — `npx eslint .` (skip if no config and eslintTemplate is false)\n   - If `eslintTemplate` is true and no ESLint config exists (no `.eslintrc*` or `eslint.config.*`):\n     1. Read `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Feslint-config.md`\n     2. Extract the JavaScript code block from the \"Canonical Config\" section\n     3. Write it to `{projectRoot}\u002Feslint.config.js` using the Write tool\n     4. Check dependencies: `pnpm ls eslint @eslint\u002Fjs typescript-eslint eslint-plugin-astro eslint-plugin-react-hooks globals 2>&1`\n     5. If any dependency missing: display `pnpm add -D eslint @eslint\u002Fjs typescript-eslint eslint-plugin-astro eslint-plugin-react-hooks globals` and **skip ESLint** (do not run)\n     6. If all present: run `npx eslint . 2>&1`\n   - If `eslintTemplate` is false and no config exists: skip ESLint entirely\n3. **Astro build** — `npx astro build`\n\n### Step 8: Update Progress\n\nFor each page, update `docs\u002Fpages\u002F{page-name}\u002F.progress\u002F{page-name}.json`:\n\n- The page failed in the workflow, or any verification fails → status: `gen-failed`\n- Otherwise → status: `generated`\n\nRecord verification results and timestamps.\n\nRelease the locks.\n\n### Step 9: Display Results\n\nShow:\n- Pages generated\n- Sections created (new vs reused)\n- Islands created\n- Verification results (pass\u002Ffail per check)\n- Next step guidance:\n  - If all passed: \"Run `\u002Fhomepage-plugin:hp-verify` for full quality check, or `\u002Fhomepage-plugin:hp-review` for code review.\"\n  - If failures: \"Fix the errors above, then re-run `\u002Fhomepage-plugin:hp-gen`.\"\n\n## Communication Language\n\nRead `defaultLocale` from `.claude\u002Fhomepage-plugin.json` for all user-facing output.\n",{"name":5,"description":7,"allowed-tools":47,"argument-hint":48,"user-invocable":49},"Read, Write, Edit, Glob, Grep, Bash, Workflow","[page-name]",true,"main","64e41a7f9c83f3469e662235cfcba152764ceb92","homepage-plugin\u002Fskills\u002Fhp-gen",0,"https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins","https:\u002F\u002Fgithub.com\u002Fohmyhotelco","2026-11-13 16:34:32",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":49},[59,62,65],{"tool":60,"command":61},"npx","npx skills add ohmyhotelco\u002Fhare-cc-plugins --skill hp-gen",{"tool":63,"command":64},"bunx","bunx skills add ohmyhotelco\u002Fhare-cc-plugins --skill hp-gen",{"tool":66,"command":67},"pnpm","pnpm dlx skills add ohmyhotelco\u002Fhare-cc-plugins --skill hp-gen","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fhomepage-plugin\u002Fskills\u002Fhp-gen\u002FSKILL.md",[],[71,95,119,141,158,178],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":42},"01M6M5QVXQNQMJBP1JZP9T440T","hp-shared","Shared conventions for every homepage-plugin agent and skill — stack, code conventions, state-file writes, check commands and how to report them. Preloaded into agents through their `skills:` frontmatter; not meant to be invoked by hand.","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fhomepage-plugin\u002Fskills\u002Fhp-shared\u002FSKILL.md",[],[78,79,80,81,41,82,83,84,85,86,87,88,89,90,91,92,93,94],"shared","hp shared","state","stack","how","for","report","code conventions","commands","how to","conventions","false","frontmatter","file","code","hand","check",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":107,"publishedAt":42},"01M6M5PZTN1M0G4AHJV08VF1HV","fe-shared","Shared conventions for every frontend-react-plugin agent and skill — code conventions, state files and locks, accepted deviations, design principles, build working directory, router-mode command matrix, TypeScript check. Preloaded into agents through their `skills:` frontmatter; not meant to be invoked by hand.","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Ffrontend-react-plugin\u002Fskills\u002Ffe-shared\u002FSKILL.md",[101,104],{"categoryNo":102,"categoryName":103,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":105,"categoryName":106,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",[78,108,83,109,85,110,111,112,113,89,92,93,114,94,115,80,41,116,117,118],"fe shared","mode","frontend","design","design principles","files","react","router","principles","command","build",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":129,"publishedAt":42},"01M6M5GAW7ZZ3580DVCMH51SFQ","be-spring-shared","Shared conventions for every backend-springboot-plugin agent and skill — tech stack, CQRS architecture, naming, coding standards, TDD, commit and build rules, state files. Preloaded into agents through their `skills:` frontmatter; not meant to be invoked by hand.","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fbackend-springboot-plugin\u002Fskills\u002Fbe-spring-shared\u002FSKILL.md",[125,128],{"categoryNo":126,"categoryName":127,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[78,130,131,113,89,132,133,93,81,134,90,135,136,137,83,138,139,80,41,140],"spring","be spring shared","commit","architecture","coding standards","coding","standards","tech","Rules","cqrs","naming",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":42},"01M6FNV58QMW8K71SA9FGTXMF4","pp-translate","Use after directly editing the working language spec to sync changes to other supported languages.","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fplanning-plugin\u002Fskills\u002Fpp-translate\u002FSKILL.md",[],[148,149,150,151,26,152,32,153,31,30,154,155,91,156,25,157],"pp","pp translate","translate","feature","editing","spec","sync","use","language","changes",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":42},"01M6FNV0PGRKR2MW0AEPS6XP0Q","pp-sync-stitch","Use when wireframes were manually edited on the Stitch website and need to be re-fetched to the local project.","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fplanning-plugin\u002Fskills\u002Fpp-sync-stitch\u002FSKILL.md",[164],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[166,148,167,154,168,169,151,170,171,172,173,155,36,174,175,176,177,26,32,25],"pp sync stitch","stitch","projects","get","project","re","local","MCP","id","wireframes","website","screen",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":185,"publishedAt":42},"01M6FNTWW2KHS9XRAR72X33G0B","pp-sync-notion","Use when a specification needs to be published or re-synced to Notion after finalization or manual edits.","https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Fplanning-plugin\u002Fskills\u002Fpp-sync-notion\u002FSKILL.md",[184],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[148,186,154,187,151,171,188,189,173,155,190,26,32,31,30,24,25],"notion","pp sync notion","search","manual","specification"]