Philips Hue
Anil-matcha/awesome-muse-connectors
Control Philips Hue lights locally: list lights and rooms, set brightness/color, activate scenes, read sensors.
Read and control Philips Hue Bridge lighting installations through local CLIP v2 or the Hue Remote API with SecretRef-backed credentials and guarded lighting changes.
$ npx skills add HybridAIOne/hybridclaw --skill hue -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install HybridAIOne/hybridclaw hue --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/HybridAIOne/hybridclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/hue .claude/skills/hue && 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 "hue" agent skill from https://github.com/HybridAIOne/hybridclaw/tree/main/skills/hue into .claude/skills/hue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hue", 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/HybridAIOne/hybridclaw/tree/main/skills/hueType 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 HybridAIOne/hybridclaw --skill hue -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install HybridAIOne/hybridclaw hue --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HybridAIOne/hybridclaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/hue .agents/skills/hue && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hue" agent skill from https://github.com/HybridAIOne/hybridclaw/tree/main/skills/hue into .agents/skills/hue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hue", 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 HybridAIOne/hybridclaw --skill hue -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install HybridAIOne/hybridclaw hue --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HybridAIOne/hybridclaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/hue .cursor/skills/hue && 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 "hue" agent skill from https://github.com/HybridAIOne/hybridclaw/tree/main/skills/hue into .cursor/skills/hue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hue", 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/HybridAIOne/hybridclaw.git --path skills/hue--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 HybridAIOne/hybridclaw --skill hue -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install HybridAIOne/hybridclaw hue --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HybridAIOne/hybridclaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/hue .gemini/skills/hue && 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 "hue" agent skill from https://github.com/HybridAIOne/hybridclaw/tree/main/skills/hue into .gemini/skills/hue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hue", 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 HybridAIOne/hybridclaw hueInstalls 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 HybridAIOne/hybridclaw --skill hue -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/HybridAIOne/hybridclaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/hue .github/skills/hue && 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 "hue" agent skill from https://github.com/HybridAIOne/hybridclaw/tree/main/skills/hue into .github/skills/hue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hue", 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 HybridAIOne/hybridclaw --skill hue -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install HybridAIOne/hybridclaw hue --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HybridAIOne/hybridclaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/hue .opencode/skills/hue && 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 "hue" agent skill from https://github.com/HybridAIOne/hybridclaw/tree/main/skills/hue into .opencode/skills/hue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hue", 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.
hueRead and control Philips Hue Bridge lighting installations through local CLIP v2 or the Hue Remote API with SecretRef-backed credentials and guarded lighting changes.
Hue is an agent skill from HybridAIOne/hybridclaw. Read and control Philips Hue Bridge lighting installations through local CLIP v2 or the Hue Remote API with SecretRef-backed credentials and guarded lighting changes.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.
The repository describes itself as: Enterprise-ready self-hosted AI assistant runtime with sandboxed execution, secure credentials, approvals, and memory. The licence is MIT.
12 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8162701. 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.
Ships script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
HUE_APPLICATION_KEYHUE_REMOTE_CLIENT_SECRETHUE_REMOTE_REFRESH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hue loads about 4.6k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 1,640 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 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.
The full file from HybridAIOne/hybridclaw at commit 8162701, republished under its MIT licence (© HybridAIOne). 1,640 words, ~4,578 tokens.
.claude/skills/hue/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill for Philips Hue Bridge lighting inspection and guarded control. The primary path is local HTTPS to the Hue Bridge CLIP v2 API. Use the Hue Remote API only when the operator explicitly needs off-LAN control or local bridge access is unavailable.
skills/hue/hue.cjs for every supported Hue request shape. Do not
handcraft CLIP v2 URLs or JSON bodies when the helper supports the action.httpRequest through the gateway.secretHeaders or <secret:...> placeholders
for gateway-side resolution.allowSelfSignedTls flag for the
gateway http_request proxy. Do not use a blanket insecure TLS bypass.401 or unauthorized_user, stop after that first
failed call and re-link the bridge with the link-button flow.hybridclaw env list, hybridclaw secret list, or other local CLI commands
from bash; those commands can inspect the wrong runtime or fail because of
the host Node version. Use gateway http_request errors and any /env show
or /secret list output the operator provides.HUE_BRIDGE_HOST is configured and HUE_APPLICATION_KEY is missing,
say only that the application key is missing. Do not ask the operator to
find the bridge IP again. Ask them to press the physical link button, then
build node skills/hue/hue.cjs --format json bridge link --app-name hybridclaw --instance-name lab, send the emitted httpRequest, and store
the returned Hue credential secret through the helper-emitted
captureResponseFields.bridge status first. If the live status result reports linkbutton: true,
immediately run bridge link without --host. If it reports
linkbutton: false, tell the operator that the configured bridge did not
report an active button press and ask them to press and release the physical
link button once, then retry immediately. If linkbutton is absent, do not
treat that as proof the button is inactive; modern bridge config responses
can omit the field.--host unless the
operator explicitly provides a new override URL in the same turn. The default
link request must use <env:HUE_BRIDGE_HOST> so the gateway resolves the
env-store value./env show HUE_BRIDGE_HOST, treat that value as the
current configured bridge URL. If a failed request used any other host,
report that the helper was called with the wrong host and retry the same
operation with no --host override.HUE_BRIDGE_HOST is missing, first reuse an exact Hue Bridge URL from
current context or workspace memory when one is present. Ask the operator to
find the bridge IP only when no exact URL is available.http_request error says Stored secret HUE_APPLICATION_KEY is not set, treat HUE_BRIDGE_HOST as already resolved for that request.
Do not say the bridge host may be missing, do not tell the operator to run
hybridclaw env set, and do not repeat the same read calls. Switch directly
to the link-button setup path in rule 10.HUE_BRIDGE_HOST again, do not suggest
plain HTTP on port 80, and do not invent a URL auth route or workspace
policy setting for TLS. Re-run the exact helper-emitted httpRequest with
allowSelfSignedTls: true; if that field is absent, rebuild the request with
skills/hue/hue.cjs.The helper is deliberately thin: it only turns clean subject/verb arguments
into gateway-ready httpRequest payloads. It does not write env values, edit
network policy, call the gateway, poll the bridge, or store secrets.
Show helper usage:
node skills/hue/hue.cjs --helpBuild local CLIP v2 read requests, then pass the emitted httpRequest object
to the gateway http_request tool:
node skills/hue/hue.cjs --format json bridge list
node skills/hue/hue.cjs --format json device list
node skills/hue/hue.cjs --format json light list
node skills/hue/hue.cjs --format json grouped-light list
node skills/hue/hue.cjs --format json room list
node skills/hue/hue.cjs --format json zone list
node skills/hue/hue.cjs --format json scene list
node skills/hue/hue.cjs --format json motion list
node skills/hue/hue.cjs --format json behavior list
node skills/hue/hue.cjs --format json entertainment listRead a bounded diagnostic eventstream window:
node skills/hue/hue.cjs --format json eventstream read --duration 30sPrepare guarded write operations:
node skills/hue/hue.cjs --format json light on --id <id>
node skills/hue/hue.cjs --format json light off --id <id>
node skills/hue/hue.cjs --format json light brightness --id <id> --pct 60
node skills/hue/hue.cjs --format json light color --id <id> --xy 0.4317,0.4147
node skills/hue/hue.cjs --format json light color --id <id> --mirek 366
node skills/hue/hue.cjs --format json grouped-light on --id <grouped_light_id>
node skills/hue/hue.cjs --format json grouped-light brightness --id <grouped_light_id> --pct 60
node skills/hue/hue.cjs --format json scene recall --id <scene_id>
node skills/hue/hue.cjs --format json behavior disable --id <behavior_id>
node skills/hue/hue.cjs --format json bridge timezone --id <bridge_id> --timezone Europe/BerlinThe helper marks amber and red operations with requiredGrant. Send the
emitted httpRequest only after the operator approves the described effect.
Link a bridge after pressing the physical link button:
node skills/hue/hue.cjs --format json bridge status
node skills/hue/hue.cjs --format json bridge link \
--app-name hybridclaw \
--instance-name labThe status command emits a /api/config request shape with
<env:HUE_BRIDGE_HOST> and no secret header. Use it to confirm the configured
bridge reports linkbutton: true before sending the link request. The link
command emits a single /api request shape with <env:HUE_BRIDGE_HOST> and
only a devicetype body. Send that request through the gateway while the
button is active, then store the returned Hue credential secret as
HUE_APPLICATION_KEY through the emitted captureResponseFields. Do not pass
--host for normal chat setup.
Use Remote API reads only when off-LAN access is needed:
node skills/hue/hue.cjs --format json remote oauth-token
node skills/hue/hue.cjs --format json remote bridge list
node skills/hue/hue.cjs --format json remote light list --bridge <id>
node skills/hue/hue.cjs --format json remote room list --bridge <id>Store the local bridge URL in the env store, then press the bridge link button,
build the link request, send the emitted httpRequest through the gateway, and
let the gateway capture the returned Hue credential secret as the application
key.
In chat:
/env set HUE_BRIDGE_HOST "https://<bridge-ip>"
node skills/hue/hue.cjs --format json bridge status
node skills/hue/hue.cjs --format json bridge link --app-name hybridclaw --instance-name labFrom a local terminal:
hybridclaw env set HUE_BRIDGE_HOST "https://<bridge-ip>"
node skills/hue/hue.cjs --format json bridge status
node skills/hue/hue.cjs --format json bridge link --app-name hybridclaw --instance-name labManaged LAN HTTP access covers local RFC1918 bridge reads according to the workspace policy setting. The helper does not create or modify that setting.
For the Hue Remote API, create a developer app, complete the OAuth flow, then set the resulting values in this order:
/admin/secrets and set the
HUE_REMOTE_* secrets./chat or TUI fallback:/secret set HUE_REMOTE_CLIENT_ID "<oauth-client-id>"
/secret set HUE_REMOTE_CLIENT_SECRET "<oauth-client-secret>"
/secret set HUE_REMOTE_REFRESH_TOKEN "<refresh-token>"
node skills/hue/hue.cjs --format json remote oauth-token
/secret set HUE_REMOTE_BRIDGE_ID "<bridge-id>"hybridclaw secret set HUE_REMOTE_CLIENT_ID "<oauth-client-id>"
hybridclaw secret set HUE_REMOTE_CLIENT_SECRET "<oauth-client-secret>"
hybridclaw secret set HUE_REMOTE_REFRESH_TOKEN "<refresh-token>"
node skills/hue/hue.cjs --format json remote oauth-token
hybridclaw secret set HUE_REMOTE_BRIDGE_ID "<bridge-id>"The helper allowlists the initial CLIP v2 resource set from the OpenHue
OpenAPI contract and Philips Hue CLIP v2 docs: bridge, device, light,
grouped_light, room, zone, scene, motion, temperature,
light_level, button, behavior_instance, and
entertainment_configuration. Arbitrary /clip/v2/resource/<type> passthrough
is rejected.
recall: { action: "active" }.allowSelfSignedTls: true
field and retry once with the helper-emitted request. Do not ask whether the
bridge supports plain HTTP, do not ask for the bridge host again, and do not
claim a gateway TLS route or workspace policy is required.Stored secret HUE_APPLICATION_KEY is not set, do not say HUE_BRIDGE_HOST is unknown or
missing; the <env:HUE_BRIDGE_HOST> placeholder already resolved far enough
to reach secret-header injection. In chat, give only this slash-command
recovery path:Press the Hue bridge link button, then let me run:
node skills/hue/hue.cjs --format json bridge status
node skills/hue/hue.cjs --format json bridge link --app-name hybridclaw --instance-name lab
The emitted `captureResponseFields` rule captures the returned Hue credential
secret into `HUE_APPLICATION_KEY`. Do not include hybridclaw env set or ask the operator to set
HUE_BRIDGE_HOST again unless the gateway explicitly reports that
HUE_BRIDGE_HOST itself is missing.
/api with Hue error type: 101 or description
link button not pressed, run bridge status once in the current button
window. If status reports linkbutton: true, retry bridge link
immediately. If status reports linkbutton: false, explain that the bridge
at the configured env-store host is reachable but does not currently report
an active button press; ask the operator to press and release the physical
button once, then retry the status and link sequence immediately. If status
omits linkbutton, explain that the bridge status endpoint did not expose
button state and retry the /api link request only when the operator confirms
the button was just pressed.generateclientkey is not available or
directing the caller to POST /api/config/connections, rebuild the request
with the current helper and retry the emitted /api request. The helper must
not send generateclientkey; it should send only devicetype./api/config/connections with Hue error
type: 1, address /connections, or description unauthorized user, do not
claim the button window expired. That endpoint requires an existing
authorized user on this bridge. Rebuild with the current helper and use the
unauthenticated /api link request without generateclientkey./env show HUE_BRIDGE_HOST and it differs from the host
used by a failed request, explain that the request used the wrong override and
retry with the normal helper command, which emits <env:HUE_BRIDGE_HOST>.© HybridAIOne, 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 in skills/hue of HybridAIOne/hybridclaw.
Open the folder on GitHubat commit 8162701
Hue 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 |
|---|---|---|---|---|---|---|
| Hue this skillHybridAIOne/hybridclaw | 159 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Philips HueAnil-matcha/awesome-muse-connectors | 1.3k | — | ~902 | Automated safety check: Pass | MIT | |
| Generating Python Installeraffaan-m/ECC | 277k | 1 repos | ~6.1k | Automated safety check: Pass | MIT | |
| Kubeshark Installerkubeshark/kubeshark | 12k | — | ~3.6k | Automated safety check: Notes | Apache-2.0 | |
| Memory Bridgeruvnet/ruflo | 74k | — | ~601 | Automated safety check: Notes | MIT | |
| Pwa Installabilitythedaviddias/Front-End-Checklist | 74k | — | ~450 | Automated safety check: Pass | MIT |
Anil-matcha/awesome-muse-connectors
Control Philips Hue lights locally: list lights and rooms, set brightness/color, activate scenes, read sensors.
affaan-m/ECC
Commercial-grade Python installer expert for Windows: Nuitka extreme compilation, dist slimming, DLL footprint analysis, and Inno Setup packaging to ship the smallest, fastest installers.
kubeshark/kubeshark
Installs and configures Kubeshark on a Kubernetes cluster, choosing between the quick CLI path and a Helm install with custom values.
ruvnet/ruflo
Bridge Claude Code auto-memory into AgentDB with ONNX embeddings, deduplicate, and enable unified cross-project search
thedaviddias/Front-End-Checklist
A skill your agent uses when auditing PWA readiness, adding an install prompt, or preparing a web app for submission to Microsoft Store or Google Play via PWA Builder.
sickn33/agentic-awesome-skills
Use an already-installed, independently verified cowork-to-code bridge to run narrowly approved actions on the user's own macOS, Linux, or WSL2 machine through a local file queue.
HybridAIOne/hybridclaw
Use Hermes3000 to plan, draft, revise, save, check consistency, and export long-form manuscripts through the Hermes3000 AI writing portal API.
HybridAIOne/hybridclaw
Plan, script, render, and stitch Manim Community Edition videos in Python.
HybridAIOne/hybridclaw
Create and update SKILL.md-based skills with strong trigger metadata, lean docs, and reliable init, validate, package, and publish workflows.
HybridAIOne/hybridclaw
Create, edit, inspect, and analyze .xlsx spreadsheets and Excel workbooks.
HybridAIOne/hybridclaw
Create and revise editable .excalidraw diagrams as Excalidraw JSON for architecture diagrams, flowcharts, sequence diagrams, concept maps, and other hand-drawn explainers.
HybridAIOne/hybridclaw
Manage Google Ads accounts with safe GAQL reporting, campaign planning, guarded mutations, and gateway-proxied REST API calls.
Read and control Philips Hue Bridge lighting installations through local CLIP v2 or the Hue Remote API with SecretRef-backed credentials and guarded lighting changes. Hue is an agent skill from HybridAIOne/hybridclaw. Read and control Philips Hue Bridge lighting installations through local CLIP v2 or the Hue Remote API with SecretRef-backed credentials and guarded lighting changes.
Run `npx skills add HybridAIOne/hybridclaw --skill hue -a claude-code`. Or copy the skill folder (skills/hue in HybridAIOne/hybridclaw) into .claude/skills/hue in your project. Claude Code loads it when a task matches its description.
Run `npx skills add HybridAIOne/hybridclaw --skill hue -a codex`. Or copy the skill folder (skills/hue in HybridAIOne/hybridclaw) into .agents/skills/hue 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 HybridAIOne/hybridclaw --skill hue -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hue, .gemini/skills/hue, .github/skills/hue and .opencode/skills/hue in your project.
Going by SKILL.md and its folder, Hue needs JavaScript for the scripts in its folder, the command-line tools its instructions call (node) and credentials named HUE_APPLICATION_KEY, HUE_REMOTE_CLIENT_SECRET and HUE_REMOTE_REFRESH_TOKEN. Our summary lists: A credential in HUE_APPLICATION_KEY; A credential in HUE_REMOTE_REFRESH_TOKEN.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
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.
Hue 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.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Hue: Philips Hue (Anil-matcha/awesome-muse-connectors, 1.3k stars), Generating Python Installer (affaan-m/ECC, 277k stars), Kubeshark Installer (kubeshark/kubeshark, 12k stars) and Memory Bridge (ruvnet/ruflo, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
HybridAIOne (a GitHub organization) maintains it in HybridAIOne/hybridclaw, which has 159 GitHub stars. The repository holds 72 skills in this directory. The repository was last updated on October 9, 2026.
Source: HybridAIOne/hybridclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.