plcsense setup <client> writes .Zeugwerk/plcsense.json once, with every knob present and set to its default, so the file itself documents what you can change instead of hiding it in code. Nothing in it is secret, so it is safe to commit alongside the solution.
{
"config_version": 3,
"managed_libraries": {
"root": "C:/TwinCAT/3.1/Components/Plc/Managed Libraries/"
},
"doc_sites": {
"ZCore": { "root_template": "https://doc.zeugwerk.dev/{channel}/" },
"AcmeSealingLib": { "root": "https://docs.acme.example/sealing/1.4/" }
},
"beckhoff_infosys": {
"enabled": true,
"cache_ttl_hours": 168,
"crawl_delay_ms": 10,
"extra_eligible_namespaces": []
},
"confluence": {
"enabled": false,
"base_url": "https://your-site.atlassian.net/wiki",
"spaces": [],
"library_namespaces": {}
},
"parser": { "backend": "TreeSitter" },
"libraries": {
"transitive_references": true,
"max_depth": 8,
"max_libraries": 250,
"wrapper_hint_names": ["ZPlatform", "ZAux"],
"hydration_profile": "signatures"
},
"validation": {
"semantic_checks": true,
"disabled_checks": []
}
}
config_version- Stamp on the shipped preset, not a product version number.
setup only rewrites a file whose stamp is behind the current one, and asks first unless told otherwise. managed_libraries.root- TwinCAT's own Managed Libraries folder. Already resolves
%TWINCAT3DIR% by default; set it only if your libraries live somewhere else. doc_sites.<Namespace>- Where a library's zkdoc output lives, per library namespace, so
get_plc_type_documentation reads the version your project actually references. root_template resolves a {channel}/{version} placeholder from that version; root is a fixed URL for a site that does not version its docs. beckhoff_infosys.*- On by default, pulling official Beckhoff pages for Beckhoff libraries.
cache_ttl_hours and crawl_delay_ms are cache and politeness knobs; extra_eligible_namespaces is an escape hatch for a library that carries no Tc2_/Tc3_ name and no distributor tag. confluence.*- Off until you set
enabled. base_url and spaces scope the opt-in Confluence Cloud lane; the token itself is an environment variable, never a line in this file. parser.backendTreeSitter by default; Antlr is the fallback grammar engine.libraries.*- How far library hydration follows references:
transitive_references, max_depth and max_libraries bound the walk; wrapper_hint_names flags your own wrapper convention to a validation check; hydration_profile is "signatures" (default, no method bodies) or "full" (source libraries keep their bodies too). validation.*semantic_checks turns the extra checks off entirely, for when one misfires more than it helps; disabled_checks silences a single rule code instead.
Everything here already works with no edits. doc_sites is the one most people touch by hand, to point plcsense at their own libraries' documentation.