openclaw/skills/august-lock/SKILL.md
Safely control and verify the August smart lock at Crosstown. Lock, explicitly confirm unlocks, check status (locked/unlocked, door open/closed, battery), and diagnose sanitized read-only observation availability. Use when asked to operate the lock, check its state or battery, or explain an August observer outage.
npx skillsauth add Dbochman/dotfiles august-lockInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Control the August Wi-Fi Smart Lock (4th gen) at Crosstown (Crosstown residence) via the August cloud API.
august status
Returns JSON with lock state (locked/unlocked), door position (open/closed), and battery level.
august observe
Uses the exact protected binding and returns only the safe alias, observation time, validated lock/door states, and optional battery percentage. It never returns remote stderr or unvalidated stdout. A failure exposes only one bounded stage:
observe_transport_unavailableobserve_remote_failedobserve_output_missingobserve_output_oversizeobserve_output_malformedobserve_output_contract_invalidTreat these as observation-path diagnostics, not evidence that the physical lock changed state.
august lock
The command first verifies that the door is closed and refuses to extend the bolt otherwise. If it is already locked and closed, it returns a verified no-op. After a real action it polls status up to five times and succeeds only after the lock reports locked and the door reports closed.
First run a read-only preview:
august unlock [lock-id]
The preview verifies an exact, unambiguous lock ID, lock state, and door state,
then returns a short-lived approval_id. It does not call the unlock API. Show
the observed facts to the user and ask for explicit confirmation of that exact
unlock. After confirmation, consume that approval:
august unlock --confirm <approval-id>
Approvals expire after about five minutes and can be used only once. Confirming atomically consumes the approval, rechecks that the lock ID and observed lock and door states have not changed, and then makes at most one remote unlock call. Changed facts, expiry, malformed state, or replay fail before mutation. After a real action the remote command polls status up to five times and succeeds only after the lock reports unlocked with a recognized open/closed door state.
Status, lock, unlock preview, and details accept an optional August lock ID. Lock IDs must be exactly 32 hexadecimal characters.
august locks
august details
August Lock ←─WiFi─→ August Cloud API ←─HTTPS─→ august-cmd.js (MBP) ←─SSH─→ august CLI (Mini)
august-cmd.js on the MacBook Pro uses the august-api npm package to talk to August's cloud API0700
cache with atomic mode-0600 state files; the bearer ID is bound to the
previewed lock identity and physical stateThe first time, you need to complete 2FA:
august authorize # Sends a 6-digit code to the configured account
august validate <code> # Exactly 6 digits; saves installId for future use
Before authorization, provision augustId and password directly in
~/.openclaw/august/config.json on the MBP using the attended 1Password
workflow. Never pass either value as a CLI argument or copy the Mini's cache.
The file must be owned by that user, be a regular non-symlink file, and have
mode 0600. After validation, installId is saved back to that same protected
file. No further 2FA is normally needed until the token expires.
augustId and password fields in the protected MBP
config; environment variables are an attended MBP-only fallback~/.openclaw/august/config.json on MBP (credentials and installId), required mode 0600Config updates use a mode-0600 temporary file, fsync, and atomic rename.
Malformed, symlinked, non-regular, or incorrectly permissioned config fails
closed and is never replaced automatically. Save failures exit nonzero.
status and observe freely; both are read-only.lock only when requested or as part of an already authorized routine.unlock, run the preview, show its exact observed facts, obtain explicit
user confirmation, and use only its returned approval ID. Never infer
confirmation from presence, a doorbell event, or an earlier request.august wrapper with raw SSH or call the remote
mutation command directly.unlock_outcome_unknown as non-retryable: the single mutation may have
reached the lock. Reconcile physical state directly before any new request.verification_failed as an unconfirmed
physical state and tell the user to check the lock directly.| File | Path |
|------|------|
| CLI entrypoint | ~/.openclaw/bin/august (delegates to the deployed skill copy) |
| Protected wrapper | ~/.openclaw/skills/august-lock/august |
| Approval helper | ~/.openclaw/skills/august-lock/august-approval.py |
| Approval cache | ~/.cache/openclaw-gateway/august-unlock-approvals/ (Mini only) |
| Node.js cmd | ~/.openclaw/august/august-cmd.js (on MBP) |
| npm package | ~/.openclaw/august/node_modules/august-api/ (on MBP) |
| Config | ~/.openclaw/august/config.json (on MBP) |
| Symlink | /opt/homebrew/bin/august → ~/.openclaw/bin/august |
This skill controls the August lock at Crosstown only.
For related tasks, switch to:
tools
Use exact configured Reolink cameras through the local Home Hub for availability and power status, fresh stills, visual commentary, protected Dylan/Julia/household sharing, and reversible spotlight control. Supports trusted owner tasks and explicitly scoped proactive automations; not for Nest or Ring cameras, arbitrary recipients, recordings, account changes, or raw camera APIs.
data-ai
Privately manage Dylan and Julia's household plant inventory and care history by physical location, bed, and exact Flower Cam view. Use for confirmed plant onboarding from camera conversations, camera- or bed-filtered inventory, record corrections, individual or whole-bed care, and private filtered exports. Pair with reolink-camera when an owner asks about plants visible in Flower Cam images.
testing
Inspect and control the physically secured Reachy Mini at Crosstown through ClawBody. Use for requests to check Reachy, look around, express an emotion, play any official emotion or dance preset, speak proactively, mute or unmute its microphone, stop movement, or describe what its camera sees.
tools
Handle Reachy/iMessage handoffs, selective durable memory, forgetting, and diagnostics; automatic context comes from the gateway plugin.