Install
openclaw skills install @yeelight/yeelight-smart-homeControl, organize, diagnose, design, personalize, and answer product knowledge questions for a Yeelight smart home. Use for Yeelight homes, rooms, areas, gat...
openclaw skills install @yeelight/yeelight-smart-homeUse only the local yeelight-home invoke --stdin runtime through scripts/invoke.sh.
Never bypass yeelight-home invoke --stdin or use internal endpoints, headers, tokens, operation identifiers, MCP, or guessed requests.
Never call external tool servers or alternate projects for Yeelight data or actions.
success or partial.memory.remember first. Writing only to host memory such as WorkBuddy, Codex, or a generic assistant memory file is not completion and must not be described as saved.intent.explain when the required action, condition, item, operation, button event, or lighting design shape is unclear.assets/intent-catalog.json.references/ when the request needs routing detail or domain knowledge. If unsure, read references/README.md first as the shortest-path router:
references/device-control.mdreferences/product-knowledge.mdreferences/home-room-area.mdreferences/groups.mdreferences/scenes.mdreferences/automations.mdreferences/payload-shapes.md; references/action-payloads.md is only a routing index.references/lighting-design.md.references/lighting-design-import.md.node scripts/product-select.mjs --query "<user product wording>" --room "<room>" --goal "<design goal>" --limit 8, then apply references/lighting-product-selection.md and references/product-knowledge.md.references/scene-recipes.md plus references/lighting-experience.md when ambience judgment matters.references/automation-recipes.md plus references/automation-events.md when triggers or condition vocabulary matter.assets/examples/lighting-design-full-home.json. This example is for creating a new home design and intentionally omits parameters.houseId.references/diagnostics.mdreferences/memory-and-personalization.mdreferences/recommendations.mdreferences/operation-lessons.mdreferences/safety-and-confirmation.mdreferences/runtime-status-and-errors.mdreferences/capability-boundaries.mdreferences/thing-model.mdreferences/device-lexicon.mdreferences/automation-events.mdreferences/lighting-experience.mdreferences/response-presentation.md{
"contractVersion": "1.0",
"requestId": "unique-request-id",
"locale": "zh-CN",
"utterance": "用户请求或确认后的等价请求",
"intent": "lighting.design.import",
"parameters": {}
}
requestId must be unique for this invocation. Keep utterance non-empty and close to the user wording. Use homeRef.name only for an existing-home operation after the home has already been resolved or the user clearly refers to an existing configured home. Use parameters.houseId or homeRef.id only when Runtime or the user already supplied a specific home id. If the user asks to "创建/新建/设计添加一个家庭" and gives a full lighting design, send one lighting.design.import request with the standard lighting design model, without parameters.houseId, without homeRef.name, and without a CLI --house-id; Runtime creates the home, returns houseId, and selects it as the current home. If the user asks for several non-destructive persistent changes in one request, build operation.batch.configure with parameters.operations[] instead of sending many separate requests.
For ordinary control, state query, scene execution, and automation enable/disable, pass the natural target in the same request. Include room qualifiers such as parameters.roomName, parameters.targetRoomName, or a room target together with deviceName, sceneName, or automationName when the user said them. Use direct light.power.set, light.brightness.set, light.color_temperature.set, or light.color.set for ordinary lighting control. Do not preflight with entity.list, entity.get, or entity.capabilities just to find an ID.scripts/invoke.sh once with JSON on stdin.success or partial: explain actual result.clarification_required: ask exactly the returned smallest question.auth_required: tell the user to run yeelight-home auth login --qr; use --biz-type 1 only when the user says this is a commercial-lighting project. If they cannot scan, tell them to import an already authorized token in their own terminal with yeelight-home auth token set --stdin --region <region>; do not ask for secrets.error with runtime_missing: explain that the local yeelight-home CLI is missing; tell the user to install it from the public Yeelight Home Runtime release or a supported package manager, or set YEELIGHT_HOME_BIN.blocked, not_supported, or other error: explain the returned safe alternative.--dry-run or options.dryRun=true only when you intentionally want a no-write preview before asking the user. After the user agrees, resend the same Runtime request without dry-run.parameters.confirmed=true. If Runtime returns explicit_confirmation_required, ask for confirmation and resend the same intent with parameters.confirmed=true; do not retry without it.memory.remember before claiming the memory was saved. Do not substitute host memory. For a single sentence with multiple distinct dimensions, such as ambience plus product positioning, normalize each dimension first and send one memory.remember request with parameters.preferences[]; use one item per distinct canonical preference with concise evidence. Use existing context or memory.list only when useful for conflict resolution; Runtime upsert deduplicates exact same structured preferences.references/operation-lessons.md. If a later attempt in the same conversation succeeds because you changed intent, target resolution, payload shape, dependency handling, safety lane, or fallback path, save a concise structured lesson with operation.lesson.record before finalizing, unless the current Runtime response already provides the clear supported path. Before attempting a complex, parameter-heavy, full-home lighting design, or previously failed capability, query operation.lesson.list for the target intent or symptom and apply the returned lesson if it is still relevant. If the user reports a failed AI/Runtime attempt, convert only the confirmed reusable runtime boundary or stable workaround into an operation lesson; do not leave it only in the chat transcript.intent.explain with parameters.intent set to the target intent. In invoke --stdin responses, read result.intentExplanation.payloadGuide.payloadShape, result.intentExplanation.requestSchema.examples, result.intentExplanation.acceptedFields, and result.intentExplanation.nextStep as the objective contract. This is local-only and should replace trial-and-error guessing.recommendation.record, then use recommendation.list to present the Runtime-backed pending item. Do not present unsaved model-only recommendations as local recommendations.references/response-presentation.md. Use tables for lists, cards for single entities or completed operations, dashboards for home summaries and new-home imports, and clear comparison tables for changes.Use brief natural Chinese for ordinary users, then pick a scan-friendly response shape from references/response-presentation.md.
State what actually changed, what Runtime verified, and any partial failures.
Ask only one smallest clarification question at a time.
Do not show full JSON unless the user explicitly asks for technical details.
yeelight-home auth login --qrprintf '%s' "$YEELIGHT_TOKEN" | yeelight-home auth token set --stdin --region <region>yeelight-home auth status --jsonyeelight-home home list --json, then yeelight-home home select --house-id <id> only for house-scoped operations.yeelight-home home list --biz-type 1 --json. Ordinary Yeelight Pro homes remain the default (bizType=0). Never infer or reuse a House ID across these two types.yeelight-home doctor --json --onlineyeelight/yeelight-home, Homebrew, Scoop, Debian package, npm, or another package manager only after the package is actually published there.YEELIGHT_HOME_BIN to an absolute yeelight-home executable path.The model must not request or print tokens. The local Runtime stores tokens in the system credential store or its protected local credential fallback, and stores only profile metadata in ordinary config.
houseId is optional at initial setup. Token-only profiles can use account-level capabilities; home, room, device, scene, automation, gateway, favorite, lighting, and other house-scoped actions need Runtime-provided clarification or a selected default home.
When the user explicitly identifies a commercial-lighting project, use Runtime bizType=1 setup and discovery. Otherwise keep the ordinary-home default; do not make the user choose technical terminology unless the account actually uses both types.