A complete skill for researching, writing, and delivering Node-RED tutorials
This specification governs an agent's sources, product boundaries, flows, security practices, brand use, quality gates, and delivery permissions. MUST marks an unconditional requirement. STOP means to stop making unsupported claims or changes and refer the decision to someone with the appropriate authority.
Source priorities and conflicts
MUST 1: Exact-tag source code.Use pinned commits for Community App 22.0.1 (repository tag v22.0.1), Node-RED 5.0.2, HA WS v0.80.3, and FlowFuse Dashboard v1.30.2, in that order of priority.
MUST 2: Official documentation and release notes for the same version.Use them only to supplement user guidance supported by the pinned sources. Do not let rolling latest documentation override an exact tag.
MUST 3: Read-only observation of a live system.Describe only the UI visible in that environment; do not generalize those observations into claims about the product as a whole.
STOP: When sources conflict, record the claim, its sources, the discrepancy, and what remains to be verified. If the conflict cannot be resolved, document it as a limitation rather than guessing.
Registered nodes for HA configuration, events, states, actions, and related features
FlowFuse Dashboard 2
1.30.2
Optional package only; MUST be described as optional and not bundled
STOP: Do not interchange the four versions, describe optional features as built into the Add-on, or recommend the legacy dashboard.
Feature manifest contract
The following representative entry shows the complete field structure but is not the source of truth. Always defer to data/node-red-22.0.1-feature-manifest.json and scripts/check_feature_manifest.js.
{
"id": "addon-option-log-level",
"layer": "add-on",
"feature": "log_level: Supervisor log level schema (trace through fatal; optional)",
"version": "22.0.1",
"source": "https://github.com/hassio-addons/app-node-red/blob/bcfd5b83d3d322dc12a7bd2a310ca705c130b419/node-red/config.yaml",
"sourceId": "app-node-red-22.0.1",
"sourcePath": "node-red/config.yaml",
"chapters": [2, 22],
"status": "covered",
"securityNotes": "More detailed logs may expose message content; return to the necessary level after troubleshooting."
}
layer accepts only add-on, node-red, ha-websocket, or optional; status accepts only planned or covered.
MUST build the manifest from the source lock before writing the main content; the current gate requires exactly 116 entries.
Every claim about a specific capability, default value, node type, or version must be traceable to evidence.
When adding or removing claims, update the manifest, chapters, and checks together; do not change the copy alone.
Authoring specification for 22 chapters
MUST follow the exact sequence, titles, parts, and filenames of the 22 entries in chapters.json; build_nav.js owns the head, sidebar, pager, and footer.
Each chapter must contain 8–12 sections with id and data-nav attributes, including a troubleshooting section, at least four FAQs, and pinned sources.
Explain the mental model and safety boundaries before presenting steps, tests, failure paths, and recovery. Write in publication-quality international English and address the reader as “you.”
Use data-table for data tables. Validate heading hierarchy, the skip link, the main landmark, focus behavior, 44 px targets, and layouts at 320 and 360 px.
Safe flow JSON
MUST
Output an importable JSON array with unique IDs, a valid tab, and no dangling wires.
Use an explicit PLACEHOLDER for every server, entity, device, area, URL, broker, and topic.
Disable nodes with side effects—such as HTTP, MQTT, and HA action nodes—by default, and document the prerequisites for enabling them manually.
Use the README to record the source chapter, expected input and output, risks, import procedure, testing, and cleanup.
STOP
A token, password, credential, private IP address, hostname, or real HA identifier is present.
A flow starts automatically, retries without a limit, has no timeout, or could control a device repeatedly.
A third-party node type is unknown, a version has no source, a configuration reference is missing, or safe recovery is not documented.
Do not weaken a checker or conceal values in encoded text, comments, or names to pass a gate.
Factual, security, and editorial review
Factual MUST
List each paragraph's claims and exact evidence. Search for “always,” “all,” “guaranteed,” “default,” and “fastest.” If same-version evidence is unavailable, make the claim conditional or STOP.
Security MUST
Run the sensitive-data scan and flow gate, then manually check for secrets, identifying values, external endpoints, side effects, recovery steps, and approvals.
Editorial MUST
Do not use emoji. Keep terminology consistent. Do not describe temporary scaffolding or future work as delivered content. Give links a non-color cue, and make code and tables scrollable.
Accessibility MUST
Provide semantic landmarks, visible focus, keyboard operation, live status announcements, and descriptive link text. Prevent page-level horizontal overflow at 320 and 360 px.
Read-only screenshots
Plan: List the UI elements to document, the permitted read-only actions, and any sensitive fields.
Capture: Only navigate, search, and expand. Do not select Create, Save, Deploy, Delete, or Kick; trigger an Inject node; or call an action.
Isolate: Store originals in a gitignored raw or probe directory. Never publish an original directly.
Redact: Remove tokens, URLs, IP addresses, entity, device, and area IDs, client IDs, topics, user details, and EXIF metadata.
Two-person gate: A second person must inspect every screen, filename, surrounding passage, and metadata field before publication.
WoowTech brand and downloads
MUST use the #6183FC spot color, 20 px cards, the Poppins/Outfit/Noto Sans TC font strategy, and the existing shared CSS.
MUST preserve complete SEO metadata, a 1200 × 630 OG image, the consistent top navigation, aria-current, the skip link, the main landmark, and the trademark notice.
The three single-page downloads MUST be generated by build_downloads.js with embedded CSS, system fonts, and no external CSS, fonts, or scripts. Preserve the prompts page's inline JavaScript.
The 22-chapter tutorial is a multi-page resource. Its download MUST link to the GitHub main-branch archive ZIP; do not claim that it is available as a single offline page.
All commands MUST exit with status 0. Then inspect the diff, untracked files, page content, and desktop and mobile layouts.
STOP immediately if a gate fails, a version is unknown, the sensitive-data scan reports a match, sources conflict, or a flow has an unapproved side effect.
Do not delete tests, change allowlists, skip commands, or replace reproducible evidence with a manual claim that the result “looks normal.”
Deployment permissions and output contract
STOP: This skill does not authorize remote pushes or deployment to GitHub Pages, Cloudflare, a custom domain, Home Assistant, or any production environment. An agent may create, check, and commit changes only in an approved repository and branch. Publication requires separate approval from someone with explicit authority.
Every output MUST include
Changed files and their purpose; pinned versions and a source summary; counts of new or updated content.
Every command, its exit code, and key output; any commands not run and the reasons why.
Results from the flow, download, Docker, responsive, and sensitive-data gates.
The commit SHA; working-tree and staging status; remaining browser, runtime, and deployment risks.
Pre-delivery checklist
Content
Versions are exact for all four product layers
The 116-entry manifest agrees with all 22 chapters
All 14 flows pass their gates
Official sources and trademark notices are complete