@anov/gis-skills-cli 0.0.0-stage → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +618 -0
  2. package/INSTALL.md +478 -0
  3. package/LICENSE +15 -0
  4. package/README.md +148 -2
  5. package/RELEASING.md +160 -0
  6. package/bin/anov-gis-skills.mjs +408 -0
  7. package/lib/mcp-config.mjs +273 -0
  8. package/package.json +42 -4
  9. package/skills/anovgis-analysis/SKILL.md +585 -0
  10. package/skills/anovgis-effects/SKILL.md +260 -0
  11. package/skills/anovgis-imagery-terrain/SKILL.md +505 -0
  12. package/skills/anovgis-layers/SKILL.md +627 -0
  13. package/skills/anovgis-materials/SKILL.md +635 -0
  14. package/skills/anovgis-models-3dtiles/SKILL.md +448 -0
  15. package/skills/anovgis-pitfalls/SKILL.md +561 -0
  16. package/skills/anovgis-popup-widget/SKILL.md +474 -0
  17. package/skills/anovgis-primitives/SKILL.md +482 -0
  18. package/skills/anovgis-vector-graphics/SKILL.md +602 -0
  19. package/skills/anovgis-viewer/SKILL.md +618 -0
  20. package/skills/using-anovgis/DEMO-MAP.md +64 -0
  21. package/skills/using-anovgis/DEMO-SKILL-MAP.md +248 -0
  22. package/skills/using-anovgis/DOMAINS.md +183 -0
  23. package/skills/using-anovgis/REFERENCE.md +114 -0
  24. package/skills/using-anovgis/SKILL.md +392 -0
  25. package/skills/using-anovgis/templates/README.md +154 -0
  26. package/skills/using-anovgis/templates/combo1-vue3-vite.md +295 -0
  27. package/skills/using-anovgis/templates/combo2-vue2-cli.md +119 -0
  28. package/skills/using-anovgis/templates/combo3-html-cdn.md +107 -0
  29. package/skills/using-anovgis/templates/combo4-vanilla-webpack.md +91 -0
  30. package/skills/using-anovgis/templates/wizard-profiles.md +105 -0
  31. package/vendor/cesiumjs-skills/LICENSE +201 -0
  32. package/vendor/cesiumjs-skills/NOTICE +18 -0
  33. package/vendor/cesiumjs-skills/skills/cesiumjs-3d-tiles/SKILL.md +465 -0
  34. package/vendor/cesiumjs-skills/skills/cesiumjs-camera/SKILL.md +500 -0
  35. package/vendor/cesiumjs-skills/skills/cesiumjs-core-utilities/SKILL.md +403 -0
  36. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/REFERENCE.md +397 -0
  37. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/SKILL.md +351 -0
  38. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/01-diffuse-tint.js +38 -0
  39. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/02-texture-swap.js +42 -0
  40. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/03-feature-id-tileset.js +29 -0
  41. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/04-translucent-override.js +37 -0
  42. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/05-vertex-displacement.js +49 -0
  43. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/06-metadata-ramp.js +34 -0
  44. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/07-voxel-shader.js +27 -0
  45. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/README.md +19 -0
  46. package/vendor/cesiumjs-skills/skills/cesiumjs-custom-shader/examples/_sandcastle-template.html +9 -0
  47. package/vendor/cesiumjs-skills/skills/cesiumjs-entities/SKILL.md +389 -0
  48. package/vendor/cesiumjs-skills/skills/cesiumjs-imagery/SKILL.md +471 -0
  49. package/vendor/cesiumjs-skills/skills/cesiumjs-interaction/SKILL.md +423 -0
  50. package/vendor/cesiumjs-skills/skills/cesiumjs-materials-shaders/SKILL.md +292 -0
  51. package/vendor/cesiumjs-skills/skills/cesiumjs-models-particles/SKILL.md +423 -0
  52. package/vendor/cesiumjs-skills/skills/cesiumjs-primitives/SKILL.md +537 -0
  53. package/vendor/cesiumjs-skills/skills/cesiumjs-spatial-math/SKILL.md +358 -0
  54. package/vendor/cesiumjs-skills/skills/cesiumjs-terrain-environment/SKILL.md +401 -0
  55. package/vendor/cesiumjs-skills/skills/cesiumjs-time-properties/SKILL.md +353 -0
  56. package/vendor/cesiumjs-skills/skills/cesiumjs-viewer-setup/SKILL.md +434 -0
  57. package/vendor/cesiumjs-skills/skills/using-cesiumjs-skills/SKILL.md +35 -0
package/INSTALL.md ADDED
@@ -0,0 +1,478 @@
1
+ # 安装细节
2
+
3
+ README 的「安装」章节给了最常用的几条命令,本文是它们的完整版本:全部参数、MCP 接入方式、升级、卸载与排错。
4
+
5
+ > **`<GITLAB_URL>`** = 本仓库的内网 GitLab 地址。在内网 GitLab 打开本仓库,点「克隆 / Clone」按钮即可拿到。
6
+ > 本文档随 npm 包发到公网,所以**不写死内网地址** —— 每次用到的地方统一用这个占位符。
7
+
8
+ ---
9
+
10
+ ## 前置条件
11
+
12
+ | 方式 | 需要什么 |
13
+ |---|---|
14
+ | A. npm 包 | Node.js ≥ 18,能访问公网 npm |
15
+ | B. marketplace | Claude Code CLI ≥ 2.1(依赖自动安装 + `autoUpdate` 需要 2.1+),能访问内网 GitLab |
16
+ | C. `npx skills` | Node.js ≥ 18,能访问内网 GitLab |
17
+ | D. `install.sh` | bash(Git Bash / WSL / macOS / Linux),已 clone 本仓库 |
18
+
19
+ 外网 github.com 在团队网络不可达,这也是 `cesiumjs-skills` 打进包里的原因(见 §方式 A.4)。
20
+
21
+ ---
22
+
23
+ ## 方式 A:npm 包(推荐)
24
+
25
+ 不想 clone 仓库、或者在 CI 流水线里装 skill 时用这条路。**不依赖 GitLab,也不依赖 github.com。**
26
+
27
+ 包发在**公网 npm**(`https://registry.npmjs.org/`),内网直连公网即可装,**不需要配任何 registry**。
28
+
29
+ ### A.1 安装(一条命令,不用先 `npm i -g`)
30
+
31
+ ```bash
32
+ npx @anov/gis-skills-cli setup
33
+ ```
34
+
35
+ `setup` 做两件事:装 **27 个 skill**(12 anov-gis + 15 Cesium),然后写一条 **MCP 配置**。
36
+ `npx` 会临时下载包并执行它的 `anov-gis-skills` 命令,**不需要预先 `npm i -g`**。想装成全局命令也行:
37
+
38
+ ```bash
39
+ npm i -g @anov/gis-skills-cli
40
+ anov-gis-skills setup
41
+ ```
42
+
43
+ ### A.2 参数
44
+
45
+ ```bash
46
+ # 装到哪(默认用户级,任何项目都能用)
47
+ npx @anov/gis-skills-cli setup # → ~/.claude/skills/ 等
48
+ npx @anov/gis-skills-cli setup --project # → ./.claude/skills/,可提交进项目仓库
49
+
50
+ # 装给谁(默认全部检测到的智能体)
51
+ npx @anov/gis-skills-cli setup --agent claude-code
52
+ npx @anov/gis-skills-cli setup --agent claude-code --agent codex
53
+
54
+ # 不碰 MCP
55
+ npx @anov/gis-skills-cli setup --no-mcp
56
+
57
+ # 只看要写什么,不落盘
58
+ npx @anov/gis-skills-cli setup --print
59
+ ```
60
+
61
+ ### A.3 各智能体的落点
62
+
63
+ | 智能体 | skill 装到 | MCP 配置写到 |
64
+ |---|---|---|
65
+ | Claude Code | `~/.claude/skills/` | `~/.claude.json` 的 `mcpServers`(项目级 → `./.mcp.json`) |
66
+ | Codex | `~/.codex/skills/` | `~/.codex/config.toml` 的 `[mcp_servers.anov-gis]` |
67
+ | Cursor | `~/.agents/skills/` | `~/.cursor/mcp.json`(项目级 → `./.cursor/mcp.json`) |
68
+ | VS Code | `~/.agents/skills/` | `./.vscode/mcp.json` 的 `servers` |
69
+ | Cline / Windsurf / Continue 等 | `~/.agents/skills/` | 不支持(打印片段自行粘贴) |
70
+
71
+ 底层 `skills` CLI 版本**锁定在 `skills@1.5.18`**(不是 latest):1.6.0+ 的 `engines` 要求 `node >= 22.20.0`,而团队环境实测是 node 22.19.0,锁低版本才能在 node ≥ 18 全覆盖。
72
+
73
+ > ⚠️ 项目级安装会在项目根生成 `skills-lock.json`(skills CLI 用来记录来源)。**它不用提交**,可以加进 `.gitignore`。
74
+
75
+ ### A.4 Cesium skill 从哪来
76
+
77
+ 15 个 Cesium skill 是官方 `cesiumjs-skills` 的内容(Apache-2.0),**已经打进本 npm 包**(`vendor/cesiumjs-skills/`),装的时候不需要访问 github 或内网 GitLab。
78
+
79
+ | 文件 | 作用 |
80
+ |---|---|
81
+ | `vendor/cesiumjs-skills/skills/` | 15 个 skill 实体(14 个领域 + `using-cesiumjs-skills` 入口) |
82
+ | `vendor/cesiumjs-skills/LICENSE` | Apache-2.0 全文(再分发必须保留) |
83
+ | `vendor/cesiumjs-skills/NOTICE` | 上游来源与版本说明 |
84
+ | `scripts/sync-cesium.mjs` | 维护者用:从内网镜像重新同步(`--check` 只比对) |
85
+
86
+ 上游更新后由维护者跑 `node scripts/sync-cesium.mjs` 再发版,用户重跑 `setup` 即可。
87
+
88
+ ### A.5 MCP 接入
89
+
90
+ `setup` 默认会写一条 MCP 配置(stdio 直连 `anov-gis-mcp`)。单独管理:
91
+
92
+ ```bash
93
+ npx @anov/gis-skills-cli mcp show # 看当前状态
94
+ npx @anov/gis-skills-cli mcp add # 补上(默认 Claude Code + 用户级)
95
+ npx @anov/gis-skills-cli mcp add --mcp-agent codex
96
+ npx @anov/gis-skills-cli mcp remove # 拿掉
97
+ ```
98
+
99
+ 参数:
100
+
101
+ | 参数 | 说明 |
102
+ |---|---|
103
+ | `--mcp-agent <名字>` | `claude-code`(默认)/ `codex` / `cursor` / `vscode` |
104
+ | `--mcp-mode stdio\|http` | 默认 `stdio`(本地起进程);`http` 连服务器 |
105
+ | `--mcp-url <地址>` | HTTP 模式必填,例如 `http://192.168.11.164:3000/mcp` |
106
+ | `--mcp-command` / `--mcp-arg` | 自定义 stdio 启动命令(默认 `npx -y anov-gis-mcp --stdio`) |
107
+ | `--print` | 只打印配置片段,不写文件 |
108
+
109
+ **凭据透传**:写配置时会把当前环境里这几个变量透传进 `env`(有值才写)——
110
+ `ANOV_GIS_MINIO_ACCESS_KEY` / `_SECRET_KEY` / `_ENDPOINT` / `_BUCKET` / `_REGION`、
111
+ `ANOV_GIS_PUBLIC_STATIC_BASE` / `_PUBLIC_API_BASE`、`ANOV_GIS_ANOVCITY_BASE`。
112
+
113
+ > **写进项目级 `.mcp.json` 时注意**:如果 `env` 里带了 MinIO 账号,这份文件就含凭据,**不要提交**。
114
+ > 更干净的做法是走 HTTP 模式(凭据只在服务端 `.env`),见 `anov-gis-mcp` 仓库的 README。
115
+
116
+ **写入原则**:读现有文件 → 只改 `anov-gis` 这一个条目 → 原子写回。别人配的 MCP server 一律不碰。
117
+
118
+ ### A.6 验证
119
+
120
+ ```bash
121
+ npx @anov/gis-skills-cli doctor
122
+ ```
123
+
124
+ 逐个目录报:
125
+
126
+ ```
127
+ 包内 skill 数:27
128
+
129
+ ── Claude Code ── C:\Users\你\.claude\skills
130
+ ✓ 27 个 skill 齐全
131
+ ✓ frontmatter 全部可被严格 YAML 解析
132
+
133
+ ── MCP · Claude Code(用户级) ── C:\Users\你\.claude.json
134
+ ✓ 已配置(stdio)
135
+ ```
136
+
137
+ | 检查项 | 不通过意味着 |
138
+ |---|---|
139
+ | skill 齐全 | 装漏了,或只装了一部分(单独装部分 skill 时跨 skill 链接会失效) |
140
+ | frontmatter 可被严格 YAML 解析 | 某些 agent 的 skill 加载器会**整个跳过**这个 skill(v0.2.17 踩过:只发现 10/12) |
141
+ | MCP 已配置 | 少了条目 —— 跑 `mcp add` |
142
+
143
+ 有问题会逐条列出并以退出码 1 结束。
144
+
145
+ ### A.7 升级
146
+
147
+ ```bash
148
+ npx @anov/gis-skills-cli setup # 重新落地(npx 会拉最新版,幂等)
149
+ ```
150
+
151
+ ### A.8 卸载
152
+
153
+ ```bash
154
+ npx @anov/gis-skills-cli uninstall # 用户级
155
+ npx @anov/gis-skills-cli uninstall --project # 项目级
156
+
157
+ # 移除包本身(如果当初 npm i -g 过)
158
+ npm uninstall -g @anov/gis-skills-cli
159
+ ```
160
+
161
+ `uninstall` **只删本包提供的 27 个 skill 与 `anov-gis` 这一条 MCP 配置**,别家的 skill / MCP 条目不动。
162
+
163
+ > ⚠️ 别用 `skills remove --all`(等价 `--skill '*' --agent '*' -y`)—— 它会删掉**所有来源**的 skill。
164
+
165
+ ---
166
+
167
+ ## 方式 B:Claude Code 插件(marketplace)
168
+
169
+ Claude Code 走 marketplace,多两个好处:**发版后自动升级**、**自动带出 `cesiumjs-skills`**。
170
+
171
+ ### B.1 安装
172
+
173
+ 在 Claude Code 中执行:
174
+
175
+ ```
176
+ /plugin marketplace add <GITLAB_URL>
177
+ /plugin install anov-gis-skills@anov-gis-skills
178
+ ```
179
+
180
+ **这一条命令会同时装好两个插件**:
181
+
182
+ | 插件 | 内容 |
183
+ |---|---|
184
+ | `anov-gis-skills` | 本仓库 12 个 `@anov/gis` 领域 skill |
185
+ | `cesiumjs-skills` | Cesium 原生 15 个 skill(14 个领域 + 入口,内网镜像,**作为依赖自动带出**) |
186
+
187
+ 重启 Claude Code 会话生效。
188
+
189
+ > ⚠️ **`/plugin` 只能在 Claude Code 终端里用**(VSCode 面板 / IDE 扩展 / headless 会报 "isn't available in this environment")。
190
+ > 等价 CLI 命令(在普通终端跑):`claude plugin marketplace add <url>` / `claude plugin install <插件>@<市场>`。
191
+
192
+ **验证安装成功**:
193
+
194
+ 1. `/plugin list` —— 应看到 `anov-gis-skills` **和** `cesiumjs-skills` 都在已安装列表
195
+ 2. 新开一个会话,提问"flowPolyline 颜色怎么改",Claude 应自动激活 `anovgis-materials` skill 并给出溯源 snippet
196
+
197
+ ### B.2 项目级配置(团队协作,推荐)
198
+
199
+ 适合团队协作 —— 每个团队成员 clone 项目后首次启动自动加载。
200
+
201
+ 在被开发的项目根目录创建(或编辑)`.claude/settings.json`:
202
+
203
+ ```json
204
+ {
205
+ "extraKnownMarketplaces": {
206
+ "anov-gis-skills": {
207
+ "source": {
208
+ "source": "git",
209
+ "url": "<GITLAB_URL>"
210
+ },
211
+ "autoUpdate": true
212
+ }
213
+ },
214
+ "enabledPlugins": {
215
+ "anov-gis-skills@anov-gis-skills": true
216
+ }
217
+ }
218
+ ```
219
+
220
+ 把这份 `.claude/settings.json` **提交到项目仓库**。
221
+
222
+ **效果**:
223
+
224
+ - 团队成员 clone 项目 → 首次启动 Claude Code → 自动拉取并安装 `anov-gis-skills`(连同依赖 `cesiumjs-skills`)
225
+ - 之后每次启动 Claude Code 会**自动检查并拉取新版本**(`autoUpdate: true`)—— v0.2.15 新增的能力,此前第三方 marketplace 默认是关的,需要人工跑 `/plugin marketplace update`
226
+ - 无需任何额外步骤
227
+
228
+ ### B.3 锁版本(可选)
229
+
230
+ `enabledPlugins` 的 key 支持带版本约束的扩展格式:
231
+
232
+ ```json
233
+ {
234
+ "enabledPlugins": {
235
+ "anov-gis-skills@anov-gis-skills@^0.3.0": true
236
+ }
237
+ }
238
+ ```
239
+
240
+ 版本约束靠内网 GitLab 上的 git tag 解析(tag 格式 `anov-gis-skills--v0.2.15`)。没有匹配 tag 会报 `no-matching-tag`。
241
+
242
+ > ⚠️ **版本约束只对 `enabledPlugins` 生效**。`/plugin install` 与 `claude plugin install` 的参数只接受 `插件名` 或 `插件名@市场名`(第三段会被丢弃),所以**命令行装的时候锁不住版本** —— 要锁版本就靠 settings 里的 `enabledPlugins`。
243
+
244
+ **完全锁死(不推荐)**:把约束写成精确版本 `anov-gis-skills@anov-gis-skills@0.3.0`。精确锁定后**不会自动升级**,每次发版都要人工改这一行 —— 这正是 v0.2.15 之前"发完版还要挨个催"的原因。
245
+
246
+ ### B.4 插件缓存位置
247
+
248
+ - `~/.claude/plugins/known_marketplaces.json`:marketplace 注册条目(含 `autoUpdate` 开关)
249
+ - `~/.claude/plugins/cache/anov-gis-skills/<插件名>/<版本>/`:插件副本
250
+ - `~/.claude/plugins/installed_plugins.json`:已安装插件清单(依赖自动装上的会标 `"auto": true`)
251
+
252
+ ### B.5 cesiumjs-skills 从哪来
253
+
254
+ `cesiumjs-skills` 是 CesiumGS 的官方插件(Apache-2.0,原仓库 <https://github.com/CesiumGS/cesiumjs-skills>),提供 15 个 **Cesium 原生** skill(14 个领域 + `using-cesiumjs-skills` 入口)+ SessionStart hook + Chrome DevTools MCP。本仓库的 skill 都会引用它("Cesium 入口(铁律)")。
255
+
256
+ **外网 github.com 在本团队网络不可达**,所以在内网 GitLab 建了一份镜像:
257
+
258
+ ```
259
+ <cesiumjs-skills 内网镜像地址>
260
+ ```
261
+
262
+ 镜像内容与上游 commit `df881cf`(v0.3.0)一致,`LICENSE`(Apache-2.0)、`hooks/`、`.mcp.json` 全部保留。
263
+
264
+ **你不需要做任何事** —— 装 `anov-gis-skills` 时它作为 `dependencies` 被自动装上并启用。装完 `/plugin list` 里应该有两个插件,其中 `cesiumjs-skills` 的 `installed_plugins.json` 条目带 `"auto": true`(表示是作为依赖被带出来的)。
265
+
266
+ **已经装过官方版的同学**(在外网可达的机器上装的):官方版和镜像版会**注册同名的 skill**,造成重复触发和路由歧义。二选一:
267
+
268
+ ```
269
+ /plugin uninstall cesiumjs-skills@cesiumjs-skills
270
+ /plugin prune
271
+ /plugin install anov-gis-skills@anov-gis-skills
272
+ ```
273
+
274
+ > **注意**:镜像里的 chrome-devtools MCP 走 `npx -y chrome-devtools-mcp@latest`,需要能访问 npm registry。内网不通的话 MCP 起不来,**但 skill 本身不受影响**。
275
+
276
+ ---
277
+
278
+ ## 方式 C:`npx skills`(跨智能体标准 CLI)
279
+
280
+ [vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills) 的 CLI。**它直接吃内网 GitLab URL**(不需要 github.com):
281
+
282
+ ```bash
283
+ # 装全部 skill 到本机检测到的所有智能体
284
+ npx skills add <GITLAB_URL> --all
285
+
286
+ # 只装到某个智能体
287
+ npx skills add <repo-url> --agent claude-code
288
+ npx skills add <repo-url> --agent codex
289
+
290
+ # 先看看有哪些 skill(不装)
291
+ npx skills add <repo-url> -l
292
+
293
+ # 更新
294
+ npx skills update
295
+ ```
296
+
297
+ - 装到 `~/.claude/skills/`(Claude Code)、`~/.codex/skills/`(Codex)等标准位置
298
+ - 默认**拷贝**(`--copy` 是显式开关,默认行为随版本变化);加 `--copy` 强制拷贝
299
+ - **不带 cesiumjs-skills** —— 这条路没有 marketplace 的 `dependencies` 机制,Cesium 原生 skill 要单独装(见 §方式 B.5)
300
+
301
+ > ⚠️ 本仓库的 skill `description` 必须能被严格 YAML 解析,否则会被这个 CLI 跳过。`scripts/bump.mjs --check` 会校验这一点(v0.2.16 修过一次:`anovgis-imagery-terrain` / `anovgis-pitfalls` 的 description 未加引号且含 ASCII 冒号,导致 12 个 skill 只被发现 10 个)。
302
+
303
+ ---
304
+
305
+ ## 方式 D:`install.sh`(链接安装,git pull 原地更新)
306
+
307
+ 已经 clone 了本仓库的话,直接跑:
308
+
309
+ ```bash
310
+ ./install.sh # 链到 Claude Code(~/.claude/skills)
311
+ ./install.sh --codex # 链到 Codex(~/.codex/skills)
312
+ ./install.sh --all-agents # 两个都链
313
+ ./install.sh --list # 列出可装的 skill
314
+ ./install.sh --uninstall # 删掉指向本仓库的链接
315
+ ./install.sh using-anovgis # 只装指定 skill(按 frontmatter name)
316
+ ```
317
+
318
+ 建的是**链接**不是拷贝(Windows 用 NTFS 目录联接 `mklink /J`,其它平台用 `ln -s`),所以 **`git pull` 之后所有已装 skill 原地更新**,不用重跑安装。
319
+
320
+ - 需要 bash(Git Bash / WSL / macOS / Linux 都行)
321
+ - 同样**不带 cesiumjs-skills**(没有 plugin marketplace 的依赖机制)
322
+
323
+ ---
324
+
325
+ ## 方式 E:Codex / Cursor / 通用 AGENTS.md
326
+
327
+ 本仓库**一份 skill,多智能体共用**。仓库根目录同时放了各智能体的清单:
328
+
329
+ ```
330
+ anov-gis-skills/
331
+ ├── .claude-plugin/plugin.json # Claude Code
332
+ ├── .codex-plugin/plugin.json # Codex CLI / Codex App
333
+ ├── .cursor-plugin/plugin.json # Cursor
334
+ ├── AGENTS.md # 通用 AGENTS.md 约定(兜底)
335
+ ├── skills/ # 12 个 anov-gis skill,所有智能体共享
336
+ └── vendor/cesiumjs-skills/skills/ # 15 个 Cesium skill(Apache-2.0)
337
+ ```
338
+
339
+ 各智能体的 `plugin.json` 都指向同一个 `./skills/`,**不需要为每个智能体单独维护一份 skill**。
340
+
341
+ ### Codex CLI / Codex App
342
+
343
+ Codex 有自己的 plugin 机制,清单在 `.codex-plugin/plugin.json`。**当前本仓库未发布到 Codex 官方 marketplace**,所以用本地安装:
344
+
345
+ **方式一:本地 plugin 安装(推荐)**
346
+
347
+ ```bash
348
+ codex plugin install /path/to/anov-gis-skills
349
+ ```
350
+
351
+ **方式二:手动 symlink skills 目录**(Codex 期望每个 skill 是独立子目录,本仓库已符合)
352
+
353
+ **Windows (cmd)**:
354
+
355
+ ```cmd
356
+ mklink /D %USERPROFILE%\.codex\skills\anov-gis-skills <本仓库>\skills
357
+ ```
358
+
359
+ **macOS / Linux**:
360
+
361
+ ```bash
362
+ ln -s <本仓库>/skills ~/.codex/skills/anov-gis-skills
363
+ ```
364
+
365
+ **MCP 配置转换(可选)**:如果项目需要 Chrome DevTools MCP,将 `.mcp.json` 转换为 `~/.codex/config.toml`:
366
+
367
+ ```toml
368
+ [mcp_servers.chrome-devtools]
369
+ command = "npx"
370
+ args = ["-y", "chrome-devtools-mcp@latest"]
371
+ ```
372
+
373
+ ### Cursor
374
+
375
+ 清单在 `.cursor-plugin/plugin.json`。Cursor 有自己的 plugin 目录(`~/.cursor/plugins/` 或项目级 `.cursor/plugins/`),把本仓库(或其中的 `skills/`)放进去即可:
376
+
377
+ ```bash
378
+ # 项目级(推荐,随仓库走,团队共享)
379
+ git clone <GITLAB_URL> .cursor/plugins/anov-gis-skills
380
+ ```
381
+
382
+ Cursor 也支持在 Agent 聊天框里从 marketplace 装 —— 那需要发布到 Cursor marketplace,本仓库暂未发布。
383
+
384
+ ### 通用 AGENTS.md 约定(其它智能体)
385
+
386
+ 对于不认 plugin 机制、但会读 `AGENTS.md` 的智能体(Cline / Windsurf / Continue / 各类 IDE agent 等),仓库根的 `AGENTS.md` 就是入口:它说明本插件提供什么、每个智能体该读哪个 manifest、skill 实体在哪儿、触发关键词是什么。
387
+
388
+ 通用装法(把每个 skill 单独软链到 `~/.agents/skills/`):
389
+
390
+ ```bash
391
+ mkdir -p ~/.agents/skills
392
+ for d in <本仓库>/skills/*/; do
393
+ ln -sfn "$d" ~/.agents/skills/$(basename "$d")
394
+ done
395
+ ```
396
+
397
+ > ⚠️ **Claude Code 不读 `~/.agents/skills/`**(该路径在 Claude Code 里无效)。Claude Code 请用 §方式 A / §方式 B。
398
+
399
+ ### 非 Claude Code 智能体的使用建议
400
+
401
+ 首轮对话**显式声明**:
402
+
403
+ ```
404
+ 参考 @anov/gis v1.8.6 + Cesium 1.143.0,使用 anov-gis-skills 提供的 skill。
405
+ ```
406
+
407
+ 后续提问 skill 会基于 description 关键词自动触发。
408
+
409
+ ---
410
+
411
+ ## 各智能体差异对照
412
+
413
+ | 项 | Claude Code | Codex CLI | Cursor | 通用 AGENTS.md |
414
+ |---|---|---|---|---|
415
+ | 清单文件 | `.claude-plugin/plugin.json` | `.codex-plugin/plugin.json` | `.cursor-plugin/plugin.json` | `AGENTS.md` |
416
+ | 安装方式 | marketplace(推荐) | 本地 plugin / symlink | plugin 目录 / marketplace | symlink |
417
+ | 自动更新 | ✅ `autoUpdate: true` | ❌ 人工 re-install | ❌ 人工 re-install | ❌ `git pull` 后重链 |
418
+ | 跨插件依赖 | ✅ `dependencies` | ❌ | ❌ | ❌ |
419
+ | SessionStart hook | ✅ | ❌ | ⚠️ 部分支持 | ❌ |
420
+ | skill 装到哪 | `~/.claude/plugins/cache/...` | `~/.codex/skills/` | `~/.cursor/plugins/...` | `~/.agents/skills/` |
421
+
422
+ **`cesiumjs-skills` 依赖只在 Claude Code 上自动装**(靠 marketplace 的 `dependencies` 字段)。其它智能体需要单独装 CesiumGS 官方版:
423
+
424
+ ```bash
425
+ # Codex / Cursor:单独装官方 cesiumjs-skills
426
+ git clone https://github.com/CesiumGS/cesiumjs-skills.git ~/.codex/skills/cesiumjs-skills
427
+ ```
428
+
429
+ > 外网 github.com 在本团队网络不可达时,改用内网镜像(地址见 §方式 B.5)
430
+
431
+ ---
432
+
433
+ ## 升级
434
+
435
+ **Claude Code 走 marketplace 时默认就是自动的。** 项目级配置带 `autoUpdate: true`,Claude Code 每次启动会自动检查内网 GitLab 上的新版本并升级已安装的插件 —— **发版后不需要通知任何人**。
436
+
437
+ ### 手动命令(备用)
438
+
439
+ ```
440
+ /plugin marketplace update anov-gis-skills # 刷新 marketplace 目录(拉到新的 marketplace.json)
441
+ /plugin update anov-gis-skills # 把插件本体更新到最新匹配版本
442
+ ```
443
+
444
+ `/plugin update` 会提示 **restart required** —— 重开 Claude Code 会话生效。
445
+
446
+ ### 什么时候必须手动操作
447
+
448
+ | 场景 | 说明 |
449
+ |---|---|
450
+ | 首次开启 `autoUpdate` | 2026-10 之前装的,`known_marketplaces.json` 里 `autoUpdate` 默认是 `false`(第三方 marketplace 的默认值)。改一次 §方式 B.2 的配置或跑一次 `/plugin marketplace update` 即可 |
451
+ | 用了精确锁版本 | `anov-gis-skills@anov-gis-skills@0.3.0` 这种精确锁定**不会自动升级**,必须改这一行 |
452
+ | 提示 restart required | 重开 Claude Code 会话 |
453
+ | 想立刻跳到指定版本 | `/plugin install anov-gis-skills@anov-gis-skills@0.3.0`(降级同理) |
454
+
455
+ ### 查看当前版本
456
+
457
+ ```
458
+ /plugin list
459
+ /plugin details anov-gis-skills
460
+ ```
461
+
462
+ ### 破坏性变更
463
+
464
+ **从 v0.1.1 升级到 v0.3.0 的破坏性变更**:无。所有 v0.1.1 skill 在 v0.3.0 仍然可用;v0.2.0 新增 3 个 skill + DOMAINS 强化;v0.2.1–v0.3.0 为修复性版本(skill 名称与目录结构未变)。
465
+
466
+ ---
467
+
468
+ ## 排错
469
+
470
+ | 症状 | 多半是 | 怎么办 |
471
+ |---|---|---|
472
+ | `/plugin` 报 "isn't available in this environment" | 在 VSCode 面板 / IDE 扩展 / headless 里跑了 | 换成 Claude Code 终端,或用 `claude plugin ...` CLI |
473
+ | `/plugin install` 报 `no-matching-tag` | 版本约束对应的 tag 没打 | 确认内网 GitLab 上有 `anov-gis-skills--v<版本>` tag |
474
+ | 插件装了但 skill 一个都没出现 | frontmatter 没被严格 YAML 解析 | 跑 `npx @anov/gis-skills-cli doctor` 看哪几条断了 |
475
+ | skill 只有一部分能用 | 单独装了部分 skill,指向兄弟 skill 的相对链接失效 | 全量装(12 个同级),别只装一个 |
476
+ | `doctor` 报 skill 不齐 | 只装了一部分 | 重跑 `setup`;仓库侧跑 `node scripts/build-npm.mjs` 复查 |
477
+ | 已装过官方 `cesiumjs-skills` 导致触发混乱 | 官方版与内网镜像版注册了同名 skill | 见 §方式 B.5 的卸载步骤二选一 |
478
+ | Chrome DevTools MCP 起不来 | 内网访问不了 npm registry | 不影响 skill 本身,可忽略 |
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2026, zhf
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,149 @@
1
- # Temporary Holding Version
1
+ # anov-gis-skills
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ 给 `@anov/gis` SDK(Cesium 1.143 二三维 WebGIS 二次开发框架)开发用的 **27 个领域 skill + 1 个 MCP 接入**,装到 Claude Code / Codex / Cursor 等智能体,AI 按你的意图自动路由。
4
+
5
+ | 组成 | 内容 |
6
+ |---|---|
7
+ | **anov-gis skill ×12** | 按用户意图组织:Viewer / 影像地形 / 图层 / 图元 / Primitive / 3D Tiles / Popup / 材质 / 分析 / 特效 / 陷阱 / 引导初始化 |
8
+ | **Cesium skill ×15** | 官方 `cesiumjs-skills`(Apache-2.0)的 Cesium 原生 API 知识,随包一起装,不用另找 |
9
+ | **anov-gis-mcp** | 数据目录 / 接口契约 / 代码片段的 MCP 服务,可选接入 |
10
+
11
+ - 每个 skill 含 类速查表 + 关键 API + 可跑 snippet + 反模式;snippet **强溯源**到 SDK 源码与 demo,**核心代码已内嵌**
12
+ - 适用 SDK:`@anov/gis` **v1.8.6**(Cesium **1.143.0**)
13
+
14
+ ---
15
+
16
+ ## 安装
17
+
18
+ ### 一行装上(推荐)
19
+
20
+ ```bash
21
+ npx @anov/gis-skills-cli setup # 27 个 skill + MCP 接入
22
+ ```
23
+
24
+ `setup` 做两件事:
25
+
26
+ 1. 把 **27 个 skill** 落到各智能体的标准目录(`~/.claude/skills/`、`~/.agents/skills/` 等)
27
+ 2. 写一条 **MCP 配置**(默认 Claude Code,stdio 直连 `anov-gis-mcp`)—— 不想要就加 `--no-mcp`
28
+
29
+ 不需要预先 `npm i -g`,也不需要 clone 本仓库。
30
+
31
+ 常用参数:
32
+
33
+ ```bash
34
+ npx @anov/gis-skills-cli setup --project # 装到当前项目(默认用户级)
35
+ npx @anov/gis-skills-cli setup --agent cursor # 只装给某个智能体
36
+ npx @anov/gis-skills-cli setup --no-mcp # 只装 skill,不碰 MCP
37
+ npx @anov/gis-skills-cli mcp add --mcp-agent codex # MCP 单独接到 Codex
38
+ npx @anov/gis-skills-cli uninstall # 清理(只删自己的)
39
+ ```
40
+
41
+ 完整参数见 [INSTALL.md](INSTALL.md)。
42
+
43
+
44
+ ### 验证
45
+
46
+ ```bash
47
+ npx @anov/gis-skills-cli doctor
48
+ ```
49
+
50
+ 逐个目录报:27 个 skill 是否齐全、frontmatter 能否被严格 YAML 解析、MCP 条目写没写对。
51
+
52
+ 新开一个会话提问"flowPolyline 颜色怎么改",应自动激活 `anovgis-materials` 并给出溯源 snippet。
53
+
54
+ 安装排错见 [INSTALL.md](INSTALL.md#排错);地图黑屏 / Workers 404 / 材质不生效等问题看下面的「报错排查」。
55
+
56
+ ---
57
+
58
+ ## 使用
59
+
60
+ ### 触发机制
61
+
62
+ **被动触发(推荐)**:prompt 里命中 skill `description` 的关键词就自动激活。
63
+
64
+ | 你说 | 激活 |
65
+ |---|---|
66
+ | "flowPolyline 颜色怎么改" | `anovgis-materials`(命中 "PolylineFlowMaterial") |
67
+ | "地图黑屏了" | `anovgis-pitfalls`(命中 "黑屏") |
68
+ | "我要从零建项目" | `using-anovgis`(命中 "从零开始") |
69
+
70
+ **主动调用**:`/anovgis-materials`、`/anovgis-primitives`、`/anovgis-pitfalls` ……
71
+
72
+ ### 从零建项目
73
+
74
+ 直接说"用 anov-gis 初始化三维地球",`using-anovgis` 会用 `AskUserQuestion` 问你 3 件事(默认底图 / 控件 profile / 部署方式),然后输出**复制粘贴即可运行**的 Vue 3 + Vite 工程骨架。
75
+
76
+ 技术栈固定 Vue 3 + Vite(v0.2.12 起不再询问)。详见 `skills/using-anovgis/SKILL.md`。
77
+
78
+ ### 改 SDK 自带 demo
79
+
80
+ 团队最常见的场景是「复制 SDK 自带 demo → 改成自己的业务」。137 个 demo 的路由表在 [`skills/using-anovgis/DEMO-SKILL-MAP.md`](skills/using-anovgis/DEMO-SKILL-MAP.md)。
81
+
82
+ 直接跟 AI 说文件名 + 想改什么,它会自动路由:
83
+
84
+ ```
85
+ "帮我改 material/flowPolyline.html 把颜色改成红色"
86
+ → anovgis-materials 自动激活,给出改 flowPolyline 颜色的 snippet
87
+ ```
88
+
89
+ ### MCP 能补什么
90
+
91
+ skill 讲**「怎么写 Cesium 代码」**,`anov-gis-mcp` 讲**「这份代码该填什么」**。接上之后 AI 能直接答:
92
+
93
+ > 「北京这边到底有哪些数据?URL 是什么?写完的代码帮我验一下。」
94
+
95
+ 15 个工具,覆盖静态数据目录检索、行政区划解析、anovcity 接口契约、代码片段生成与校验。
96
+ 瓦片与矢量数据的字节不经过 MCP —— 只给 URL,浏览器直连。
97
+
98
+ ```bash
99
+ npx @anov/gis-skills-cli mcp show # 看当前接没接上
100
+ npx @anov/gis-skills-cli mcp add # 补上
101
+ npx @anov/gis-skills-cli mcp remove # 拿掉
102
+ ```
103
+
104
+ > 需要 MinIO 只读账号才有实时目录;没有的话目录会退化成内置种子清单。
105
+ > 服务本身的部署与参数见 `anov-gis-mcp` 仓库的 README。
106
+
107
+ ### 报错排查
108
+
109
+ **第一反应调出 `anovgis-pitfalls`**:
110
+
111
+ ```
112
+ /anovgis-pitfalls
113
+ ```
114
+
115
+ 它会列出 P0–P12 的高频陷阱。把报错截图 + console 输出 + 关键代码片段贴给 AI,skill 会基于陷阱库匹配根因。
116
+
117
+ | 症状 | 陷阱 | 排查 |
118
+ |---|---|---|
119
+ | 地图黑屏,无报错 | P1 / P3 | `setBaseUrl` 时机;地形用 `setTerrain` 而非 `terrainProvider =` |
120
+ | 模型不显示 | P2 / P5 | `tileset.ready(cb)` 是否异步;MaterialProperty 是否改子字段 |
121
+ | Workers 404 | P3 / P4 | 检查 baseUrl;webpack 加 IgnorePlugin |
122
+ | `punycode` / `IPv6` 报错 | P4 | webpack AMD IgnorePlugin |
123
+ | 材质改值视觉无变化 | P5 | 整体赋新对象,不要改 `.red` / `.x` 等子字段 |
124
+ | 双击 HTML 白屏 | P6 | 必须 HTTP 服务打开,不能 `file://` |
125
+ | `Cesium.X` undefined | P7 | 用 `window.Cesium` 或 `ANOVGIS.Cesium` |
126
+
127
+ ---
128
+
129
+ ## 12 个 Skill 速览
130
+
131
+ | # | Skill | 一句话 | 触发关键词(精选) |
132
+ |---|---|---|---|
133
+ | 1 | `using-anovgis` | 入口:CDN/npm 引入、最小 Viewer、12 skill 路由表、Demo 路由表 | ANOVGIS、@anov/gis、新建项目、quickstart、demo、xxx.html |
134
+ | 2 | `anovgis-viewer` | Viewer 扩展参数、Util/Transform、事件枚举、flyTo、skybox | Viewer、坐标系、flyTo、skybox、defaultView |
135
+ | 3 | `anovgis-imagery-terrain` | ImageryLayerFactory、TerrainFactory、卷帘、暗色、离线底图 | 天地图、WMS、WMTS、地形、卷帘、4490、deployConfig |
136
+ | 4 | `anovgis-layers` | 14 个要素图层(GeoJSON / 3D Tiles 容器 / CZML / KML / ClusterLayer / 4490 矢量瓦片)| 图层、GeoJSON、CZML、KML、4490、cluster、HTML 图层 |
137
+ | 5 | `anovgis-vector-graphics` | Vector 16 + Model 2 类 + bindPopup 基础用法 + customshader + ThreeLayer + divInfo | Point、Polyline、Polygon、Tileset、customshader、divInfo |
138
+ | 6 | `anovgis-models-3dtiles` | Model + 3D Tiles + 抽壳 + 倾斜摄影 + TilesetEditor + 位姿编辑 | Model、Tileset、3dtiles、qingxieTileset、quShouBengZhan、TilesetEditor |
139
+ | 7 | `anovgis-primitives` | Primitive 19 类(雷达 / 尾迹 / 流动 / 扩散墙 / 水面 / 云 / 光柱 / 弹跳)| Primitive、ScanCircle、TrailLine、FlowLine、WaterPrimitive、Cloud |
140
+ | 8 | `anovgis-popup-widget` | Popup / Tooltip / bindPopup / bindTooltip / highlight / tilesetpopup / imagerylayerpopup | Popup、Tooltip、bindPopup、highlight、tilesetpopup、divInfo |
141
+ | 9 | `anovgis-materials` | 18 个 MaterialProperty + shader 注册 + P5 陷阱 + 抛物线 / 图片雷达 / shadertoy | material、PolylineFlowMaterial、WaterMaterial、parabola、imgrader |
142
+ | 10 | `anovgis-analysis` | 标绘 / 测量 / 剖切 / 热力图 / 风场 / 水淹 / 三轴编辑 / Geocoder / WFS | 标绘、measure、TerrainClipping、HeatMap、WindLayer、PositonEditor、geocoder |
143
+ | 11 | `anovgis-effects` | 天气 / 漫游 / 动画 / 后期处理(Bloom / 夜视 / 景深 / 黑白)+ 天空盒 | weather、roaming、AroundPoint、FlyManager、bloom、skybox |
144
+ | 12 | `anovgis-pitfalls` | Cesium 1.143 + v1.8.6 典型陷阱(P0–P12)+ 自定义图元报错 | 黑屏、白屏、不生效、报错、Workers 404、AMD、CustomPrimitive |
145
+
146
+ 完整路由(用户意图 → skill)见 `skills/using-anovgis/SKILL.md`;完整 demo 路由(demo 文件名 → skill)见 [`skills/using-anovgis/DEMO-SKILL-MAP.md`](skills/using-anovgis/DEMO-SKILL-MAP.md)。
147
+
148
+ 另外 15 个 Cesium skill 由官方 `cesiumjs-skills` 提供(`cesiumjs-3d-tiles` / `cesiumjs-camera` / `cesiumjs-primitives` …),
149
+ `using-cesiumjs-skills` 是它们的入口 —— 由 `using-anovgis` 自动转过去,你一般不用直接调用。