From dasel
Provides dasel v3 query patterns to analyze large InstallAnywhere .iap_xml files: query action sequences, discover variables, resolve platform conditions, navigate panels, compare variants.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dasel:enterprise-installanywhereThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<when_to_use>
<when_to_use>
Load this skill when working with any .iap_xml file — auditing install actions, listing file copy operations, discovering variables, finding platform-specific branches, or comparing two installer variants (e.g., RA vs NON_RA builds).
</when_to_use>
-i xml explicitly — auto-detection fails on .iap_xml extensions/tmp/ — never to the source treeInstallAnywhere .iap_xml files have a fixed root path: InstallAnywhere.project.
# Top-level element names at the document root
dasel -f installer.iap_xml -i xml 'keys($this)'
# Navigate to the install action sequence
dasel -f installer.iap_xml -i xml 'InstallAnywhere.project.installSequence'
# Children of the project node
dasel -f installer.iap_xml -i xml 'InstallAnywhere.project.keys($this)'
Recursive descent — finds elements at any depth without knowing the full path:
# All elements named "action" at any depth
dasel -f installer.iap_xml -i xml '..action'
# All elements named "panel" at any depth
dasel -f installer.iap_xml -i xml '..panel'
# Any node at any depth where a specific attribute exists
dasel -f installer.iap_xml -i xml 'search(has("-name"))'
..elementName descends recursively. search(predicate) matches nodes at any depth.
# All action names in execution order
dasel -f installer.iap_xml -i xml '..action.map("-name")'
# All action types
dasel -f installer.iap_xml -i xml '..action.map("-type")'
# Count all action elements
dasel -f installer.iap_xml -i xml 'len(..action)'
# Write for analysis
dasel -f installer.iap_xml -i xml '..action.map("-name")' > /tmp/action_names.txt
dasel -f installer.iap_xml -i xml '..action.map("-type")' > /tmp/action_types.txt
# All variable definitions
dasel -f installer.iap_xml -i xml '..variable.map("-name")' > /tmp/installer_vars.txt
# All platform conditions (Windows vs Linux branches)
dasel -f installer.iap_xml -i xml 'search(has("-platform")).map("-platform")' > /tmp/platforms.txt
When comparing two builds of the same installer (e.g., RA vs NON_RA, Windows vs Linux variant):
# Compare action sets between two installer files
dasel -f installer_a.iap_xml -i xml '..action.map("-name")' | sort > /tmp/actions_a.txt
dasel -f installer_b.iap_xml -i xml '..action.map("-name")' | sort > /tmp/actions_b.txt
diff /tmp/actions_a.txt /tmp/actions_b.txt > /tmp/installer_diff.txt
# Compare panel sets
dasel -f installer_a.iap_xml -i xml '..panel.map("-name")' | sort > /tmp/panels_a.txt
dasel -f installer_b.iap_xml -i xml '..panel.map("-name")' | sort > /tmp/panels_b.txt
diff /tmp/panels_a.txt /tmp/panels_b.txt
# All file copy sources
dasel -f installer.iap_xml -i xml '..installFile.map("-source")' > /tmp/file_copies.txt
# Panel names and count
dasel -f installer.iap_xml -i xml '..panel.map("-name")'
dasel -f installer.iap_xml -i xml 'len(..panel)'
XML attributes use - prefix in dasel friendly mode:
# Access specific attribute on first match
dasel -f installer.iap_xml -i xml '..action[0].-name'
# Discover attributes and children of a node
dasel -f installer.iap_xml -i xml '..action[0].keys($this)'
# Extract attribute values across all matching nodes
dasel -f installer.iap_xml -i xml '..elementName.map("-attributeName")'
# Count matching elements
dasel -f installer.iap_xml -i xml 'len(..elementName)'
# Search with attribute predicate at any depth
dasel -f installer.iap_xml -i xml 'search(has("-attributeName"))'
npx claudepluginhub jamie-bitflight/claude_skills --plugin daselExplores unknown structured data files using dasel v3 to discover schema, list keys, find nested values, sample arrays, and identify types across JSON, YAML, TOML, XML, CSV, HCL, INI formats. For configs, API responses, datasets.
Audits Protheus INI configuration files (appserver, dbaccess, smartclient, tss, broker) against 487 official best-practice rules, auto-detecting file type and role.
Query JSON with jq expressions, skim XML/HTML structure with xmlSkim, and extract data via XPath with xmlSelect. For config files like package.json, tsconfig.json, and XML/HTML docs.