lzwei196/kiss-knowledge-infrastructure-for-scientific-simulation/lpj-guess
Claude Code and agent skill by lzwei196/kiss-knowledge-infrastructure-for-scientific-simulation
- community
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install lzwei196/kiss-knowledge-infrastructure-for-scientific-simulation/lpj-guessSKILL.md
MANDATORY EXECUTION POLICY — READ BEFORE PROCEEDINGYou MUST run the actual model binary or package described in this document.If the model fails to import, compile, or execute, you MUST:1. Checkdiagnostics/triplets.yamlfor a matching error pattern2. Try the fix suggested in the triplet'sremedysection3. If still failing, report the error to the user with full detailsYou MUST NOT substitute a simplified Python formula, regression equation,or hand-coded approximation in place of the real model. Doing so producesscientifically invalid results and defeats the purpose of the KI.Before starting, run:python preflight_check.py(in this KI directory)to verify that the model binary/package and required data are available.DEBUGGING PROTOCOL — When something goes wrong (model crashes, wrong output,unexpected values), follow this order. Do NOT skip steps or write debug scripts:1. Check triplets —diagnostics/triplets.yamlmay already cover this error2. Read official docs — Check the model's own documentation (PDF manual, README,official examples) for expected input formats, variable names, and units3. Find working examples — Look inoutputs/for previous successful runs ofthis model, or check if the model ships with test/example data4. Fix the tool — Now that you know what "correct" looks like, make targeted fixesResist the urge to write diagnostic/debug Python scripts. The answers are almostalways in the official docs and working examples, not in reverse-engineering the binary.
<!-- KI-MAP:BEGIN (projected by generate_skill_map.py — edit the KI, not this table) -->
KI map — what to read, and when
| when you need | read | why | |
|---|---|---|---|
| FIRST, always | preflight_check.py | run it (python preflight_check.py): proves env/binary/data are usable and emits a machine-readable PREFLIGHT_REPORT= line. Do not debug a run that never had a healthy environment. | |
| to run the pipeline stages | tools/ (8 tools) | the executable pipeline. Read each tool's argparse (--help) before composing a command; SKILL.md's stage table says which tool serves which stage. | |
| before running a stage | docs/s*_*.md (9 stage docs) | per-stage procedure, verification and traps — the how-to that SKILL.md's overview compresses. | |
| on ANY error, before debugging | diagnostics/triplets.yaml (35 entries) | symptom → diagnosis → remedy for this model's known failure modes. Check here FIRST; the answer usually exists. Never renumber or rewrite entries. | |
| to know what an output IS | dag.yaml | the model's identity: every output's medium, units, validation_rank (1 = the headline variable) and observability. Scoring and obs-binding read THIS — when asked 'what does this model predict', the dag is the answer, not a guess. | |
| when building inputs / parsing outputs | docs/format_spec.yaml | exact I/O shapes + known_issues, projected from dag + triplets. Regenerate with ki_tools_common/generate_format_spec.py after changing either — never hand-edit. | |
| to judge a run's skill | docs/validation_convention.yaml | how this model's field judges it validated: per-dag_variable metrics, directions and CITED pass-bands. A run is graded against these, not against intuition. | |
| for claims and thresholds | docs/gathered_papers.json (20 papers) + docs/papers_index.md | the literature this KI is judged by; each entry's text_path is fetched full text in the central paper cache. role: benchmark marks the model's own skill paper. | |
| for a machine-readable summary | knowledge_infrastructure.yaml | the manifest (package, pipeline, validation tier, counts) — projected by ki_tools_common/generate_ki_manifest.py; regenerate after structural changes, never hand-edit. |
Projected 2026-10-07 from the KI's actual contents — 9 components present. Refresh: `python3 ki_tools_common/generate_skill_map.py --ki_dir <this KI>`. <!-- KI-MAP:END -->
<!-- KI-TOOL-INDEX:BEGIN (projected by generate_skill_map.py — the discoverability contract: every public tool, exact path; PURPOSE stays human-authored elsewhere) -->
Executable tool index (projected — complete by construction)
Every public tool in this KI, by exact path. What each is FOR lives in the human-written Tool Inventory above; --help on any of these prints its arguments.
| tool (exact path) | invocation | |
|---|---|---|
tools/build_lpjguess_cf_forcing.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/build_lpjguess_cf_forcing.py --help | |
tools/build_lpjguess_co2_file.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/build_lpjguess_co2_file.py --help | |
tools/convert_forcing_to_lpjguess.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/convert_forcing_to_lpjguess.py --help | |
tools/convert_parameters_to_lpjguess.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/convert_parameters_to_lpjguess.py --help | |
tools/parse_lpjguess_engine_output.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/parse_lpjguess_engine_output.py --help | |
tools/parse_output_lpjguess.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/parse_output_lpjguess.py --help | |
tools/run_lpjguess.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/run_lpjguess.py --help | |
tools/run_lpjguess_engine.py | KISSPATH_PYTHON_ENV/bin/python {KI}/tools/run_lpjguess_engine.py --help |
8 public tools; `_`-prefixed helpers and packaging files excluded. <!-- KI-TOOL-INDEX:END -->
LPJ-GUESS -- Knowledge Infrastructure Skill Document
Version: LPJ-GUESS 4.1.1 (real engine) — KI rewired 2026-10-07Domain: terrestrial biogeochemistry / dynamic vegetation (C, N, water)Last updated: 2026-10-07Validation status: real engine; official demo reproduced exactly (manifest tiertested)Default run route:tools/run_lpjguess_engine.py(the realguessbinary). The surrogate is never the default.
SURROGATE WARNING.tools/run_lpjguess.py,convert_forcing_to_lpjguess.py,convert_parameters_to_lpjguess.pyandparse_output_lpjguess.pyare a **Pythonlight-use-efficiency SURROGATE** (LUE GPP + Q10 respiration) kept for history. They arenot LPJ-GUESS and their numbers must never be reportedas LPJ-GUESS results (dt_lpjguess_033). Their old contract is kept apart indocs/surrogate_lpjguess_lue_dag.yaml; their old scores sit only undervalidation.surrogate_metrics_not_lpjguessinknowledge_infrastructure.yaml. Tripletsdt_lpjguess_001-004 and 011-014 apply to the surrogate only (applies_to: surrogate). Everyresult in this document comes from the real engine through the four*_engine*/build_lpjguess_*tools.
1. Model Identity
| Property | Value | |
|---|---|---|
| Full name | Lund-Potsdam-Jena General Ecosystem Simulator | |
| Version | 4.1.1 research release | |
| Source | Zenodo record 8065737 (doi 10.5281/zenodo.8065737), linked from https://web.nateko.lu.se/lpj-guess/download.html | |
| License | MPL-2.0 | |
| Language | C++ (cmake), NetCDF C for the CF input module | |
| Binary | KISSPATH_HOME/engine_builds_20261006/LPJ_GUESS/build/guess (ELF, 1.4 MB) | |
| Engine source | KISSPATH_HOME/engine_builds_20261006/LPJ_GUESS/src/ | |
| Build log | KISSPATH_HOME/engine_builds_20261006/LPJ_GUESS/BUILD_LOG.md | |
| Key papers | Smith et al. 2001 (GEB 10:621); Smith et al. 2014 (Biogeosciences 11:2027); Sitch et al. 2003 (GCB 9:161) |
2. What This Model Does
LPJ-GUESS simulates vegetation and soil carbon, nitrogen and water from daily weather and CO2. Plants are individuals/cohorts of plant functional types (12 global PFTs in global.ins) that compete for light and water on replicate patches; establishment, mortality and disturbance run yearly. Daily processes: photosynthesis and stomatal conductance (canexch.cpp), multi-layer soil water and snow (soil.cpp), autotrophic respiration; CENTURY soil organic matter with a coupled N cycle (somdynam.cpp, ntransform.cpp); fire (GLOBFIRM here; BLAZE needs files not on the server).
The engine reads climate through input modules: demo (toy monthly climate, used for the official demo), cru (CRU binary archives, not on the server) and cf (CF-NetCDF — what this KI uses for real sites).
Capabilities wired by this KI (full list: docs/input_preparation.md §1):
- [PRIMARY] Site carbon/water fluxes — GPP, Ra, Rh, Reco, NEE, NPP, ET components, monthly and annual.
- Official demo / install check — 13 cells, byte-exact against the build-time run.
- Vegetation composition — PFT selection via
--set 'pft "X" ( include 0 )'. - Fire model choice —
--firemodel GLOBFIRM|NOFIRE|BLAZE. - Spin-up / patch / any `.ins` switch —
--nyear_spinup,--npatch,--set. - Water fluxes — transpiration, soil evaporation, interception, runoff, PET + water-balance check.
- Scoring against FLUXNET2015 monthly GPP/NEE/RECO/ET.
Not wired yet: crops/land cover/managed forest, transient N deposition, sub-daily output.
3. Input Requirements
Exact shapes: docs/format_spec.yaml (projected from dag.yaml). Preparation plan with the verified shared-library schema: docs/input_preparation.md.
3.1 Meteorological Forcing (CF input, daily)
| Variable | Unit the engine checks | CF standard_name | Built from loader key | |
|---|---|---|---|---|
| temp | K | air_temperature | temp_mean_c + 273.15 | |
| prec | kg m-2 s-1 | precipitation_flux | precip_mm / 86400 | |
| insol | W m-2 (24-h mean) | surface_downwelling_shortwave_flux_in_air | srad_wm2 | |
| min_temp / max_temp | K | air_temperature | temp_min_c / temp_max_c + 273.15 | |
| relhum | 1 (fraction) | relative_humidity | from shum_kgkg, pres_pa, temp | |
| wind | m s-1 | wind_speed | wind_ms (10 m) |
At least 30 full years are required (spin-up climate = first 30 years; dt_lpjguess_021). Data source used: NASA POWER (global, proxy-safe, ~4 s/yr; shortwave from 1984). FLUXNET met is too short (≤26 yr); CMFD is China-only; MSWX is slow and its 1979 file is broken.
3.2 Static Inputs
| Input | File | Note | |
|---|---|---|---|
| CO2 | models/LPJ_GUESS/inputs/co2/co2_1901_2014.txt | Law Dome (pre-1959) + NOAA Mauna Loa; not shipped with 4.1.1 (dt_lpjguess_022) | |
| Soil code | shipped src/data/env/soils_lpj.dat | run tool adds an exact site line (dt_lpjguess_019/020) | |
| Gridlist | gridlist_cf.txt | 0 0 <site> — array INDICES (dt_lpjguess_024) | |
| N deposition | none | constant pre-industrial 2 kgN/ha/yr (dt_lpjguess_035) |
3.3 Configuration Files
Copied from src/data/ins/: global.ins (PFTs + switches), global_cf.ins (file paths, imports global.ins and global_soiln.ins), global_demo.ins. The cf mode writes site_cf.ins = global_cf.ins with only the param "file_*" values replaced on active lines, plus appended overrides (later lines win). Nothing is generated from scratch.
4. Build Instructions
Already built — do not rebuild for KI work. For reference (BUILD_LOG.md):
5. Execution
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingmodels/LPJ_GUESS/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/lzwei196/kiss-knowledge-infrastructure-for-scientific-simulation/lpj-guess)