plugins/github-copilot-modernization/skills/configuration-inventory/SKILL.md
Generate comprehensive configuration and externalized settings inventory
npx skillsauth add microsoft/github-copilot-modernization configuration-inventoryInstall 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.
Analyze the project to produce a comprehensive inventory of all configuration sources, build profiles, runtime profiles, externalized properties, secrets workflows, feature flags, startup dependencies, and framework versions. Save to .github/modernize/assessment/engines/facts/configuration-inventory.md.
Note: This skill produces a comprehensive reference document. For structured findings suitable for automated processing, see
fact-profile-settings,fact-environment-variables, andfact-xml-configs.
workspace-path (optional): Path to the project to analyze (defaults to current directory)This skill is part of a set of four complementary assessment skills. To avoid content duplication across their output documents, observe these scope rules:
data-architecture skill. In the Properties Inventory, list database-related property keys and values as raw configuration entries, but do NOT explain their behavioral implications (e.g., do not explain what spring.jpa.open-in-view=false means for lazy loading — that belongs in data-architecture.md).api-service-contracts skill. Do NOT list HTTP endpoints, controller routes, or actuator paths.business-workflows skill. Do NOT describe business processes or entity validation constraints.data-architecture and business-workflows. Do NOT enumerate entity names, fields, or relationships.Identify all configuration files and sources and produce the complete ## Configuration Sources section:
application.properties, application.yml, bootstrap.properties, bootstrap.yml — note that bootstrap.* files are distinct from application.* (bootstrap configures the config server connection and runs before application context; application configures the app itself)appsettings.json, appsettings.{Environment}.json, web.config, launchSettings.json.env, .env.local, .env.production, config/*.js, config/*.tsdocker-compose.yml environment sections, Kubernetes ConfigMaps/Secrets YAML filesspring.cloud.config.server.git.uri)Identify build-time profiles that affect compilation, packaging, and dependency resolution, and produce the complete ## Build Profiles section:
pom.xml (e.g., springboot, buildDocker, dev, cloud) — for each, document activation condition (auto, manual -P, system property -Denv=), purpose, and key dependencies or plugins addedbuild.gradlepackage.json, webpack/vite/esbuild configurations per environmentFor each build profile extract:
List all runtime profile-specific or environment-specific configuration and produce the complete ## Runtime Profiles section:
application-dev.yml, application-prod.yml), @Profile annotations, spring.profiles.active settings, combined profile activation (e.g., mysql,key-vault)appsettings.Development.json, appsettings.Production.json), ASPNETCORE_ENVIRONMENT usage.env.development, .env.production, NODE_ENV-based branchingFor each service/module, catalog all configuration properties and produce the complete ## Properties Inventory section:
${ENV_VAR}, %ENV_VAR%)Do NOT include JVM startup parameters,
-Xms/-Xmxheap settings,-Dsystem properties, container memory/CPU limits, or instance counts here — those belong in the## Startup Parameters & Resource Requirementssection (Step 5).
Document JVM startup options, runtime parameters, and per-service resource allocations, and produce the complete ## Startup Parameters & Resource Requirements section:
-Xms, -Xmx) per service-Dspring.profiles.active=, -Dazure.keyvault.uri=, etc.)SPRING_PROFILES_ACTIVE, ASPNETCORE_ENVIRONMENT)mem_limit, Kubernetes resources.requests/limits, cloud deployment settings)-Xms2048m -Xmx2048m for 2Gi services)Map the service startup order and readiness dependencies and produce the complete ## Startup Dependency Chain section:
dockerize wait-for-TCP, Kubernetes readiness probes, Spring Cloud Config retry, Docker Compose depends_on with health checksFlag sensitive configuration entries and document the secrets provisioning workflow, and produce the complete ## Secrets & Sensitive Configuration section (including the ### Secrets Provisioning Workflow subsection):
spring.datasource.password)Document how secrets flow through the system (### Secrets Provisioning Workflow):
get and list permissions on Key Vault")Identify feature toggles and conditional configuration and produce the complete ## Feature Flags section:
@ConditionalOnProperty, @ConditionalOnExpression)Catalog the technology stack versions that affect configuration and produce the complete ## Framework & Runtime Versions section:
openjdk:11-jre, mcr.microsoft.com/dotnet/aspnet:8.0)Save to .github/modernize/assessment/engines/facts/configuration-inventory.md with this exact structure:
# Configuration & Externalized Settings Inventory
A brief introduction (1-2 sentences) summarizing the configuration landscape.
## Configuration Sources
[Table: Source | Type | Path/Location | Notes]
## Build Profiles
[Table: Profile | Activation | Purpose | Key Dependencies/Plugins]
## Runtime Profiles
[Table: Profile | Activation Method | Config Files | Key Overrides]
## Properties Inventory
[Per-service tables: Property Key | Default | Profiles | Source]
## Startup Parameters & Resource Requirements
[Table: Service | JVM/Runtime Options | Memory | Instance Count]
## Startup Dependency Chain
[Ordered list: Service → waits for → Service, with mechanism (dockerize, health check, etc.)]
## Secrets & Sensitive Configuration
[Table: Secret Reference | Type | Storage (masked)]
### Secrets Provisioning Workflow
[Description of how secrets flow: source → identity/access → binding → services]
## Feature Flags
[Table: Flag Name | Default | Controlled By]
## Framework & Runtime Versions
[Table: Component | Version | Source]
> ERROR: Unsupported project type. This skill supports Java, .NET, JavaScript, and TypeScript projects only.> ERROR: No recognized configuration files found at {workspace-path}. Verify the path is correct.> Note: Some configuration sources or properties could not be fully identified..github/modernize/assessment/engines/facts/configuration-inventory.mddevelopment
Scan dependency manifests against known CVEs and remediate by upgrading vulnerable dependencies to patched versions, then rebuild and re-scan to confirm. Self-contained scan→fix→verify loop for any project with a dependency manifest. Use when: a cve-remediation task is dispatched; dependency set changed (version bump, new framework); assessment flagged vulnerable or EOL dependencies; or user asked to "fix CVEs", "patch vulnerabilities", or "dependency security". Triggers: "cve", "remediate cve", "fix cves", "patch vulnerable dependencies", "vulnerability scanning", "dependency security", "vulnerable dependencies", "security advisories", "npm audit", "pnpm audit", "maven audit", "gradle audit", "dependency scan", "vulnerability remediation". NOT for: security audit of auth/input/secrets/OWASP code paths (use security-review).
development
Generate dependency map diagram from project build files
documentation
Generate data architecture and persistence layer documentation with data model diagram
documentation
Generate core business workflow documentation with sequence diagram