skills/pulp-log-diagnostics/SKILL.md
Parse PuLP and solver logs (CBC, HiGHS, Gurobi, CPLEX) to diagnose infeasible/unbounded/time-limit/execution failures, extract key metrics, and propose prioritized next debugging actions. Use when given optimization run logs, solver stdout/stderr, or LP/MPS export errors and you need root-cause clues that generalize across optimization problems. When LP/MPS/log artifacts exist, include all of them in the analysis.
npx skillsauth add mullzhang/skills pulp-log-diagnosticsInstall 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.
Use this skill to convert raw solver logs into a structured diagnosis.
.lp, and .mps.scripts/analyze_pulp_logs.py with available flags and include every existing artifact (--log, --lp, --mps) in the same run.Diagnosis and Next Actions first.status is infeasible, ask the user which IIS solver to use before running IIS.highs / gurobi / cplex, run scripts/run_iis.py with --solver.scripts/run_iis.py --solver <custom_solver> --custom-runner <path>.references/diagnostic-rules.md only when deeper interpretation is needed.references/iis-playbook.md when you need solver-specific IIS execution details.python <path-to-this-skill>/scripts/analyze_pulp_logs.py \
--log path/to/pulp_or_solver.log \
--lp path/to/model.lp \
--mps path/to/model.mps
Use multiple logs when the application and solver logs are separated:
python <path-to-this-skill>/scripts/analyze_pulp_logs.py \
--log logs/app.log \
--log logs/solver.log \
--lp artifacts/model.lp \
--mps artifacts/model.mps \
--json-output /tmp/pulp_diagnosis.json
Run IIS after user solver selection:
# Ask user first
python <path-to-this-skill>/scripts/run_iis.py \
--model path/to/model.lp \
--solver highs \
--highs-iis-strategy irreducible \
--json-output /tmp/pulp_iis_report.json
Custom solver flow (per-run):
# 1) create custom runner code for the selected solver
# 2) execute via unified runner
python <path-to-this-skill>/scripts/run_iis.py \
--model path/to/model.lp \
--solver xpress \
--custom-runner /tmp/pulp_iis_custom_xpress_runner.py \
--json-output /tmp/pulp_iis_report_xpress.json
If --solver is omitted in an interactive shell, run_iis.py prompts for solver selection.
.log, .txt, captured stdout/stderr), via one or more --log.--lp path.--mps path.--json-output.analyze_pulp_logs.py)iis_plan.applicability: not_required / recommended / blockediis_plan.reason: why IIS is required or blockediis_plan.recommended_solver: selected IIS solver or user_select_requirediis_plan.detected_iis_solvers: IIS-capable solvers detected in current environmentiis_plan.artifact_for_iis: LP/MPS artifact path used for IISiis_plan.commands: command templates only for detected IIS-capable solversiis_plan.expected_outputs: required artifacts from IIS runiis_plan.fallback_actions: project-agnostic fallback actions when IIS is unavailableStatus line exists, treat it as the primary status signal.U => Unbounded) as status evidence.infeasible, prioritize IIS-capable solver execution over broad trial-and-error.--custom-runner.scripts/analyze_pulp_logs.py
--log, --lp, --mps as optional inputs, but fail when all are omitted.optimal, infeasible, unbounded, time_limit, error, unknown) with explicit status-line precedence.iis_plan for infeasible cases using LP/MPS artifacts and detected IIS-capable solvers.scripts/run_iis.py
highs, gurobi, or cplex.--custom-runner.--solver in non-interactive mode.--solver is omitted in interactive mode.--highs-iis-strategy, --highs-solve-relaxation).development
Create a finite Markdown questionnaire file that contains grouped questions, recommended options, answer fields, and optional rationale fields, then read the completed file and continue from the user's answers. Use when Codex needs to ask multiple questions for requirements, specifications, acceptance criteria, product decisions, design choices, implementation tradeoffs, or any situation where conversational back-and-forth would fatigue the user or make the remaining question count unclear.
development
Detect Python dead-code candidates that are referenced only from tests by running Vulture twice and diffing results (production paths vs production+test paths). Use when auditing cleanup targets, reviewing unused-code reports, or validating whether symbols are reachable only through tests.
testing
Generate synthetic data with SDV (Synthetic Data Vault). Learn patterns from real data with machine learning and produce privacy-preserving synthetic data. Use cases: (1) single-table synthetic data generation, (2) multi-table (relational DB) synthetic data generation, (3) time-series synthetic data generation, (4) synthetic data quality evaluation, and (5) metadata and constraint setup
development
For early development phases. Prevent excessive fallbacks, backward compatibility code, and duplication during code generation. Use when generating, modifying, or refactoring code.