Deploy readiness
Scans a codebase for local-to-cloud migration blockers -- hardcoded paths, LAN URLs, dev-only bypasses, missing deploy configs -- and produces a scored readiness report. Triggers on "deploy readiness", "ready to deploy", "can I host this", "cloud migration check", "scan for local stuff", "deployment blockers". Part of the solo-dev-suite -- loads the project profile via the orchestrator. Unlike security-audit (a checklist), this skill actually reads code.From its SKILL.md
npx -y skills add frobinson47/solo-dev-suite --skill deploy-readinessAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.3 KB, as published. Nobody here has run it
Deploy Readiness
Scans a codebase for things that will break when you move from local development to cloud hosting. Not a checklist -- an automated scanner that reads your code and reports concrete findings with file paths and line numbers.
When to use this skill
- Pre-deployment gate -- before moving a locally-developed project to cloud hosting
- After major changes -- just added new integrations, config, or infrastructure? Re-scan.
- Periodic review -- local assumptions creep in over time. Re-scan quarterly.
- Cloud migration planning -- inventory everything that needs to change before hosting.
When NOT to use this skill
- No profile exists -- run the orchestrator first.
- Security vulnerabilities -- use security-audit for that. This checks portability, not safety.
- Already cloud-hosted -- if the app is already deployed and working in the cloud, this skill adds no value.
- Third-party risk assessment -- use integration-mapper for that.
Prerequisites
- Project profile must exist:
solo-dev-suite/profiles/<slug>.json - Profile must have
repository_pathset (or use--pathoverride)
What it scans
8 categories, each targeting a specific class of local-to-cloud blocker:
- Hardcoded URLs --
.fmr.local,.localhostnames,localhost,127.0.0.1, private/LAN IPs (192.168.x.x, 10.x.x.x) - Hardcoded paths --
D:\laragon\...,C:\xampp\...,/home/user/...absolute paths - Development bypasses --
APP_ENV === 'development'gates, hardcoded test credentials (admin/admin) - Missing deploy config -- no Dockerfile, no CI/CD, no
.env.example - Database configuration -- empty passwords, root user, hardcoded ports
- CORS origins -- wildcard
*or localhost-only CORS policies - Local file storage --
move_uploaded_file,writeFileSyncto local upload dirs - Environment secrets -- API keys/tokens hardcoded in source files
Scoring
- Starts at 100, deducts per unresolved finding
- critical = -10, high = -5, medium = -2, low = -1
- Labels: READY (90+), ALMOST (70-89), NEEDS WORK (40-69), NOT READY (<40)
What it skips
node_modules/,vendor/,.git/,dist/,build/,__pycache__/- Binary files and files > 512KB
- Lock files (
package-lock.json,*.lock)
Operations
1. Scan (read the codebase)
python scripts/deploy_readiness_tool.py scan <slug>
python scripts/deploy_readiness_tool.py scan <slug> --path /alternate/repo
python scripts/deploy_readiness_tool.py scan <slug> --json
Walks the repo, scans every source file, checks repo structure, writes the sidecar. Re-running overwrites the previous scan.
2. Show (view findings)
python scripts/deploy_readiness_tool.py show <slug>
python scripts/deploy_readiness_tool.py show <slug> --category hardcoded-urls
python scripts/deploy_readiness_tool.py show <slug> --json
Human-readable output with status icons, severity tags, file:line locations, and matched code.
3. Resolve (mark findings)
python scripts/deploy_readiness_tool.py resolve <slug> --item URL01
python scripts/deploy_readiness_tool.py resolve <slug> --item URL01 --status wont-fix --notes "Dev-only config file"
Status values: resolved, wont-fix. Recalculates the score after each resolution.
4. Render
python scripts/deploy_readiness_tool.py render <slug> [--output-dir <path>]
Generates DEPLOY_READINESS.md with summary table, per-category findings, and severity indicators.
5. Delete
python scripts/deploy_readiness_tool.py delete <slug> --yes
Removes the sidecar.
Profile mirror
After every scan, profile.deploy_readiness_model is updated:
{
"last_scan_at": "...",
"score": 72,
"score_label": "ALMOST",
"total_findings": 15,
"criticals": 2,
"highs": 4
}
Also updates last_skill_run["deploy-readiness"].
Files
deploy-readiness/
├── SKILL.md # this file
├── .claude-plugin/
│ └── plugin.json # plugin metadata
└── scripts/
└── deploy_readiness_tool.py # scan / show / resolve / render / delete
Testing
python scripts/deploy_readiness_tool.py scan my-project
python scripts/deploy_readiness_tool.py scan my-project --path D:/laragon/www/crumble
python scripts/deploy_readiness_tool.py show my-project
python scripts/deploy_readiness_tool.py show my-project --category hardcoded-urls
python scripts/deploy_readiness_tool.py resolve my-project --item URL01
python scripts/deploy_readiness_tool.py render my-project
python scripts/deploy_readiness_tool.py delete my-project --yes
Expected: scan finds .fmr.local, localhost, D:\laragon paths in typical local-dev projects. Score reflects severity. Resolve marks items and recalculates.