本文へ移動
cccskills
無料GitHub で公開日本語紹介

Summarize testdata changes

Carbonの`toolchain/*/testdata`の差分をコード変更と結び付け、入力・診断・出力の変更を漏れなく分類した報告にまとめる手順を示します。

原文原文の説明を見る

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

carbon-language/carbon-langスター 33,929(GitHub 33,929 + cccskills 0)
連携ツールGitHub

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • testdataの差分を報告したいとき
  • 変更をテーマごとに分類したいとき
  • 入力や診断出力の変更を列挙したいとき
  • 報告に差分の漏れがないか確認したいとき

日本語での紹介

できること

Carbonのtoolchain/*/testdataにある差分を調べ、コード変更と関連付けて報告する手順を示します。Git、Jujutsu、GitHubのプルリクエストから差分を特定し、付属のPythonスクリプトで入力、標準エラー、標準出力の追加・削除を分類できます。変更の共通点に沿ってグループを作り、テスト入力や診断出力に変更があれば、該当ファイルをすべて挙げて内容を記載します。CHECK行を含む全ての変更が少なくとも一つのグループに含まれているか、最後に差分と照らして確認します。

こんなときに便利

コンパイラの変更に伴ってテストデータが多数更新され、変更内容をレビュー担当者に説明したいときに向いています。入力の変更と期待出力だけの変更を分け、関連するファイルをまとめて報告できます。差分が大きい場合も、ヘルパースクリプトで追加・削除箇所を整理してから記述できます。

使い方の例

  • 「このプルリクエストのtestdata差分を分類して報告にまとめてください」
  • 「入力と診断出力の変更をファイルごとに漏れなく列挙してください」
  • 「コード変更とテストデータの変更を関連付けて要約してください」

注意点

対象はCarbonのtoolchain/*/testdataです。差分の取得にはGit、Jujutsu、またはGitHub CLIを使う手順が示されています。付属のPythonスクリプトは統合形式の差分を標準入力から読み取ります。このスキルは差分の報告向けであり、変更が正しいかどうかのレビューは別のスキルの対象です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(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 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Accessing GitHub issues

無料概要あり

コマンドラインからGitHub issueの本文やコメントを読み取り専用で確認し、URLや番号から対象リポジトリを指定する手順を案内します。

  • issueの本文とコメントを読みたいとき
  • URLからissueの内容を確認したいとき
  • 別リポジトリのissueを参照したいとき
carbon-language/carbon-lang3.4万2026年10月26日 更新

Agent tools

無料概要あり

AIアシスタントがCarbonのコードベースを扱う際に、専用ツールでファイルを閲覧・検索・編集し、一時ファイルを管理するためのルールを示します。

  • Carbonのファイルを規則に沿って検索したいとき
  • 専用ツールを使ったファイル編集を確認したいとき
  • 一時ファイルの置き場所と削除ルールを確認したいとき
carbon-language/carbon-lang3.4万2026年10月26日 更新

Bazel usage

無料概要あり

Bazeliskを使ったCarbonプロジェクトのビルド、テスト、実行、デバッグの基本手順を確認し、対象を絞った検証やASanの利用方法も把握できます。

  • Carbonのコードをビルドしたいとき
  • 変更箇所に関係するテストを実行したいとき
  • Bazelで作ったバイナリを起動したいとき
carbon-language/carbon-lang3.4万2026年10月26日 更新

Builtin functions

無料概要あり

Carbonコンパイラに組み込み関数を追加する際の登録、型シグネチャ検証、定数評価、LLVMコード生成、テスト方法を案内します。

  • 組み込み関数を登録したいとき
  • 定数評価の処理を実装したいとき
  • LLVM IRへの変換を追加したいとき
carbon-language/carbon-lang3.4万2026年10月26日 更新

Code style

無料概要あり

Carbonツールチェーンのコードを書く際に、言語ごとの整形方法やコメント、命名、ドキュメント、コミットメッセージの基準を確認できます。

  • Carbonコードの書式を整えたいとき
  • コメントやドキュメントを見直したいとき
  • コードの名前が意味に合うか確認したいとき
carbon-language/carbon-lang3.4万2026年10月26日 更新

Diagnostics

無料概要あり

Carbonコンパイラのエラーや警告を定義し、書式やソース位置のラベルを整え、テストで網羅性を確かめる方法を案内します。

  • 診断メッセージを追加したいとき
  • エラー位置にラベルを付けたいとき
  • 診断文の表記を統一したいとき
carbon-language/carbon-lang3.4万2026年10月26日 更新

carbon-language のスキルをすべて見る

このスキルの問題を報告する