Extract conditional relevance rules from an LCC node's CDI XML and PDF manual. Identifies configuration sections that become irrelevant based on other field values. Keywords -- CDI, relevance, conditional, irrelevant, disabled, profile extraction.
Identify every configuration relationship where a section (group of fields) becomes irrelevant — meaning it has no effect on node behavior — based on the current value of another field.
Use this skill when you need to determine which configuration sections can be hidden or greyed out in a configuration UI because they have no effect given the current settings. This is typically the second extraction step when building a node profile.
profile-0-manual-outline. Contains cdiFile (path to CDI XML), pdfFile (path to PDF manual), and page ranges for each section.profile-1-event-roles (optional but recommended). Helps identify rules like "consumer events are irrelevant when output function is disabled" by knowing which groups are consumer vs producer.No other file paths needed — read the CDI XML and PDF file paths from manual-outline.json, then use the pdf-utilities read_pdf tool with pageRange parameter to extract pages describing conditional field dependencies and disabled/no-function modes.
For each dependency relationship found, produce a rule specifying:
irrelevantWhen lists all the active output-mode values (e.g., [1,2,3,4,5,6,7,8]), not just zero. Look for manual language like "takes priority", "overrides", "must only have one", or "does not apply when [other field] is active".irrelevantWhen even though they are non-zero.Produce a JSON object matching this schema:
{
"nodeType": {
"manufacturer": "<from CDI>",
"model": "<from CDI>"
},
"rules": [
{
"id": "R001",
"affectedSection": "<CDI path of the section made irrelevant>",
"controllingField": "<CDI path of the field that determines relevance>",
"irrelevantWhen": [0],
"irrelevantValueLabels": ["No Function"],
"explanation": "<user-facing explanation, e.g., 'Consumer events only apply when an Output Function is set.'>",
"citation": "<manual section or passage confirming this>"
},
{
"id": "R002",
"affectedSection": "<CDI path of section made irrelevant by an active — not disabled — controlling value>",
"controllingField": "<CDI path of controlling field>",
"irrelevantWhen": [1, 2, 3, 4],
"irrelevantValueLabels": ["Mode A", "Mode B", "Mode C", "Mode D"],
"explanation": "<user-facing explanation, e.g., 'When a Steady or Pulse output is active, the hardware prioritizes the output and the input function has no effect. To use this line as an input, first set Output Function to No Function.'>",
"citation": "<manual section confirming the priority/override rule>"
}
]
}
/ to separate hierarchy levelscontrollingField should be a sibling or ancestor within the same replicated group instanceirrelevantWhen contains the raw <property> integer values from the CDI <map>irrelevantValueLabels contains the corresponding <value> display labelsexplanation field will be shown to end users in the configuration UI — write it clearly and concisely, including what the user should do if they want to use the suppressed section (e.g., "To use this line as an input, first set Output Function to 'No Function'")irrelevantWhen can contain any set of enum values — not only zero. For mutually exclusive functions, list every value of the controlling field that makes the affected section irrelevant, and carefully exclude values where both fields are legitimately active simultaneously (e.g., Sample modes)irrelevantWhen values actually exist in the CDI's <map> for the controlling field; verify that excluded values are also real map entriesSave the output as profiles/<node-name>/relevance-rules.json (e.g., profiles/tower-lcc/relevance-rules.json). This file will be used as shared context by subsequent extraction skills (descriptions, recipes, etc.).