smithery.ai

qgis-core

Knowledge about the QGIS API, plugin structure, and asynchronous processing with QgsTask.

First seen Apr 7, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 1,846 B
  • docs SUMMARY.md 113 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

QGIS Core Development

Standardizes interaction with the QGIS API, ensuring a responsive and well-structured plugin.

When to use this skill

  • When implementing new tools that interact with the map canvas.
  • When handling vector or raster layers.
  • When performing heavy operations that require secondary threads.

Degree of Freedom

  • Strict: The use of QgsTask for long processes and Core/GUI decoupling are mandatory.

Workflow

  1. Architecture: Separate logic into core/ (processing) and gui/ (visualization).
  2. Validation: Always verify isValid() on layers before operating.
  3. Asynchrony: Wrap processes > 0.5s in a QgsTask.
  4. CRS Management: Explicitly handle coordinate transformations.

Instructions and Rules

Golden Rules

  • QgsTask: Do not block the UI. Use signals and slots for communication.
  • Network/Threads: Avoid threading.Thread (use QgsTask) and synchronous network calls (rules UNSAFETHREAD and BLOCKINGNETWORK_CALL).
  • Boundaries: Use WKT to communicate core logic with the graphical interface.
  • Modernization: Avoid legacy QVariant; the analyzer will detect OBSOLETE_VARIANT.
  • Injection: Avoid global use of iface; prefer passing objects in constructors.

Plugin Structure

  • core/: Business logic agnostic to the UI.
  • gui/: Widgets and dialogs dependent on PyQGIS.
  • exporters/: Data output modules.

Quality Checklist

  • Is UI blocking avoided through QgsTask?
  • Is layer integrity validated in every operation?
  • Are CRS transformations explicitly defined?
  • Is the Core/GUI separation of responsibilities followed?