SSIS Assessment
SnowConvert AI migrates SSIS packages to Snowflake. This skill analyzes packages from their source code and SnowConvert assessment CSV reports to generate detailed migration analysis including package classification and complexity assessment.
Sub-Agent Mode
When invoked from a parent skill (e.g., assessment/SKILL.md) as a sub-agent, the parent provides a context block with the fields below. The review_mode field controls whether the per-package review loop runs.
| Field | Required | Notes |
|---|---|---|
project_dir |
yes | absolute path to the SCAI project root |
output_dir |
yes | typically <project_dir>/assessment/ssis |
etl_replatform_sources_path |
no | absolute path to the SSIS .dtsx source directory; falls back to auto-detection per Step 1 |
review_mode |
yes | generate-only, auto-review-all, or skip |
On entry: call the configure MCP tool with project_dir from the context block. Snowflake credentials are not required — scai assessment etl generate reads converted CSVs and SSIS .dtsx sources.
Branching by review_mode:
generate-only— run Steps 1–2 (locate inputs + generate JSON). Return theetl_assessment_analysis.jsonpath; do not run per-package analysis or the AI summary.auto-review-all— run all four steps (locate inputs, generate, analyze every package per references/analyze_ssis_package.md, draft the AI HTML summary, register it). Stop only whenstatsreports no pending packages.skip— return immediately with"status": "skipped".
On completion, return JSON only:
{
"sub_skill": "etl-assessment",
"status": "ok",
"output_json": "<abs path to etl_assessment_analysis.json>",
"summary": "<one-line: total packages, classified count, pending count>",
"error": null
}
On skip: "status": "skipped", "output_json": null. On failure: "status": "error", "error": "<message>".
Important Notes
- No help command: The
scai assessment etlcommands are hidden (AI-agent-only, likesql-dynamic). Runningscai assessment etl <command> --helpreturns "No help available". Commands are documented in this skill file only. - Auto-detection: All C# commands (
generate,pending,scan-package,stats,summary,update,ai-summary) auto-detect the JSON path and SSIS source directory from the configured project context. You do not need to pass explicit paths. - Single argument for scan-package: The
scan-packagecommand takes ONLY the package path (relative to the SSIS source directory). Do NOT pass a second argument with an absolute path. Example:scai assessment etl scan-package 'MyPackage.dtsx'(NOT... 'MyPackage.dtsx' '/full/path/to/MyPackage.dtsx').
Rules
Use ONLY Provided Scripts
- ONLY use the provided
scai assessment etlcommands (generation) and Python reader commands (analysis tracking) - DO NOT create custom scripts to read or manipulate the JSON file
- DO NOT use grep, jq, or other tools to parse the JSON directly
- All JSON interactions MUST go through the provided CLI
- ONLY use the provided
Quality Over Speed
- Each package deserves thorough, individual analysis
- Write specific, detailed analysis for each package
- DO NOT create batch analysis regardless of package volume
- DO NOT skip analysis steps to save time
Follow ONLY Provided Analysis Methods
- Use ONLY the workflow in references/analyze_ssis_package.md
Complete ALL Steps
- Step 4 (AI Summary) is MANDATORY before finishing
- DO NOT skip to report generation without completing all steps
- Every checkpoint in the workflow must be completed
Report Generation via Parent Skill ONLY
- The multi-report generator in the parent skill (
../SKILL.md) is the ONLY approved method - Provide the
--ssis-jsonparameter pointing to theetl_assessment_analysis.jsonfile generated by this skill
- The multi-report generator in the parent skill (
Workflow
Copy this checklist and track your progress:
Analysis Progress:
- [ ] Step 1: Locate and Validate Input Files
- [ ] Step 2: Generate JSON Analysis
- [ ] Step 3: Analyze SSIS packages (sub workflow)
- [ ] Step 4: Draft AI summary (HTML AI summary)
Step 1: Locate Input Files (auto-detected)
Do NOT prompt the user for paths. Inputs are resolved automatically from project_dir configured by the parent assessment skill:
| Input | Auto-resolution |
|---|---|
ETL.Elements.csv |
Latest <project_dir>/reports/SnowConvert/ETL.Elements.*.csv |
ETL.Issues.csv |
Latest <project_dir>/reports/SnowConvert/ETL.Issues.*.csv |
| SSIS source dir | <project_dir>/source/_etl/ |
| Output dir | <project_dir>/assessment/ssis/ (create if missing) |
Validation (silent — only surface a problem to the user if validation fails):
- Confirm both
ETL.*CSVs exist. If they don't, ETL was not converted — return to the parent and ask the parent to re-run register (code add) thenconvert. Do not ask the user to upload paths. - Confirm the SSIS source directory contains
.dtsxfiles.
Step 2: Generate JSON Analysis
Run the C# assessment generator from the project root (it auto-detects all paths from the configured project):
scai assessment etl generate
This writes two timestamped files to <project>/artifacts/assessment/etl/:
etl_assessment_analysis_<timestamp>.json— the main assessment datadag_model_<timestamp>.json— control-flow and data-flow graph data for DAG rendering
Immediately after generation, render the DAG HTMLs from the newest dag_model_*.json:
dag_model=$(ls -t <project>/artifacts/assessment/etl/dag_model_*.json 2>/dev/null | head -1)
if [[ -n "$dag_model" ]]; then
uv run --project ai ai/plugin/skills/migration/assessment/etl-assessment/scripts/dag_renderer/render_dags.py "$dag_model"
else
echo "No dag_model.json found; skipping DAG render (expected if no control-flow or data-flow components)"
fi
The renderer writes dags/*.html interactive visualizations to the same output directory.
Step 3: Analyze SSIS Packages
This step is a sub workflow to analyze packages individually. After this, continue with step 4.
To analyze SSIS packages, follow the instructions of the workflow of this reference file: reference/analyze_ssis_package.md
Step 4: Draft AI Summary
DO NOT SKIP THIS STEP. The AI Summary is required before finishing the assessment.
Required Actions:
- Run the summary command to get all signals:
scai assessment etl summary
Read the guide: references/ai_summary_guide.md
Generate summary file:
ai_ssis_summary.htmlRegister the summary in the JSON:
scai assessment etl ai-summary <HTML_PATH>
Note: The summary and ai-summary commands use the C# CLI to read and mutate the assessment JSON (auto-detected from project context).
Verification Checklist:
-
ai_ssis_summary.htmlfile exists - Summary registered with
ai-summarycommand
Completion: Report to user:
- Total packages analyzed
- JSON file location:
<output_path>/etl_assessment_analysis.json - Go to main workflow in parent skill