[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AD6B3KZ8AXRHNW81WH54FH":3,"skill-same:01M6AD6B3KZ8AXRHNW81WH54FH":62},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6AD6B3KZ8AXRHNW81WH54FH","go-codemod",null,"Implement and test Go codemods for the gh aw fix command.","github\u002Fgh-aw","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3VCZ4WKQSFSRTPN7N9DN",5636,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-codemod\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32],"go","go codemod","codemod","implement","test","gh","command","fix","for","2026-11-10 10:12:30",false,"---\nname: go-codemod\ndescription: Implement and test Go codemods for the gh aw fix command.\n---\n\n# Go Codemod Implementation Guide\n\nUse this skill when adding or updating codemods used by `gh aw fix`.\n\n## Understand the fix pipeline first\n\n1. Review `pkg\u002Fcli\u002Ffix_command.go` to understand execution flow:\n   - codemods are loaded once via `GetAllCodemods()`\n   - each codemod is applied in registry order\n   - frontmatter is re-parsed before each codemod\n   - codemods must return `(newContent, applied, error)` and be safe for no-op input\n2. Review the codemod registry in `pkg\u002Fcli\u002Ffix_codemods.go`.\n3. Review `pkg\u002Fworkflow\u002Fcodemod\u002Ffrontmatter.go` and reusable constructors in `pkg\u002Fcli\u002Fcodemod_factory.go`. Codemods and workflow linters share the authored `aw.Document` AST.\n\n## Implementation steps\n\n1. Create a new codemod file in `pkg\u002Fcli\u002F` named `codemod_\u003Cfeature>.go`.\n2. Add a package logger with `logger.New(\"cli:codemod_\u003Cfeature>\")`.\n3. Implement `get\u003CFeature>Codemod() Codemod` and populate all metadata fields:\n   - `ID` (stable, unique)\n   - `Name` (human-readable)\n   - `Description` (clear migration behavior)\n   - `IntroducedIn` (release version)\n4. In `Apply`:\n   - check frontmatter preconditions first\n   - return unchanged content and `applied=false` when migration is not needed\n   - transform frontmatter with `codemod.Apply(content, func(f *codemod.Frontmatter) error { ... })`\n   - inspect authored configuration through `f.Document` or `f.Lookup`\n   - use `Rename`, `Set`, `Remove`, and `PruneEmpty` for exact mapping paths; use `Edit` for arbitrary semantic transformations of the AW document\n   - preserve comments\u002Fformatting\u002Fmarkdown body\n   - avoid indentation scanners and whole-document YAML serialization; the helper preserves key tokens for renames and shares the Actions AST source merger for structural edits\n   - return errors from the callback; failed transformations return the original content atomically\n5. Prefer existing helpers before writing custom parsing logic:\n   - `codemod.Frontmatter.Lookup`\n   - `codemod.Frontmatter.Rename` (existing destination fields are authoritative, including null)\n   - `codemod.Frontmatter.Remove` and `PruneEmpty` (comment-bearing parents are retained)\n   - `newFieldRemovalCodemod`\n   - `newMoveTopLevelKeyToOnBlockCodemod`\n6. If the codemod depends on external data or side effects, inject dependencies through a `...WithDeps` constructor so tests can mock behavior.\n7. Register the codemod in `pkg\u002Fcli\u002Ffix_codemods.go` within `GetAllCodemods()`.\n\n## Testing requirements\n\nCreate `pkg\u002Fcli\u002Fcodemod_\u003Cfeature>_test.go` and cover:\n\n1. Metadata correctness (`ID`, `Name`, `Description`, `IntroducedIn`, `Apply != nil`).\n2. Happy path migration with expected output.\n3. No-op behavior when deprecated input is absent.\n4. Idempotence behavior (already-migrated input remains unchanged).\n5. Preservation guarantees:\n   - inline comments\n   - indentation\n   - markdown body after frontmatter\n6. Edge cases specific to the codemod (nested fields, mixed forms, ordering constraints, strict-mode checks, etc.).\n7. Dependency-injection behavior if `...WithDeps` exists (success and fallback\u002Ferror paths).\n\nWhen complexity is high (expression rewriting, parser-like behavior), add fuzz tests in `codemod_\u003Cfeature>_fuzz_test.go` using the pattern in `pkg\u002Fcli\u002Fcodemod_steps_run_secrets_env_fuzz_test.go`.\n\n## Registry\u002Forder tests\n\nAfter adding a codemod, update `pkg\u002Fcli\u002Ffix_codemods_test.go`:\n\n1. Expected codemod IDs list.\n2. Expected codemod order list.\n\nOrder matters because codemods run sequentially and later codemods observe prior transformations.\n\n## Validation commands\n\nRun targeted checks first:\n\n1. `go test -v .\u002Fpkg\u002Fcli -run Codemod -count=1`\n2. `go test -v .\u002Fpkg\u002Fcli -run Fix -count=1`\n\nThen run repository standards:\n\n3. `make build`\n4. `make test-unit`\n5. `make lint`\n\n## Quality bar\n\nA codemod is ready only when it is:\n\n- deterministic\n- safe on repeated runs\n- conservative (no unrelated rewrites)\n- fully covered by tests for migration and no-op paths\n- registered and order-verified in fix codemod registry tests\n","# Go Codemod Implementation Guide\n\nUse this skill when adding or updating codemods used by `gh aw fix`.\n\n## Understand the fix pipeline first\n\n1. Review `pkg\u002Fcli\u002Ffix_command.go` to understand execution flow:\n   - codemods are loaded once via `GetAllCodemods()`\n   - each codemod is applied in registry order\n   - frontmatter is re-parsed before each codemod\n   - codemods must return `(newContent, applied, error)` and be safe for no-op input\n2. Review the codemod registry in `pkg\u002Fcli\u002Ffix_codemods.go`.\n3. Review `pkg\u002Fworkflow\u002Fcodemod\u002Ffrontmatter.go` and reusable constructors in `pkg\u002Fcli\u002Fcodemod_factory.go`. Codemods and workflow linters share the authored `aw.Document` AST.\n\n## Implementation steps\n\n1. Create a new codemod file in `pkg\u002Fcli\u002F` named `codemod_\u003Cfeature>.go`.\n2. Add a package logger with `logger.New(\"cli:codemod_\u003Cfeature>\")`.\n3. Implement `get\u003CFeature>Codemod() Codemod` and populate all metadata fields:\n   - `ID` (stable, unique)\n   - `Name` (human-readable)\n   - `Description` (clear migration behavior)\n   - `IntroducedIn` (release version)\n4. In `Apply`:\n   - check frontmatter preconditions first\n   - return unchanged content and `applied=false` when migration is not needed\n   - transform frontmatter with `codemod.Apply(content, func(f *codemod.Frontmatter) error { ... })`\n   - inspect authored configuration through `f.Document` or `f.Lookup`\n   - use `Rename`, `Set`, `Remove`, and `PruneEmpty` for exact mapping paths; use `Edit` for arbitrary semantic transformations of the AW document\n   - preserve comments\u002Fformatting\u002Fmarkdown body\n   - avoid indentation scanners and whole-document YAML serialization; the helper preserves key tokens for renames and shares the Actions AST source merger for structural edits\n   - return errors from the callback; failed transformations return the original content atomically\n5. Prefer existing helpers before writing custom parsing logic:\n   - `codemod.Frontmatter.Lookup`\n   - `codemod.Frontmatter.Rename` (existing destination fields are authoritative, including null)\n   - `codemod.Frontmatter.Remove` and `PruneEmpty` (comment-bearing parents are retained)\n   - `newFieldRemovalCodemod`\n   - `newMoveTopLevelKeyToOnBlockCodemod`\n6. If the codemod depends on external data or side effects, inject dependencies through a `...WithDeps` constructor so tests can mock behavior.\n7. Register the codemod in `pkg\u002Fcli\u002Ffix_codemods.go` within `GetAllCodemods()`.\n\n## Testing requirements\n\nCreate `pkg\u002Fcli\u002Fcodemod_\u003Cfeature>_test.go` and cover:\n\n1. Metadata correctness (`ID`, `Name`, `Description`, `IntroducedIn`, `Apply != nil`).\n2. Happy path migration with expected output.\n3. No-op behavior when deprecated input is absent.\n4. Idempotence behavior (already-migrated input remains unchanged).\n5. Preservation guarantees:\n   - inline comments\n   - indentation\n   - markdown body after frontmatter\n6. Edge cases specific to the codemod (nested fields, mixed forms, ordering constraints, strict-mode checks, etc.).\n7. Dependency-injection behavior if `...WithDeps` exists (success and fallback\u002Ferror paths).\n\nWhen complexity is high (expression rewriting, parser-like behavior), add fuzz tests in `codemod_\u003Cfeature>_fuzz_test.go` using the pattern in `pkg\u002Fcli\u002Fcodemod_steps_run_secrets_env_fuzz_test.go`.\n\n## Registry\u002Forder tests\n\nAfter adding a codemod, update `pkg\u002Fcli\u002Ffix_codemods_test.go`:\n\n1. Expected codemod IDs list.\n2. Expected codemod order list.\n\nOrder matters because codemods run sequentially and later codemods observe prior transformations.\n\n## Validation commands\n\nRun targeted checks first:\n\n1. `go test -v .\u002Fpkg\u002Fcli -run Codemod -count=1`\n2. `go test -v .\u002Fpkg\u002Fcli -run Fix -count=1`\n\nThen run repository standards:\n\n3. `make build`\n4. `make test-unit`\n5. `make lint`\n\n## Quality bar\n\nA codemod is ready only when it is:\n\n- deterministic\n- safe on repeated runs\n- conservative (no unrelated rewrites)\n- fully covered by tests for migration and no-op paths\n- registered and order-verified in fix codemod registry tests\n",{"name":5,"description":7},"main","8541229759617347888641eba917d3b0ad66a984",".github\u002Fskills\u002Fgo-codemod",626,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw","https:\u002F\u002Fgh.io\u002Fgh-aw","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-15 03:17:36",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add github\u002Fgh-aw --skill go-codemod",{"tool":54,"command":55},"bunx","bunx skills add github\u002Fgh-aw --skill go-codemod",{"tool":57,"command":58},"pnpm","pnpm dlx skills add github\u002Fgh-aw --skill go-codemod","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-codemod\u002FSKILL.md",true,[],[63,88,105,130,156,171],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":75,"publishedAt":33},"01M6ADC942STTXHFV410J4DH0X","GitHub Agentic Workflows","GitHub Agentic Workflows (`gh-aw`) is a GitHub CLI extension for writing Agentic Workflows in markdown and compiling them to GitHub Actions.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002FSKILL.md",[69,72],{"categoryNo":70,"categoryName":71,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":73,"categoryName":74,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[9,76,77,78,79,80,29,81,32,82,83,84,85,86,87],"agentic","agentic workflows","github agentic workflows","workflows","github cli","extension","compiling","cli","writing","actions","github actions","markdown",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":33},"01M6ADC6ZXSA46N9XD6VNAP1MS","windows-compatibility","Cross-platform path handling and command patterns","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.squad\u002Ftemplates\u002Fskills\u002Fwindows-compatibility\u002FSKILL.md",[],[95,96,97,98,99,100,101,102,103,30,104],"windows","windows compatibility","compatibility","bugs","path","high","platform","cross-platform","patterns","git",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":33},"01M6ADC44957SVQF96R5YY247P","versioning-policy","Semver versioning rules for Squad SDK and CLI — prevents prerelease version incidents","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.squad\u002Ftemplates\u002Fskills\u002Fversioning-policy\u002FSKILL.md",[],[112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,32,128,83,129],"policy","versioning policy","versioning","incident","gate","implementation","version","Rules","workspace","pr","ci","npm","semver","release","squad","resolution","incidents","sdk",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":140,"publishedAt":33},"01M6ADC1PHMEAEVR87F8PDR89X","tiered-memory","Three-tier agent memory model (hot\u002Fcold\u002Fwiki) for context reduction per spawn","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.squad\u002Ftemplates\u002Fskills\u002Ftiered-memory\u002FSKILL.md",[136,139],{"categoryNo":137,"categoryName":138,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":73,"categoryName":74,"taxonomyType":21,"taxonomyTypeDesc":22},[141,142,143,144,32,145,146,147,148,149,150,151,152,153,154,155],"tiered memory","memory","memory-management","model","cold","proposal","runtime","three","spawn","management","context","wiki","agent memory","performance","design",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":33},"01M6ADBZTDGFM0E25EWRQEMYEH","test-discipline","Update tests when changing APIs — no exceptions","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.squad\u002Ftemplates\u002Fskills\u002Ftest-discipline\u002FSKILL.md",[162],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[164,165,28,166,167,100,168,115,169,170],"test discipline","discipline","sync","when","tests","quality","update",{"skillNo":172,"name":126,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":33},"01M6ADBX5MJP4Z7CG4XTV8ZVT8","Squad's command catalog and interactive menu. Invoke via \u002Fsquad (slash command) or natural language (\"squad commands\", \"what can squad do\", \"show me squad options\"). Presents categorized operations (Install & Upgrade, Team Management, Issues & PRs, Plugins & Skills, Model & Cost, Sessions & State) as an interactive picker. Routes to the right squad CLI command or the Squad coordinator agent.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgh-aw\u002Fblob\u002Fmain\u002F.squad\u002Ftemplates\u002Fskills\u002Fsquad\u002FSKILL.md",[],[126,177,178,179,180,181,182,183,184,185,186,187,188,30,144,189,190,191,192,193,194,195,83],"show","interactive menu","invoke","coordinator","as","commands","upgrade","options","me","natural language","do","install","team","show me","plugins","issues","state","squad commands","sessions"]