Claude-skill-registry add_type

gwexpyに新しい配列型(Array/Series/Field)とコレクションを実装する

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/add-type" ~/.claude/skills/majiayu000-claude-skill-registry-add-type && rm -rf "$T"
manifest: skills/data/add-type/SKILL.md
source content

Implement GWExPy Type

This skill guides the implementation of new array/field types in

gwexpy
, ensuring consistency with the existing class hierarchy, metadata management, and documentation standards.

Workflow

1. Survey & Plan

  • Identify Base Class: Inherit from
    gwexpy.types.Array
    ,
    Array2D
    , or similar.
  • Metadata: Determine new metadata slots needed (e.g.,
    _axis0_name
    ,
    _unit
    ).
  • Behavior: Define slicing behavior (does it drop dimensions or maintain them?), arithmetic rules, and domain logic (FFT, etc.).

2. Implementation: Core Class

  • File: Create
    gwexpy/types/yourtype.py
    .
  • Class Definition:
    class YourType(BaseArray):
        _metadata_slots = BaseArray._metadata_slots + ("_new_slot",)
    
  • __new__
    :
    • Validate input structure (ndim, etc.).
    • Initialize metadata slots (handling defaults).
    • Call
      super().__new__
      .
  • __array_finalize__
    :
    • Handle 3 creation scenarios:
      obj
      is None (explicit new),
      obj
      is subclass (view casting),
      obj
      is different type (copy/slice).
    • Copy metadata from
      obj
      to
      self
      .
  • Metadata-Preserving Indexing:
    Field4D
    等の多次元クラスでは、インデックス操作 (
    __getitem__
    ) 時に次元を落とさないことが推奨されます。整数インデックス
    i
    slice(i, i+1)
    に変換して処理することで、軸の数とメタデータ(軸名称や単位)を一貫して維持できます。詳細は
    manage_field_metadata
    スキルを参照してください。
  • Transpose/Swapaxes:
    • Override to update axis-dependent metadata if applicable.

3. Implementation: Collections

  • File:
    gwexpy/types/yourtype_collections.py
    (or inside the same file if small).
  • List Class: Inherit
    list
    . Add batch methods (e.g.,
    process_all
    ).
  • Dict Class: Inherit
    dict
    . Add batch methods.

4. Integration

  • Export: Add the new classes to
    gwexpy/types/__init__.py
    .
  • Docs:
    • Create
      docs/reference/en/YourType.md
      and
      docs/reference/ja/YourType.md
      .
    • Add to
      docs/reference/{en,ja}/index.rst
      .

5. Testing

  • Location:
    tests/types/test_yourtype.py
    .
  • Coverage:
    • Construction (from array, from list, with units).
    • Metadata persistence.
    • Slicing behavior (key feature).
    • Arithmetic operations.
    • Collection behavior.

Key Considerations

  • Quantity Compatibility: gwexpy types are often subclasses of
    astropy.units.Quantity
    . Ensure
    unit
    handling works.
  • Axis Management: If managing axes, use
    AxisApiMixin
    or look at
    Array3D
    /
    Array4D
    for how to sync separate axis properties with the array shape.
  • Documentation: Always provide both English and Japanese API references.