AgentSkillsCN

code-generation

当您生成样板代码、__init__.py 文件,或测试框架时,可选用此技能。该技能提供的脚本能够生成符合规范、保持一致性的代码。

SKILL.md
--- frontmatter
name: code-generation
description: Use when generating boilerplate code, __init__.py files, or test scaffolds. Provides scripts that generate consistent, convention-following code.

Code Generation Tools

When to use: When creating new modules, updating exports, or scaffolding tests.


generate_inits.py

Purpose: Auto-generate __init__.py files with proper __all__ exports.

Use when:

  • Adding new public functions/classes to a module
  • Creating a new package
  • Cleaning up exports after refactoring

Usage:

bash
python scripts/generate_inits.py

How it works:

  1. Scans Python modules for public names (classes, functions, constants)
  2. Generates __init__.py with __all__ listing public exports
  3. Uses config from scripts/configs/generate_inits_config.yml

What it exports:

  • Top-level classes and functions (not private _*)
  • Module-level constants (ALL_CAPS)
  • Filters out banned exports per config

Decision rule: After adding public functions to a module, run this to update exports.


generate_tests.py

Purpose: Generate test scaffolds with smart assertions and proper fixtures.

Use when:

  • Adding tests for a new module
  • Creating test structure for existing code
  • Getting a head start on test implementation

Usage:

bash
# Generate tests for a module
python scripts/generate_tests.py nomarr.services.domain.tagging_svc --output tests/unit/services/test_tagging_svc.py

# Preview without writing
python scripts/generate_tests.py nomarr.components.ml.ml_embed_comp --preview

# Specify layer for auto-fixture selection
python scripts/generate_tests.py nomarr.workflows.processing.process_file_wf --layer workflows

Generated tests include:

  • Proper pytest structure
  • Fixtures for layer-appropriate mocks (DB, config, ML backends)
  • Test functions for each public method
  • Type-appropriate assertions

Workflow: Adding a New Module

  1. Create the module with your functions/classes

  2. Update exports:

    bash
    python scripts/generate_inits.py
    
  3. Generate test scaffold:

    bash
    python scripts/generate_tests.py nomarr.components.new_comp --output tests/unit/components/test_new_comp.py --preview
    
    # If preview looks good:
    python scripts/generate_tests.py nomarr.components.new_comp --output tests/unit/components/test_new_comp.py
    
  4. Fill in test implementations


Workflow: After Refactoring Exports

bash
# After adding/removing public functions:
python scripts/generate_inits.py

# Review changes:
git diff nomarr/*/__init__.py

Configuration

generate_inits_config.yml

Located at scripts/configs/generate_inits_config.yml:

yaml
# Packages to scan
packages:
  - nomarr.services
  - nomarr.workflows
  - nomarr.components
  - nomarr.persistence
  - nomarr.helpers

# Names to never export
banned_exports:
  - TYPE_CHECKING
  - annotations

Key Rules

  • Run generate_inits.py after adding public symbols — keeps exports consistent
  • Use --preview before writing test files — verify structure is correct
  • Generated tests are scaffolds — you still need to fill in assertions and edge cases