From il
Audits commits since the last deployment for API breaks, schema/dependency changes, and migration risk.
How this skill is triggered — by the user, by Claude, or both
Slash command
/il:audit-deploymentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze commits and technical changes since the last deployment or a specific date. Provide high-fidelity deployment diff summaries with risk assessment.
Analyze commits and technical changes since the last deployment or a specific date. Provide high-fidelity deployment diff summaries with risk assessment.
Formatting Rule: Always use emojis as defined in the report templates (headers, badges, status indicators). Emojis are part of the designed output format and should be preserved in all report formats (full, summary, html). Only omit emojis if the user explicitly requests a plain/no-emoji output.
When invoked, extract these from the user's request:
environment: prod, qa, staging (default: prod)--since=DATE: Compare current main against a specific date (YYYY-MM-DD)--format=FORMAT: Controls what content is generated — full (default), summary, or html--output=DESTINATION: Controls where the report goes — console (default) or file--format | --output | Result |
|---|---|---|
full (default) | console (default) | Full markdown report in terminal |
summary | console | Condensed markdown in terminal |
full | file | Full report saved to deployment-audit-{env}-{date}.md |
summary | file | Summary saved to deployment-audit-{env}-{date}.md |
html | (ignored) | Interactive dashboard saved to deployment-audit-{env}-{date}.html |
When the user requests a "brief", "summary", "quick", or "executive" report, treat it as --format=summary.
--since is provided: Find base commit via git rev-list -n 1 --before="DATE" origin/mainorigin/otk-deploy:deploy/{environment}/*/values.yaml for version hash
git show origin/otk-deploy:deploy/{environment}/pathway-navigator/values.yaml | grep "^ version:" | awk '{print $2}'YYYY.M.D-HASH (e.g., 2026.1.6-dddbdfb)cut -d'-' -f2 to get the commit hash (e.g., dddbdfb)git rev-parse --verify {hash}v* or release-*Auto-detect project type based on files present:
*.csproj, *.sln, Controllers/, Startup.cspackage.json, routes/, app.js, server.jsrequirements.txt, pyproject.toml, app.py, main.pygo.mod, main.go, handlers/pom.xml, build.gradle, src/main/javaGemfile, config/routes.rbbuild.gradle.kts, *.kt, src/main/kotlin, application.yml, micronaut-cli.ymlpackage.json + src/App.jsx or src/App.tsx, public/index.html, tsconfig.jsondeploy.yaml (OTK lambda type), handler file (handler.ts, handler.py, handler.kt)origin/mainIPS-123, Linear: ENG-456, GitHub: #123)Detect API frameworks and patterns:
Controllers/, [HttpGet], [Route], *Controller.csroutes/, app.get(), router., Express/Fastify patterns@app.route, @router., FastAPI/Flask decoratorshttp.HandleFunc, router., Gin/Echo patterns@RestController, @RequestMapping, Spring annotations@Controller, @Get, @Post, @Put, @Delete, @QueryValue, @PathVariable, @Body, *Controller.kt<Route path="...">, createBrowserRouter, createRoutesFromElements, path changes in route config filesBreaking Change Audit (scan file diffs):
Map every breaking change to its specific commit hash.
migrations/, *.sql, alembic/, knex/, flyway/schema.sql, models/, entities/, *.graphql@MappedEntity, @Repository interfacesDependency files (check for version bumps):
package.json, package-lock.json, yarn.lock*.csproj, packages.lock.jsonrequirements.txt, pyproject.toml, Pipfilego.mod, go.sumpom.xml, build.gradleGemfile, Gemfile.lockbuild.gradle.kts, gradle.properties, libs.versions.toml (Gradle version catalogs)Environment variables (scan for new/changed config):
appsettings.json, Configuration.GetSectionprocess.env, .env filesos.environ, settings.pyos.Getenv, config structsENV instructions in Dockerfilesapplication.yml, application-{env}.yml, @Value, @ConfigurationProperties.env, .env.local, .env.production, REACT_APP_* / VITE_* prefixed variablesChoose the template based on --format:
--format=full (default): Use references/TEMPLATE.md for comprehensive detailed analysis--format=summary: Use references/TEMPLATE_SUMMARY.md for executive summary--format=html: Use references/TEMPLATE_HTML.html via the HTML Fast Path belowThe summary template provides a condensed view focusing on:
Controlled by --output:
--output=console (default): Display the markdown report directly in the conversation--output=file: Save the report to a file
deployment-audit-{environment}-{date}.mddeployment-audit-prod-2026-01-14.mdNote: When --format=html, the --output flag is ignored — HTML always writes a file.
--format=html)Do NOT reproduce the CSS/JS template. Use targeted data injection instead:
references/TEMPLATE_HTML.htmldeployment-audit-{environment}-{date}.html (workspace root or Desktop)AUDIT_DATA JavaScript object from the git analysis%%AUDIT_DATA_START%% and %%AUDIT_DATA_END%% markers in the output file with the real dataopen deployment-audit-{env}-{date}.htmlCRITICAL: Only produce the AUDIT_DATA object. Never reproduce the CSS, HTML structure, or JS renderer — they are already in the template.
The AUDIT_DATA object keys and types (see references/TEMPLATE_HTML.html sample for exact syntax):
| Key | Type | Description |
|---|---|---|
environment | "prod"|"staging"|"qa" | Target environment |
projectType | string | Detected project type (e.g. ".NET 8.0") |
projectName | string | Repo/project name |
generatedAt | "YYYY-MM-DD" | Audit generation date |
baseRef | {hash, date} | Base commit reference |
targetRef | {hash, date} | Target (HEAD) commit reference |
stats | {commitCount, filesChanged, additions, deletions} | Summary numbers |
contributors | [{name, commits}] | Contributor list |
tickets | string[] | Extracted ticket IDs |
commits | [{hash, author, date, message, additions, deletions, area}] | Full commit list. area: "API"|"Database"|"Dependencies"|"Config"|"Testing"|"Docs"|"Other" |
breakingChanges | [{type, component, change, commit, impact, description}] | Breaking changes. impact: "High"|"Medium"|"Low" |
schemaChanges | [{category, change, files, impact}] | DB/schema changes |
dependencyChanges | [{package, previous, new, type, notes}] | Dep updates. type: "Major"|"Minor"|"Patch" |
infraChanges | [{component, change, impact}] | Infra/config changes |
risk | {overall, factors: [{factor, level, detail}]} | Risk assessment. overall: "low"|"medium"|"high"|"critical" |
rollback | {complexity, risk, estimatedTime, steps: [{step, action, cmd}]} | Rollback strategy |
checklist | string[] | Pre-deployment checklist items |
diffUrl | string | Optional GitHub compare URL |
Use empty arrays [] for sections with no data. Do not include a files field on commit objects.
Only flag changes that affect external API consumers (HTTP endpoints, request/response DTOs, public contracts). Always flag these as potential breaking changes:
Do NOT flag as breaking changes:
Internal changes should be noted in the commit log and may contribute to risk assessment, but they are not breaking changes since they don't affect external API consumers.
npx claudepluginhub imaginelearning/dp-claude-plugin --plugin ilGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.