Customer Journey Map
phuryn/pm-skills
Create an end-to-end customer journey map with stages, touchpoints, emotions, pain points, and opportunities.
Run after setup-infrastructure to map rooms, entities, and preferences to the dashboard and automation templates.
$ npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dcb/homeassistant-claude-kit setup-customize --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dcb/homeassistant-claude-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/setup-customize .claude/skills/setup-customize && rm -rf skills-srcUse ~/.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/
Install the "setup-customize" agent skill from https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customize into .claude/skills/setup-customize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-customize", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customizeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dcb/homeassistant-claude-kit setup-customize --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dcb/homeassistant-claude-kit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/setup-customize .agents/skills/setup-customize && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "setup-customize" agent skill from https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customize into .agents/skills/setup-customize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-customize", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dcb/homeassistant-claude-kit setup-customize --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dcb/homeassistant-claude-kit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/setup-customize .cursor/skills/setup-customize && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "setup-customize" agent skill from https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customize into .cursor/skills/setup-customize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-customize", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dcb/homeassistant-claude-kit.git --path .claude/skills/setup-customize--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dcb/homeassistant-claude-kit setup-customize --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dcb/homeassistant-claude-kit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/setup-customize .gemini/skills/setup-customize && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "setup-customize" agent skill from https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customize into .gemini/skills/setup-customize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-customize", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dcb/homeassistant-claude-kit setup-customizeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dcb/homeassistant-claude-kit.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/setup-customize .github/skills/setup-customize && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "setup-customize" agent skill from https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customize into .github/skills/setup-customize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-customize", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dcb/homeassistant-claude-kit setup-customize --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dcb/homeassistant-claude-kit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/setup-customize .opencode/skills/setup-customize && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "setup-customize" agent skill from https://github.com/dcb/homeassistant-claude-kit/tree/main/.claude/skills/setup-customize into .opencode/skills/setup-customize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-customize", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
setup-customizeRun after setup-infrastructure to map rooms, entities, and preferences to the dashboard and automation templates.
Setup Customize is an agent skill from dcb/homeassistant-claude-kit. Run after setup-infrastructure to map rooms, entities, and preferences to the dashboard and automation templates. Conversational and resumable. Trigger phrases: "customize my home", "set up rooms", "configure automations", "map my entities", "set up my dashboard", "finish setup", "resume setup".
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/question-patterns.md`).
The repository describes itself as: AI-guided Home Assistant setup — automation templates, mobile-first React dashboard, and Claude Code skills for configuration management. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c0d05e2. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
sshmakepython3npmpythonnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comhacs.xyzFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
HA_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Setup Customize loads about 4.2k tokens when it runs, and up to ~6.1k if it reads all its reference files. Until then it costs about 78 tokens; SKILL.md has 1,290 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH:=/config/}.env; ha-source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws raw consource .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws raw consource .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws raw consource .envsource .env && set -a && source .env && set +a && python3 -c "set -a && source .env && set +a && python3 -c "source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH:=/config/}.env; ha-source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH:=/config/}.env;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.
The full file from dcb/homeassistant-claude-kit at commit c0d05e2, republished under its MIT licence (© dcb). 1,290 words, ~4,207 tokens.
.claude/skills/setup-customize/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill maps your Home Assistant instance to the dashboard and automation templates through a guided interview. It is resumable — if the conversation ends mid-way, re-invoke this skill and it will pick up from the last checkpoint.
See references/question-patterns.md for detailed question wording and example answers
for each domain.
Verify setup-state.json exists and infrastructure is complete:
import json, sys, os
if not os.path.exists('setup-state.json'):
print('NOT_READY'); sys.exit(0)
with open('setup-state.json') as f:
state = json.load(f)
schema = state.get('schema_version', 0)
if schema > 1:
print('SCHEMA_WARNING')
phase = state.get('session', {}).get('current_phase', '')
infra = state.get('infrastructure', {}).get('steps_completed', [])
if 'infrastructure_complete' in phase or 'pull' in infra:
answers = state.get('answers', {})
if answers.get('rooms') or phase.startswith('customize:'):
print('RESUME')
print(f'PHASE:{phase}')
print(f'ROOMS_DONE:{",".join(answers.get("rooms", {}).keys())}')
else:
print('FRESH')
else:
print('NOT_READY')Run via python3 -c "..." and check the output:
NOT_READY: Tell user to run setup-infrastructure first.SCHEMA_WARNING: State file from newer version — proceed with caution.RESUME: Load checkpoint. Tell user: "Welcome back! You were at [phase]. Rooms done: [list]. Continuing."FRESH: Begin from Phase 1.After EVERY user answer, update setup-state.json with granular progress:
import json
def save_checkpoint(phase, answers_update=None, files_written=None):
with open('setup-state.json') as f:
state = json.load(f)
state['session']['current_phase'] = phase
if answers_update:
state.setdefault('answers', {}).update(answers_update)
if files_written:
state.setdefault('files_written', []).extend(files_written)
with open('setup-state.json', 'w') as f:
json.dump(state, f, indent=2)Example calls:
save_checkpoint('customize:room_mapping', {'rooms': {'living_room': {'light': '...', 'motion': '...'}}})save_checkpoint('customize:domain_selection', {'domains_selected': ['lighting', 'climate']})save_checkpoint('customize:notifications', {'notify_targets': {'primary': 'notify.mobile_app_x'}})save_checkpoint('customize:files', files_written=['config/automations/lighting.yaml'])Primary method: Use registry data. Entity-to-room assignment should come from the
device/entity registries (via area_id) whenever possible. This is the authoritative source.
Fallback: Name inference + user confirmation. If the registries have sparse area
assignments (common in setups where the user hasn't organized areas in HA), you may infer
room assignments from entity ID naming patterns (e.g., bedroom_motion → bedroom).
However, when using name inference, you MUST:
Get the authoritative room and floor structure:
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH:=/config/}.env; ha-ws raw config/floor_registry/list" 2>/dev/null
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws raw config/area_registry/list" 2>/dev/nullThis gives you:
floor_id assignmentsGet the authoritative entity-to-area mappings:
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws raw config/device_registry/list" 2>/dev/null
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws raw config/entity_registry/list" 2>/dev/nullEntity-to-area resolution chain:
entity_registry → if the entity has a direct area_id, use itdevice_id → look up that device in device_registry → use the device's area_idarea_id, the entity is unassigned — note it but do NOT guessFor each relevant domain, query the live entity list:
source .env
for domain in light binary_sensor sensor climate media_player camera cover vacuum remote switch; do
ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH}.env; ha-ws entity list $domain" 2>/dev/null
doneCross-reference the entity list with the device/entity registry area assignments to build a verified mapping. For each room, list:
binary_sensor.* with device_class: motion or occupancy)Before presenting any mapping to the user: mark each assignment's source:
area_id — present as fact? mark, ask user to confirmIf SSH/ha-ws is unavailable, parse the local .storage/ files (pulled by make pull):
source venv/bin/activate && python tools/entity_explorer.py --full 2>/dev/null | head -100Or use the REST API as a last resort:
source .env && set -a && source .env && set +a && python3 -c "
import urllib.request, json, os
url = os.environ['HA_URL'] + '/api/states'
req = urllib.request.Request(url, headers={'Authorization': 'Bearer ' + os.environ['HA_TOKEN']})
with urllib.request.urlopen(req) as r:
states = json.load(r)
domains = {}
for s in states:
d = s['entity_id'].split('.')[0]
domains[d] = domains.get(d, 0) + 1
for d, c in sorted(domains.items()):
print(f'{d}: {c} entities')
"Summarize what was found: "Found X floors, Y areas, Z lights, W climate entities, ..."
See references/question-patterns.md → Phase 1 for question wording.
Goal: Build a RoomConfig[] array for dashboard/src/lib/areas.ts.
setup-state.json after each room confirmation.Generate areas.ts once all rooms are confirmed:
// dashboard/src/lib/areas.ts — generated by setup-customize
export interface RoomConfig {
id: string;
name: string;
floor: number;
icon: string;
light?: string; // primary light entity
motionSensor?: string;
temperatureSensor?: string;
mediaPlayer?: string;
climate?: string;
}
export const ROOMS: RoomConfig[] = [
// REPLACE: Add your rooms here (generated from interview)
// { id: "living_room", name: "Living Room", floor: 0, icon: "sofa", light: "light.living_room" },
];
// Maps HA person entity → display name
export const USER_ROOM_MAP: Record<string, string> = {};For each room, ask domain-specific questions:
Lights:
Climate:
Media:
Save answers to setup-state.json as you go.
Present automation domains as a checklist. Ask the user which apply to their setup:
Which automation domains do you want to set up?
□ Motion lights (auto on/off with motion sensors)
□ Activity modes (night mode, movie mode, work mode)
□ Climate scheduling (morning/night temperature changes)
□ Away mode (setback when nobody home)
□ Appliance tracking (washer/dishwasher state machine)
□ Health monitoring (integration watchdogs, battery alerts)
□ EV/Solar charging (if you have solar + EV)
□ AC solar heating (if you have solar + AC units)
□ None — I'll write my own automationsFor each selected domain, note which automation template to use from
docs/templates/config/automations/.
Ask about preferences that drive automation behavior. See references/question-patterns.md
→ Phase 4 for full question bank.
Key questions:
work_mode auto-trigger)Save all answers to setup-state.json.
Discover available notification targets:
set -a && source .env && set +a && python3 -c "
import urllib.request, json, os
url = os.environ['HA_URL'] + '/api/services'
req = urllib.request.Request(url, headers={'Authorization': 'Bearer ' + os.environ['HA_TOKEN']})
with urllib.request.urlopen(req) as r:
services = json.load(r)
notify = [s for s in services if s.get('domain') == 'notify']
for n in notify:
for svc in n.get('services', {}).keys():
print(f'notify.{svc}')
" 2>/dev/nullAlternatively, use SSH + ha-api (more reliable):
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH:=/config/}.env; ha-api search notify"Ask the user which targets to use for:
Read existing configuration.yaml and check if it already has input_* helpers:
grep -l "input_boolean:\|input_select:\|input_number:" config/configuration.yaml 2>/dev/null && echo "has_helpers" || echo "no_helpers"If existing helpers found: Show them and ask:
"Your
configuration.yamlalready has input helpers. I can: (A) Keep them where they are and add only missing ones from the templates (B) Consolidate all helpers intoconfig/helpers.yamland use!include helpers.yamlWhich do you prefer?"
Never silently move or overwrite existing helpers.
Based on all interview answers, generate:
dashboard/src/lib/entities.ts// dashboard/src/lib/entities.ts — generated by setup-customize
// Edit this file to update entity mappings. Re-run setup-customize to regenerate.
// ── Modes ──────────────────────────────────────────────────────────────────
export const NIGHT_MODE = "input_boolean.night_mode";
export const MOVIE_MODE = "input_boolean.movie_mode";
export const WORK_MODE = "input_boolean.work_mode";
export const AWAY_MODE = "input_boolean.away_mode";
export const CLIMATE_MODE = "input_select.your_climate_mode"; // # REPLACE: or remove
// ── People ─────────────────────────────────────────────────────────────────
// Add your person entity IDs here
export const PERSONS: string[] = [];
// ── Add your entities below ────────────────────────────────────────────────
// (Generated from interview answers — each room's entities added here)For each selected domain, copy the template and substitute placeholder IDs:
your_room_motion_sensor → actual entity ID from interviewyour_notify_target → chosen notification targetyour_morning_work_day (input_datetime) → keep as-is (user sets value in HA UI)Copy template files to config/automations/:
# Example for lighting:
cp docs/templates/config/automations/lighting.yaml config/automations/lighting.yaml
# Then perform substitutions based on interview answersdocs/system-overview.md and docs/house-rules.mdPopulate the template sections with interview answers. Leave blank sections with the original guidance comments for sections not covered.
Install dashboard dependencies (if not already installed):
cd dashboard && npm install && cd ..Verify TypeScript compiles cleanly before deploying:
cd dashboard && npx tsc -b --noEmit && cd ..If this fails, fix the errors before proceeding. Common issues:
"" as EntityId need actual entity IDs or removal@types/* packages → run npm install firstRun backup:
make backupPush configuration:
make pushDeploy dashboard:
make deploy-dashboardVerify by asking the user to open HA and confirm the dashboard panel appears.
Provide the URL: http://[HA_URL]/custom-dashboard
After the dashboard deploys successfully, ask the user:
"Would you like to make this dashboard your default view when opening Home Assistant? This requires installing the Custom Sidebar plugin via HACS. If you don't have HACS, you can skip this — your dashboard is still accessible from the sidebar."
If the user wants this:
Verify HACS is installed:
source .env && ssh "$SSH_USER@$HA_HOST" "source /etc/profile.d/claude-ha.sh; source ${HA_REMOTE_PATH:=/config/}.env; ha-api state sensor.hacs" 2>/dev/nullIf HACS is not installed, tell the user to install it first from hacs.xyz and skip this step.
Tell the user to install Custom Sidebar via HACS:
Once confirmed installed, add the plugin to configuration.yaml under frontend:
frontend:
extra_module_url:
- /hacsfiles/custom-sidebar/custom-sidebar-plugin.jsMerge with existing frontend: block — do not duplicate the key.
Create config/custom-sidebar-config.yaml:
default_path: /custom-dashboardPush the config and tell the user to restart HA (this change requires a restart, not just a reload):
make pushpython3 -c "
import json, datetime
with open('setup-state.json') as f:
state = json.load(f)
state['session']['current_step'] = 'customize_complete'
state['session']['steps_completed'].append('customize')
state['session']['completed_at'] = datetime.datetime.now().isoformat()
with open('setup-state.json', 'w') as f:
json.dump(state, f, indent=2)
print('Setup complete. setup-state.json updated.')
""Setup complete! Your dashboard is deployed.
What's configured:
- [N] rooms mapped
- [N] automation domains active
- Dashboard entities wired
Next steps:
- Open HA companion app and navigate to your custom dashboard panel
- Review
docs/house-rules.mdand fill in any sections that are still blank- If something's wrong, just tell me what to fix — all entity IDs are now in
dashboard/src/lib/entities.tsandconfig/automations/*.yaml"
© dcb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in .claude/skills/setup-customize of dcb/homeassistant-claude-kit.
Open the folder on GitHubat commit c0d05e2
Setup Customize 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Setup Customize this skilldcb/homeassistant-claude-kit | 123 | — | ~4.2k | Automated safety check: Notes | MIT | |
| Customer Journey Mapphuryn/pm-skills | 27k | — | ~816 | Automated safety check: Pass | MIT | |
| Customer Journey Map Builderdeanpeters/Product-Manager-Skills | 7.2k | 1 repos | ~3.7k | Automated safety check: Pass | Custom licence | |
| Customer Journey Mapping Workshopdeanpeters/Product-Manager-Skills | 7.2k | 1 repos | ~4.7k | Automated safety check: Pass | Custom licence | |
| Customer Journey Mapmohitagw15856/pm-claude-skills | 1.4k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Research Decision Roomnexu-io/open-design | 100k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 |
phuryn/pm-skills
Create an end-to-end customer journey map with stages, touchpoints, emotions, pain points, and opportunities.
deanpeters/Product-Manager-Skills
Builds a stage-by-stage customer journey map covering actions, touchpoints, emotions, KPIs, goals, and owning teams for one persona and scenario.
deanpeters/Product-Manager-Skills
Walks a product manager through a customer journey map one question at a time, from persona and scenario to pain points and opportunities.
mohitagw15856/pm-claude-skills
Build a customer journey map for a product, service, or experience.
nexu-io/open-design
Turn messy user research notes, interviews, support tickets, surveys, and product context into an evidence-backed decision room: a single HTML artifact with an evidence ledger, theme map, confidence…
uphiago/recon-skills
Map organization IP infrastructure via ASN, CIDR, TLD expansion, and reverse DNS.
dcb/homeassistant-claude-kit
Batch rename Home Assistant entities to follow a consistent naming convention.
dcb/homeassistant-claude-kit
Cut a new homeassistant-claude-kit version. An agent skill from dcb/homeassistant-claude-kit.
dcb/homeassistant-claude-kit
Pull a newer homeassistant-claude-kit version into this (diverged) install, applying only the changes still relevant here.
Run after setup-infrastructure to map rooms, entities, and preferences to the dashboard and automation templates. Setup Customize is an agent skill from dcb/homeassistant-claude-kit. Run after setup-infrastructure to map rooms, entities, and preferences to the dashboard and automation templates.
Setup Customize fits situations like: phrases: customize my home; configure automations; map my entities; set up my dashboard.
Run `npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a claude-code`. Or copy the skill folder (.claude/skills/setup-customize in dcb/homeassistant-claude-kit) into .claude/skills/setup-customize in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a codex`. Or copy the skill folder (.claude/skills/setup-customize in dcb/homeassistant-claude-kit) into .agents/skills/setup-customize in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dcb/homeassistant-claude-kit --skill setup-customize -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/setup-customize, .gemini/skills/setup-customize, .github/skills/setup-customize and .opencode/skills/setup-customize in your project.
Going by SKILL.md and its folder, Setup Customize needs the command-line tools its instructions call (ssh, make, python3, npm, python and npx) and credentials named HA_TOKEN. Our summary lists: Python 3.
SKILL.md names 2 domains. As links in the text: github.com and hacs.xyz. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Setup Customize is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Setup Customize: Customer Journey Map (phuryn/pm-skills, 27k stars), Customer Journey Map Builder (deanpeters/Product-Manager-Skills, 7.2k stars), Customer Journey Mapping Workshop (deanpeters/Product-Manager-Skills, 7.2k stars) and Customer Journey Map (mohitagw15856/pm-claude-skills, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dcb (a GitHub user) maintains it in dcb/homeassistant-claude-kit, which has 123 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 2, 2026.
Source: dcb/homeassistant-claude-kit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.