chore(migration): 完成剩余来源迁移状态同步
This commit is contained in:
@@ -12,9 +12,9 @@ CraftKit 是一组面向 Codex 插件市场的中性 Skill 工具。项目从通
|
||||
|
||||
| 插件 | 用途 | 当前状态 |
|
||||
| --- | --- | --- |
|
||||
| `dev` | 软件设计、编码、审查与测试 | 已迁移 `component`、`style`、`form`、`plan-change`、`design-backend`、`design-frontend`、`prepare-api` |
|
||||
| `doc` | 文档转换、整理与写作 | 已迁移 `format-md`、`docx-to-md`、`md-to-docx`、`xlsx-to-md`、`archive` |
|
||||
| `git` | 分支、提交、变更提取与集成 | 已迁移 `commit-msg`、`branch`、`identity`、`export`、`integrate` |
|
||||
| `dev` | 软件设计、实现、审查、测试、升级与估算 | 已迁移 22 个 Skill,覆盖完整通用开发流程 |
|
||||
| `doc` | 文档转换、整理与写作 | 已迁移 8 个 Skill,新增报告、消息与需求整理 |
|
||||
| `git` | 分支、提交、变更提取、集成与发布 | 已迁移 6 个 Skill,发布操作按阶段分别授权 |
|
||||
| `knowledge` | 项目初始化、交接、复盘与经验 | 已迁移 `handoff`、`init`、`trace`、`distill`、`lessons`、`worklog` |
|
||||
| `skill` | 项目规范及 Skill 创建、迁移与维护 | 已迁移 `guidance`、`guidance-edit` |
|
||||
|
||||
|
||||
+123
-30
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"updatedAt": "2026-08-25",
|
||||
"updatedAt": "2026-08-26",
|
||||
"sources": {
|
||||
"source-a": {
|
||||
"commit": "31883f7e81c2bdb19505e591ba9db8a3d9fd4352",
|
||||
@@ -15,7 +15,10 @@
|
||||
"source-a:2c317f4ba8859f5e": {
|
||||
"sourcePathHash": "2c317f4ba8859f5e210c18e69e99e8e472d38d97e193c5f213508d4afb672c11",
|
||||
"sourceSha256": "ed08a64bf0f5004d43a9c09a40087aebec8f52323c5a47d8fc73f9f9aca9be0e",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/review-code",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-a:1b7843684955ce5a": {
|
||||
"sourcePathHash": "1b7843684955ce5a0beb3ef16c6e751c5e9eb5a17409084fed806b74ec0c522f",
|
||||
@@ -28,7 +31,10 @@
|
||||
"source-a:5d76364c580248a5": {
|
||||
"sourcePathHash": "5d76364c580248a54449e5ec7ede0079f19df21fef95922d3538fb82c095b181",
|
||||
"sourceSha256": "9a664d17f276b01311f661aa6e8fd40063708550c97cc3340246922194d8390b",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/implement-backend",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-a:a0b791b6dac96b81": {
|
||||
"sourcePathHash": "a0b791b6dac96b8180df558278b5c7ef643b4806cc4e534ffe6395b9236666d3",
|
||||
@@ -49,7 +55,10 @@
|
||||
"source-a:b80c5913e146321c": {
|
||||
"sourcePathHash": "b80c5913e146321ca5efef5e45f11172e79c542855c2ae65478fe253414e66ea",
|
||||
"sourceSha256": "5e33d979bb08fdcc47b2dee2e0d5cb39c24825b391f8bbf5606e57cbd4c2ef2c",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/implement-frontend",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-a:cd36505dd718e889": {
|
||||
"sourcePathHash": "cd36505dd718e88966ad74421c65e6c7cccd71a1436f2843eb8cfa7a4f1534c5",
|
||||
@@ -62,7 +71,10 @@
|
||||
"source-a:e14c1a3cd3b041f6": {
|
||||
"sourcePathHash": "e14c1a3cd3b041f650d71eb5701c71c0de76cb7a909e9a419f1d277159cd763a",
|
||||
"sourceSha256": "7780de4d979a6bafd1f5f503f08261858907f110acddb630dfab36d32e54c6a8",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "official:skill-creator",
|
||||
"reason": "Codex 官方 skill-creator 已覆盖通用 Skill 创建与更新能力",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-a:fdde0da43c1ec4c7": {
|
||||
"sourcePathHash": "fdde0da43c1ec4c7fddad96b9172435af6be96ceafa2cc824f70e04a3cf11085",
|
||||
@@ -90,17 +102,26 @@
|
||||
"source-a:bc91b57fa2a50049": {
|
||||
"sourcePathHash": "bc91b57fa2a500498b31b0f1a87dfa8ab83c32e4b361b4ea1614ea6721234b7c",
|
||||
"sourceSha256": "1436c7e25325c927d55d1dfc2a3117ec8e30845d66e06d2e6d7cc75abe4e0792",
|
||||
"status": "pending"
|
||||
"status": "excluded",
|
||||
"reason": "CraftKit 仅面向 Codex,不增加 Cursor 平台转换能力",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:3fb4282b0b034d52": {
|
||||
"sourcePathHash": "3fb4282b0b034d5286bccd9924c37bedbe857c4673798aa844f540fe0ee5186a",
|
||||
"sourceSha256": "196cd701c67d06fce4ee3b9894cbed95e6bc9101cc2089f83ae8f35b61a11332",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/git/skills/release",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:0dedfcd01cd89e28": {
|
||||
"sourcePathHash": "0dedfcd01cd89e28e83d841f78c270b1210399cc867fd3e1865c14acf1ea865a",
|
||||
"sourceSha256": "be6a694d4de9b8a792e19e1ed116e2fdd54d91731d9efcadfca1b0055a4a3145",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/dev/skills/implement-backend",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "后端实现能力已与另一来源合并并按项目证据中性重建",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:3f05784a0a86ba5f": {
|
||||
"sourcePathHash": "3f05784a0a86ba5fb8f268797ca1ceabe8ca237b3c9d3c4396e622c1ef421cc6",
|
||||
@@ -114,12 +135,19 @@
|
||||
"source-b:41934e94a1922a1b": {
|
||||
"sourcePathHash": "41934e94a1922a1bbccec4377246e67bd84f1ffbd2b9d1bf4027c1ed15d12260",
|
||||
"sourceSha256": "a0db48d88dab0537e061146edf6dbdeb4b7f8a935febd1556f798ef234b29e5b",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/test-backend",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:0cfb12fd60357a34": {
|
||||
"sourcePathHash": "0cfb12fd60357a346c8e0079536540fba81e406d58205098f1a5162c6ce7e9d1",
|
||||
"sourceSha256": "aa722e0dbcb613748b75bc2f5c81b8a97cbff07905b1fcee6d58cb176135fc08",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/dev/skills/review-code",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "代码检查能力已合并到统一代码审查入口",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:f171b05e239c2e2c": {
|
||||
"sourcePathHash": "f171b05e239c2e2c5f2a0c636dfac0c2456b9d3b5215fdaa7fb86a33be1ee188",
|
||||
@@ -133,7 +161,11 @@
|
||||
"source-b:3b29e4441f642e65": {
|
||||
"sourcePathHash": "3b29e4441f642e65d442fd284f37a45364cebb7a6c53446c354d15c70e532410",
|
||||
"sourceSha256": "d2689d3ac45070389473cb8cc414df44e82ad267915d8cd7c53c023f5b8f3696",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/dev/skills/implement-frontend",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "前端实现能力已与另一来源合并并按项目证据中性重建",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:f6ec7bd5501e6ea5": {
|
||||
"sourcePathHash": "f6ec7bd5501e6ea5f6e907a586a8d7cbe5fbbeebd3e5c8efead9b250742a148e",
|
||||
@@ -179,7 +211,10 @@
|
||||
"source-b:742ba3611bee4e34": {
|
||||
"sourcePathHash": "742ba3611bee4e34dfee6dadbe192dd8be677c4b9f49108e2f04d9e22dc8801f",
|
||||
"sourceSha256": "7582e333966b45ee2d145601831449d75c4f3159670c31df25e5d18e6a357bbe",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/test-ui",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:d6d4166800584a61": {
|
||||
"sourcePathHash": "d6d4166800584a61ad6cbf96af57bb8ee269a16babba753f267b48efd66f6d2d",
|
||||
@@ -208,17 +243,27 @@
|
||||
"source-b:34ab291ce3cfed2e": {
|
||||
"sourcePathHash": "34ab291ce3cfed2e69cc6f08309b1a41142be91235b9a573daf98639b4a001cc",
|
||||
"sourceSha256": "239d7efb1f9a53fc1b40f367954a6f6eaaf9d7a56cdf712128dcf393dc5a5067",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/design-api",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:3c8596a5d95de214": {
|
||||
"sourcePathHash": "3c8596a5d95de214d381b2f04898dd7042a266aa7889569981a97a1cf50045d1",
|
||||
"sourceSha256": "cc19258fcf63018ce2dac4d7253e23fbfb71596ee27235871ad78aae743b57e6",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/design-db",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:a388287911bc39cb": {
|
||||
"sourcePathHash": "a388287911bc39cb3f88824044426782df3c3e6450c4db9e4948c28a47dbf9f1",
|
||||
"sourceSha256": "20e13c3458f6af8d0b131f650f573eb824978438b52475a2f480a67c2f846cd6",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/skill/skills/guidance",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "框架约定改由通用规范检索结合项目真实依赖解析",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:ca08ee8839bccc15": {
|
||||
"sourcePathHash": "ca08ee8839bccc1504c253cdb9bfc09803ddf77f948605f8563d04e0466a2ce7",
|
||||
@@ -232,12 +277,18 @@
|
||||
"source-b:1b4cee54060ef399": {
|
||||
"sourcePathHash": "1b4cee54060ef3995d6c98e99dee3c3200ab2e90dd62136cef07b9b09e31364d",
|
||||
"sourceSha256": "24df169fbb18f39be5ec4046cc8d33535b1b86d2114673ee35d1a2a0324c1b25",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/review-frontend",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:7b7552c8c6e1b5f5": {
|
||||
"sourcePathHash": "7b7552c8c6e1b5f56a283db304272da8cd63210aaf7327231a7b26f3cf903082",
|
||||
"sourceSha256": "9c373fe6bb955d4431e92bba66239cb707a6179082a624b74bc77fa36663fc61",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/design-frontend-data",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:5f525e6aeda55dd8": {
|
||||
"sourcePathHash": "5f525e6aeda55dd81c26d38cf59097cb52abbcfc5b05e35fe7e8101a1a3353b5",
|
||||
@@ -250,22 +301,35 @@
|
||||
"source-b:f2079362cf82e719": {
|
||||
"sourcePathHash": "f2079362cf82e719e2dde6098c55ce984709a97446a7f66113f8b5f317f1f55b",
|
||||
"sourceSha256": "f57f3c0d5175c3c1700b74e8489d820eed4ef36d10e79ab14e096cb2a20a0cec",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/review-java",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:b78122ad4813e9ba": {
|
||||
"sourcePathHash": "b78122ad4813e9baef0ee5281bddb910b01fd89bdbbd2753011ac3deb52a8ce5",
|
||||
"sourceSha256": "c06d7eb2674dcbb4bad01a8c65c6d372dffd95c585a16ab2c3f1bba19df199e0",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/skill/skills/guidance",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "框架知识查询改由通用规范检索与项目源码证据完成",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:7fd143975b0071c3": {
|
||||
"sourcePathHash": "7fd143975b0071c3efa271a9ad19c3d7e422f64d3e23aa08d7a091c805cb9467",
|
||||
"sourceSha256": "33582dcda068247a5c56238134dad308d1f66b03abbfdc7bc282a9ac9ff918a2",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/review-mybatis",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:affd0805467646c1": {
|
||||
"sourcePathHash": "affd0805467646c1fcb4c196776e9cb610fcec721e1a44df3bc02f5c08b84aeb",
|
||||
"sourceSha256": "c7f565da3a1f412d3f15642fc9ad44733adee73c4d13cdebffaff1de4ca5652c",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/design-workflow",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:2a64acb63e8b2030": {
|
||||
"sourcePathHash": "2a64acb63e8b203031c4ef292f957c0fe0d3722e079dc9a299730015b9e3359c",
|
||||
@@ -368,22 +432,35 @@
|
||||
"source-b:258ee10299925494": {
|
||||
"sourcePathHash": "258ee1029992549420c8465c8de2d63c1bfaf9334b812d6b79a07a9823b49733",
|
||||
"sourceSha256": "b4958d4aee3c06b778273d87a07dd423cf15fc8fbfdde27e00552ff60138795e",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/analyze-bugs",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:52592d4a59314c74": {
|
||||
"sourcePathHash": "52592d4a59314c74de9b58cfb4cda6e9f5d9514bb05c9b586044c12754982d52",
|
||||
"sourceSha256": "e8be1b2c17ab3aaccbb5559a07b64da8a7c718293e83cb8dd685c87708c7cbdc",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/upgrade",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:f478193705d1d02d": {
|
||||
"sourcePathHash": "f478193705d1d02d6bb6375728dc10d34487e3f67ab8d164a80104f6a71fccdc",
|
||||
"sourceSha256": "218eb591d1944b2280853bbf39cb028f9a41e55dee01218838b14f87755fad72",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "official:browser-computer-use",
|
||||
"reason": "Codex 浏览器与计算机操作能力已覆盖宿主浏览器代理配置",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:e4b14f4b2719e28b": {
|
||||
"sourcePathHash": "e4b14f4b2719e28b409bc66980b3698588684dde81a0c627e862262e76c34b2f",
|
||||
"sourceSha256": "de185022a0cf8bfce340709f47052578ec761664c96723172c48bdd4f10e71f1",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/dev/skills/review-code",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "分支、提交与目录审查已合并到统一代码审查入口",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:aa42f7c1a045bb49": {
|
||||
"sourcePathHash": "aa42f7c1a045bb496bbc9e62beb7a7b74544153ed9551492f5b801ca4c9df098",
|
||||
@@ -404,12 +481,19 @@
|
||||
"source-b:9e3e75840a46af96": {
|
||||
"sourcePathHash": "9e3e75840a46af96c33a1885f192813239b511eb972a4962b30b76de7392c88c",
|
||||
"sourceSha256": "379c41e41d833880653ce065a63380e9cf29d2b7663f7ee91a3d77594202d042",
|
||||
"status": "pending"
|
||||
"status": "superseded",
|
||||
"target": "plugins/dev/skills/upgrade",
|
||||
"targetVersion": "0.1.0",
|
||||
"reason": "前后端升级合并为按真实版本与官方迁移资料执行的统一能力",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:766516f82e8e9be3": {
|
||||
"sourcePathHash": "766516f82e8e9be32e1ff3f29123202b6bad85bf9a88e36f87f256446ea31eaf",
|
||||
"sourceSha256": "c66ca1651923b20cd62395ba2cc6b8532093d5df10f420c1673a103a88dbf5aa",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/doc/skills/message",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:31dec2fa162b06d3": {
|
||||
"sourcePathHash": "31dec2fa162b06d379aa676d426d2de01c3b082061ff15adb7a8c721cd5635af",
|
||||
@@ -429,17 +513,26 @@
|
||||
"source-b:8a7cdf719d8f8a3e": {
|
||||
"sourcePathHash": "8a7cdf719d8f8a3e0200781a82062cc5a839e4d2c2fd400982771968245d62dd",
|
||||
"sourceSha256": "3461485ba35dceffc5fc0e9266793003a0355d412aa8a609c93709745226d00a",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/dev/skills/estimate",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:6e5eb2b9ab9273cf": {
|
||||
"sourcePathHash": "6e5eb2b9ab9273cf889bd908ff446eda59cc3e121ee7a1861fb2664d7fa049e9",
|
||||
"sourceSha256": "31eef261e6e3e930cd88b18c938176c3ef1d3e8d039986712ee6c3191481872d",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/doc/skills/report",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
},
|
||||
"source-b:a985b2c0fb927117": {
|
||||
"sourcePathHash": "a985b2c0fb9271174d9d46425eb6792d2483ebcd6da89ecc1cbfb61407259499",
|
||||
"sourceSha256": "e2f92df8dc489e79bfdd74de8817abf742f425422765c76c4a46263d1fbd7a9e",
|
||||
"status": "pending"
|
||||
"status": "migrated",
|
||||
"target": "plugins/doc/skills/requirements",
|
||||
"targetVersion": "0.1.0",
|
||||
"reviewedAt": "2026-08-26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
"""剩余来源连续迁移波次验收测试。"""
|
||||
|
||||
from pathlib import Path
|
||||
import json
|
||||
import unittest
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
DEV = ROOT / "plugins" / "dev" / "skills"
|
||||
DOC = ROOT / "plugins" / "doc" / "skills"
|
||||
GIT = ROOT / "plugins" / "git" / "skills"
|
||||
|
||||
TARGETS = {
|
||||
DEV: (
|
||||
"design-api", "design-db", "review-java", "review-frontend",
|
||||
"design-frontend-data", "review-mybatis", "design-workflow",
|
||||
"implement-backend", "implement-frontend", "review-code",
|
||||
"test-backend", "test-ui", "analyze-bugs", "upgrade", "estimate",
|
||||
),
|
||||
DOC: ("report", "message", "requirements"),
|
||||
GIT: ("release",),
|
||||
}
|
||||
|
||||
|
||||
class RemainingWaveTest(unittest.TestCase):
|
||||
"""验证目标完整性、操作边界和来源状态闭合。"""
|
||||
|
||||
def read_skill(self, root: Path, name: str) -> str:
|
||||
return (root / name / "SKILL.md").read_text(encoding="utf-8")
|
||||
|
||||
def test_all_targets_have_skill_and_ui_metadata(self) -> None:
|
||||
names = []
|
||||
for root, targets in TARGETS.items():
|
||||
for name in targets:
|
||||
names.append(name)
|
||||
self.assertTrue((root / name / "SKILL.md").is_file(), name)
|
||||
self.assertTrue((root / name / "agents" / "openai.yaml").is_file(), name)
|
||||
self.assertEqual(19, len(names))
|
||||
self.assertEqual(len(names), len(set(names)))
|
||||
|
||||
def test_implementation_preserves_workspace_and_authorization(self) -> None:
|
||||
content = "\n".join(
|
||||
self.read_skill(DEV, name)
|
||||
for name in ("implement-backend", "implement-frontend")
|
||||
)
|
||||
self.assertIn("保留用户已有改动", content)
|
||||
self.assertIn("精确版本", content)
|
||||
self.assertIn("不自动暂存", content)
|
||||
self.assertIn("环境配置", content)
|
||||
|
||||
def test_review_and_test_results_are_separated(self) -> None:
|
||||
review = self.read_skill(DEV, "review-code")
|
||||
backend = self.read_skill(DEV, "test-backend")
|
||||
ui = self.read_skill(DEV, "test-ui")
|
||||
self.assertIn("只读", review)
|
||||
self.assertIn("不启动完整应用", backend)
|
||||
self.assertIn("授权后", ui)
|
||||
self.assertIn("不能替代浏览器结果", ui)
|
||||
|
||||
def test_delivery_actions_are_independently_authorized(self) -> None:
|
||||
upgrade = self.read_skill(DEV, "upgrade")
|
||||
estimate = self.read_skill(DEV, "estimate")
|
||||
release = self.read_skill(GIT, "release")
|
||||
self.assertIn("源版本", upgrade)
|
||||
self.assertIn("目标版本", upgrade)
|
||||
self.assertIn("区间", estimate)
|
||||
self.assertIn("假设", estimate)
|
||||
self.assertIn("分阶段授权", release)
|
||||
|
||||
def test_writing_skills_do_not_send_or_invent(self) -> None:
|
||||
content = "\n".join(self.read_skill(DOC, name) for name in TARGETS[DOC])
|
||||
self.assertIn("不得虚构", content)
|
||||
self.assertIn("默认只生成草稿", content)
|
||||
|
||||
def test_source_lock_has_no_pending_items(self) -> None:
|
||||
data = json.loads((ROOT / "migration" / "source-lock.json").read_text(encoding="utf-8"))
|
||||
skills = data["skills"]
|
||||
self.assertEqual(64, len(skills))
|
||||
self.assertNotIn("pending", {item["status"] for item in skills.values()})
|
||||
self.assertEqual(
|
||||
{"migrated", "superseded", "excluded"},
|
||||
{item["status"] for item in skills.values()},
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "dev",
|
||||
"version": "0.3.0",
|
||||
"version": "0.4.0",
|
||||
"description": "通用软件设计、编码、审查与测试工作流。",
|
||||
"author": {
|
||||
"name": "CraftKit"
|
||||
@@ -9,7 +9,7 @@
|
||||
"interface": {
|
||||
"displayName": "Dev",
|
||||
"shortDescription": "软件设计、编码、审查与测试工具",
|
||||
"longDescription": "提供不绑定公司框架的组件选型、样式设计、表单设计及软件开发工作流。",
|
||||
"longDescription": "提供不绑定公司框架的设计、实现、审查、测试、升级与估算工作流。",
|
||||
"developerName": "CraftKit",
|
||||
"category": "Productivity",
|
||||
"capabilities": ["Read", "Write"],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "doc",
|
||||
"version": "0.2.0",
|
||||
"version": "0.3.0",
|
||||
"description": "通用文档转换、表格提取、规则化归档与写作工具。",
|
||||
"author": {
|
||||
"name": "CraftKit"
|
||||
@@ -9,7 +9,7 @@
|
||||
"interface": {
|
||||
"displayName": "Doc",
|
||||
"shortDescription": "文档转换、整理与写作工具",
|
||||
"longDescription": "提供 Markdown、Word、Excel、规则化归档及结构化写作相关的通用工作流。",
|
||||
"longDescription": "提供 Markdown、Word、Excel、规则化归档、报告、消息及需求整理工作流。",
|
||||
"developerName": "CraftKit",
|
||||
"category": "Productivity",
|
||||
"capabilities": ["Read", "Write"],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "git",
|
||||
"version": "0.3.0",
|
||||
"version": "0.4.0",
|
||||
"description": "安全、可复核的通用 Git 工作流。",
|
||||
"author": {
|
||||
"name": "CraftKit"
|
||||
@@ -9,7 +9,7 @@
|
||||
"interface": {
|
||||
"displayName": "Git",
|
||||
"shortDescription": "安全、可复核的 Git 工具",
|
||||
"longDescription": "提供分支创建、提交信息、身份配置、变更导出和隔离集成相关的安全 Git 工作流。",
|
||||
"longDescription": "提供分支、提交信息、身份配置、变更导出、隔离集成和分阶段授权发布工作流。",
|
||||
"developerName": "CraftKit",
|
||||
"category": "Productivity",
|
||||
"capabilities": ["Read", "Write"],
|
||||
|
||||
Reference in New Issue
Block a user