CLI-Anything cli-anything-qgis
Stateful QGIS CLI for projects, writable layers, features, layouts, exports, and qgis_process operations using the real QGIS runtime.
install
source · Clone the upstream repo
git clone https://github.com/HKUDS/CLI-Anything
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HKUDS/CLI-Anything "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/cli-anything-qgis" ~/.claude/skills/hkuds-cli-anything-cli-anything-qgis-3da9cc && rm -rf "$T"
manifest:
skills/cli-anything-qgis/SKILL.mdsource content
cli-anything-qgis
Use this skill when you need to inspect or modify QGIS projects from the terminal through the real QGIS runtime.
Requirements
- QGIS installed with
onqgis_processPATH - PyQGIS importable from the Python environment running the CLI
- Python 3.10+
Agent guidance
- Prefer
for all machine-driven use.--json - For one-shot commands, pass
when operating on an existing project.--project <path> - Running
with no subcommand starts a stateful REPL.cli-anything-qgis - Layout export is backed by real QGIS processing algorithms:
native:printlayouttopdfnative:printlayouttoimage
What this CLI covers
- create, open, save, and inspect
/.qgs
projects.qgz - create writable GeoPackage-backed vector layers
- add features via WKT geometry and typed
attributeskey=value - create print layouts and add map/label items
- export layouts to PDF or image
- inspect and run generic
algorithmsqgis_process - inspect session status and history
Command groups
project
projectnew -o/--output [--title] [--crs]open PATHsave [PATH]infoset-crs CRS
layer
layercreate-vector --name --geometry --crs [--field name:type ...]listinfo LAYERremove LAYER
feature
featureadd --layer LAYER --wkt WKT [--attr key=value ...]list --layer LAYER [--limit N]
layout
layoutcreate --name [--page-size] [--orientation]listinfo LAYOUTremove LAYOUTadd-map --layout LAYOUT --x --y --width --height [--extent xmin,ymin,xmax,ymax]add-label --layout LAYOUT --text TEXT --x --y --width --height [--font-size N]
export
exportpresetspdf OUTPUT --layout LAYOUT [--dpi] [--force-vector] [--force-raster] [--georeference/--no-georeference] [--overwrite]image OUTPUT --layout LAYOUT [--dpi] [--overwrite]
process
processlisthelp ALGORITHM_IDrun ALGORITHM_ID [--param KEY=VALUE ...]
session
sessionstatushistory [--limit N]
Examples
Create a project and add a writable layer
cli-anything-qgis --json project new -o demo.qgz --title "Demo" --crs EPSG:4326 cli-anything-qgis --json --project demo.qgz layer create-vector \ --name places \ --geometry point \ --field name:string \ --field score:int
Add features and inspect them
cli-anything-qgis --json --project demo.qgz feature add \ --layer places \ --wkt "POINT(1 2)" \ --attr name=HQ \ --attr score=5 cli-anything-qgis --json --project demo.qgz feature list --layer places --limit 10
Create and export a layout
cli-anything-qgis --json --project demo.qgz layout create --name Main cli-anything-qgis --json --project demo.qgz layout add-map --layout Main --x 10 --y 20 --width 180 --height 120 cli-anything-qgis --json --project demo.qgz layout add-label --layout Main --text "Demo map" --x 10 --y 8 --width 100 --height 10 cli-anything-qgis --json --project demo.qgz export pdf output.pdf --layout Main --overwrite
Inspect or run processing algorithms
cli-anything-qgis --json process help native:buffer cli-anything-qgis --json --project demo.qgz process run native:buffer \ --param INPUT=/tmp/demo_data.gpkg|layername=places \ --param DISTANCE=1 \ --param SEGMENTS=8 \ --param END_CAP_STYLE=0 \ --param JOIN_STYLE=0 \ --param MITER_LIMIT=2 \ --param DISSOLVE=false \ --param OUTPUT=/tmp/buffer.geojson
REPL
cli-anything-qgis
Example interactive flow:
project new -o demo.qgz --title "Demo" layer create-vector --name places --geometry point --field name:string feature add --layer places --wkt "POINT(1 2)" --attr name=HQ layout create --name Main session status quit