跳到正文
cccskills
免费在 GitHub 公开

go-codemod

Implement and test Go codemods, automated migration routines used by gh aw fix. The guide covers targeted configuration changes, preserving comments and document content, safe repeated execution, and checks for registration and execution order.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Implement and test Go codemods for the gh aw fix command.

查看安装方法

适用场景

  • Add a migration for deprecated configuration
  • Update an existing migration routine
  • Test preservation of comments and formatting
  • Verify migration order and safe repeated execution

包含的文件(1)

  • SKILL.md3.4 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Go Codemod Implementation Guide

Use this skill when adding or updating codemods used by gh aw fix.

Understand the fix pipeline first

  1. Review pkg/cli/fix_command.go to understand execution flow:
    • codemods are loaded once via GetAllCodemods()
    • each codemod is applied in registry order
    • frontmatter is re-parsed before each codemod
    • codemods must return (newContent, applied, error) and be safe for no-op input
  2. Review the codemod registry in pkg/cli/fix_codemods.go.
  3. Review helper utilities in pkg/cli/yaml_frontmatter_utils.go and reusable codemod helper constructors in pkg/cli/codemod_factory.go.

Implementation steps

  1. Create a new codemod file in pkg/cli/ named codemod_<feature>.go.
  2. Add a package logger with logger.New("cli:codemod_<feature>").
  3. Implement get<Feature>Codemod() Codemod and populate all metadata fields:
    • ID (stable, unique)
    • Name (human-readable)
    • Description (clear migration behavior)
    • IntroducedIn (release version)
  4. In Apply:
    • check frontmatter preconditions first
    • return unchanged content and applied=false when migration is not needed
    • transform only frontmatter using applyFrontmatterLineTransform from pkg/cli/yaml_frontmatter_utils.go
    • preserve comments/formatting/markdown body
    • avoid lossy rewrites and avoid touching unrelated keys
  5. Prefer existing helpers before writing custom parsing logic:
    • findAndReplaceInLine
    • removeFieldFromBlock
    • removeParentBlockIfTrulyEmpty
    • newFieldRemovalCodemod
    • newMoveTopLevelKeyToOnBlockCodemod
  6. If the codemod depends on external data or side effects, inject dependencies through a ...WithDeps constructor so tests can mock behavior.
  7. Register the codemod in pkg/cli/fix_codemods.go within GetAllCodemods().

Testing requirements

Create pkg/cli/codemod_<feature>_test.go and cover:

  1. Metadata correctness (ID, Name, Description, IntroducedIn, Apply != nil).
  2. Happy path migration with expected output.
  3. No-op behavior when deprecated input is absent.
  4. Idempotence behavior (already-migrated input remains unchanged).
  5. Preservation guarantees:
    • inline comments
    • indentation
    • markdown body after frontmatter
  6. Edge cases specific to the codemod (nested fields, mixed forms, ordering constraints, strict-mode checks, etc.).
  7. Dependency-injection behavior if ...WithDeps exists (success and fallback/error paths).

When complexity is high (expression rewriting, parser-like behavior), add fuzz tests in codemod_<feature>_fuzz_test.go using the pattern in pkg/cli/codemod_steps_run_secrets_env_fuzz_test.go.

Registry/order tests

After adding a codemod, update pkg/cli/fix_codemods_test.go:

  1. Expected codemod IDs list.
  2. Expected codemod order list.

Order matters because codemods run sequentially and later codemods observe prior transformations.

Validation commands

Run targeted checks first:

  1. go test -v ./pkg/cli -run Codemod -count=1
  2. go test -v ./pkg/cli -run Fix -count=1

Then run repository standards:

  1. make build
  2. make test-unit
  3. make lint

Quality bar

A codemod is ready only when it is:

  • deterministic
  • safe on repeated runs
  • conservative (no unrelated rewrites)
  • fully covered by tests for migration and no-op paths
  • registered and order-verified in fix codemod registry tests

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Coordinate work across AI agents with shared rules for locating team files, recording decisions and their reasons, and requesting help. It also defines who owns revisions after a reviewer rejects an artifact.

中文简介正在准备中。当前显示英语简介。

  • Locate team files across separate working directories
  • Record decisions that affect other agents
  • Request input from another specialist
github/gh-aw54212026年10月19日 更新

Set shared development rules for an agent team: keep specific agent names out of product code, tests, and CI configuration, verify affected tests before finishing, and record lessons learned from mistakes.

中文简介正在准备中。当前显示英语简介。

  • Share development rules across multiple agents
  • Keep team-specific agent names out of code and tests
  • Check affected tests before declaring work complete
github/gh-aw54212026年10月19日 更新

Routes requests to design, create, update, debug, or upgrade GitHub Agentic Workflows to the appropriate instructions. It helps the agent select a workflow-specific procedure and apply any additional rules defined for the repository.

中文简介正在准备中。当前显示英语简介。

  • Designing a new workflow through questions
  • Investigating failed runs and recurring errors
  • Upgrading workflows and addressing deprecations
github/gh-aw54212026年10月19日 更新

Prepare architecture proposals before implementation so the team can agree on a direction. Organize evidence, technical choices, effects on existing work, risks, and the first release’s scope into a document with clear recommendations and decision owners.

中文简介正在准备中。当前显示英语简介。

  • Proposing a major architecture change
  • Replanning milestones after a foundation change
  • Comparing technical options before seeking approval
github/gh-aw54212026年10月19日 更新

Update the gh-aw-firewall version used by gh-aw, rebuild generated files, and review release notes and configuration schemas, which define valid settings. It guides related code and test updates while identifying follow-up work that remains.

中文简介正在准备中。当前显示英语简介。

  • Updating the firewall version used by gh-aw
  • Reviewing release notes for integration changes
  • Checking configuration schema differences
github/gh-aw54212026年10月19日 更新

Review git and gh operations in gh-aw workflows to check credential availability for each repository. Identify missing token handoffs, risky expansions of limited checkouts, and error handling needed where credentials are intentionally unavailable.

中文简介正在准备中。当前显示英语简介。

  • Reviewing git operations after repository checkout
  • Checking tokens for private cross-repository access
  • Reviewing sparse and shallow checkout changes
github/gh-aw54212026年10月19日 更新

查看 github 的全部技能

报告此技能的问题