Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add znlgis/opengis-skills --skill mapsuigit clone --depth 1 https://github.com/znlgis/opengis-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/znlgis/opengis-skills/mapsui)<a href="https://agentmods.dev/skills/znlgis/opengis-skills/mapsui"><img src="https://agentmods.dev/badge/skills/znlgis/opengis-skills/mapsui/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/znlgis/opengis-skills/mapsui"><img src="https://agentmods.dev/badge/skills/znlgis/opengis-skills/mapsui.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00049 | $0.02224 |
| Opus 5 | $0.00024 | $0.01112 |
| Sonnet 5 | $0.00010 | $0.00445 |
| Haiku 4.5 | $0.00005 | $0.00222 |
Grade A, and why
mapsui scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 280 lines — stays where its author put it; the contents beside it link to each section on GitHub.
项目地址: https://github.com/Mapsui/Mapsui
官方文档: https://mapsui.com/documentation/
许可证: LGPL-2.1+
概述
- 跨 UI 框架:WPF / WinUI / MAUI / Avalonia / Uno / Blazor / WinForms
- SkiaSharp 渲染,性能优于 GDI+
- 数据源:OSM / WMS / WMTS / TMS / XYZ / Shapefile / GeoJSON / MBTiles / PostGIS
- 几何基于 NetTopologySuite
- 投影:
ProjNet/Mapsui.Projections - 内置交互:拖动、缩放、旋转、捏合、命中
安装
dotnet add package Mapsui.Wpf # 或 Mapsui.Maui / Mapsui.Avalonia / ...
dotnet add package Mapsui.Tiling
dotnet add package Mapsui.Nts
WPF 入门
<Window xmlns:mapsui="clr-namespace:Mapsui.UI.Wpf;assembly=Mapsui.UI.Wpf">
<mapsui:MapControl x:Name="MapControl"/>
</Window>
using Mapsui;
using Mapsui.Tiling;
using Mapsui.Projections;
var map = new Map();
map.Layers.Add(OpenStreetMap.CreateTileLayer());
var pt = SphericalMercator.FromLonLat(116.397, 39.908).ToMPoint();
map.Navigator.CenterOnAndZoomTo(pt, map.Navigator.Resolutions[10]);
MapControl.Map = map;
核心概念
| 类型 | 说明 |
|---|---|
Map |
地图 |
Layer / MemoryLayer / ImageLayer / TileLayer |
图层 |
IProvider |
数据提供者 |
IFeature / GeometryFeature |
要素(NTS 几何) |
IStyle / VectorStyle / LabelStyle / SymbolStyle |
样式 |
Navigator |
视图操作 |
矢量图层
using Mapsui.Nts;
using Mapsui.Styles;
var features = new List<IFeature>();
foreach (var f in geoJsonFeatures)
features.Add(new GeometryFeature(f.Geometry) {
Styles = { new VectorStyle {
Fill = new Brush(Color.Red),
Outline = new Pen(Color.Black, 1)
}}
});
map.Layers.Add(new MemoryLayer("Roads") { Features = features, Style = null });
Shapefile
using Mapsui.Nts.Providers.Shapefile;
var prov = new ShapeFile("china.shp", true);
map.Layers.Add(new Layer("China") { DataSource = prov });
瓦片图层
map.Layers.Add(OpenStreetMap.CreateTileLayer());
var src = new HttpTileSource(
new GlobalSphericalMercator(0, 18),
"https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
name: "AMap");
map.Layers.Add(new TileLayer(src) { Name = "AMap" });
// MBTiles
var mb = new MbTilesTileSource(new SQLiteConnectionString("city.mbtiles", false));
map.Layers.Add(new TileLayer(mb));
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed 8496f4dfbfbe
- 6d ago First seen · 280 lines · 49 tokens per session scan A 365cfb4d6452
mapsui is a skill published in the GitHub repository znlgis/opengis-skills (60 stars, last pushed today), licensed MIT. It adds 49 tokens to every session and 2,224 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
make-wpf-custom-control
Generates WPF CustomControl C# class and XAML ControlTemplate style from a control name. Use when creating a new custom control, scaffolding a templated control, or generating CustomControl boilerplate code. Usage: /wpf-dev-pack:make-wpf-custom-control.
make-wpf-converter
Generates WPF IValueConverter or IMultiValueConverter classes with MarkupExtension pattern. Use when creating a new value converter, scaffolding a MultiValueConverter, or adding a converter with direct XAML usage. Usage: /wpf-dev-pack:make-wpf-converter [multi].
wpf-rule-view-viewmodel-wiring-communitytoolkit
View-ViewModel wiring for CommunityToolkit.Mvvm: Mappings.xaml + implicit DataTemplate (ViewModel First).
wpf-rule-view-viewmodel-wiring-prism
View-ViewModel wiring for Prism 9: RegisterForNavigation + IRegionManager (View First).
make-wpf-behavior
Generates WPF Behavior classes using Microsoft.Xaml.Behaviors.Wpf. Use when adding reusable interaction logic to controls, creating drag behaviors, or scaffolding a new Behavior class. Usage: /wpf-dev-pack:make-wpf-behavior.
make-wpf-service
Generates WPF service interface, implementation class, and DI registration. Use when adding a new service layer, creating a service with interface separation, or scaffolding a service class with DI wiring. Usage: /wpf-dev-pack:make-wpf-service [--no-interface].