Skip to main content

kinemotion-development

Apply kinemotion development standards. Use when writing Python code, creating tests, modifying the kinemotion codebase, or reviewing code quality.

Zur Installation springen

Quellinformationen

Repository
KinemotionInc/kinemotion
Letzte Quellaktivität
16. Januar 2026 um 04:26
Erkannte Sprache von SKILL.md
Englisch
Sterne
1
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
kinemotion-development
description
Apply kinemotion development standards. Use when writing Python code, creating tests, modifying the kinemotion codebase, or reviewing code quality.
# Kinemotion Development Standards ## Pre-Commit Checklist Always run before committing: ```bash uv run ruff check --fix # Auto-fix linting uv run ruff format # Format code uv run pyright # Type check (strict) uv run pytest # Run all tests ``` Or combined: ```bash uv run ruff check --fix && uv run ruff format && uv run pyright && uv run pytest ``` ## Quality Targets | Metric | Target | Current | | ---------------- | ------ | ------- | | Test coverage | ≥ 50% | 80.86% | | Code duplication | < 3% | 2.96% | | Type errors | 0 | 0 | | Lint errors | 0 | 0 | Check duplication: `npx jscpd src/kinemotion` ## Type Hints - Use `NDArray[np.float64]` for numpy arrays - Use `TypedDict` for metric dictionaries - Use `Literal` for string unions - Pyright strict mode enforced ```python from numpy.typing import NDArray from typing import TypedDict, Literal QualityPreset = Literal["fast", "balanced", "accurate"] class CMJMetrics(TypedDict): jump_height_cm: float flight_time_ms: float ``` ## Module Structure ``` src/kinemotion/ ├── cli.py # Main CLI entry point ├── api.py # Public Python API ├── core/ # Shared utilities │ ├── validation.py # Base validation classes │ ├── pose.py # MediaPipe wrapper │ ├── filtering.py # Signal processing │ └── video_io.py # Video I/O handling ├── cmj/ # CMJ analysis module │ ├── cli.py # CMJ CLI subcommand │ ├── analysis.py # Core CMJ algorithm │ ├── kinematics.py # Velocity, position calc │ └── validation_bounds.py # CMJ-specific bounds └── dropjump/ # Drop jump module ├── cli.py # Drop jump CLI subcommand ├── analysis.py # Core drop jump algorithm └── validation_bounds.py # Drop jump bounds ``` ## Testing ### Structure Mirror source: `tests/core/`, `tests/cmj/`, `tests/dropjump/`, `tests/cli/` ### Fixtures Use centralized fixtures from `tests/conftest.py`: - `cli_runner`: Click test runner - `minimal_video`: Synthetic test video - `sample_video_path`: Path to test fixture ### Edge Cases to Test - Empty arrays - Single frame videos - NaN values in landmarks - Missing landmarks (occlusion) - Zero velocity scenarios ```python @pytest.mark.parametrize("input_data,expected", [ (np.array([]), None), # Empty (np.array([1.0]), 1.0), # Single value (np.array([np.nan, 1.0, 2.0]), None), # NaN handling ]) def test_edge_cases(input_data, expected): ... ``` ## Key Algorithm Differences | Aspect | CMJ | Drop Jump | | ----------------- | -------------------------- | -------------------- | | Search direction | Backward (from peak) | Forward | | Velocity type | Signed (direction matters) | Absolute (magnitude) | | Key phase | Countermovement detection | Ground contact | | Starting position | Floor level | Elevated (box) | ## Common Gotchas 1. **CMJ velocity must be signed** - backward search requires knowing direction 2. **Convert NumPy for JSON** - use `int()`, `float()` before serialization 3. **Handle video rotation** - mobile videos have rotation metadata 4. **Read first frame for dimensions** - don't trust OpenCV properties ## Commit Format Use Conventional Commits: ``` <type>(<scope>): <description> Types: feat, fix, docs, test, refactor, perf, chore ``` Examples: ``` feat(cmj): add triple extension tracking fix(dropjump): correct ground contact detection test(core): add filtering edge case tests ``` ## Code Style - 88 character line limit (ruff) - Use early returns to reduce nesting - Extract methods for complexity > 15 - Prefer composition over inheritance - Single Responsibility for all functions ## Adding New Analysis Type 1. Create module directory: `src/kinemotion/<type>/` 2. Implement: `cli.py`, `analysis.py`, `kinematics.py` 3. Add validation bounds in `validation_bounds.py` 4. Register CLI in main `cli.py` 5. Export in `api.py` and `__init__.py` 6. Add tests mirroring structure 7. Update CLAUDE.md quick reference
Auf GitHub ansehen