AgentSkillsCN

hass-sync

保持src/hass文件夹与Home Assistant前端源代码之间的同步。验证文件位置,检查代码是否与上游匹配,识别未使用的代码。在处理src/hass文件、同步Home Assistant代码,或验证代码同步时使用此功能。

SKILL.md
--- frontmatter
name: hass-sync
description: Maintains synchronization between src/hass folder and Home Assistant frontend source code. Verifies file locations, checks code matches upstream, and identifies unused code. Use when working with src/hass files, syncing Home Assistant code, or verifying code synchronization.

Home Assistant Code Synchronization

Maintains the src/hass folder which contains minimal code copied from Home Assistant frontend (home-assistant/frontend). Each file has a GitHub link comment at the top for reference.

Upstream Source

The upstream Home Assistant frontend is cloned locally at:

  • Path: ../frontend/ (relative to device-card project root)
  • Full path: /Users/patrickmasters/Desktop/src.nosync/homeassistant/frontend/

Keeping Upstream Updated

Before comparing, ensure the local frontend clone is up to date:

  1. Check git status:

    bash
    cd ../frontend && git status
    
  2. Check if behind upstream:

    bash
    cd ../frontend && git fetch && git status
    
  3. Update if needed:

    • Ask user: "Frontend clone may be outdated. Pull latest changes?"
    • If yes: cd ../frontend && git pull
    • If no: Proceed with current state (user may want to compare against specific version)

The agent can ensure latest or ask for a git pull before comparisons.

Core Tasks

1. Verify File Locations

Check if files are in the correct location relative to upstream:

  1. Extract GitHub URLs from file comments:

    typescript
    /**
     * https://github.com/home-assistant/frontend/blob/dev/src/common/const.ts
     */
    

    → Expected local path: src/hass/common/const.ts → Upstream path: ../frontend/src/common/const.ts

  2. Path mapping rule:

    • Upstream: ../frontend/src/[path]
    • Local: src/hass/[path]
  3. Check for moved files:

    • If GitHub URL path doesn't match current file location → flag as moved
    • Verify if upstream file still exists at that path in local clone
    • Action: Move the file in this project to match upstream structure (not just update the URL)

2. Verify Code Matches Upstream

Ensure copied code matches upstream as closely as possible:

  1. Read upstream content from local frontend clone:
    • Extract path from GitHub URL comment
    • Read file from ../frontend/src/[path]
  2. Compare structure:
    • Export order (should match)
    • Function/class order (should match)
    • Import order (can differ if using local paths)
  3. Identify intentional changes:
    • Look for comments like // MODIFIED: or // CHANGED:
    • Check if imports use @hass/ paths (local) vs original paths
  4. Flag differences:
    • Reordered exports/functions
    • Missing code from upstream (unless intentional - e.g., partial types)
    • Extra code not in upstream
    • Code improvements without documentation comments

3. Identify Unused Code

Ensure unnecessary code isn't copied:

  1. Check imports:
    • Search project for usage of imported symbols
    • Flag unused imports
  2. Check exports:
    • Search project for usage of exported symbols
    • Flag unused exports (unless they're re-exported for convenience)
  3. Check internal code:
    • Functions/types only used internally in hass folder
    • Verify they're actually needed by other hass files

Workflow

When syncing a file:

code
1. Ensure frontend clone is up to date (ask user or check git status)
2. Extract GitHub URL from comment
3. Map to local upstream path: ../frontend/src/[path]
4. Read upstream content from local clone
5. Compare:
   - [ ] File location matches expected path
   - [ ] Code structure matches (order, exports)
   - [ ] No unintentional changes
   - [ ] All imports/exports are used
6. Report findings

When checking all files:

code
1. Ensure frontend clone is up to date (ask user or check git status)
2. Scan all files in src/hass/
3. For each file:
   - Extract GitHub URL
   - Map to upstream path: ../frontend/src/[path]
   - Verify location
   - Check if upstream file exists in local clone
   - Read and compare content structure
   - Check usage
4. Generate report:
   - Files in wrong location
   - Files with mismatched content
   - Files with unused code
   - Files that may have moved upstream

GitHub URL Pattern

Files follow this pattern:

typescript
/**
 * https://github.com/home-assistant/frontend/blob/dev/src/[path]
 */

Path mapping:

  • GitHub URL path: src/[path]
  • Local file: src/hass/[path]
  • Upstream file: ../frontend/src/[path]

The GitHub URL is kept for reference, but comparisons use the local frontend clone.

Intentional Modifications

Files may have intentional changes:

  • Import paths changed to use @hass/ aliases
  • Comments added with // MODIFIED: or // CHANGED:
  • Partial code copied (only needed parts)
  • Code improvements: Intentional improvements (e.g., SonarQube code smell cleanups) should be documented with comments explaining they are intentional
  • Minimal types: Types/interfaces can be minimal or partial - only include fields that are actually used in this project

Always respect intentional modifications - only flag unintentional differences.

Usage Examples

Check a specific file:

code
Verify src/hass/data/entity.ts matches upstream

Check all files:

code
Audit all files in src/hass for sync issues

Find unused code:

code
Find unused imports/exports in src/hass

Verify file locations:

code
Check if any files need to be moved due to upstream changes