marketplace/bundles/pm-dev-java/skills/manage-maven-profiles/SKILL.md
Maven build profile classification and user workflow for unmatched profiles
npx skillsauth add cuioss/plan-marshall manage-maven-profilesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Classify Maven build profiles that weren't auto-matched during discovery.
Execution mode: Invoked conditionally from architecture analysis workflow when unmatched profiles are found. Execute workflow steps sequentially.
Prohibited actions:
manage-architecture onlyConstraints:
python3 .plan/execute-script.py command (Rule 9)pm-dev-java:manage-maven-profiles:profiles notation for this skill's own script operationsplan-marshall:manage-architecture:architecture notation for architecture queriesplan-marshall:manage-config:manage-config notation for config operationsThis skill is invoked by manage-architecture when:
build_systems includes maven)Do not use directly - invoked conditionally from architecture analysis workflow.
Maven profiles enable optional build features. Extension API classifies profiles during discovery:
| Classification | Meaning |
|----------------|---------|
| Canonical (e.g., coverage) | Generates build command |
| NO-MATCH-FOUND | No command generated |
For canonical classification types, storage format, and common NO-MATCH-FOUND examples, see standards/profile-classification.md.
python3 .plan/execute-script.py plan-marshall:manage-architecture:architecture modules
Output (TOON):
modules[N]:
- module-a
- module-b
- module-c
For each module in the list:
python3 .plan/execute-script.py plan-marshall:manage-architecture:architecture \
derived-module --module {module-name}
Parse the TOON output:
build_systems contains mavenmetadata.profiles for entries with canonical: NO-MATCH-FOUNDCollect 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.
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
| 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-config:manage-config ext-defaults get \
--key build.maven.profiles.skip
# Append new profile (comma-separated)
python3 .plan/execute-script.py plan-marshall:manage-config:manage-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-config:manage-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-config:manage-config ext-defaults set \
--key build.maven.profiles.map.canonical --value "{existing},{profile-id}:{canonical}"
After any configuration change:
python3 .plan/execute-script.py plan-marshall:manage-architecture:architecture discover --force
standards/profile-classification.md — Canonical classifications, multi-profile handling, storage format| Script | Subcommand | Purpose |
|--------|------------|---------|
| profiles.py | list | List Maven profiles from all modules |
| profiles.py | unmatched | List unmatched profiles (NO-MATCH-FOUND), excluding configured skip/mapped profiles |
| profiles.py | classify | Classify a single profile by pattern matching |
| profiles.py | suggest | Suggest classifications for all unmatched profiles |
Notation: pm-dev-java:manage-maven-profiles:profiles {subcommand}
List profiles:
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles list
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles list --module {module-name}
List unmatched profiles:
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles unmatched
Classify a single profile:
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles classify --profile-id {profile-id}
Suggest classifications for unmatched profiles:
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles suggest
All subcommands accept either --plan-id {plan_id} (preferred — auto-resolves the worktree path via manage-status get-worktree-path) or --project-dir {path} (escape hatch / explicit override; default: current directory). The two flags are mutually exclusive — supplying both raises mutually_exclusive_args. See plan-marshall:tools-script-executor/standards/cwd-policy.md § "Bucket B" for the canonical two-state contract.
| Document | Purpose |
|----------|---------|
| plan-marshall:build-maven → standards/maven-impl.md | Maven profile pipeline implementation |
| plan-marshall:extension-api → standards/canonical-commands.md | Command vocabulary |
The canonical argparse surface for profiles.py. The plugin-doctor analyzer (_analyze_manage_invocation.py) reads this section as source-of-truth for the manage-invocation-invalid and missing-canonical-block rules. Consuming docs xref this section by name instead of restating the command inline. See pm-plugin-development:plugin-script-architecture cross-skill-integration.md § "Script invocation in documentation". --project-dir and --plan-id are top-level flags (placed before the subcommand) and are mutually exclusive.
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles \
[--project-dir PROJECT_DIR | --plan-id PLAN_ID] list [--module MODULE]
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles \
[--project-dir PROJECT_DIR | --plan-id PLAN_ID] unmatched
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles \
[--project-dir PROJECT_DIR | --plan-id PLAN_ID] classify --profile-id PROFILE_ID
python3 .plan/execute-script.py pm-dev-java:manage-maven-profiles:profiles \
[--project-dir PROJECT_DIR | --plan-id PLAN_ID] suggest
testing
A test skill for README generation
testing
A test skill with existing references
tools
Skill without references directory
development
Test skill with table-format references