[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CRAGDBQ2WXFXC75XCSN0VR":3,"skill-same:01M6CRAGDBQ2WXFXC75XCSN0VR":92},{"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":17,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":61},"01M6CRAGDBQ2WXFXC75XCSN0VR","fo-progress",null,"Show an app's screen × gate matrix — spec version, plan state and open approvals, generation stages, each gate's result with staleness against the current tree hash, deferred review clusters — and the next command per screen; computed by fo-progress-report. Use any time to see where every screen stands.","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\u002Ffrontend-ohmyhotel-plugin\u002Fskills\u002Ffo-progress\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"fo progress","review","spec","report","state","open","Bash","plan","grep","command","read","use","version","gate","show","next","2026-11-10 10:12:30",false,"---\nname: fo-progress\ndescription: Show an app's screen × gate matrix — spec version, plan state and open approvals, generation stages, each gate's result with staleness against the current tree hash, deferred review clusters — and the next command per screen; computed by fo-progress-report. Use any time to see where every screen stands.\nargument-hint: \"[--app \u003Cname>] [--screen \u003Cid>] [--blocked]\"\nuser-invocable: true\nallowed-tools: Read, Glob, Grep, Bash\n---\n\n# fo-progress — where every screen stands\n\nNo agent and no writes: `fo-progress-report` reads `progress.json`, the manifests, plans, generation\nstate and evidence files, recomputes each screen's tree hash and prints JSON; this skill renders it.\n\n## Step 1 — Compute\n\n```bash\nfo-progress-report --app \u003Capp> [--screen \u003Cid>]\n```\n\nUnder delta legacy tracking (`legacySource.tracking: \"delta\"`) also run `fo-legacy-drift --app \u003Capp>`.\nIt is read-only and uses the last fetched state of the baseline branch. A drifted screen it reports\nthat the tracker does not yet mark (`legacyStale`) still belongs in the blocked list, as \"V2 source\nmoved since `\u003Cfrom>` (n commits) → fo-analyze\". To refresh and record, the user runs\n`fo-legacy-drift --app \u003Capp> --fetch --record`; this skill writes nothing.\n\n## Step 2 — Render\n\nA table per app, one row per screen (spec version and status · plan version\u002Fapproved\u002Fpending\napprovals · gen stage · verify · visual · e2e · contract · seo · designer · planning · next), using\nthese marks: `✓` pass, `✗` fail\u002Fpartial, `○` not run yet, `◌` skipped\u002Fnot-run with reason, `⟳` stale\n(evidence recorded against different content — the gate must run again, the earlier result is not\nwrong). Then:\n\n- **Blocked**: from `summary.blocked[]` — pending approvals (count and `plan.firstOpenApproval`),\n  stale plans (against the spec, or behind the legacy analysis), drifted V2 sources, deferred review clusters (`review.clustersDeferred`), gates `skipped`\u002F`not-run` with\n  their `reason`, stale gates.\n- **Next**: the `next` command per screen, grouped (ready for `fo-gen`, waiting on approval, in gates…).\n- With `--blocked`, only the blocked section.\n\n`fo-progress` does not advance anything. When the user asks \"what should I do next\", answer from\nthe `next` column and name the command; when they ask why a gate is `⟳`, explain the tree hash.\n\nDone when the table and the blocked list are shown.\n","# fo-progress — where every screen stands\n\nNo agent and no writes: `fo-progress-report` reads `progress.json`, the manifests, plans, generation\nstate and evidence files, recomputes each screen's tree hash and prints JSON; this skill renders it.\n\n## Step 1 — Compute\n\n```bash\nfo-progress-report --app \u003Capp> [--screen \u003Cid>]\n```\n\nUnder delta legacy tracking (`legacySource.tracking: \"delta\"`) also run `fo-legacy-drift --app \u003Capp>`.\nIt is read-only and uses the last fetched state of the baseline branch. A drifted screen it reports\nthat the tracker does not yet mark (`legacyStale`) still belongs in the blocked list, as \"V2 source\nmoved since `\u003Cfrom>` (n commits) → fo-analyze\". To refresh and record, the user runs\n`fo-legacy-drift --app \u003Capp> --fetch --record`; this skill writes nothing.\n\n## Step 2 — Render\n\nA table per app, one row per screen (spec version and status · plan version\u002Fapproved\u002Fpending\napprovals · gen stage · verify · visual · e2e · contract · seo · designer · planning · next), using\nthese marks: `✓` pass, `✗` fail\u002Fpartial, `○` not run yet, `◌` skipped\u002Fnot-run with reason, `⟳` stale\n(evidence recorded against different content — the gate must run again, the earlier result is not\nwrong). Then:\n\n- **Blocked**: from `summary.blocked[]` — pending approvals (count and `plan.firstOpenApproval`),\n  stale plans (against the spec, or behind the legacy analysis), drifted V2 sources, deferred review clusters (`review.clustersDeferred`), gates `skipped`\u002F`not-run` with\n  their `reason`, stale gates.\n- **Next**: the `next` command per screen, grouped (ready for `fo-gen`, waiting on approval, in gates…).\n- With `--blocked`, only the blocked section.\n\n`fo-progress` does not advance anything. When the user asks \"what should I do next\", answer from\nthe `next` column and name the command; when they ask why a gate is `⟳`, explain the tree hash.\n\nDone when the table and the blocked list are shown.\n",{"name":5,"description":7,"allowed-tools":39,"argument-hint":40,"user-invocable":41},"Read, Glob, Grep, Bash","[--app \u003Cname>] [--screen \u003Cid>] [--blocked]",true,"main","99f07e592261c66756a2927d0440fc5fef950507","frontend-ohmyhotel-plugin\u002Fskills\u002Ffo-progress",0,"https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins","https:\u002F\u002Fgithub.com\u002Fohmyhotelco","2026-11-11 08:26:27",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":41},[51,54,57],{"tool":52,"command":53},"npx","npx skills add ohmyhotelco\u002Fhare-cc-plugins --skill fo-progress",{"tool":55,"command":56},"bunx","bunx skills add ohmyhotelco\u002Fhare-cc-plugins --skill fo-progress",{"tool":58,"command":59},"pnpm","pnpm dlx skills add ohmyhotelco\u002Fhare-cc-plugins --skill fo-progress","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fohmyhotelco\u002Fhare-cc-plugins\u002Fblob\u002Fmain\u002Ffrontend-ohmyhotel-plugin\u002Fskills\u002Ffo-progress\u002FSKILL.md",[62,68,74,80,84,88],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"catalog.json","REFERENCE","参考文档",2037,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-onair-shoutout\u002Fcatalog.json",{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"logo.png","ASSET","资产文件",197197,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-onair-shoutout\u002Flogo.png",{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"scripts\u002Frequest.py","SCRIPT","脚本",10848,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-onair-shoutout\u002Fscripts\u002Frequest.py",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Frequirements.txt",500,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-onair-shoutout\u002Fscripts\u002Frequirements.txt",{"path":85,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":86,"sourceHtmlUrl":87},"SOURCE.md",324,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-onair-shoutout\u002FSOURCE.md",{"path":89,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":90,"sourceHtmlUrl":91},"TRUST.auto.yaml",2086,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-onair-shoutout\u002FTRUST.auto.yaml",[93,116,141,165,184,204],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":34},"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",[],[100,101,22,102,103,104,105,21,106,107,108,109,110,111,112,113,114,115],"shared","hp shared","stack","plugin","how","for","code conventions","commands","how to","conventions","false","frontmatter","file","code","hand","check",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":130,"publishedAt":34},"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",[122,127],{"categoryNo":123,"categoryName":124,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":128,"categoryName":129,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000015","视觉设计",[100,131,105,132,106,133,134,135,136,110,113,114,137,115,138,22,103,139,27,140],"fe shared","mode","frontend","design","design principles","files","react","router","principles","build",{"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":153,"publishedAt":34},"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",[147,150],{"categoryNo":148,"categoryName":149,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":151,"categoryName":152,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000023","Skill与智能体开发",[100,154,155,136,110,156,157,114,102,158,111,159,160,161,105,162,163,22,103,164],"spring","be spring shared","commit","architecture","coding standards","coding","standards","tech","Rules","cqrs","naming",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":34},"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",[],[172,173,174,175,176,177,28,20,178,179,180,29,112,181,182,183],"pp","pp translate","translate","feature","name","editing","write","edit","sync","language","true","changes",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":191,"publishedAt":34},"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",[190],{"categoryNo":151,"categoryName":152,"taxonomyType":125,"taxonomyTypeDesc":126},[192,172,193,180,194,195,175,196,197,198,199,29,24,200,201,202,203,176,28,182],"pp sync stitch","stitch","projects","get","project","re","local","MCP","id","wireframes","website","screen",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":211,"publishedAt":34},"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",[210],{"categoryNo":151,"categoryName":152,"taxonomyType":125,"taxonomyTypeDesc":126},[172,212,180,213,175,197,214,215,199,29,216,176,28,178,179,26,182],"notion","pp sync notion","search","manual","specification"]