Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install jamie-bitflight-claude-skills-plugins-dasel-skills-enterprise-spring-xmlgit clone https://github.com/Jamie-BitFlight/claude_skills.gitcp claude_skills/SKILL.MD ~/.claude/skills/jamie-bitflight-claude-skills-plugins-dasel-skills-enterprise-spring-xml/SKILL.md---
name: enterprise-spring-xml
description: Dasel v3 selectors for Spring bean factory XML — use when querying any Spring ApplicationContext XML for bean discovery, dependency wiring, JMS destination mapping, property injection extraction, or cross-bean reference tracing. Load this skill before writing dasel selectors against Spring bean XML files (applicationContext.xml, *_beans.xml, spring-*.xml).
---
# Spring Bean Factory XML — Dasel v3 Query Patterns
<when_to_use>
Load this skill when querying any Spring bean XML file — `applicationContext.xml`, `*_beans.xml`, `spring-context.xml`, or any Spring ApplicationContext XML — for bean discovery, dependency analysis, JMS wiring, property injection auditing, or cross-bean reference tracing.
</when_to_use>
Dasel v3 selector patterns for Spring bean factory XML. Always pass `-i xml` explicitly.
**Attribute prefix rule:** Dasel friendly mode (default) prefixes XML attributes with `-`. The `id` attribute is `-id`, `class` is `-class`. Text content is `#text`.
## Bean Discovery
```bash
# All bean IDs
dasel -f chaosrouter_beans.xml -i xml 'beans.bean.filter(has("-id")).map("-id")'
# All bean classes
dasel -f chaosrouter_beans.xml -i xml 'beans.bean.filter(has("-class")).map("-class")'
# Map -class across every bean (includes beans without -id)
dasel -f chaosrouter_beans.xml -i xml 'beans.bean.map("-class")'
```
## Class Pattern Matching
Filter beans by class name via regex on `-class`.
```bash
# Beans whose class contains JmsTemplate
dasel -f chaosrouter_beans.xml -i xml 'beans.bean.filter(-class ~ ".*JmsTemplate.*").map("-id")'
# Count beans matching a class pattern
dasel -f beans.xml -i xml 'len(beans.bean.filter(-class ~ ".*Jms.*"))'
```
## Dependency Wiring Analysis
Find beans referencing other beans via the `-ref` attribute on `property` child elements.
**Pattern:** `parentCollection.filter(childElement.filter(condition).len($this) > 0)` — filters the parent by testing whether a matching child exists (length > 0).
```bash
# Beans that reference a specific bean ID via ref attribute
dasel -f chaosrouter_beans.xml -i xml 'beans.bean.filter(property.filter(-ref == "targetBeanId").len($this) > 0).map("-id")'
```
## JMS Destination Mapping
Find which beans consume which JMS destinations via `property` child elements.
```bash
# Beans wired to a specific destination property
dasel -f integrationpoint_beans.xml -i xml 'beans.bean.filter(property.filter(-name == "destination").len($this) > 0).map("-id")'
```
## Property Injection Extraction
Extract externalized `${...}` placeholder values from bean definitions.
```bash
# All property values using ${...} placeholders
dasel -f storage_beans.xml -i xml 'beans.bean.property.filter(-value ~ ".*\\$\\{.*\\}.*").map("-value")'
```
## Attribute and Text Content Access
```bash
# <bean id="myBean" class="com.example.Foo">some text</bean>
dasel -f beans.xml -i xml 'beans.bean[0].-id' # myBean
dasel -f beans.xml -i xml 'beans.bean[0].-class' # com.example.Foo
dasel -f beans.xml -i xml 'beans.bean[0].#text' # some text
# Discover all keys (attributes + child elements) on first bean
dasel -f beans.xml -i xml 'beans.bean[0].keys($this)'
```
## Namespace Handling
Friendly mode strips namespace prefixes from element names — works for most Spring queries.
When namespace prefixes cause selector failures (element not found despite existing), switch to structured mode:
```bash
dasel -f spring-context.xml -i xml --read-flag xml-mode=structured 'beans.bean[0]'
```
## Cross-File Analysis
Write intermediate results to `/tmp/` — never to the source tree.
```bash
# Extract bean IDs from multiple files, compare
dasel -f chaosrouter_beans.xml -i xml 'beans.bean.filter(has("-id")).map("-id")' > /tmp/chaosrouter_beans.txt
dasel -f integrationpoint_beans.xml -i xml 'beans.bean.filter(has("-id")).map("-id")' > /tmp/integration_beans.txt
diff /tmp/chaosrouter_beans.txt /tmp/integration_beans.txt
```