Skip to content
Back to skills

Kinemotion Development

ASecurity

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

  • 666 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added February 9, 2026
developmentpythonrustgobashtestingapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill kinemotion-development --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kinemotion Development?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Kinemotion Development
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-kinemotion-development/badge)](https://www.skillsdirectory.com/skills/majiayu000-kinemotion-development)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.