battery-storage-analyst

SkillFiles & storage

Size battery energy storage systems, model lithium-ion degradation, co-optimize revenue streams, and build degradation-adjusted financial pro-formas. Use when asked to 'size a battery', 'model BESS degradation', 'optimize battery dispatch', 'run a storage pro-forma', 'evaluate peak shaving', 'analyze energy arbitrage', 'model solar plus storage', or any battery energy storage sizing, dispatch, or investment analysis.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the battery-storage-analyst skill

What this skill tells your AI

The instructions your AI receives, as published by amazon-quick/amazon-quick-official-catalog in skills/energy-utilities/battery-storage-analyst/SKILL.md and read by ahel’s review.

Overview

Battery Storage Analyst sizes battery energy storage systems (BESS), models lithium-ion degradation physics, co-optimizes dispatch across stacked revenue streams, and produces a degradation-adjusted financial pro-forma. It runs the full lifecycle from load-data ingestion through a system recommendation suitable for developer pitch decks, interconnection applications, or capital-expenditure approval. Use it for capacity sizing, degradation projection, dispatch optimization, and investment analysis of storage and paired solar plus storage projects.

Workflow

<Workflow - Size and Analyze a Storage System description="Ingest load data, size the BESS, model degradation, optimize dispatch, and build the degradation-adjusted pro-forma and deliverables." tools=[get_current_time, web_search, url_fetch, file_read, run_python, run_python_with_write, open_in_session_tab] triggers=["User asks to size a battery", "model BESS degradation", "optimize battery dispatch", "run a storage pro-forma", "evaluate peak shaving", "analyze energy arbitrage", "model solar plus storage"] preferred_model=smart

  1. [Agent] Call get_current_time, then identify every time-sensitive value the analysis will need (tariff and demand charges, market prices, technology costs, incentive percentages, LCOS benchmark, cell parameters). For each, fetch the current value from the source in references/data-sources.md using web_search or url_fetch. Validate: Every time-sensitive value has a verified source fetched this session or supplied by the user. If fails: Stop and ask the user to provide or confirm the value. Do not proceed with an unverified value (Rule 1).

  2. [Agent] Ingest and validate the load profile. Read {{load_data_path}} (CSV or XLSX, timestamp plus kW) with pandas via run_python. Compute peak demand, load factor, and daily and monthly patterns. Flag gaps over one hour. Validate: At least 12 months at the true metering interval for demand-charge work, or hourly LMP data for arbitrage-only; gaps identified and either interpolated or excluded. If fails: Ask the user for cleaner data or which months to exclude. If no data is provided, do not fabricate a load shape; ask for it.

  3. [Agent] Build the tariff model. Parse demand charges by tier and season, map time-of-use periods to an hourly schedule, and identify ratchet provisions. If no tariff is supplied, fetch it from the OpenEI Utility Rate Database per references/data-sources.md. Validate: Demand charges, TOU periods, and any ratchet are represented and traced to a source. If fails: Request the tariff sheet or the utility name and service territory.

  4. [Agent] Size capacity for {{application}} using the numpy methods in references/sizing-and-dispatch.md. Sweep or binary-search the target peak for peak shaving; match duration to the priced window for arbitrage; reserve symmetric capacity for regulation; size against the net load for solar plus storage. Validate: Recommended P_bess (kW), E_bess (kWh), and duration (hours) are produced and follow from the load and application. If fails: Relax constraints (widen the SOC range, raise the target peak) and re-run; report the binding constraint.

  5. [Agent] Configure the degradation model for {{chemistry}} per references/degradation-model.md. Set the Arrhenius parameters and cycle-life coefficients from a datasheet or cited literature, and set the operating temperature profile. Validate: A 25 C, 50 percent SOC calendar-only 10-year run lands near 15 to 20 percent fade for NMC; every parameter has a cited source. If fails: Fall back to cited literature defaults with an explicit uncertainty band, and state the assumption.

  6. [Agent] Run the annual dispatch and aging loop. For each year, co-optimize dispatch across enabled streams (references/sizing-and-dispatch.md), extract cycles from the SOC series with scripts/rainflow.py, accumulate cycle and calendar damage with scripts/degradation.py, apply the throughput budget, and carry the reduced capacity into the next year. Write each year's results to {{output_dir}} as you go. Validate: Every project year has an SOC series, throughput, capacity-remaining figure, and per-stream revenue, staying within SOC and degradation budgets. If fails: Drop the lowest-value revenue stream and re-run; if a run nears the 60-second limit, chunk it and resume from the last written year.

  7. [Agent] Build the pro-forma per references/financial-model.md. Assemble the nominal cash-flow series (verified capital, revenue with degradation fade, opex, verified incentives), then compute NPV, IRR, payback, and LCOS with scripts/financial.py. Run sensitivity at plus or minus 20 percent on capital cost, price, and degradation rate. Validate: NPV, IRR, simple and discounted payback, and LCOS are computed, and the sensitivity table is present. LCOS is compared against the current Lazard benchmark. If fails: Report partial results and name the missing verified input.

  8. [Agent] Produce deliverables in {{output_dir}} (ask the user for the location if not set): an executive summary (canvas_pdf) with the recommended size, revenue, NPV, IRR, and payback; a year-by-year pro-forma (canvas_xlsx); and charts (highcharts with html_design) for the degradation curve with augmentation trigger, the revenue waterfall by stream, and a sample dispatch week. Include the Rule 2 disclaimer and cited sources in each deliverable. Open each with open_in_session_tab. Validate: Every deliverable exists at its path, carries the disclaimer and source citations, and is opened for the user. If fails: Deliver whatever is complete, list what is missing and why, and open the completed files.

</Workflow - Size and Analyze a Storage System>

Signals

GitHub stars
49
Forks
2
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
battery-storage-analyst
Source
github.com/amazon-quick/amazon-quick-official-catalog