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 sodgit 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/sod)<a href="https://agentmods.dev/skills/znlgis/opengis-skills/sod"><img src="https://agentmods.dev/badge/skills/znlgis/opengis-skills/sod/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/sod"><img src="https://agentmods.dev/badge/skills/znlgis/opengis-skills/sod.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.00102 | $0.03600 |
| Opus 5.5 | $0.00041 | $0.01440 |
| Sonnet 5.5 | $0.00020 | $0.00720 |
| Haiku 4.5 | $0.00010 | $0.00360 |
Grade A, and why
sod 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 yesterday.
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 — 369 lines — stays where its author put it; the contents beside it link to each section on GitHub.
项目地址: https://github.com/znlgis/SOD(镜像仓库,最后提交 2025-07-05;国内主仓库见 https://gitee.com/znlgis/SOD,截至 2026-10 仍可访问但更新缓慢)
官网: https://www.pwmis.com/sod/
官方文档: http://www.pwmis.com/sod/
NuGet:
PDF.NET.SODNuGet(.NET 6+):
PWMIS.SOD最新版本: PDF.NET.SOD 7.0.1 / PWMIS.SOD 6.0.3(截至 2026-10,NuGet 实测)
许可证: Apache-2.0
概述
SOD 由 PDF.NET 演化而来,主要特点:
- 混合 ORM 模式:原生 SQL + ORM + SQL-MAP(XML 配置)+ OQL(对象查询语言)
- 多数据库:SqlServer / Oracle / MySQL / PostgreSQL / SQLite / Access / 达梦 DM / 人大金仓 / 神舟通用
- AdoHelper:屏蔽底层 Provider 差异
- 实体类:
EntityBase,支持脏字段跟踪、字段映射、状态机 - OQL:链式 API 查询、连接、分组、聚合
- SQL-MAP:XML 写 SQL,Mybatis 风格
- 读写分离:主从配置
- 缓存与监控:内置 SQL 性能日志
安装
方式一:dotnet CLI
# .NET 6+ 用 PWMIS.SOD(新版核心库)
dotnet add package PWMIS.SOD
# .NET Framework / netstandard2.0 用 PDF.NET.SOD 系列
dotnet add package PDF.NET.SOD.Core
# 对应数据库 Provider
dotnet add package PDF.NET.SOD.MySQL.Provider
dotnet add package PDF.NET.SOD.PostgreSQL.Provider
方式二:PackageReference
<ItemGroup>
<PackageReference Include="PWMIS.SOD" Version="6.0.3" />
</ItemGroup>
验证安装
dotnet list package | grep -i sod
两个包的实测结构:
PWMIS.SOD6.0.3 提供lib/net6.0/PWMIS.SOD.Core.dll;PDF.NET.SOD7.0.1 只含PWMIS.SOD.Core.Extensions.dll,完整核心在PDF.NET.SOD.Core7.0.1 里。按目标框架选包,不要混装。
核心 API 速查
| 对象 | 入口 | 说明 |
|---|---|---|
| 数据访问入口 | MyDB.GetDBHelperByConnectionName(name) / MyDB.GetDBHelperByProviderString(cs, provider) |
返回 AdoHelper(db,继承自 CommonDB),屏蔽底层 Provider 差异 |
| 实体基类 | EntityBase |
TableName / IdentityName / PrimaryKeys;属性用 getProperty<T>() / setProperty() |
| 实体 CRUD | new EntityQuery<T>(db) |
Insert / Update(仅脏字段)/ Delete / GetList / GetEntity |
| OQL 链式查询 | OQL.From(entity).Select(...).Where(...).OrderBy(...).END |
支持多表连接、分组、聚合;oql.Limit(pageSize, pageIndex) 分页 |
| SQL-MAP | new SqlMapper(db).ExecuteList<T>("Map.Statement", param) |
XML 写 SQL(MyBatis 风格),SqlMapTool 可生成强类型 DAL |
| 原生 SQL | db.ExecuteDataSet(...) / db.ExecuteNonQuery(...) / db.GetParameter(...) |
用 AdoHelper 直接执行 |
| 事务 | db.BeginTransaction() → db.Commit() / db.Rollback() |
均定义在 CommonDB 上,AdoHelper 继承而来;没有 UseTransaction 辅助方法 |
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.
- yesterday Changed · +21 lines · +45 tokens per session b7ce9d0f2b40
- 13d ago Changed · +14 lines de301f430c54
- 14d ago Changed · +24 lines 6914072ad57f
- 1mo ago Changed · +2 lines 38fbbc669a07
- 1mo ago Changed b95efd270e72
- 1mo ago Changed 4498e99396a2
- 2mo ago First seen · 308 lines · 57 tokens per session scan A 37b2f97b6549
sod is a skill published in the GitHub repository znlgis/opengis-skills (75 stars, last pushed 2d ago), licensed MIT. It adds 102 tokens to every session and 3,600 once invoked, about $0.0004 per session on Opus 5.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-08-30.
Other skills, from other repositories
worker-services
Build long-running .NET background services with BackgroundService, Generic Host, graceful shutdown, configuration, logging, and deployment patterns suited to workers and daemons. USE FOR: background services; scheduled workers; hosted services; worker extraction; graceful shutdown, health checks, and service hosting…
aspnet-core
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET. USE FOR: working on ASP.NET Core apps, services, or middleware; changing auth, routing, configuration, hosting, or deployment behavior; deciding…
entity-framework-core
Design, tune, or review EF Core data access with proper modeling, migrations, query translation, performance, and lifetime management for modern .NET applications. USE FOR: DbContext, migrations, model configuration, EF queries, tracking, loading, performance, transactions, and EF6 migration decisions. DO NOT USE FOR…
minimal-apis
Design and implement Minimal APIs in ASP.NET Core using handler-first endpoints, route groups, filters, and lightweight composition suited to modern .NET services. USE FOR: building new HTTP APIs in ASP.NET Core; creating lightweight microservices; choosing between Minimal APIs and controllers. DO NOT USE FOR…
web-api
Build or maintain controller-based ASP.NET Core APIs when the project needs controller conventions, advanced model binding, validation extensions, OData, JsonPatch, or existing API patterns. USE FOR: working on controller-based APIs in ASP.NET Core; needing controller-specific extensibility or conventions; migrating…
managedcode-communication
Use ManagedCode.Communication when a .NET application needs explicit result objects, structured errors, and predictable service or API boundaries instead of exception-driven control flow. USE FOR: integrating ManagedCode.Communication into services or APIs; replacing exception-driven result handling with explicit…