본문으로 건너뛰기
cccskills
무료GitHub에 공개

go-codemod

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Standard collaboration patterns for all squad agents — worktree awareness, decisions, cross-agent communication

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 19일 업데이트

Shared hard rules enforced across all squad agents

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 19일 업데이트

Route gh-aw design, creation, diagnosis, patching, active debugging, and upgrade requests to the right strategies.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 19일 업데이트

How to write comprehensive architectural proposals that drive alignment before code is written

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 19일 업데이트

Upgrade gh-aw to latest gh-aw-firewall release and identify follow-up spec tasks.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 19일 업데이트

Review code that performs git or gh operations against repository checkouts in gh-aw, checking that the right credentials are available at the right time and that sparseness, shallowness and credential-free factors are properly considered.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

github/gh-aw5.4천2026년 10월 19일 업데이트

github의 스킬 모두 보기

이 스킬의 문제 신고