From tckit
Use when inspecting, navigating, or searching a TwinCAT 3 PLC project through TcKit's MCP tools (get_structure, get_pou_interface, get_pou_item, get_gvl, get_dut) AFTER orientation. Triggers on requests like "show me FB_X", "what's the public API of FB_Motor", "list the methods of FB_TestSuite", "summarise the motor controller POU", "what does ST_Config look like", or any task that requires reading specific PLC code before writing it. Do NOT use for first-touch orientation (use tc-orient-project), and do NOT use for researching Beckhoff library FBs (use tc-beckhoff-docs).
How this skill is triggered — by the user, by Claude, or both
Slash command
/tckit:tc-read-projectThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
First-touch orientation belongs to `tc-orient-project`. This skill picks up once orientation is done and the user asks for something specific.
First-touch orientation belongs to tc-orient-project. This skill picks up once orientation is done and the user asks for something specific.
Always read in layers. Never fetch a full POU when one method suffices.
This skill uses only the TcKit reader tools and the stock Read/Grep/Glob. The reader tools are:
mcp__tckit__get_structure — project map (POUs, GVLs, DUTs, tasks, libraries)mcp__tckit__get_pou_interface — declarations and method signatures for one POUmcp__tckit__get_pou_item — declaration + body for one method, action, or property accessormcp__tckit__get_gvl — one GVL's declarationmcp__tckit__get_dut — one DUT's declaration (struct, enum, union, alias)Reader tools read XML directly from disk. They do NOT need the Windows bridge service. They work whenever the TcKit MCP server is reachable, even if no PLC is connected and the bridge is down.
Do NOT call writer or build tools from this skill. mcp__tckit__open_project, add_pou, build, deploy, run_tests, and similar are out of scope here. They require the Windows bridge service and have no bearing on reading. If you see one of those tools error with "bridge not reachable" or similar, that error tells you nothing about whether the reader tools work — keep using get_*.
Common request shapes and the one-call answer:
| Request | Tool |
|---|---|
| "What's the API / methods / signatures of FB_X?" | get_pou_interface(X) |
| "Show me FB_X.Execute's implementation" | get_pou_item(X, "Execute") |
| "What fields does ST_Config have?" | get_dut("ST_Config") |
| "What's in GVL_Params?" | get_gvl("GVL_Params") |
| "Where does FB_X live in the project?" | check the earlier get_structure payload |
If the request matches one of these, make the matching call first. Do not glob, grep, or read the raw .TcPOU XML when a single reader call answers the question.
get_structure(project_path). Skip if the user named the symbol.get_pou_interface(pou_name) to get declarations and method signatures. Do NOT fetch bodies yet. For API-shape questions (methods, signatures, public surface) this is usually the only call you need.get_pou_item(pou_name, item_name). One call per item. Stop fetching as soon as you have what you need.get_gvl(gvl_name) for global variable lists.get_dut(dut_name) for structs, enums, unions, and aliases. Do NOT try to read these via get_pou_item — they are not POUs.get_structure is a one-shot orientation, not a per-turn refresh.open_project, add_pou, build, deploy, run_tests) to "set up" a read. The reader tools do not need the project opened in XAE; they work directly on the files on disk.get_pou_item for every method "just in case".get_structure at the start of every turn.tc-beckhoff-docs territory.get_pou_item for an enum or struct (use get_dut).Read or Grep on .TcPOU / .TcGVL / .TcDUT files as a substitute for get_pou_interface / get_pou_item / get_gvl / get_dut when those tools are available. The MCP calls return just the slice you need; the raw XML files contain a lot of envelope noise.If the TcKit reader tools (mcp__tckit__get_structure and friends) are not registered in this session, fall back to disciplined stock-tool reads:
Glob (e.g. **/FB_Motor.TcPOU). One call.Read the file with a limit that catches the <Declaration> block (typically the first ~80 lines of a POU file). Don't pull the whole file.Grep for the method name and Read with offset/limit around the match. Resist pulling the whole POU.Same layered discipline as with the MCP tools, just done with Glob/Grep/Read. "Unavailable" here means the reader tools genuinely aren't registered, not that some other TcKit tool failed.
The anti-pattern is using raw XML reads instead of TcKit when TcKit is available, not using them as a fallback when it isn't.
If the task moves into writing or modifying code, hand off to tc-write-st. If a Beckhoff library FB needs research, hand off to tc-beckhoff-docs.
npx claudepluginhub georgeturneruk/tckit --plugin tckitGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.