Regenerate the machine-owned parts of the function block docs from the PLCopen export, scaffold a page for a new function block, and check whether the docs still match the code.

MITAuto-check passed

Install Update Fb Docs

skills CLI
$ npx skills add MichielVanwelsenaere/HomeAutomation.CoDeSys3 --skill update-fb-docs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install MichielVanwelsenaere/HomeAutomation.CoDeSys3 update-fb-docs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/MichielVanwelsenaere/HomeAutomation.CoDeSys3.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/update-fb-docs .claude/skills/update-fb-docs && rm -rf skills-src

Use ~/.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/

Facts

Skill name
update-fb-docs
GitHub stars
148
Token cost
~1.9k tokens
SKILL.md length
957 words
Files
2 (incl. scripts)
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Regenerate the machine-owned parts of the function block docs from the PLCopen export, scaffold a page for a new function block, and check whether the docs still match the code.

  • Works in 4 steps: Confirm the export is current. The… → Run the generator, or --check first if… → Deal with what it reports. → …
  • A function blocks inputs
  • SKILL.md covers Commands, Where descriptions live, Workflow and Scaffold specs are checked…, plus 3 more sections
  • Runs Python scripts from its folder; calls python3 and git

What it does

Update Fb Docs is an agent skill from MichielVanwelsenaere/HomeAutomation.CoDeSys3. Regenerate the machine-owned parts of the function block docs from the PLCopen export, scaffold a page for a new function block, and check whether the docs still match the code. Use when a function block's inputs, outputs or methods change, when src/Exports/PLCopen.xml is re-exported, when a new function block is added, when a doc page looks wrong or out of date, or when asked to verify that the docs agree with the CODESYS project.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/gen_fb_docs.py`).

It works with Python. The repository describes itself as: Home Automation system build in CoDeSys 3 with MQTT communication to any third party Home Automation software. The licence is MIT.

When your agent uses it

  • A function blocks inputs
  • Src/Exports/PLCopen.xml is re-exported
  • A new function block is added
  • A doc page looks wrong

Example prompts

  • “/update-fb-docs”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Confirm the export is current. The script reads PLCopen.xml, not the
  2. Run the generator, or --check first if only a report is wanted.
  3. Deal with what it reports.
  4. Verify. Re-run with --check; it should pass. Confirm nothing outside

What it can do on your machine

Read from SKILL.md and the folder at commit 924c3da. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Update Fb Docs loads about 1.9k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 957 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from MichielVanwelsenaere/HomeAutomation.CoDeSys3 at commit 924c3da, republished under its MIT licence (© MichielVanwelsenaere). 957 words, ~1,852 tokens.

Download SKILL.mdSave it as .claude/skills/update-fb-docs/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
update-fb-docs
description
Regenerate the machine-owned parts of the function block docs from the PLCopen export, scaffold a page for a new function block, and check whether the docs still match the code. Use when a function block's inputs, outputs or methods change, when src/Exports/PLCopen.xml is re-exported, when a new function block is added, when a doc page looks wrong or out of date, or when asked to verify that the docs agree with the CODESYS project.

Update function block docs

The mechanical parts of docs/FunctionBlocks/*.md are generated from src/Exports/PLCopen.xml, so they cannot drift from the code they document. Two regions per page are machine-owned — never hand-edit inside them:

<!-- fb-badge:start -->      the MQTT Discovery badge, if the block has one
<!-- fb-badge:end -->

<!-- fb-interface:start -->  block diagram, inputs, outputs, methods
<!-- fb-interface:end -->

docs/AdditionalFunctionality/MQTT_General.md has a third, <!-- gvl:start -->, holding the GVL_MQTT global variable list.

Everything else — General, callouts, MQTT behaviour tables, code examples, wiring — is hand-written and left alone.

Commands

Run from the repo root. On Windows use py rather than python3: the python.org build that winget installs ships no python3.exe, and the bare name hits the Microsoft Store alias instead. ./tools/ai/codesys.ps1 doctor reports whether a usable interpreter is present, and the codesys-loop skill has the install command.

TaskCommand
Regenerate everythingpython3 .claude/skills/update-fb-docs/scripts/gen_fb_docs.py
Check without writingpython3 .claude/skills/update-fb-docs/scripts/gen_fb_docs.py --check
Scaffold a new pagepython3 .claude/skills/update-fb-docs/scripts/gen_fb_docs.py --new FB_NAME
Preview one blockpython3 .claude/skills/update-fb-docs/scripts/gen_fb_docs.py --print FB_NAME

--check exits non-zero and names what is stale. Use it to answer "do the docs still match the code?" without touching the working tree.

Where descriptions live

Only 2% of pins carry <documentation> in the export, so descriptions cannot be generated. The generated region is their store. Each run rebuilds the structure from the export and carries existing descriptions across by name:

  • a pin or parameter that gains a description keeps it across regenerations
  • one that disappears from the code takes its description with it
  • a new one arrives as _TODO: describe this._, so gaps are obvious

Two mechanisms cut the amount of hand-writing, both in the script:

  • GLOSSARY — descriptions for things that mean the same on every block (pMqttPublishQueue, Device, Invert, DeviceClass…). A page-specific description always wins. This is why a new function block is already documented for all its standard MQTT plumbing the moment it is scaffolded. Key an entry Method.param to scope it, or param to apply anywhere.
  • Wildcards — a trailing number is matched by *, so one VALVE_* entry covers VALVE_1 … VALVE_8.

Workflow

  1. Confirm the export is current. The script reads PLCopen.xml, not the .project binary. If someone changed a block in CODESYS without re-exporting, the output reflects the export:

    git log -1 --format=%cd -- src/Exports/PLCopen.xml src/HomeAutomation.project

    If the export is behind, say so and stop — regenerating would bake in stale pins. Re-exporting is a manual CODESYS step (see docs/CONTRIBUTING.md).

  2. Run the generator, or --check first if only a report is wanted.

  3. Deal with what it reports.

    • MISSING DESCRIPTIONS — write them, or add the term to GLOSSARY if it recurs across blocks.
    • ORPHANED — a page has a generated region for a block no longer in the export. Establish which happened before advising: a deliberate removal, or an export taken without the block. Check whether the call sites still reference it — a declared instance points at a bad export, commented-out call sites point at a real removal. Nothing is deleted automatically.
    • HA YAML on a discovery-capable block — blocks that publish discovery configs do not need the hand-written YAML fallback; it is schema-volatile and drifts. Remove the ### **Home Assistant YAML** section.
    • SCAFFOLD DRIFT — see below. Not fixed automatically, and it fails --check.
  4. Verify. Re-run with --check; it should pass. Confirm nothing outside the markers moved: git diff -- docs/.

Show full SKILL.md (428 more words)Show less

Scaffold specs are checked against the project too

tools/ai/scaffold/*.json build applications inside the binary — the DALI verification device is one program, one GVL and one task, none of which can be read without opening CODESYS. Those specs are the only readable record of how that was assembled, so this generator also checks that they still describe what is there, and fails --check when they do not.

It is a subset test: every declaration and every statement in a fragment must still be present in the object it builds. That catches a rename — the failure mode — without failing on the GVL fragments, which are appends by design. Declarations are compared by name and type rather than as text, because the export carries no plaintext declaration for a program, only structured XML.

Two things follow from that:

  • The generator will not fix it. It cannot rewrite a declaration it can only read structurally. Update the fragment by hand, or re-run the scaffold.
  • A fragment may be a subset and still be wrong in the other direction: if the project gained a variable the fragment never had, re-running the scaffold would produce a smaller object. The check does not catch that, and nothing does.

Why it exists: a project-wide rename carried Dimmer into these fragments and missed DaliMaster, so the committed recipe named an instance the project no longer had. No build, no verify and no check noticed, because nothing compiles or imports these files. It surfaced when somebody asked whether the folder was meant to be checked in at all.

Adding a new function block

python3 .claude/skills/update-fb-docs/scripts/gen_fb_docs.py --new FB_NEW_THING

This writes a complete page: badge, block diagram, interface tables and method tables, with standard parameters already described from the glossary. Fill in the General section, the code example, and any remaining _TODO_ rows.

Deciding what is public

The export carries no access specifier, so "public API" and "implementation detail" cannot be told apart automatically. Internal helpers are listed in HIDDEN_METHODS in the script. A new method is deliberately not hidden by default — it appears with a TODO so the author has to decide: describe it, or add it to HIDDEN_METHODS with a comment saying why.

What the generator does not touch

  • Pages for blocks not in the export — it reports them as ORPHANED and leaves them alone. Nothing is in that state today; FB_OUTPUT_DIMMER_DALI_MQTT was, until WagoAppDALI was installed and the block came back into the project.
  • Wiring diagrams, which are real drawings in docs/_drawio/.
  • The Home Assistant YAML fallback on blocks without discovery support (the virtual and RS485 blocks), which genuinely need it.

© MichielVanwelsenaere, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in .claude/skills/update-fb-docs of MichielVanwelsenaere/HomeAutomation.CoDeSys3.

  • SKILL.md
  • scripts/gen_fb_docs.py

Open the folder on GitHubat commit 924c3da

Compare with similar skills

Update Fb Docs 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.

Update Fb Docs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Update Fb Docs this skillMichielVanwelsenaere/HomeAutomation.CoDeSys3148—~1.9kAutomated safety check: PassMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
PDF Processinganthropics/skills180k47 repos~2kAutomated safety check: PassProprietary
NotebookLM Research AssistantPleasePrompto/notebooklm-skill7.8k14 repos~2.4kAutomated safety check: NotesMIT
Manim Video Productionbrowser-use/video-use29k6 repos~3kAutomated safety check: PassMIT
PPT Masterhugohe3/ppt-master59k1 repos~2.5kAutomated safety check: PassMIT

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • PDF Processing

    anthropics/skills

    Official

    Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.

    180k GitHub starsUsed in 47 repos~2k tokens
    Documents & OfficeAuto-check passed
  • NotebookLM Research Assistant

    PleasePrompto/notebooklm-skill

    Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.

    7.8k GitHub starsUsed in 14 repos~2.4k tokens
    Knowledge ManagementAuto-check: notes
  • Manim Video Production

    browser-use/video-use

    Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.

    29k GitHub starsUsed in 6 repos~3k tokens
    Media & CreativeAuto-check passed
  • PPT Master

    hugohe3/ppt-master

    Generates editable PowerPoint decks, rebuilds slides from images, fills .pptx templates and polishes existing presentations through routed workflows.

    59k GitHub starsUsed in 1 repo~2.5k tokens
    Documents & OfficeAuto-check passed
  • Scikit Learn

    zLanqing/codex-claude-academic-skills

    Machine learning in Python with scikit-learn. An agent skill from zLanqing/codex-claude-academic-skills.

    4.7k GitHub starsUsed in 16 repos~3.9k tokens
    Data & AnalyticsAuto-check passed

More from MichielVanwelsenaere/HomeAutomation.CoDeSys3

  • Sync Implementation Project

    MichielVanwelsenaere/HomeAutomation.CoDeSys3

    Bring an installation's CODESYS project up to date with this reference project's function blocks, without changing what that installation does.

    148 GitHub stars~7.4k tokensUpdated 25 days ago
    Auto-check passed
  • Troubleshoot Plc Exception

    MichielVanwelsenaere/HomeAutomation.CoDeSys3

    Find out why a PFC200 stopped - an application that died, a building that went dead, an exception, a crash, or a restart nobody explained - by reading the runtime's own log and core dump on the…

    148 GitHub stars~3.6k tokensUpdated 25 days ago
    Auto-check passed
  • Codesys Loop

    MichielVanwelsenaere/HomeAutomation.CoDeSys3

    Read, write and compile-check CODESYS code in this project without opening the GUI, by driving CODESYS headlessly through its ScriptEngine.

    148 GitHub stars~11k tokensUpdated 25 days ago
    Auto-check passed
  • Test Plc Logic

    MichielVanwelsenaere/HomeAutomation.CoDeSys3

    Exercise the PLC's actual behaviour on real hardware - lights, pushbuttons, covers, dimmers and the HVAC chain - by commanding it over MQTT and asserting the result on the broker and in the running…

    148 GitHub stars~8.9k tokensUpdated 25 days ago
    Auto-check passed

Works with

Questions about Update Fb Docs

What does Update Fb Docs do?

Regenerate the machine-owned parts of the function block docs from the PLCopen export, scaffold a page for a new function block, and check whether the docs still match the code. CoDeSys3. Regenerate the machine-owned parts of the function block docs from the PLCopen export, scaffold a page for a new function block, and check whether the docs still match the code.

When should I use Update Fb Docs?

Update Fb Docs fits situations like: A function blocks inputs; src/Exports/PLCopen.xml is re-exported; A new function block is added; A doc page looks wrong.

How do I install Update Fb Docs in Claude Code?

Run `npx skills add MichielVanwelsenaere/HomeAutomation.CoDeSys3 --skill update-fb-docs -a claude-code`. Or copy the skill folder (.claude/skills/update-fb-docs in MichielVanwelsenaere/HomeAutomation.CoDeSys3) into .claude/skills/update-fb-docs in your project. Claude Code loads it when a task matches its description.

How do I install Update Fb Docs in Codex?

Run `npx skills add MichielVanwelsenaere/HomeAutomation.CoDeSys3 --skill update-fb-docs -a codex`. Or copy the skill folder (.claude/skills/update-fb-docs in MichielVanwelsenaere/HomeAutomation.CoDeSys3) into .agents/skills/update-fb-docs in your project. Codex loads it when a task matches its description.

Can I use Update Fb Docs in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MichielVanwelsenaere/HomeAutomation.CoDeSys3 --skill update-fb-docs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/update-fb-docs, .gemini/skills/update-fb-docs, .github/skills/update-fb-docs and .opencode/skills/update-fb-docs in your project.

What does Update Fb Docs need to run?

Going by SKILL.md and its folder, Update Fb Docs needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and git). Our summary lists: Python 3.

Does Update Fb Docs access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Update Fb Docs safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Update Fb Docs use?

Update Fb Docs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Update Fb Docs use?

About 1.9k tokens (SKILL.md is roughly 7.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Update Fb Docs?

Skills that share tags, products or a category with Update Fb Docs: MCP Server Builder (anthropics/skills, 180k stars), PDF Processing (anthropics/skills, 180k stars), NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars) and Manim Video Production (browser-use/video-use, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Update Fb Docs?

MichielVanwelsenaere (a GitHub user) maintains it in MichielVanwelsenaere/HomeAutomation.CoDeSys3, which has 148 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 14, 2026.

Source: MichielVanwelsenaere/HomeAutomation.CoDeSys3 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.