Agent skill

New Device Support

by homebridge-plugins in homebridge-plugins/homebridge-eufy

Full workflow to add support for a new Eufy Security device type (cameras, locks, sensors, and other devices) across eufy-security-client and homebridge-eufy-security.

Apache-2.0Auto-check passedDevelopment

Install New Device Support

skills CLI
$ npx skills add homebridge-plugins/homebridge-eufy --skill new-device-support -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install homebridge-plugins/homebridge-eufy new-device-support --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/homebridge-plugins/homebridge-eufy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/new-device-support .claude/skills/new-device-support && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
new-device-support
GitHub stars
223
Token cost
~4k tokens
SKILL.md length
1,753 words
Files
4
Skills in repo
6
Repo updated
First seen
Licence
Apache-2.0

At a glance

Full workflow to add support for a new Eufy Security device type (cameras, locks, sensors, and other devices) across eufy-security-client and homebridge-eufy-security.

  • Works in 5 steps: Gather Information → Plan (use EnterPlanMode) → Implement → …
  • Development work in your project
  • SKILL.md covers Phase 1 — Gather Information, Phase 2 — Plan (use…, Phase 3 — Implement and Phase 4 — Build & Lint…, plus 1 more section
  • Runs JavaScript scripts from its folder; calls git, gh and node

What it does

New Device Support is an agent skill from homebridge-plugins/homebridge-eufy. Full workflow to add support for a new Eufy Security device type (cameras, locks, sensors, and other devices) across eufy-security-client and homebridge-eufy-security. Covers exploration, implementation, build verification, and git/PR creation.

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files.

It sits in Development. It works with Git. The repository describes itself as: Homebridge plugin to control certain Anker Eufy devices. The licence is Apache-2.0.

When your agent uses it

  • Development work in your project

Example prompts

  • “/new-device-support”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Gather Information
  2. Plan (use EnterPlanMode)
  3. Implement
  4. Build & Lint Verification
  5. Git & PR

What it can do on your machine

Read from SKILL.md and the folder at commit 8eed8b0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • gh
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

New Device Support loads about 4k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 1,753 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~66
When it runs · the whole SKILL.md, loaded when a task matches
~4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from homebridge-plugins/homebridge-eufy at commit 8eed8b0, republished under its Apache-2.0 licence (© homebridge-plugins). 1,753 words, ~3,962 tokens.

Download SKILL.mdSave it as .claude/skills/new-device-support/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
new-device-support
description
Full workflow to add support for a new Eufy Security device type (cameras, locks, sensors, and other devices) across eufy-security-client and homebridge-eufy-security. Covers exploration, implementation, build verification, and git/PR creation.

Add New Eufy Security Device Support

You are adding support for a new device type to the eufy-security ecosystem. The user will provide a GitHub issue URL or device details (model name, model number like T86P2, device type number like 111). They may also provide raw device properties JSON.

Use $ARGUMENTS for the issue URL or device details.

Phase 1 — Gather Information

  1. Fetch the GitHub issue (if URL provided) to extract: device name, model number (e.g. T86P2), device type number, raw properties JSON, firmware version, and any reference PRs. Note: users on recent eufy-security-client versions see a structured "unknown device" debug message that includes raw properties in a format directly usable with the mapping script.
  2. Check for existing upstream work — before starting, search for PRs that already add this device:
    bash
    gh pr list --repo bropat/eufy-security-client --state all --search "<model> OR <device-type-number>" --limit 10
    If a PR exists: review its diff to see what's already implemented, what's missing (e.g. missing GenericTypeProperty label, incomplete DeviceCommands), and whether it's merged, open, or stale. If merged, the device may only need homebridge-eufy-security side changes. If open but incomplete, coordinate with the PR author or build on their work. If the PR has review comments, check for flagged issues.
  3. Pre-flight checks — before proceeding, confirm you have:
    • Device type number (required — cannot proceed without it)
    • Raw device properties JSON (required for accurate property mapping — if missing, ask the user to enable debug logging and re-export diagnostics)
    • Model number / display name (needed for enum naming and documentation)
    • If the device type number is completely unknown (not in any existing code), investigate: check the model number prefix pattern, look at raw properties to infer capabilities (camera properties? lock properties? sensor properties?), and check Eufy's product pages for the model.
  4. Run the pre-implementation audit: Before writing any code, run the audit script to see what already exists:
    bash
    node homebridge-eufy-security/.claude/skills/new-device-support/check-device.mjs <type-number> [--pr-search <model>]
    This checks all 6 registration points in types.ts, classification methods in device.ts, device-images.js, finds the closest existing devices by property overlap, and searches upstream PRs. Use its output to understand the starting point.
  5. Run the property mapping script: Save the raw properties JSON to a temp file and run:
    bash
    node homebridge-eufy-security/.claude/skills/new-device-support/map-properties.mjs /tmp/<device>-raw-props.json --closest
    This maps each raw param_type to its CommandType/ParamType enum name, matching property constants, and which existing device types use them. It also outputs a suggested DeviceProperties block. The --closest flag ranks existing devices by property overlap to identify the best base device.
  6. Ask the user two questions:
    • Image naming convention (check if images already exist or need renaming)
    • Enum name for the DeviceType (e.g. CAMERA_4G_S330)

Phase 2 — Plan (use EnterPlanMode)

Create a detailed plan covering all files that need changes. The plan must be based on the actual raw device properties — never guess which properties a device supports.

Determine device category

Before planning file changes, identify the device category — this determines which classification methods and accessory classes apply:

  • Camera (including doorbells, floodlights, indoor cameras, solo cameras, 4G cameras): uses CameraAccessory in the plugin. Classification methods: isCamera(), and optionally isDoorbell(), isFloodLight(), isIndoorCamera(), isPanAndTiltCamera(), isOutdoorPanAndTiltCamera(), isSoloCameras(), etc. Note: isSoloCameras() is a composite method that includes outdoor PTZ, wall light cams, and other standalone camera types.
  • WallLightCam: uses CameraAccessory. Classification: isWallLightCam(). This category is heavily referenced in station.ts (50+ references) for livestream, talkback, property handling, and command routing — expect substantial station.ts changes.
  • GarageCamera: uses CameraAccessory. Classification: isGarageCamera(). Has dedicated property variants (e.g. DeviceWatermarkGarageCameraProperty, DeviceMotionDetectionSensitivityGarageCameraProperty). Also has isGarageCameraBySn() for serial number matching.
  • Lock (BLE, WiFi, WiFi Video variants): uses LockAccessory. Classification methods: isLock(), isLockWifi(), isLockBle(), isLockWifiVideo(), etc. Locks have many specialized type guard methods (e.g. isLockWifiT8531(), isLockWifiR10()) — check existing patterns carefully. Locks may require changes in three additional layers beyond this skill's primary scope — flag these to the user:
    • src/mqtt/ — MQTT protocol for lock communication
    • src/p2p/session.ts — P2P session initialization uses Device.isLockWifi() and Device.isLockWifiNoFinger() for lock sequence generation
    • src/http/station.ts — lock-specific routing at station level
  • Sensor (entry sensor, motion sensor, PIR sensor): uses EntrySensorAccessory or MotionSensorAccessory. Classification: isSensor(), isEntrySensor(), isMotionSensor(). Note: isSensor() is static-only — no public instance method exists.
  • SmartDrop: uses SmartDropAccessory. Classification: isSmartDrop(). Also has isSmartDropBySn() for serial number matching.
  • SmartSafe: no HomeKit accessory currently. Classification: isSmartSafe().
  • Tracker/SmartTrack: no HomeKit accessory currently. Classification: isSmartTrack().
  • Keypad: no HomeKit accessory currently. Classification: isKeyPad().
  • WaterFreezeSensor: no HomeKit accessory currently. Classification: check for WATER_FREEZE_SENSOR_* in DeviceType enum.
  • Siren: no HomeKit accessory currently. Classification: check for SIREN_SENSOR_* in DeviceType enum.
  • New category: if the device doesn't fit any existing category, a new accessory class is needed in src/accessories/, a new classification method, and a new if block in register_device(). Flag this to the user — it's a significantly larger task.
Files to modify in eufy-security-client
src/http/types.ts — 6 locations:
  1. DeviceType enum: Add ENUM_NAME = <number>, //<model> in numeric order
  2. GenericTypeProperty states field: Add <number>: "<Display Name> (<Model>)" inside the states object in numeric order. WARNING: This is one of the most commonly forgotten steps. Missing this label causes the device to display as a raw number in downstream UIs (see upstream PR #828 where 5 device types had missing labels).
  3. DeviceProperties: Add [DeviceType.ENUM_NAME] block. Always starts with ...GenericDeviceProperties. Map each raw param_type to its corresponding PropertyName.* property constant. Base on the closest existing device but only include properties that match the raw data.
  4. StationProperties: Add [DeviceType.ENUM_NAME] block if device can act as its own station (solo cameras, integrated devices). Use ...BaseStationProperties plus station-specific properties.
  5. DeviceCommands: Add [DeviceType.ENUM_NAME] array. Commands depend on device capabilities (livestream, talkback, pan/tilt, download, snooze, preset positions, calibrate, alarm).
  6. StationCommands: Add [DeviceType.ENUM_NAME] array if device has station properties. Typically [CommandName.StationReboot, CommandName.StationTriggerAlarmSound].
src/http/device.ts — Classification methods:

Add the new device type to all applicable static classification methods. There are two kinds:

Broad classification methods (add device to these as applicable):

  • isCamera() — if it's a camera/doorbell/floodlight
  • hasBattery() — if battery-powered (critical — omitting this means no battery service in HomeKit)
  • isPanAndTiltCamera() — if has PTZ
  • isOutdoorPanAndTiltCamera() — if outdoor PTZ (included by isSoloCameras())
  • isSoloCameras() — composite method aggregating solo/standalone camera types
  • isFloodLight(), isIndoorCamera(), isDoorbell(), isWallLightCam(), isGarageCamera() — as applicable
  • isLock(), isLockWifi(), isLockBle(), isLockWifiNoFinger() — if it's a lock variant
  • isSensor(), isEntrySensor(), isMotionSensor() — if it's a sensor
  • isSmartDrop(), isSmartSafe(), isSmartTrack(), isKeyPad() — as applicable

Note: Not all broad methods have public instance counterparts (e.g. isSensor() is static-only). Don't create instance methods where none exist for the pattern.

isSupported() check: After adding to DeviceProperties map, Device.isSupported(type) automatically returns true (it checks DeviceProperties[type] !== undefined). This is the foundation of device registration — if DeviceProperties entry is missing, the device is silently unsupported regardless of all other registrations.

Add a new dedicated type guard method (static + instance pair):

typescript
static isNewDevice(type: number): boolean {
  //<Model>
  return DeviceType.ENUM_NAME == type;
}

public isNewDevice(): boolean {
  return Device.isNewDevice(this.rawDevice.device_type);
}

Update serial number checks if applicable (all are static-only, no instance methods):

  • isIntegratedDeviceBySn() — add sn.startsWith("<model>") if the device is integrated/standalone
  • isSoloCameraBySn() — add sn.startsWith("<model>") if it's a solo camera
  • isSmartDropBySn() — add if it's a SmartDrop variant
  • isGarageCameraBySn() — add if it's a garage camera variant
  • isFloodlightBySn() — add if it's a floodlight variant
Show full SKILL.md (671 more words)Show less
src/http/station.ts:
  • isIntegratedDevice() — if the device is standalone or can pair as its own station, it may already be covered by isSoloCameras(), isFloodLight(), etc. Only add explicit check if needed.
src/push/service.ts:
  • If the device is 4G LTE or needs special push notification handling, expand the normalization block (line 768) to include the new type guard.
docs/supported_devices.md:

Add an entry in the correct table section:

markdown
| ![<Model> image](_media/<image_small>.png) | <Display Name> (<Model>) | :wrench: | Firmware: <version> |

Use :wrench: for initial support.

Files to modify in homebridge-eufy-security
src/platform.ts — register_device():

Verify the new device type is handled by register_device(). This method uses independent if blocks (not else if) to map device types to accessory classes. If the device is a camera, it falls through to the camera path. If it's a lock, sensor, or SmartDrop, it hits those specific checks. If it's a new category that doesn't match any existing check, the device won't get an accessory — flag this to the user.

homebridge-ui/public/utils/device-images.js:

Add a case in the getImage() switch:

javascript
case <type_number>: return '<image_large>.png';
Image assets:
  • Rename or add images in eufy-security-client/docs/_media/ (small + large)
  • Rename or add image in homebridge-eufy-security/homebridge-ui/public/assets/devices/ (large only)

Phase 3 — Implement

Execute the plan. Key implementation notes:

  • Property mapping: Use the output from map-properties.mjs (Phase 1) as the primary guide. Many property constants have large variant families (e.g. DeviceMotionDetection* has 40+ variants, DeviceFloodlightLight* has 12+, DeviceVideoRecordingQuality* has 11+). When multiple constants match the same param_type, pick the variant used by the closest existing device — check the "Used by DeviceTypes" column in the script output and the --closest flag results.
  • Companion custom properties: Some properties have required companions with custom_* keys that never appear in raw device data (they're populated at runtime). The script detects these and marks them with ⚠ companion. Always include them — omitting a companion breaks functionality silently. Key pairs: DeviceRTSPStream → DeviceRTSPStreamUrl, DeviceWifiRSSI → DeviceWifiSignalLevel, DeviceCellularRSSI → DeviceCellularSignalLevel.
  • Insert in order: When adding to enums, switch statements, or if chains, maintain numeric ordering by device type number.
  • Audio recording property: Different device families use different audio recording property constants (e.g. DeviceAudioRecordingProperty, DeviceAudioRecordingStarlight4gLTEProperty). Match the closest existing device.
Registration verification checklist

After implementing all changes, run the post-implementation verification script:

bash
node homebridge-eufy-security/.claude/skills/new-device-support/verify-device.mjs <ENUM_NAME>

This automatically checks all required registration points and reports PASS/FAIL:

  1. DeviceType enum definition
  2. GenericTypeProperty states
  3. DeviceProperties map
  4. DeviceCommands map
  5. StationProperties map (if device acts as its own station — reported as WARN if missing)
  6. StationCommands map (if device has station properties — reported as WARN if missing)
  7. Dedicated type guard method (static + instance) in device.ts
  8. Broad classification methods (isCamera, isLock, etc.) in device.ts
  9. docs/supported_devices.md entry (reported as WARN if missing)
  10. *BySn serial number methods (reported as WARN if missing — not all devices need these)
  11. device-images.js case in homebridge-eufy-security

The script exits with code 1 if any required checks fail. A device type that is defined in the enum but missing from DeviceProperties will silently fall back to GenericDeviceProperties with only ~3 basic properties (name, model, serial). This is the most common implementation error — see upstream issue #853 where LOCK_85V0 was added to the enum but never registered in the lookup maps.

Phase 4 — Build & Lint Verification

Run build and lint for both repos. Note: eufy-security-client lint may fail due to a pre-existing jiti library issue unrelated to our changes — the TypeScript build succeeding is sufficient validation.

Phase 5 — Git & PR

Follow CLAUDE.md Git Workflow for commit messages, branch naming, and PR body format. This skill creates two PRs across repos:

eufy-security-client (cross-fork)
  1. Discard unrelated changes (e.g. package-lock.json)
  2. Sync develop: git fetch upstream && git checkout develop && git merge upstream/develop
  3. Branch: git checkout -b feat/<device-slug>
  4. Stage only: images, src/http/types.ts, src/http/device.ts, src/push/service.ts, docs/supported_devices.md
  5. Cross-fork PR:
    bash
    gh pr create --repo bropat/eufy-security-client --base develop \
      --head lenoxys:feat/<device-slug> \
      --title "feat: add <Device Name> (<Model>, type <number>) support" \
      --body-file /tmp/pr-body-<branch>.md
homebridge-eufy-security
  1. Branch from current beta: git checkout -b feat/<device-slug>
  2. Stage: homebridge-ui/public/utils/device-images.js + any added image
  3. PR to current beta branch:
    bash
    gh pr create --base beta-<current-version> \
      --title "feat: add <Device Name> (<Model>) image" \
      --body-file /tmp/pr-body-<branch>.md
Cross-referencing

After both PRs are created, update both bodies so they reference each other.

© homebridge-plugins, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files in .claude/skills/new-device-support of homebridge-plugins/homebridge-eufy.

  • SKILL.md
  • check-device.mjs
  • map-properties.mjs
  • verify-device.mjs

Open the folder on GitHubat commit 8eed8b0

Compare with similar skills

New Device Support next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

New Device Support compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
New Device Support this skillhomebridge-plugins/homebridge-eufy223—~4kAutomated safety check: PassApache-2.0
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
Code Design Rationale Investigatorcursor/plugins10k9 repos~2.6kAutomated safety check: PassNone
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Finishing A Development Branchfarm-fe/farm5.6k34 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.

    10k GitHub starsUsed in 9 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…

    5.6k GitHub starsUsed in 34 repos~1.8k tokens
    DevelopmentAuto-check passed
  • Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.

    56k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed

More from homebridge-plugins/homebridge-eufy

  • Developer

    homebridge-plugins/homebridge-eufy

    Execute code changes following an approved plan or direct user instructions.

    223 GitHub stars~632 tokensUpdated today
    Auto-check passed
  • Planner

    homebridge-plugins/homebridge-eufy

    Build a precise, step-by-step action plan before making any code changes.

    223 GitHub stars~905 tokensUpdated today
    Auto-check passed
  • QA

    homebridge-plugins/homebridge-eufy

    Verify that code changes are correct, safe, and ready to ship.

    223 GitHub stars~807 tokensUpdated today
    Auto-check passed
  • Support

    homebridge-plugins/homebridge-eufy

    Triage a GitHub issue using diagnostics archives and logs. An agent skill from homebridge-plugins/homebridge-eufy.

    223 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Architect

    homebridge-plugins/homebridge-eufy

    Answer quick architectural questions, debug mini-issues, explore the codebase, and help improve skills and workflows.

    223 GitHub stars~817 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about New Device Support

What does New Device Support do?

Full workflow to add support for a new Eufy Security device type (cameras, locks, sensors, and other devices) across eufy-security-client and homebridge-eufy-security. New Device Support is an agent skill from homebridge-plugins/homebridge-eufy. Full workflow to add support for a new Eufy Security device type (cameras, locks, sensors, and other devices) across eufy-security-client and homebridge-eufy-security.

When should I use New Device Support?

New Device Support fits situations like: development work in your project.

How do I install New Device Support in Claude Code?

Run `npx skills add homebridge-plugins/homebridge-eufy --skill new-device-support -a claude-code`. Or copy the skill folder (.claude/skills/new-device-support in homebridge-plugins/homebridge-eufy) into .claude/skills/new-device-support in your project. Claude Code loads it when a task matches its description.

How do I install New Device Support in Codex?

Run `npx skills add homebridge-plugins/homebridge-eufy --skill new-device-support -a codex`. Or copy the skill folder (.claude/skills/new-device-support in homebridge-plugins/homebridge-eufy) into .agents/skills/new-device-support in your project. Codex loads it when a task matches its description.

Can I use New Device Support in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add homebridge-plugins/homebridge-eufy --skill new-device-support -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/new-device-support, .gemini/skills/new-device-support, .github/skills/new-device-support and .opencode/skills/new-device-support in your project.

What does New Device Support need to run?

Going by SKILL.md and its folder, New Device Support needs JavaScript for the scripts in its folder and the command-line tools its instructions call (git, gh and node). Our summary lists: Node.js.

Does New Device Support access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is New Device Support safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does New Device Support use?

New Device Support is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does New Device Support use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to New Device Support?

Skills that share tags, products or a category with New Device Support: Finishing a Development Branch (obra/superpowers, 297k stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), Code Design Rationale Investigator (cursor/plugins, 10k stars) and Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains New Device Support?

homebridge-plugins (a GitHub organization) maintains it in homebridge-plugins/homebridge-eufy, which has 223 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 9, 2026.

Source: homebridge-plugins/homebridge-eufy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.