[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71EEQBK7X6ESS7PHFT57NB1":3,"skill-same:01M71EEQBK7X6ESS7PHFT57NB1":70},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M71EEQBK7X6ESS7PHFT57NB1","compound-sync",null,"Sync GaleHarnessCLI skills with latest changes from the reference upstream repo. Use when you need to pull upstream updates, review what changed, apply gh: renames, and re-inject HKTMemory patches. Triggers: 'sync upstream', 'update skills', 'pull latest changes', 'upstream diff'.","JGXC100\u002FGaleHarnessCodingCLI","JGXC100","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11926809?v=4","01M71EEBHJ3EGYSNNDDSVDKXNG","JGX","01M71EEBJ995S5J2HDEQCBA268",0,"MIT","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Fplugins\u002Fgaleharness-cli\u002Fskills\u002Fcompound-sync\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"compound","sync","compound sync","sync upstream","update","changes","with","review","apply","you","updates","when","use","gh","triggers","upstream","re","repo","diff","pull","2026-11-10 10:12:30",false,"---\nname: compound-sync\ndescription: \"Sync GaleHarnessCLI skills with latest changes from the reference upstream repo. Use when you need to pull upstream updates, review what changed, apply gh: renames, and re-inject HKTMemory patches. Triggers: 'sync upstream', 'update skills', 'pull latest changes', 'upstream diff'.\"\n---\n\n# Compound Sync\n\nSync GaleHarnessCLI with upstream compound-engineering-plugin changes through per-commit patch batches.\n\n## Upstream Reference\n\n**Current baseline:** Read from `.upstream-ref` in repo root.\n\n```bash\ncat .upstream-ref\n```\n\nGaleHarnessCLI was forked from EveryInc\u002Fcompound-engineering-plugin at the commit recorded in `.upstream-ref`. All subsequent changes are independent developments.\n\n## When to Use\n\n- Pull latest upstream compound-engineering changes\n- Review upstream diff before applying\n- Re-apply gh: prefix renames after upstream sync\n- Re-inject HKTMemory patches after sync\n\n## Workflow\n\nUse the upstream sync CLI as the source of truth for batch generation, per-commit worktrees, PR creation, state transitions, cleanup, and `.upstream-ref` updates.\n\n### Step 1: Initialize The Batch\n\nFrom the repository root, run:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py init\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py status\n```\n\nThe CLI reads `.upstream-ref` and `.upstream-repo`, generates a dated batch under `.context\u002Fgaleharness-cli\u002Fupstream-sync\u002F`, and writes workflow state under `.context\u002Fgaleharness-cli\u002Fupstream-sync\u002Fstate.json`.\n\nIf `init` reports no new upstream commits, stop. Do not mutate `.upstream-ref` manually.\n\n### Step 2: Process One Commit\n\nStart exactly one pending upstream commit:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py next\n```\n\nThe CLI creates an isolated worktree, applies one adapted patch, runs verification, commits the result, pushes the branch, and opens a PR. Treat the generated PR as the review boundary for that upstream commit.\n\nDefault operating model:\n- one upstream commit -> one adapted patch\n- one adapted patch -> one isolated worktree\n- one adapted patch -> one PR\n\n### Step 3: Re-apply GaleHarnessCLI-Specific Logic\n\nMechanical adaptation only handles naming and path rewrites. In the generated worktree or PR:\n\n1. Re-apply `gh:` naming expectations not covered by raw text replacement\n2. Re-inject HKTMemory workflow patches where upstream does not know about them\n3. Update or add tests for the changed behavior\n4. Run focused verification before the PR lands\n\n### Step 4: Resume Or Skip\n\nAfter the PR is merged, return to the original worktree and run:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py resume\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py status\n```\n\n`resume` verifies the PR target, reconciles upstream ancestry, updates `.upstream-ref` for the merged upstream commit, cleans up the worktree, and returns the workflow to `idle` for the next explicit `next` command. It does not automatically start the next commit.\n\nIf a commit must be abandoned, run:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py skip --reason \"short reason\"\n```\n\nFor an open or closed PR that needs cleanup, use:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py skip --force-cleanup --reason \"short reason\"\n```\n\nThe CLI validates branch ownership before deleting remote branches.\n\n### Step 5: Complete The Batch\n\nRepeat `next` -> PR review\u002Fmerge -> `resume` until `status` reports `complete`.\n\nDo not hand-edit `.upstream-ref`. The CLI advances it only after each corresponding PR is confirmed merged and upstream ancestry checks pass.\n\n## HKTMemory Patches to Re-apply\n\nAfter each upstream sync, these patches must be re-applied:\n\n### gh:compound skill\n- Phase 0.4: HKTMemory retrieve before research\n- Phase 2.3: HKTMemory store after solution documented\n\n### learnings-researcher agent\n- Step 0: HKTMemory vector search before grep-first filtering\n\n### gh:brainstorm, gh:plan, gh:work, gh:review\n- Per-phase HKTMemory read\u002Fwrite (see each skill's HKTMemory sections)\n\n## Notes\n\n- GaleHarnessCLI is now fully independent (upstream remote removed)\n- This skill provides an Agent-driven batch workflow instead of a direct git merge\n- Always review upstream changes before applying; not every upstream commit will be mechanically clean\n- The batch directory is local workflow state under `.context\u002F`, not a Git-tracked artifact\n","# Compound Sync\n\nSync GaleHarnessCLI with upstream compound-engineering-plugin changes through per-commit patch batches.\n\n## Upstream Reference\n\n**Current baseline:** Read from `.upstream-ref` in repo root.\n\n```bash\ncat .upstream-ref\n```\n\nGaleHarnessCLI was forked from EveryInc\u002Fcompound-engineering-plugin at the commit recorded in `.upstream-ref`. All subsequent changes are independent developments.\n\n## When to Use\n\n- Pull latest upstream compound-engineering changes\n- Review upstream diff before applying\n- Re-apply gh: prefix renames after upstream sync\n- Re-inject HKTMemory patches after sync\n\n## Workflow\n\nUse the upstream sync CLI as the source of truth for batch generation, per-commit worktrees, PR creation, state transitions, cleanup, and `.upstream-ref` updates.\n\n### Step 1: Initialize The Batch\n\nFrom the repository root, run:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py init\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py status\n```\n\nThe CLI reads `.upstream-ref` and `.upstream-repo`, generates a dated batch under `.context\u002Fgaleharness-cli\u002Fupstream-sync\u002F`, and writes workflow state under `.context\u002Fgaleharness-cli\u002Fupstream-sync\u002Fstate.json`.\n\nIf `init` reports no new upstream commits, stop. Do not mutate `.upstream-ref` manually.\n\n### Step 2: Process One Commit\n\nStart exactly one pending upstream commit:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py next\n```\n\nThe CLI creates an isolated worktree, applies one adapted patch, runs verification, commits the result, pushes the branch, and opens a PR. Treat the generated PR as the review boundary for that upstream commit.\n\nDefault operating model:\n- one upstream commit -> one adapted patch\n- one adapted patch -> one isolated worktree\n- one adapted patch -> one PR\n\n### Step 3: Re-apply GaleHarnessCLI-Specific Logic\n\nMechanical adaptation only handles naming and path rewrites. In the generated worktree or PR:\n\n1. Re-apply `gh:` naming expectations not covered by raw text replacement\n2. Re-inject HKTMemory workflow patches where upstream does not know about them\n3. Update or add tests for the changed behavior\n4. Run focused verification before the PR lands\n\n### Step 4: Resume Or Skip\n\nAfter the PR is merged, return to the original worktree and run:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py resume\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py status\n```\n\n`resume` verifies the PR target, reconciles upstream ancestry, updates `.upstream-ref` for the merged upstream commit, cleans up the worktree, and returns the workflow to `idle` for the next explicit `next` command. It does not automatically start the next commit.\n\nIf a commit must be abandoned, run:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py skip --reason \"short reason\"\n```\n\nFor an open or closed PR that needs cleanup, use:\n\n```bash\npython3 scripts\u002Fupstream-sync\u002Fsync-cli.py skip --force-cleanup --reason \"short reason\"\n```\n\nThe CLI validates branch ownership before deleting remote branches.\n\n### Step 5: Complete The Batch\n\nRepeat `next` -> PR review\u002Fmerge -> `resume` until `status` reports `complete`.\n\nDo not hand-edit `.upstream-ref`. The CLI advances it only after each corresponding PR is confirmed merged and upstream ancestry checks pass.\n\n## HKTMemory Patches to Re-apply\n\nAfter each upstream sync, these patches must be re-applied:\n\n### gh:compound skill\n- Phase 0.4: HKTMemory retrieve before research\n- Phase 2.3: HKTMemory store after solution documented\n\n### learnings-researcher agent\n- Step 0: HKTMemory vector search before grep-first filtering\n\n### gh:brainstorm, gh:plan, gh:work, gh:review\n- Per-phase HKTMemory read\u002Fwrite (see each skill's HKTMemory sections)\n\n## Notes\n\n- GaleHarnessCLI is now fully independent (upstream remote removed)\n- This skill provides an Agent-driven batch workflow instead of a direct git merge\n- Always review upstream changes before applying; not every upstream commit will be mechanically clean\n- The batch directory is local workflow state under `.context\u002F`, not a Git-tracked artifact\n",{"name":5,"description":7},"main","94fc651a7c5ff227f3e8f4b9678dc4566f535677","plugins\u002Fgaleharness-cli\u002Fskills\u002Fcompound-sync",2,"https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI","https:\u002F\u002Fgithub.com\u002FJGXC100","2026-05-19 17:04:59",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add JGXC100\u002FGaleHarnessCodingCLI --skill compound-sync",{"tool":62,"command":63},"bunx","bunx skills add JGXC100\u002FGaleHarnessCodingCLI --skill compound-sync",{"tool":65,"command":66},"pnpm","pnpm dlx skills add JGXC100\u002FGaleHarnessCodingCLI --skill compound-sync","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Fplugins\u002Fgaleharness-cli\u002Fskills\u002Fcompound-sync\u002FSKILL.md",true,[],[71,83,96,108,116,124],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":78,"publishedAt":44},"01M71EJT9M91X2T91N4ZPCWHN3","skill-one","Sample skill","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-plugin\u002Fskills\u002Fskill-one\u002FSKILL.md",[77],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[79,80,81,82],"skill one","one","sample skill","sample",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":44},"01M71EJRH7M0DGZ1QXJ9PSFMB5","disabled-skill","A skill with model invocation disabled","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-plugin\u002Fskills\u002Fdisabled-skill\u002FSKILL.md",[89],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[91,92,93,30,94,95],"disabled skill","a skill","with model","true","model",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":44},"01M71EJQMRH6JC9H9V5BQWM7RJ","claude-only-skill","A skill restricted to Claude Code only","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-plugin\u002Fskills\u002Fclaude-only-skill\u002FSKILL.md",[102],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,106,107,92],"only","claude only skill","claude only","code",{"skillNo":109,"name":110,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":44},"01M71EJPXZ0644M41M587FVKYQ","default-skill","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcustom-paths\u002Fskills\u002Fdefault-skill\u002FSKILL.md",[],[114,115],"default skill","default",{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":44},"01M71EJP6RPF6PDAJ2SY4VMBDT","custom-skill","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcustom-paths\u002Fcustom-skills\u002Fcustom-skill\u002FSKILL.md",[],[122,123],"custom skill","custom",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":133,"publishedAt":44},"01M71EJK74AZ929S8GF55G5CDV","test-xcode","Build and test iOS apps on simulator using XcodeBuildMCP. Use after making iOS code changes, before creating a PR, or when verifying app behavior and checking for crashes on simulator.","https:\u002F\u002Fgithub.com\u002FJGXC100\u002FGaleHarnessCodingCLI\u002Fblob\u002Fmain\u002Fplugins\u002Fgaleharness-cli\u002Fskills\u002Ftest-xcode\u002FSKILL.md",[130],{"categoryNo":131,"categoryName":132,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[134,135,136,137,138,139,140,141,115,94,142,36,143,35,107,29,144,145,146,147],"test","xcode","test xcode","apps","app","build and test","pr","for","xcodebuildmcp","scheme","build","ios","name","behavior"]