assessment
Run application assessment for a single repository
npx skills add https://github.com/microsoft/github-copilot-modernization --skill assessmentApplication Assessment
This skill performs application assessment for a single repository. It supports Java, .NET, and JavaScript/TypeScript projects.
Input Parameters
workspace-path(optional): Path to the project to assess. Defaults to the current directory (repository root) when not specified. All assessment outputs are written relative to this path (e.g.{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json). For a repository with multiple sub-projects, pass the sub-project directory path so that each sub-project's outputs are isolated.
When to Use This Skill
Use this skill when you need to:
- Assess a Java or .NET application for cloud readiness and migration issues
- Assess a JavaScript/TypeScript project for outdated dependencies and available updates
- Generate detailed assessment reports with issue analysis and recommendations
- Understand application dependencies, frameworks, and potential migration blockers
What This Skill Does
This skill performs a simplified assessment workflow:
-
Check Project Type and Prerequisites:
- For Java projects: Check MCP tool availability in this order:
- Primary: Check if 'appmod-run-assessment-action' MCP tool is available
- If available, use ONLY this tool. It handles everything (prerequisite checks, installation, and assessment execution) in a single call.
- Do NOT call any other assessment MCP tools when this tool is available.
- Fallback: If 'appmod-run-assessment-action' is NOT available, check if 'appmod-precheck-assessment' MCP tool is available
- If available, use the legacy workflow: call 'appmod-precheck-assessment' first, then follow its guidance for 'appmod-install-appcat' and 'appmod-run-assessment'.
- If neither tool is configured, return immediately with setup instructions.
- Primary: Check if 'appmod-run-assessment-action' MCP tool is available
- For .NET projects: Check if .NET SDK is available
- No MCP tools required for .NET assessment
- For JavaScript/TypeScript projects: Check if Node.js and npm are available
- No MCP tools required for JS/TS assessment
- For Java projects: Check MCP tool availability in this order:
-
Run Assessment:
- For Java projects: Trigger AppCAT analysis via Assessment MCP server
- If 'appmod-run-assessment-action' is available (primary path):
- Call 'appmod-run-assessment-action' MCP tool only
- The MCP tool automatically saves the report to the versioned directory
- If falling back to 'appmod-precheck-assessment' (legacy path):
- Call 'appmod-precheck-assessment' to check prerequisites
- Call 'appmod-install-appcat' to install AppCAT if needed
- Call 'appmod-run-assessment' to run the assessment
- If 'appmod-run-assessment-action' is available (primary path):
- For .NET projects: Install and run AppCAT directly
- Install:
dotnet tool update dotnet-appcat - Find all .csproj files under
{workspace-path} - Join project paths with semicolons:
projectPaths="project1.csproj;project2.csproj" - Run:
appcat analyze $projectPaths --source Solution --target Any --serializer APPMODJSON --code --privacyMode Restricted --non-interactive --report {workspace-path}\.github\modernize\appcat\result\report.json
- Install:
- For JavaScript/TypeScript projects: Install and run npm-check-updates
- Install:
npm install -g npm-check-updates@19.6.3 --prefix {tool-install-dir} - Run:
ncu --format group --packageFile {workspace-path}/package.json - Generate the
reportIdas a UTC timestamp formatted asyyyyMMddHHmmss(e.g.2024-06-15T14:30:52Zbecomes20240615143052) - Create the versioned directory:
mkdir -p {workspace-path}/.github/modernize/assessment/reports/report-{reportId} - Save the output to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/js-assessment-report.md - Do NOT save a copy to the top-level assessment directory
- Install:
- Analyzes code for cloud migration issues or dependency updates
- Generates structured assessment data
- For Java projects: Trigger AppCAT analysis via Assessment MCP server
-
Save Report to Versioned Directory (All languages):
- For Java projects (primary path — 'appmod-run-assessment-action'): The MCP tool automatically saves the report to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json— no manual saving needed - For Java projects (legacy fallback path — 'appmod-precheck-assessment'):
- Find
report.jsonunder{workspace-path}/.github/modernize/appcat/result/ - Read the report and extract
metadata.analysisStartTime - Format the timestamp as
yyyyMMddHHmmssto produce thereportId(e.g.2024-06-15T14:30:52Zbecomes20240615143052) - Create the versioned directory:
mkdir -p {workspace-path}/.github/modernize/assessment/reports/report-{reportId} - Move the report to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json
- Find
- For .NET projects:
- Find
report.jsonat{workspace-path}/.github/modernize/appcat/result/report.json - Read the report and extract
metadata.analysisStartTime - Format the timestamp as
yyyyMMddHHmmssto produce thereportId(e.g.2024-06-15T14:30:52Zbecomes20240615143052) - Create the versioned directory:
mkdir -p {workspace-path}/.github/modernize/assessment/reports/report-{reportId} - Move the report to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json
- Find
- This versioned report should be included in the pull request
- For Java projects (primary path — 'appmod-run-assessment-action'): The MCP tool automatically saves the report to
How to Use
Prerequisites
For Java projects:
- Primary: MCP tool 'appmod-run-assessment-action' — preferred, handles everything in one call
- Fallback: If primary tool is not available, use 'appmod-precheck-assessment' → 'appmod-install-appcat' → 'appmod-run-assessment' workflow
- If neither tool is configured, the skill will return instructions for setup
For .NET projects:
- .NET SDK must be installed
- No MCP tools required - appcat will be installed and run directly via .NET CLI
- The assessment will automatically install
dotnet-appcattool if not already present
For JavaScript/TypeScript projects:
- Node.js and npm must be installed
- No MCP tools required - npm-check-updates will be installed and run directly via npm
- The assessment will automatically install
npm-check-updatesif not already present
Triggering Assessment
Simply express the intent to assess the application. Example prompts:
- "Assess the application"
- "Run assessment for this project"
The assessment process automatically:
- Detects project language and framework within
{workspace-path} - For Java: Uses MCP tool to run AppCAT and automatically save report to versioned directory
- For .NET: Installs dotnet-appcat tool and runs analysis directly
- For JavaScript/TypeScript: Installs npm-check-updates and runs dependency analysis
- Executes comprehensive analysis
- For Java (primary): Report is automatically saved to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json - For Java (legacy fallback): Generates report at
{workspace-path}/.github/modernize/appcat/result/, then moved to versioned directory - For .NET: Generates report at
{workspace-path}/.github/modernize/appcat/result/report.json - For JavaScript/TypeScript: Generates report at
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/js-assessment-report.md
Report Saving
For Java projects:
- If using 'appmod-run-assessment-action' (primary path): The MCP tool automatically saves the report to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json— no manual report moving is needed - If using legacy fallback path ('appmod-precheck-assessment'):
- Find
report.jsonunder{workspace-path}/.github/modernize/appcat/result/ - Read the report and extract
metadata.analysisStartTime, format asyyyyMMddHHmmssto getreportId - Move the report to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json
- Find
- Include this versioned report in the pull request
For .NET projects:
- Report is initially generated at
{workspace-path}/.github/modernize/appcat/result/report.json - Read the report and extract
metadata.analysisStartTime, format asyyyyMMddHHmmssto getreportId - Move the report to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json - Include this versioned report in the pull request
For JavaScript/TypeScript projects:
- Generate the
reportIdas a UTC timestamp formatted asyyyyMMddHHmmss(e.g.2024-06-15T14:30:52Zbecomes20240615143052) - Create the versioned directory:
mkdir -p {workspace-path}/.github/modernize/assessment/reports/report-{reportId} - Save the ncu output to
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/js-assessment-report.md - Include this versioned report in the pull request
Report Output Location
Report location depends on project type:
For Java projects (via MCP server):
- Primary path ('appmod-run-assessment-action'): Automatically saved to:
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json - Legacy fallback path ('appmod-precheck-assessment'): Initially stored under
{workspace-path}/.github/modernize/appcat/result/, then moved to versioned directory:{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json
For .NET projects (direct execution):
- Initially generated at:
{workspace-path}/.github/modernize/appcat/result/report.json - Moved to versioned directory:
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json
For JavaScript/TypeScript projects (direct execution):
- Saved to versioned directory:
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/js-assessment-report.md
Success Criteria
Assessment is complete when:
- ✅ For Java: MCP server is available (or clear instructions provided if not)
- ✅ For .NET: .NET SDK is available and dotnet-appcat tool is installed
- ✅ For JavaScript/TypeScript: Node.js and npm are available and npm-check-updates is installed
- ✅ AppCAT analysis executes without errors (Java/.NET) or ncu analysis executes without errors (JS/TS)
- ✅ For Java and .NET: Report generated at
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/report.json - ✅ For JavaScript/TypeScript: Report generated at
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/js-assessment-report.md - ✅ Report metadata includes assessment tool version, timestamp, and configuration
Troubleshooting
Prerequisites Not Met:
- For Java: First check for 'appmod-run-assessment-action', then fall back to 'appmod-precheck-assessment'
- Return immediately with setup instructions if neither tool is available
- Do not attempt to run assessment without MCP
- For .NET: Verify .NET SDK is installed
- Check with
dotnet --versioncommand - Provide installation instructions if .NET SDK is missing
- Check with
- For JavaScript/TypeScript: Verify Node.js and npm are installed
- Check with
npm --versioncommand - Provide installation instructions if npm is missing
- Check with
Assessment Failures:
- Unsupported project type (only Java, .NET, and JavaScript/TypeScript supported)
- For Java: MCP server communication errors
- For .NET:
- dotnet-appcat tool installation failure
- appcat command execution errors
- For JavaScript/TypeScript:
- npm-check-updates installation failure
- ncu command execution errors
- No package.json found at
{workspace-path}/package.json
- Invalid project structure or build configuration
Report Generation Issues:
- For Java (primary): No report.json found under
{workspace-path}/.github/modernize/assessment/reports/report-*/report.jsonafter MCP execution - For Java (legacy fallback): No report.json found under
{workspace-path}/.github/modernize/appcat/result/after MCP execution - For .NET: Report not generated at
{workspace-path}/.github/modernize/appcat/result/report.json, ormetadata.analysisStartTimemissing from report - For JavaScript/TypeScript: Report not generated at
{workspace-path}/.github/modernize/assessment/reports/report-{reportId}/js-assessment-report.md - Report file is corrupted or invalid JSON (Java/.NET only)
For any failure, provide clear error messages and troubleshooting steps.