Claude-skill-registry-data manage-maven-profiles
Maven build profile classification and user workflow for unmatched profiles
git clone https://github.com/majiayu000/claude-skill-registry-data
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/manage-maven-profiles" ~/.claude/skills/majiayu000-claude-skill-registry-data-manage-maven-profiles && rm -rf "$T"
data/manage-maven-profiles/SKILL.mdMaven Profile Management
Classify Maven build profiles that weren't auto-matched during discovery.
When to Use
This skill is invoked by
analyze-project-architecture when:
- Project contains Maven modules (
includesbuild_systems
)maven - Discovery found NO-MATCH-FOUND profiles
Do not use directly - invoked conditionally from architecture analysis workflow.
Profile Classification
Maven profiles enable optional build features. Extension API classifies profiles during discovery:
| Classification | Meaning |
|---|---|
Canonical (e.g., ) | Generates build command |
| No command generated |
Key Insight: Most NO-MATCH-FOUND profiles are correctly unmatched:
→ Release process, not a build commandapache-release
→ Test skipping, not a positive commandskip-unit-tests
→ Repository config, not a commanduse-apache-snapshots
Workflow
Step 1: Collect Unmatched Profiles Across All Modules
Step 1a: Get Module List
python3 .plan/execute-script.py plan-marshall:analyze-project-architecture:architecture modules
Output (TOON):
modules[N]: - module-a - module-b - module-c
Step 1b: Query Each Module for Profiles
For each module in the list:
python3 .plan/execute-script.py plan-marshall:analyze-project-architecture:architecture \ derived-module --name {module-name}
Parse the TOON output:
- Check
containsbuild_systemsmaven - If Maven, check
for entries withmetadata.profilescanonical: NO-MATCH-FOUND
Step 1c: Build Unmatched Profile Set
Collect all NO-MATCH-FOUND profiles into a deduplicated set:
unmatched_profiles = {profile-id-1, profile-id-2, ...}
Note: Same profile ID may appear in multiple modules. Only ask once per unique profile ID.
If set is empty → Exit, nothing to do.
Step 2: Ask User About Each Unmatched Profile
For each NO-MATCH-FOUND profile:
AskUserQuestion: question: "Maven profile '{profile-id}' is unmatched. What should it do?" header: "Profile" options: - label: "Ignore" description: "Leave as NO-MATCH-FOUND, no command generated" - label: "Skip" description: "Add to skip list, exclude from all processing" - label: "Map to canonical" description: "Map to integration-tests, coverage, benchmark, or quality-gate" multiSelect: false
Step 3: Apply User Decision
| Choice | Action | Command |
|---|---|---|
| Ignore | Leave as-is | None |
| Skip | Add to skip list | See below |
| Map | Add mapping | See below |
Skip - Add to skip list:
# Get current value first python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults get \ --key build.maven.profiles.skip # Append new profile (comma-separated) python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults set \ --key build.maven.profiles.skip --value "{existing},{profile-id}"
Map - Add canonical mapping:
# Get current mappings first python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults get \ --key build.maven.profiles.map.canonical # Append new mapping (comma-separated profile:canonical pairs) python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config ext-defaults set \ --key build.maven.profiles.map.canonical --value "{existing},{profile-id}:{canonical}"
Step 4: Re-run Discovery
After any configuration change:
python3 .plan/execute-script.py plan-marshall:analyze-project-architecture:architecture discover --force
Canonical Classifications
| Canonical | Description | Example Profile IDs |
|---|---|---|
| Integration/E2E tests | , , |
| Code coverage | , |
| Benchmarks | , , |
| Quality checks | , , |
| Exclude from command generation | Internal profiles |
Multiple Profiles to One Canonical
When multiple profiles map to the same canonical:
- Only ONE command is generated
- First discovered profile becomes primary
- All profiles listed in
all_profiles
User override: Add unwanted profiles to skip list.
Storage
Configuration stored in
marshal.json under extension_defaults:
{ "extension_defaults": { "build.maven.profiles.skip": "itest,native", "build.maven.profiles.map.canonical": "local-integration-tests:integration-tests,perf:benchmark" } }
Key Formats:
- Comma-separated profile IDs to excludebuild.maven.profiles.skip
- Comma-separatedbuild.maven.profiles.map.canonical
pairsprofile:canonical
Skip list and profile mappings are read during architecture discovery to classify profiles.
Related Documents
| Document | Purpose |
|---|---|
| maven-impl.md | Maven profile pipeline implementation |
| canonical-commands.md | Command vocabulary |