
文章目录一、CangjieSkills 是什么二、安装一行命令最方便三、收益一cjpm.toml 生成不再出错痛点回顾装上 Skill 之后四、收益二stdx 的 HTTP/JSON 使用不再踩坑痛点回顾装上 Skill 之后五、一点补充dashboard 是 SPA项目列表要走 API六、总结背景在用华为云码道CodeArts代码智能体GLM-5.2开发仓颉语言项目时常常被两个问题反复折磨——生成的cjpm.toml总有字段错误、一旦用到stdx的 HTTP/JSON 就各种编译报错。直到装上CangjieSkills这两个痛点被一次性解决。本文记录安装过程与实测对比。一、CangjieSkills 是什么CangjieSkills 是仓颉 SIG 维护的一套面向 AI 开发工具的 Skills 包覆盖仓颉语言从建工程、写代码、配依赖、到编译测试的全流程。它把仓颉语言核心特性、标准库std、扩展标准库stdx、项目规范、工具链cjpm/cjc/cjfmt/cjlint 等的权威文档按 AI Skill 的格式组织好让智能体在写仓颉代码时有据可查。仓库内.agents/skills下包含 6 个 SkillSkill作用cangjie-lang-features仓颉语言核心特性文档类型/控制流/泛型/宏/并发等cangjie-original-docs仓颉官方原始文档语言/标准库/stdx/工具链cangjie-std标准库 std 常用功能速查cangjie-stdx扩展标准库 stdx 速查HTTP/JSON/TLS/日志等cangjie-regulations仓颉项目规范准则命名/格式/测试/安全等cangjie-toolchains工具链用法cjpm/cjc/cjdb/cjfmt/cjlint/cjprof装上之后智能体在生成仓颉代码时会优先检索这些 Skill而不是凭记忆瞎猜——这正是后面两个收益的根因。二、安装一行命令最方便官方 README 给出的安装命令是npx skillsaddhttps://gitcode.com/Cangjie-SIG/CangjieSkills.git-aopencode-y其中-a选项指定目标 AI 工具opencode/claude-code/cursor/trae等。如果你用的是华为云码道智能体CodeArts把-a换成codearts-agent即可这是最省事的方式npx skillsaddhttps://gitcode.com/Cangjie-SIG/CangjieSkills.git-acodearts-agent-y-y跳过确认提示静默安装全部 6 个 Skill安装完成后码道智能体会自动识别这些 Skill无需额外配置前提本机已装好仓颉通用版工具链cjpm、cjc全局可用。小贴士没有 node 环境时也可以手动把仓库.agents/skills目录复制到码道智能体的 Skills 搜索路径下全局路径或项目.agents/skills/效果一致。三、收益一cjpm.toml生成不再出错痛点回顾装 Skill 之前让 GLM-5.2 直接生成一个仓颉工程的cjpm.toml经常会出这些问题output-type漏写或写成binary仓颉只认executable/static/dynamiccjc-version与本机cjc -v对不上导致编译直接报版本不匹配依赖stdx时[target.xxx.bin-dependencies]的path-option路径写错平台标识例如把x86_64-w64-mingw32写成x86_64-unknown-windows-gnu链接阶段找不到库[package]与[workspace]互斥字段同时出现。这些错误往往要反复编译、看报错、改 toml、再编译来回好几轮才消停。装上 Skill 之后智能体在创建工程时会先检索cangjie-toolchains和cangjie-regulations直接走cjpm init生成骨架再按需补字段。实测在D:\Test\cj\fun下创建一个可执行工程cjpm init--namefuntest--pathfuntest--typeexecutable生成的cjpm.toml字段完整、类型正确[package] cjc-version 1.0.0 name funtest description nothing here version 1.0.0 output-type executable ... [dependencies]cjpm build一次通过再没出现因 toml 字段导致的编译失败。根因在于 Skill 把cjpm.toml的字段表、[package]/[workspace]互斥规则、各平台 target 标识都写死了智能体不再靠印象填字段。四、收益二stdx 的 HTTP/JSON 使用不再踩坑痛点回顾仓颉标准库std不含高层 HTTP 客户端和 JSON 解析这两块在stdx扩展标准库里HTTP 客户端stdx.net.httpClientBuilder/HttpRequestBuilder/HttpResponseJSONstdx.encoding.jsonJsonValue/JsonArray/JsonObject。装 Skill 之前码道智能体写 stdx 代码时经常犯这些错以为HttpResponse有close()就随便调实际调用方式不对报no matching function for operator ()用/!比较JsonKind枚举但仓颉 enum 默认没派生Equatable直接编译失败把JsonArray.size当属性用实际是size()方法ArrayBool(n, item: true)写错构造参数名正确是repeat: true忘记 HTTPS 需要TlsClientConfig或者TrustAll模式导入路径不对。一个 HTTPJSON 的小工程往往要来回改五六次才能编译过。装上 Skill 之后智能体写 stdx 代码前会检索cangjie-stdx的 HTTP 客户端、JSON 文档必要时还会查cangjie-original-docs里的原始 API 签名。下面是一个实测工程访问https://gitcode.com/dashboard并打印项目名称和地址。工程结构httptest/ ├── cjpm.toml # 配置 stdx 动态库依赖 └── src/ ├── main.cj # 主入口 ├── gitcode.cj # HTTP 客户端 JSON 解析 └── gitcode_test.cj # 单元测试cjpm.toml里 stdx 依赖路径一次写对Windows 平台[target.x86_64-w64-mingw32.bin-dependencies] path-option [D:/CangjieMagic/libs/cangjie-stdx-windows-x64-1.0.0.1/windows_x86_64_llvm/dynamic/stdx]HTTP 客户端 JSON 解析核心代码智能体生成一次编译通过package httptest import stdx.net.http.* import stdx.net.tls.* import stdx.encoding.json.* import std.collection.* import std.io.StringReader public func createClient(): Client { var tlsConfig TlsClientConfig() tlsConfig.verifyMode TrustAll return ClientBuilder().tlsConfig(tlsConfig).autoRedirect(true).build() } public func fetchUserRepos(client: Client, token: String, page: Int64): ArrayListProject { let url https://gitcode.com/api/v5/user/repos?per_page100page${page} let req HttpRequestBuilder() .get() .url(url) .header(private-token, token) .build() let resp client.send(req) let body StringReader(resp.body).readToEnd() return parseRepos(body) } public func parseRepos(jsonStr: String): ArrayListProject { let result ArrayListProject() if (jsonStr.size 0) { return result } var arr: JsonArray try { let jv JsonValue.fromStr(jsonStr) arr jv.asArray() } catch (_) { return result } let n arr.size() for (i in 0..n) { try { let obj arr[i].asObject() let name getStringField(obj, name) let url getStringField(obj, html_url) let desc getStringField(obj, description) result.add(Project(name, url, desc)) } catch (_) { continue } } return result }几个关键点都是 Skill 帮忙踩过的坑不用resp.close()文档明确读完 body 后无需再调 close 释放资源直接StringReader(resp.body).readToEnd()即可不用比较JsonKind改用try { jv.asArray() } catch (_)做类型转换避开 enum 未派生Equatable的问题JsonArray.size()是方法带括号调用HTTPS 必须配TlsClientConfigtlsConfig.verifyMode TrustAll测试用。实测结果cjpm build → cjpm build success cjpm test → 3/3 PASSED cjpm run → GET https://gitcode.com/dashboard - HTTP 200从写代码到跑通一轮过。这在装 Skill 之前几乎不可想象。五、一点补充dashboard 是 SPA项目列表要走 API顺带提一个实战中容易踩的认知坑。https://gitcode.com/dashboard是 Vue 单页应用服务端返回的 HTML 只有一个div idapp/div空壳约 3.5KB项目数据是前端登录后通过 AJAX 调 API 加载的。所以用 HTTP 客户端 GET dashboard 然后解析 HTML 提项目名这条路走不通。正确做法是调 GitCode API v5GET https://gitcode.com/api/v5/user/repos Header: private-token: 你的GitCode私有令牌返回 JSON 数组每个元素含name、html_url、description等字段解析后即可打印项目名称和地址。令牌在 GitCode → 设置 → 私有令牌生成。六、总结维度装 Skill 前装 Skill 后cjpm.toml生成字段常错反复编译改cjpm init骨架 按文档补字段一次过stdx HTTP/JSONclose/枚举比较/size 等坑连环踩查文档后写法正确编译一轮过智能体知识来源凭模型记忆瞎猜检索权威 Skill 文档有据可查一句安装命令npx skillsaddhttps://gitcode.com/Cangjie-SIG/CangjieSkills.git-acodearts-agent-y换来仓颉工程创建、编译、测试、stdx 高级库使用的全流程顺畅。对于用码道智能体做仓颉开发的同学这属于装了就回不去的必备增强。