Agent skill
clean-code-step-1-api-compatibility-check-mandatory-before-wr
Sub-skill of clean-code: Step 1: API Compatibility Check (MANDATORY before writing shims) (+2).
Install this agent skill to your Project
npx add-skill https://github.com/vamseeachanta/workspace-hub/tree/main/.claude/skills/_archive/workspace-hub/clean-code/step-1-api-compatibility-check-mandatory-before-wr
SKILL.md
Step 1: API Compatibility Check (MANDATORY before writing shims) (+2)
Step 1: API Compatibility Check (MANDATORY before writing shims)
# Compare __init__ signatures: old vs canonical
python3 -c "
import inspect
from old.module import OldClass
from canonical.module import CanonicalClass
print('OLD:', inspect.signature(OldClass.__init__))
print('NEW:', inspect.signature(CanonicalClass.__init__))
"
Checklist before shimming any class:
-
__init__kwarg signatures match (no removed/renamed parameters) - Factory classmethods match (
from_geojson(path)vsfrom_geojson(path, name)) - All module-level attributes that tests patch exist on canonical (
HAS_RASTERIO,HAS_FOLIUM)
Step 2: Diverged API — Use Relative Imports, Do NOT Shim
If __init__ signatures differ between old and canonical:
- Do NOT shim the base class — any subclass calling
super().__init__(crs=crs)with the old kwarg will crash at runtime withTypeError: unexpected keyword argument - Fix the subclass: change its import to use a local relative import pointing to the compatible (old) class; shim only the unaffected modules (core/, io/, integrations/)
# WRONG: shim breaks subclass calling super().__init__(crs=crs)
# specialized/gis/layers/feature_layer.py (shim)
from digitalmodel.gis.layers.feature_layer import FeatureLayer # canonical dropped crs kwarg
# CORRECT: keep old feature_layer.py as-is; fix the subclass import
# specialized/gis/layers/well_layer.py
from .feature_layer import FeatureLayer # relative → uses local compatible class
Step 3: Re-export Patch-Target Attributes
Tests that use unittest.mock.patch.object(module, "HAS_X", ...) require HAS_X to exist
as a module-level attribute on the shim module. Shims must re-export these flags:
# WRONG: shim omits the flag
from digitalmodel.gis.io.geotiff_handler import GeoTIFFHandler # noqa: F401
# → patch.object(geotiff_handler, "HAS_RASTERIO", False) raises AttributeError
# CORRECT: re-export flag alongside the class
from digitalmodel.gis.io.geotiff_handler import GeoTIFFHandler, HAS_RASTERIO # noqa: F401
__all__ = ['GeoTIFFHandler', 'HAS_RASTERIO']
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
gsd-complete-milestone
Archive completed milestone and prepare for next version
gsd-reapply-patches
Reapply local modifications after a GSD update
gsd-verify-work
Validate built features through conversational UAT
gsd-thread
Manage persistent context threads for cross-session work
clinical-trial-protocol
Generate clinical trial protocols for medical devices or drugs through a modular, waypoint-based architecture with research-only and full protocol modes.
single-cell-rna-qc
Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations.
Didn't find tool you were looking for?