Runs full test and deployment pipeline for Home Assistant components.
Install
mkdir -p .claude/skills/verisure-deploy && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17387" && unzip -o skill.zip -d .claude/skills/verisure-deploy && rm skill.zipInstalls to .claude/skills/verisure-deploy
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Full deploy pipeline — test, typecheck, deploy to HAOS, smoke testKey capabilities
- →Run pytest tests with failure abortion
- →Perform pyright type checking and abort on new errors
- →Execute ruff linting and abort on errors
- →Deploy integration Python files and manifest.json to HAOS via SSH
- →Deploy client library Python files to HA Docker container
- →Restart HA core and wait for HTTP API to respond 200
How it works
The skill executes a sequence of tests, type checks, and linting, then deploys integration and client library files to HAOS via SSH, restarts the HA core, and waits for its HTTP API to become available.
Inputs & outputs
When to use verisure-deploy
- →Deploy to HAOS
- →Run CI pipeline for integration
- →Update integration version
About this skill
Run the full deployment pipeline. Abort on any failure — never continue past a red gate.
Steps
- Test suite:
pytest tests/ -x -q— abort if any test fails. - Type check:
pyright verisure_italy/ custom_components/— abort if any new errors. - Lint:
ruff check verisure_italy/ tests/ custom_components/— abort on errors. - Deploy integration files: push all integration Python files +
manifest.jsonto HAOS via SSH pipe. Manifest is load-bearing — it carries the integration version + client library pin, so HACS and HA Dev Tools both show the deployed version correctly:for f in custom_components/verisure_italy/*.py custom_components/verisure_italy/manifest.json; do ssh root@homeassistant -p 22222 \ "cat > /mnt/data/supervisor/homeassistant/custom_components/verisure_italy/$(basename $f)" \ < "$f" done - Deploy client library: the
verisure_italy/package is pip-installed inside the HA Docker container. Must deploy it separately — the integration imports it at runtime:
Note: The Python version path (3.14) may change with HA updates. If deploy fails with "No such file or directory", check the actual path with:for f in verisure_italy/*.py; do ssh root@homeassistant -p 22222 \ "docker exec -i homeassistant sh -c 'cat > /usr/local/lib/python3.14/site-packages/verisure_italy/$(basename $f)'" \ < "$f" donessh root@homeassistant -p 22222 "docker exec homeassistant python3 -c \"import verisure_italy; print(verisure_italy.__file__)\"" - Restart HA:
ssh root@homeassistant -p 22222 "ha core restart"— returns immediately once the restart is scheduled; core takes ~30-60s to come back up. - Wait until HA is up: do NOT hard-sleep. The Bash tool blocks long leading
sleep Ncommands.ha core inforeturns info even while core is restarting, so poll the HTTP API instead — it only answers 200 once HA is fully booted:
Use this inside a plain Bash call (not Monitor) — it exits as soon as the API responds. You'll get a completion notification automatically.source .env until [ "$(curl -sf -o /dev/null -w '%{http_code}' \ http://homeassistant:8123/api/ -H "Authorization: Bearer $HA_TOKEN")" = "200" ]; do sleep 3 done - Smoke test:
./scripts/smoke_test.sh— abort if any entity/service missing. - Log check:
ssh root@homeassistant -p 22222 "docker logs homeassistant 2>&1 | grep -i verisure_italy | tail -20"— look for ERROR/WARNING.
On failure at any step: stop, show full error, do NOT proceed or auto-fix. On success: report all gates passed.
Deploy does NOT release. Releasing (PyPI + GitHub tag) is a separate manual step.
Live E2E cycle — state and automation restoration (MANDATORY)
If an end-to-end arm/disarm cycle is run against the live panel as
part of verification (either within this skill or downstream in a plan
like docs/plans/*.md), the panel's initial state and the user's
automations must be restored afterwards. This is a real home
alarm — leaving it in the wrong state is a security failure.
Protocol:
- Capture initial state before the first transition.
source .env INITIAL=$(curl -s http://homeassistant:8123/api/states/alarm_control_panel.verisure_alarm \ -H "Authorization: Bearer $HA_TOKEN" | python3 -c "import sys,json;print(json.load(sys.stdin)['state'])") echo "initial: $INITIAL" - Pause automations that would interfere with deliberate
mutations (auto-disarm, morning-disarm, actionable-disarm notification, etc.). List is in auto-memory
project_ha_automations.md. - Cycle through the planned transitions.
- Restore initial state. If
INITIAL == armed_away, the last transition must bealarm_arm_away, notalarm_disarm. Never end the cycle on a different state than where you started. - Re-enable automations paused in step 2.
- Verify:
alarm_control_panel.verisure_alarmstate equalsINITIAL, and every paused automation is back toon.
Do not rely on a plan's default "cycle ends disarmed" template — patch the last transition to restore. If unsure what the initial state was, ASK the user before running the cycle.
When not to use it
- →When a release to PyPI or GitHub is required
- →When a failure should not abort the pipeline
- →When the HAOS SSH credentials are not available
Limitations
- →The Python version path for client library deployment may change with HA updates
- →The skill does not perform releases to PyPI or GitHub
- →The skill aborts on any failure and does not attempt auto-fixes
How it compares
This skill automates the entire deployment process, including pre-deployment checks and post-deployment verification, unlike manual steps that require individual command execution and status monitoring.
Compared to similar skills
verisure-deploy side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| verisure-deploy (this skill) | 0 | 3mo | Caution | Intermediate |
| gcp-cloud-run | 5 | 4mo | Review | Intermediate |
| flow-nexus-platform | 6 | 4mo | Review | Beginner |
| smithery-mcp-deployment | 8 | 8mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
gcp-cloud-run
aj-geddes
Deploy containerized applications on Google Cloud Run with automatic scaling, traffic management, and service mesh integration. Use for container-based serverless computing.
flow-nexus-platform
ruvnet
Comprehensive Flow Nexus platform management - authentication, sandboxes, app deployment, payments, and challenges
smithery-mcp-deployment
CaullenOmdahl
Best practices for creating, optimizing, and deploying MCP servers to Smithery. Use this skill when:(1) Creating new MCP servers for Smithery deployment(2) Optimizing quality scores (achieving 90/100)(3) Troubleshooting deployment issues (0/0 tools, missing annotations, low scores)(4) Migrating existing MCP servers to Smithery format(5) Understanding Smithery's schema format requirements(6) Adding workflow prompts, tool annotations, or documentation resources(7) Configuring smithery.yaml and package.json for deployment
deployment-pipeline-design
wshobson
Design multi-stage CI/CD pipelines with approval gates, security checks, and deployment orchestration. Use when architecting deployment workflows, setting up continuous delivery, or implementing GitOps practices.
vercel-deployment
davila7
Expert knowledge for deploying to Vercel with Next.js Use when: vercel, deploy, deployment, hosting, production.
netlify-deploy
openai
Deploy web projects to Netlify using the Netlify CLI (`npx netlify`). Use when the user asks to deploy, host, publish, or link a site/repo on Netlify, including preview and production deploys.