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

Summarize testdata changes

Use this skill to write a complete report of changes in Carbon toolchain testdata. It shows how to identify diffs, extract input and output changes, group related edits, list affected files, and validate that every change is represented.

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

원문원문 설명 보기

Instructions for summarizing changes to Carbon testdata files (`toolchain/*/testdata`).

carbon-language/carbon-lang스타 33,929(GitHub 33,929 + cccskills 0)
연동 도구GitHub

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Summarizing testdata changes in a code review
  • Grouping related test input and output edits
  • Listing every affected testdata file
  • Checking that a change report covers the full diff

포함된 파일(2)

  • SKILL.md7.2 KB
  • scripts/parse_diff.py2.3 KB

SKILL.md(원문)

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

Summarize testdata changes

<!-- Part of the Carbon Language project, under the Apache License v2.0 with LLVM Exceptions. See /LICENSE for license information. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -->

This skill provides instructions for creating a comprehensive report summarizing changes to Carbon testdata files (toolchain/*/testdata) and associating them with related code changes.

This skill is about reporting a diff. For deciding whether the diff is correct in the first place, see the Review testdata changes skill.

Goals

Produce a report that:

  1. Summarizes code changes outside of testdata.
  2. Groups similar testdata changes together, listing all affected files for each group. Every change to testdata must be represented by at least one group. This includes changes to CHECK lines.
  3. Provides detailed breakdowns of test input changes and diagnostic output changes in the corresponding group. Every single change to inputs or to STDERR checks must be explicitly mentioned in the group, with either an inline diff or a link to the file.

Process

1. Identify Changes

Use your VCS (Git or Jujutsu) or query Github to identify changes. For large changes, it is recommended to use the included helper script to extract test input changes.

For Git Users:

  • Summarize code changes: git diff --stat -- ':!toolchain/*/testdata/*'
    • To see content of non-testdata changes: git diff -- ':!toolchain/*/testdata/*'
  • Identify testdata changes: git diff --name-only 'toolchain/*/testdata/*'

For Jujutsu (jj) Users:

  • Summarize code changes: jj --no-pager diff --stat '~toolchain/*/testdata'
    • Note: Quoting the fileset '~toolchain/*/testdata' is critical if it contains wildcards.
    • To see content of non-testdata changes, use --git to get standard unified diff format: jj --no-pager diff --git '~toolchain/*/testdata'
  • Identify testdata changes: jj --no-pager diff --name-only 'toolchain/*/testdata'

For Github Pull Requests:

  • Summarize code changes: gh pr diff
  • Identify testdata changes: gh pr diff --name-only | grep '^toolchain/.*/testdata'

Handling Specific Revisions:

If you are summarizing changes in a specific revision (for example, @-) or pull request (for example, #1234), add -r <rev> or <pr_number> to the commands:

  • git diff <rev>^ <rev> ... (or use git show <rev>)
  • jj --no-pager diff -r <rev> ...
  • gh pr diff <pr_number>

2. Extract Test Input Changes (Recommended)

To easily identify changes, use the included Python helper script to extract all text additions and removals from the diff, categorized by Input, STDERR, and STDOUT changes. This script reads a unified diff from stdin.

# For Git:
git diff -- 'toolchain/*/testdata/*' | python3 .agents/skills/summarize_testdata_changes/scripts/parse_diff.py

# For Jujutsu (jj):
jj diff --git 'toolchain/*/testdata' | python3 .agents/skills/summarize_testdata_changes/scripts/parse_diff.py

# For a specific revision with jj:
jj diff -r @- --git 'toolchain/*/testdata' | python3 .agents/skills/summarize_testdata_changes/scripts/parse_diff.py

# For a specific PR with Github:
gh pr diff 1234 | python3 .agents/skills/summarize_testdata_changes/scripts/parse_diff.py

3. Identify Patterns and Produce a List of Groups

  • Read the diff and produce a list of groups of changes that share a common theme or cause (for example, "Updated expected output for integer literals", "Added tests for new keyword").
  • CRITICAL: Every single change in the testdata diff must be represented by at least one group. Do not ignore changes to CHECK lines.
    • If it's not clear what group a change belongs to, create a new group for it.
  • For each group:
    • Provide a brief description of the group.
    • (Optional) Briefly note if the group appears to be an intended or unintended consequence of the code changes.
  • Divide the groups into sections:
    • Test Changes: Changes to test inputs (lines not prefixed with // CHECK), along with diagnostic output changes where relevant
    • Diagnostic Changes: Changes to diagnostic output (lines prefixed with // CHECK:STDERR) with no corresponding changes to test inputs
    • [Output Type] Changes: Changes to STDOUT (lines prefixed with // CHECK:STDOUT)
      • Create one section for each relevant kind of test. For example, parser tests should typically be in a "Parse Tree Changes" section, check tests should typically be in a "SemIR Changes" section, and lower tests should typically be in an "LLVM IR Changes" section.

4. Improve Grouping

  • Read the list of groups and check to see if any of them should be combined or split apart. If needed, do so.

5. Assign Changes to Groups

  • Read the diff again, and then for each change in the diff:
    • Add the change to the appropriate group (or, rarely, groups).
    • CRITICAL: Every single change in the testdata diff must be represented by at least one group. Do not ignore changes to CHECK lines.
    • If the change affects test inputs (lines not prefixed with // CHECK) or diagnostic output (lines prefixed with // CHECK:STDERR):
      • List the file within the group. Don't just give one or a few examples. Include every file.
      • Provide an inline diff if the change is small.
      • Provide a link to the file if the change is large.
    • Otherwise, if the change only affects STDOUT (lines prefixed with // CHECK:STDOUT):
      • Ensure the group contains a representative example that matches the current change.
      • The representative example should be an inline diff of the change.
    • CRITICAL: Every single change to test inputs and diagnostic outputs in the files being summarized must be explicitly listed in at least one group. Do not skip changes, even if they are similar to changes you've already seen, and do not just give examples.

6. Validation

As a final validation step:

  • Read through the testdata diff again.
  • Ensure that every change in the diff is reflected by at least one group in the report.

Report Template

Use the following template for the generated report:

# `testdata` Change Summary

## Code Changes

[One paragraph summarizing changes outside of testdata.]

## Test Changes

### [Group Name]

[Description of the group.]

[Change 1: diff context OR link]

[Change 2: diff context OR link]

...

## Diagnostic Changes

### [Group Name]

[Description of the group.]

[Change 1: diff context OR link]

[Change 2: diff context OR link]

...

## [Output Type] Changes

### [File Path]

[Description of the group.]

[Example diff context]

Changes of this kind were found in [Number] files. Examples: [List of files]

...

Skip sections that would be empty.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

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

같은 저장소의 스킬

Accessing GitHub issues

무료요약 있음

명령줄의 `gh`로 GitHub 이슈 본문과 댓글을 읽기 전용으로 확인하는 방법을 안내합니다. 번호나 URL로 이슈를 찾고 다른 저장소를 지정하는 방법, 댓글이 많은 경우 JSON과 `jq`로 내용을 추출하는 방법을 다룹니다.

  • 이슈 본문과 댓글 읽기
  • URL로 이슈 내용 확인
  • 다른 저장소의 이슈 조회
carbon-language/carbon-lang3.4만2026년 10월 26일 업데이트

Agent tools

무료요약 있음

Carbon 저장소에서 일하는 AI 도우미가 전용 환경 도구로 파일을 읽고 검색하고 편집하는 규칙을 안내합니다. 임시 파일을 둘 위치와 삭제 시점, 사용자 지정 프로그램을 허용하는 경우도 설명합니다.

  • 정해진 도구로 Carbon 파일 검색
  • 파일 변경에 맞는 전용 도구 선택
  • 임시 파일 위치와 삭제 규칙 확인
carbon-language/carbon-lang3.4만2026년 10월 26일 업데이트

Bazel usage

무료요약 있음

Carbon 프로젝트에서 Bazelisk로 빌드, 테스트, 실행하는 기본 절차를 안내합니다. 대상을 지정한 검증, ASan 활성화, 시스템 의존성 변경 후 캐시 재생성도 다룹니다.

  • Carbon 코드 빌드
  • 변경 사항과 관련된 테스트 실행
  • Bazel로 빌드한 프로그램 실행
carbon-language/carbon-lang3.4만2026년 10월 26일 업데이트

Builtin functions

무료요약 있음

Carbon 컴파일러에 내장 함수를 추가하는 절차를 안내합니다. 함수 등록과 시그니처 검증부터 상수 평가, 런타임 호출의 LLVM IR 생성, Prelude 연결, 최소 Prelude를 이용한 개별 테스트까지 다룹니다.

  • 내장 함수 등록
  • 상수 평가 구현
  • LLVM IR 생성 추가
carbon-language/carbon-lang3.4만2026년 10월 26일 업데이트

Code style

무료요약 있음

Carbon 툴체인의 Bazel, C++, Carbon, Markdown, Python 파일 서식 기준을 안내합니다. 주석, 문서, 이름, 설계 원칙과 변경 내용을 설명하는 커밋 메시지 작성법도 다룹니다.

  • Carbon 코드와 관련 파일 서식 정리
  • 주석과 문서 검토
  • 이름이 실제 의미에 맞는지 확인
carbon-language/carbon-lang3.4만2026년 10월 26일 업데이트

Diagnostics

무료요약 있음

Carbon 도구 체인에서 오류와 경고 진단을 추가하거나 수정하는 방법을 안내합니다. 진단 종류 등록, 형식이 지정된 인수로 메시지 구성, 소스 위치에 라벨과 문맥 연결, 문구 규칙 및 테스트 범위 확인을 다룹니다.

  • 진단 메시지 추가
  • 소스 위치에 라벨 지정
  • 진단 문구 통일
carbon-language/carbon-lang3.4만2026년 10월 26일 업데이트

carbon-language의 스킬 모두 보기

이 스킬의 문제 신고