Skip to main content

pr-workflow

Create pull requests for esphome/device-builder-frontend. Use when creating PRs, submitting changes, or preparing contributions.

Jump to install

Source facts

Repository
esphome/device-builder-frontend
Last source activity
July 21, 2026 at 14:51
Detected SKILL.md language
English
Stars
27
Forks
16

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
pr-workflow
description
Create pull requests for esphome/device-builder-frontend. Use when creating PRs, submitting changes, or preparing contributions.
allowed-tools
Read, Bash, Glob, Grep
# device-builder-frontend PR Workflow When creating a pull request for `esphome/device-builder-frontend`, follow these steps. The frontend ships prebuilt inside the `esphome/device-builder` Python wheel, so backend-visible changes (WS commands, model shapes, `ConfigEntryType` values) usually need a coordinated PR there too. ## 1. Create branch from origin/main `origin` already points at `esphome/device-builder-frontend` โ€” there is no fork in this workflow. Always re-fetch first: ```bash git fetch origin git checkout -b <branch-name> origin/main ``` ## 2. Read the PR template Before creating a PR, read `.github/PULL_REQUEST_TEMPLATE.md` for the required sections. Fill in **every** section โ€” do not skip or abbreviate. If the template's "Types of changes" list looks narrower than the label set the workflow enforces (see step 3), prefer the workflow's canonical list when picking a label. ## 3. Apply a release-notes label `.github/workflows/pr-labels.yaml` uses `ludeeus/action-require-labels` to require **at least one** of the release-drafter labels โ€” it does not cap the number, but release-drafter slots a PR by its first matching label, so in practice apply just one: `breaking-change`, `bugfix`, `refactor`, `new-feature`, `enhancement`, `maintenance`, `ci`, `dependencies`, `docs`. Unlike the backend repo, this workflow does **not** auto-apply a label from a checkbox โ€” you must pass the label explicitly when creating the PR (or apply it via the UI before CI runs): ```bash gh pr create --label enhancement ... ``` Pick whichever label release-drafter would file the change under; if in doubt, look at the headings in `.github/release-drafter.yml`. ## 4. Backend coordination If the change consumes a new WS command, event, model field, or `ConfigEntryType` from `esphome/device-builder`, link the companion backend PR in the description. Frontend PRs that depend on unmerged backend changes should stay in draft until the backend side has landed. ## 5. Commit message conventions - **Imperative-mood subject line** โ€” "Add X", not "Added X". - **No `Co-Authored-By: Claude` trailer.** Project preference (matches the backend repo). - One logical change per commit. Run `pnpm run lint` and `pnpm run test` locally before pushing. ## 6. Push and create the PR **Always read `.github/PULL_REQUEST_TEMPLATE.md` from the repo at PR-creation time and use it verbatim as the body** โ€” do not reproduce, paraphrase, or trim the template anywhere else, or it will silently drift out of sync as the template evolves. When filling in the template: - Replace the `<!-- ... -->` prompt comments with the actual prose for that section. Do not delete anything else. - **Leave all the checkboxes in place.** Do not remove rows you aren't ticking โ€” the human reviewer relies on the full list being present. - Tick exactly one "Types of changes" box. For the Checklist section, only tick boxes you have actually verified; leave the rest as `- [ ]`. - **Do not escape characters from the template.** Backticks, asterisks, angle brackets, etc. must be passed through verbatim โ€” escaping a backtick to `` \` `` corrupts inline code in the rendered PR. The template is already valid Markdown; do not rewrite it for shell quoting. Use `--body-file`, never `--body "..."` with shell-escaping. ```bash git push -u origin <branch-name> # Read .github/PULL_REQUEST_TEMPLATE.md, fill it in as above, # write the result to a temp file, then: gh pr create --repo esphome/device-builder-frontend --base main \ --label <release-notes-label> \ --title "Imperative subject under 70 chars" \ --body-file /tmp/pr-body.md ``` ## 7. After the PR is open CI runs the test workflow and the label-verifier. If `pr-labels` fails, the PR is missing one of the canonical release-drafter labels โ€” apply one via `gh pr edit --add-label <label>` rather than pushing an empty commit.
View on GitHub