with one click
pre-commit
// Run Rust/Python/MCP checks, fix issues, then summarize findings before committing
// Run Rust/Python/MCP checks, fix issues, then summarize findings before committing
Control TP-Link Tapo smart home devices (lights, plugs, power strips, hubs and sensors, cameras) via [Tapo MCP](https://github.com/mihai-dinculescu/tapo/tree/main/tapo-mcp).
Release a new version of the OpenClaw skill in `tapo-mcp/openclaw-skill/` by bumping its version, committing, and publishing via `npx clawhub`
Create a signed git commit following Conventional Commits, after running /pre-commit and /changelog when appropriate
Release a new version of the tapo (Rust) and tapo-py (Python) crates together, sharing the same version number
Bump maturin to the latest release and regenerate `.github/workflows/tapo-py.yml`, preserving local customizations
Update CHANGELOG.md when the public API of the tapo (Rust), tapo-py (Python), or tapo-mcp (MCP) crates changes
| name | pre-commit |
| description | Run Rust/Python/MCP checks, fix issues, then summarize findings before committing |
Run all checks, fix any issues found, then present a summary table.
Run the following checks if there are changes in the tapo/, tapo-py/, or tapo-mcp/ directories. Fix all issues found. Run independent checks (cargo check, cargo clippy, cargo fmt, cargo test) in parallel.
Unless otherwise specified, run checks at the workspace level (no -p flags) with --all-features to ensure cross-crate issues are caught.
cargo check --all-featurescargo clippy --all-featurescargo fmt --allcargo test --all-featurescargo clean --doc && RUSTDOCFLAGS="-D warnings" cargo doc -p tapo --no-deps --all-featuresunwrap() in non-test code without a // safe: commentunsafe in non-test code without a // SAFETY: commentuse (max one level of {} nesting)Run the following checks if there are changes in the tapo/ or tapo-py/ directories. Fix all issues found.
.pyi stubs if Python-exposed Rust types changed#[pyclass] types are imported and registered in tapo-py/src/lib.rstapo-py/examples/ are updated to match corresponding Rust examples in tapo/examples/cd tapo-py and activate the virtual environmentuv run mypy . — fix all type errorsuv run black . — fix all formatting issuesRun the following checks if there are changes in the tapo-mcp/ directory. Fix all issues found.
#[derive(JsonSchema)] types have schemars annotations — including tool input params, response types, enums, and their fields/variants. Check for descriptions and range constraints where applicable.tapo-mcp/README.md reflects any MCP API changes (tools, resources, capabilities, env vars, auth)tapo-mcp/openclaw-skill/SKILL.md — frontmatter (description, version, requires), Setup, Tools section with example npx mcporter call invocationstapo-mcp/openclaw-skill/references/setup.md — verification table (tool, description, parameters)tapo-mcp/openclaw-skill/references/tapo-mcp-setup.md — Tools table, Resources table, Configuration env vars, Authentication, Deployment (kept in sync with tapo-mcp/README.md)tapo-mcp/src/server.rs with_instructions(...) (e.g. "plugs, lights, power strips, hubs and their child sensors, cameras")tapo-mcp/openclaw-skill/SKILL.md frontmatter description: (e.g. (lights, plugs, power strips, hubs and sensors, cameras))Run the following checks if there are changes in the tapo/ or tapo-py/ directories. Fix all issues found.
SUPPORTED_DEVICES.md is up to date: add, remove, or regroup rows/columns when a handler's public method list changed, a device model was added/removed, or a method's #[cfg(feature = "debug")] gating changedAfter fixing all issues found in the checks, review the code changes for correctness, readability, and maintainability and propose improvements. Summarize the findings according to severity.