スキル一覧に戻る
jack-michaud

writing-ast-check

by jack-michaud

Eval driven Claude Code skills

3🍴 0📅 2026年1月9日
GitHubで見るManusで実行

SKILL.md


name: writing-ast-check description: Create AST-based checks for evaluating generated Python code quality

Writing AST-Based Checks for Evals

This process documents how to create robust, AST-based checks for evaluating the quality of AI-generated Python code.

Process

1. Define the Check Criteria

Clearly specify what you're checking for:

Example: We want to ensure generated code uses modern Python union syntax (str | None) instead of legacy Optional[str] from the typing module.

Acceptance criteria:

  • ✅ Files using | None syntax
  • ✅ Files with no optional types at all
  • ❌ Files using Optional[T] syntax

2. Add the check function to the AST Helper Module

Create a dedicated function in AST helpers: evals/<eval_name>/ast_helpers.py

3. Add Check to EvalResult

Update evals/<eval_name>/checks.py:

class EvalResult:
    # Used the writing-services skill
    used_service_skill = Check(default=False, passed=True)

    # Used | None instead of Optional
    used_none_instead_of_optional = Check(default=False, passed=True)

    def to_dict(self) -> dict:
        """Convert eval results to a dictionary for logging."""
        return {
            "used_service_skill": self.used_service_skill.did_pass(),
            "used_none_instead_of_optional": self.used_none_instead_of_optional.did_pass(),
        }

4. Integrate Check in Eval

Update __main__.py to run the check after the agent completes:

from .ast_helpers import check_uses_union_none_syntax

async def main(gym_project_directory: Path) -> None:
    # ... agent execution code ...

    # Check if the generated logger.py uses | None instead of Optional
    logger_file_path = gym_project_directory / "jack-software/evals/logger.py"
    if check_uses_union_none_syntax(logger_file_path):
        eval_result.used_none_instead_of_optional.mark(True)

    # ... logging code ...

5. Write Comprehensive Tests

Add a class to the test_ast_helpers.py with test cases.

Testing Your Check

Run the tests:

make test-services-eval

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です