From soil
Estimate soil carbon stock at any US location from live USDA SSURGO data — both organic (SOC) and inorganic (SIC, carbonates). Use when a user asks about soil carbon, carbon stock, carbon sequestration potential, or a carbon baseline at an address, parcel, farm, or coordinates — how many tonnes of carbon are in the soil. Handles a single point or an area/parcel (a pasted WKT or GeoJSON polygon, or a radius) for area-weighted and total carbon.
How this skill is triggered — by the user, by Claude, or both
Slash command
/soil:soil-carbonThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Estimate soil carbon stock (t C/ha) for any US location from live USDA data — **organic** (SOC) and **inorganic** (SIC, from carbonates) — computed transparently from horizon properties. Two keyless public HTTP APIs — `curl` (shell) or Python (sandbox). Zero installs.
Estimate soil carbon stock (t C/ha) for any US location from live USDA data — organic (SOC) and inorganic (SIC, from carbonates) — computed transparently from horizon properties. Two keyless public HTTP APIs — curl (shell) or Python (sandbox). Zero installs.
First, read reference.md in this skill's directory — it has the tested templates (Q1, CQ), the HTTP specs with shell + Python examples, the network-access note, the SOC + SIC formulas, and worked examples.
These APIs are external; sandboxes (ChatGPT, claude.ai) block outbound internet by default. On a network error, see the "Network access required" note in reference.md.
rep [low–high], t C/ha) and the total tonnes in the AOI, with a per-map-unit table. (Area mode blends components legitimately — it's areal integration, not a point.)POINT(lon lat) — longitude first. Empty {} → outside SSURGO coverage: say so.mukind plus per-horizon organic matter (om_l/_r/_h), carbonate (caco3_l/_r/_h), bulk density, and coarse fragments for every component ≥ 10%.bulk density × thickness × (1 − frag/100), summed to 0–30 cm and 0–100 cm (clip the deepest horizon to the target depth):
(om_r / 1.724) × …(caco3_r × 0.12) × … (carbonate is 12% C by mass)om_l/caco3_l and om_h/caco3_h (bulk density held at representative). Report each figure as rep [low–high].mukind (see reference.md "Reporting by map unit kind"): consociation → the dominant component as a single headline; complex/association/undifferentiated → all components + a range, no single value.🌍 Soil carbon estimate — depends on how many components ≥10% the map unit has (with mukind as the guide), at 0–30 cm and 0–100 cm in t C/ha (0–30 cm is the standard/IPCC depth):
rep [low–high]. If the kind is a complex/association that happens to resolve to one major soil, note the minor (<10%) components exist.[band]), and give an honest range ("≈ X–Y t C/ha depending which soil you're on").In all cases, if SIC is non-trivial (calcareous soils), call it out — it's often missed.
🧮 How it's computed — a per-horizon table (for the dominant / illustrative component): depth · OM% · OC% · CaCO₃% · bulk density · coarse-frag % · SOC · SIC (t C/ha). Then the one-line formulas so the math is auditable.
📊 What the range means — one or two sentences: the band is SSURGO's own low/high organic-matter and carbonate estimates, not a confidence interval. It excludes the errors that often dominate — which component you actually have, map/positional error, bulk-density and temporal change — so real uncertainty is wider. Don't let the band imply false precision.
📍 Context — the map unit name and the SSURGO map-scale caveat. Optionally express the total as CO₂-equivalent (× 3.67) if the user cares about climate accounting — but see the rule below on not conflating the two pools.
⚠️ What this is and isn't — always: a modeled baseline from representative survey values, not a field measurement. SOC ≠ SIC in behavior: organic carbon is biologically active and management-sensitive; inorganic (carbonate) carbon is a large, slow, millennial-scale pool whose formation is not straightforwardly a climate sink — present them separately and don't imply SIC is readily sequesterable. For measured carbon, point to lab sampling or KSSL data.
If a horizon has null bulk density (or null OM / CaCO₃ for a pool), exclude it and say which — the total then covers only the horizons with data.
caco3_r = no inorganic carbon).Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub clevinson/soil-skills --plugin soil