release-skill 0.5.0 → 0.6.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +31 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +13 -21
- package/README.zh-CN.md +14 -22
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/error-codes.json +1 -1
- package/adapters/claude/bin/kernel-protocol.json +1 -1
- package/adapters/claude/bin/registry.json +15 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +38147 -23284
- package/adapters/claude/bin/rules.json +1 -1
- package/adapters/claude/schemas/.render-manifest.json +6 -6
- package/adapters/claude/schemas/release-plan.schema.json +401 -2
- package/adapters/claude/schemas/release-project.schema.json +291 -0
- package/adapters/claude/schemas/release-run.schema.json +59 -6
- package/adapters/claude/skills/release-config/SKILL.md +140 -0
- package/adapters/claude/skills/release-docs/SKILL.md +106 -0
- package/adapters/claude/skills/release-help/SKILL.md +39 -0
- package/adapters/claude/skills/release-marketplace/SKILL.md +147 -0
- package/adapters/claude/skills/release-publish/SKILL.md +25 -6
- package/adapters/claude/skills/release-verify/SKILL.md +10 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/error-codes.json +1 -1
- package/adapters/codex/bin/kernel-protocol.json +1 -1
- package/adapters/codex/bin/registry.json +15 -1
- package/adapters/codex/bin/release-skill.bundle.mjs +38147 -23284
- package/adapters/codex/bin/rules.json +1 -1
- package/adapters/codex/schemas/.render-manifest.json +6 -6
- package/adapters/codex/schemas/release-plan.schema.json +401 -2
- package/adapters/codex/schemas/release-project.schema.json +291 -0
- package/adapters/codex/schemas/release-run.schema.json +59 -6
- package/adapters/codex/skills/release-config/SKILL.md +147 -0
- package/adapters/codex/skills/release-docs/SKILL.md +113 -0
- package/adapters/codex/skills/release-help/SKILL.md +39 -0
- package/adapters/codex/skills/release-marketplace/SKILL.md +154 -0
- package/adapters/codex/skills/release-publish/SKILL.md +25 -6
- package/adapters/codex/skills/release-verify/SKILL.md +10 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/error-codes.json +1 -1
- package/adapters/kimi/bin/kernel-protocol.json +1 -1
- package/adapters/kimi/bin/registry.json +15 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +38147 -23284
- package/adapters/kimi/bin/rules.json +1 -1
- package/adapters/kimi/schemas/.render-manifest.json +6 -6
- package/adapters/kimi/schemas/release-plan.schema.json +401 -2
- package/adapters/kimi/schemas/release-project.schema.json +291 -0
- package/adapters/kimi/schemas/release-run.schema.json +59 -6
- package/adapters/kimi/skills/release-config/SKILL.md +147 -0
- package/adapters/kimi/skills/release-docs/SKILL.md +113 -0
- package/adapters/kimi/skills/release-help/SKILL.md +39 -0
- package/adapters/kimi/skills/release-marketplace/SKILL.md +154 -0
- package/adapters/kimi/skills/release-publish/SKILL.md +25 -6
- package/adapters/kimi/skills/release-verify/SKILL.md +10 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/error-codes.json +1 -1
- package/adapters/workbuddy/bin/kernel-protocol.json +1 -1
- package/adapters/workbuddy/bin/registry.json +15 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +38147 -23284
- package/adapters/workbuddy/bin/rules.json +1 -1
- package/adapters/workbuddy/schemas/.render-manifest.json +6 -6
- package/adapters/workbuddy/schemas/release-plan.schema.json +401 -2
- package/adapters/workbuddy/schemas/release-project.schema.json +291 -0
- package/adapters/workbuddy/schemas/release-run.schema.json +59 -6
- package/adapters/workbuddy/skills/release-config/SKILL.md +140 -0
- package/adapters/workbuddy/skills/release-docs/SKILL.md +106 -0
- package/adapters/workbuddy/skills/release-help/SKILL.md +39 -0
- package/adapters/workbuddy/skills/release-marketplace/SKILL.md +147 -0
- package/adapters/workbuddy/skills/release-publish/SKILL.md +25 -6
- package/adapters/workbuddy/skills/release-verify/SKILL.md +10 -0
- package/bin/error-codes.json +1 -1
- package/bin/kernel-protocol.json +1 -1
- package/bin/registry.json +15 -1
- package/bin/release-skill-cli.mjs +235 -7
- package/bin/release-skill.bundle.mjs +38147 -23284
- package/bin/rules.json +1 -1
- package/package.json +5 -4
- package/platform-manifest.json +359 -0
- package/references/.render-manifest.json +9 -9
- package/references/02-project-config.md +35 -0
- package/references/05-evidence-and-errors.md +44 -0
- package/references/06-adapter-contract.md +13 -0
- package/schemas/.render-manifest.json +6 -6
- package/schemas/release-plan.schema.json +401 -2
- package/schemas/release-project.schema.json +291 -0
- package/schemas/release-run.schema.json +59 -6
- package/skills/release-config/SKILL.md +140 -0
- package/skills/release-docs/SKILL.md +106 -0
- package/skills/release-help/SKILL.md +39 -0
- package/skills/release-marketplace/SKILL.md +147 -0
- package/skills/release-publish/SKILL.md +25 -6
- package/skills/release-verify/SKILL.md +10 -0
- package/skills-src/release-config/SKILL.md +140 -0
- package/skills-src/release-docs/SKILL.md +106 -0
- package/skills-src/release-help/SKILL.md +39 -0
- package/skills-src/release-marketplace/SKILL.md +147 -0
- package/skills-src/release-publish/SKILL.md +25 -6
- package/skills-src/release-verify/SKILL.md +10 -0
- package/src/adapters/contract.mjs +5 -0
- package/src/adapters/distribute-git.mjs +625 -0
- package/src/adapters/plugin-marketplace.mjs +48 -4
- package/src/adapters/push-snapshot.mjs +12 -4
- package/src/commands/assess.mjs +171 -0
- package/src/commands/distribute.mjs +1078 -0
- package/src/commands/hooks.mjs +6 -1
- package/src/commands/lineage.mjs +616 -0
- package/src/commands/prepare.mjs +413 -72
- package/src/commands/route.mjs +686 -0
- package/src/commands/ship.mjs +45 -1
- package/src/commands/verify.mjs +176 -0
- package/src/core/baseline-advance.mjs +185 -0
- package/src/core/baseline.mjs +11 -1
- package/src/core/checkpoints.mjs +25 -0
- package/src/core/foundation-inflight.mjs +7 -0
- package/src/core/plan.mjs +12 -2
- package/src/core/postpublish.mjs +315 -0
|
@@ -613,6 +613,9 @@
|
|
|
613
613
|
},
|
|
614
614
|
"releaseDocuments": {
|
|
615
615
|
"$ref": "#/definitions/releaseDocuments"
|
|
616
|
+
},
|
|
617
|
+
"postPublish": {
|
|
618
|
+
"$ref": "#/definitions/postPublish"
|
|
616
619
|
}
|
|
617
620
|
},
|
|
618
621
|
"allOf": [
|
|
@@ -873,6 +876,294 @@
|
|
|
873
876
|
}
|
|
874
877
|
}
|
|
875
878
|
},
|
|
879
|
+
"postPublish": {
|
|
880
|
+
"type": "object",
|
|
881
|
+
"description": "发布后分发声明:materialize 钩子从冻结 tag 工作树物化载荷,targets 将载荷镜像或渲染市场索引推送到独立 git 远端。分发在 publish 之后由 distribute 命令执行,时序契约禁止读取工作区状态。",
|
|
882
|
+
"required": [
|
|
883
|
+
"materialize",
|
|
884
|
+
"targets",
|
|
885
|
+
"commitIdentity"
|
|
886
|
+
],
|
|
887
|
+
"additionalProperties": false,
|
|
888
|
+
"properties": {
|
|
889
|
+
"materialize": {
|
|
890
|
+
"$ref": "#/definitions/postPublishMaterialize"
|
|
891
|
+
},
|
|
892
|
+
"targets": {
|
|
893
|
+
"type": "array",
|
|
894
|
+
"minItems": 1,
|
|
895
|
+
"items": {
|
|
896
|
+
"$ref": "#/definitions/postPublishTarget"
|
|
897
|
+
}
|
|
898
|
+
},
|
|
899
|
+
"commitIdentity": {
|
|
900
|
+
"type": "object",
|
|
901
|
+
"description": "分发仓库提交者身份(bot 身份),通过 git -c user.name/-c user.email 注入,绝不读取或修改全局 git 配置",
|
|
902
|
+
"required": [
|
|
903
|
+
"name",
|
|
904
|
+
"email"
|
|
905
|
+
],
|
|
906
|
+
"additionalProperties": false,
|
|
907
|
+
"properties": {
|
|
908
|
+
"name": {
|
|
909
|
+
"type": "string",
|
|
910
|
+
"minLength": 1
|
|
911
|
+
},
|
|
912
|
+
"email": {
|
|
913
|
+
"type": "string",
|
|
914
|
+
"minLength": 1
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
"steps": {
|
|
919
|
+
"type": "array",
|
|
920
|
+
"description": "物化之后、推送之前按序执行的只读检查步骤;任一步失败即 fail-closed",
|
|
921
|
+
"items": {
|
|
922
|
+
"$ref": "#/definitions/postPublishStep"
|
|
923
|
+
}
|
|
924
|
+
},
|
|
925
|
+
"assertMainVersionAhead": {
|
|
926
|
+
"type": "boolean",
|
|
927
|
+
"description": "分发前校验主干版本源仍领先于目标版本,防止在已推进的主干上分发旧版本"
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
},
|
|
931
|
+
"postPublishMaterialize": {
|
|
932
|
+
"type": "object",
|
|
933
|
+
"description": "载荷物化钩子:executable+参数数组(禁止 shell 字符串),stdout 中 outputMarker 行之后为载荷目录路径;可选 requireReport 对 stdout 首个 JSON 对象做字段断言",
|
|
934
|
+
"required": [
|
|
935
|
+
"command",
|
|
936
|
+
"outputMarker"
|
|
937
|
+
],
|
|
938
|
+
"additionalProperties": false,
|
|
939
|
+
"properties": {
|
|
940
|
+
"command": {
|
|
941
|
+
"type": "array",
|
|
942
|
+
"minItems": 1,
|
|
943
|
+
"items": {
|
|
944
|
+
"type": "string"
|
|
945
|
+
}
|
|
946
|
+
},
|
|
947
|
+
"cwd": {
|
|
948
|
+
"type": "string",
|
|
949
|
+
"pattern": "^(?:\\.$|(?!\\/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(?:\\/|$))(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/\\/$)(?!.*\\/$).*)$"
|
|
950
|
+
},
|
|
951
|
+
"timeoutMs": {
|
|
952
|
+
"type": "integer",
|
|
953
|
+
"minimum": 1000,
|
|
954
|
+
"maximum": 7200000
|
|
955
|
+
},
|
|
956
|
+
"envAllowlist": {
|
|
957
|
+
"type": "array",
|
|
958
|
+
"items": {
|
|
959
|
+
"type": "string",
|
|
960
|
+
"pattern": "^(?!.*(?:TOKEN|SECRET|PASSWORD|PASSPHRASE|API_KEY|CREDENTIAL))[A-Z_][A-Z0-9_]*$"
|
|
961
|
+
},
|
|
962
|
+
"uniqueItems": true
|
|
963
|
+
},
|
|
964
|
+
"outputMarker": {
|
|
965
|
+
"type": "string",
|
|
966
|
+
"minLength": 1,
|
|
967
|
+
"description": "stdout 中标识载荷目录路径的前缀标记(如 \"isolated dir kept: \")"
|
|
968
|
+
},
|
|
969
|
+
"requireReport": {
|
|
970
|
+
"type": "object",
|
|
971
|
+
"required": [
|
|
972
|
+
"parse"
|
|
973
|
+
],
|
|
974
|
+
"additionalProperties": false,
|
|
975
|
+
"properties": {
|
|
976
|
+
"parse": {
|
|
977
|
+
"const": "stdout-first-json",
|
|
978
|
+
"description": "解析 stdout 中第一个完整 JSON 对象作为报告"
|
|
979
|
+
},
|
|
980
|
+
"equals": {
|
|
981
|
+
"type": "object",
|
|
982
|
+
"description": "报告字段等值断言;任一字段缺失或不等即 fail-closed"
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
},
|
|
988
|
+
"postPublishStep": {
|
|
989
|
+
"type": "object",
|
|
990
|
+
"description": "物化后按序执行的检查步骤;executable+参数数组(禁止 shell 字符串)",
|
|
991
|
+
"required": [
|
|
992
|
+
"name",
|
|
993
|
+
"command"
|
|
994
|
+
],
|
|
995
|
+
"additionalProperties": false,
|
|
996
|
+
"properties": {
|
|
997
|
+
"name": {
|
|
998
|
+
"type": "string",
|
|
999
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$"
|
|
1000
|
+
},
|
|
1001
|
+
"command": {
|
|
1002
|
+
"type": "array",
|
|
1003
|
+
"minItems": 1,
|
|
1004
|
+
"items": {
|
|
1005
|
+
"type": "string"
|
|
1006
|
+
}
|
|
1007
|
+
},
|
|
1008
|
+
"cwd": {
|
|
1009
|
+
"type": "string",
|
|
1010
|
+
"pattern": "^(?:\\.$|(?!\\/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(?:\\/|$))(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/\\/$)(?!.*\\/$).*)$"
|
|
1011
|
+
},
|
|
1012
|
+
"timeoutMs": {
|
|
1013
|
+
"type": "integer",
|
|
1014
|
+
"minimum": 1000,
|
|
1015
|
+
"maximum": 7200000
|
|
1016
|
+
},
|
|
1017
|
+
"envAllowlist": {
|
|
1018
|
+
"type": "array",
|
|
1019
|
+
"items": {
|
|
1020
|
+
"type": "string",
|
|
1021
|
+
"pattern": "^(?!.*(?:TOKEN|SECRET|PASSWORD|PASSPHRASE|API_KEY|CREDENTIAL))[A-Z_][A-Z0-9_]*$"
|
|
1022
|
+
},
|
|
1023
|
+
"uniqueItems": true
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
},
|
|
1027
|
+
"postPublishTarget": {
|
|
1028
|
+
"type": "object",
|
|
1029
|
+
"description": "分发目标 git 远端:payload-mirror 镜像载荷,marketplace-index 渲染市场索引清单;dependsOn 语义(引用、无环)在运行时 fail-closed 校验",
|
|
1030
|
+
"required": [
|
|
1031
|
+
"id",
|
|
1032
|
+
"kind",
|
|
1033
|
+
"remoteUrl",
|
|
1034
|
+
"visibility",
|
|
1035
|
+
"branch"
|
|
1036
|
+
],
|
|
1037
|
+
"additionalProperties": false,
|
|
1038
|
+
"properties": {
|
|
1039
|
+
"id": {
|
|
1040
|
+
"type": "string",
|
|
1041
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$"
|
|
1042
|
+
},
|
|
1043
|
+
"kind": {
|
|
1044
|
+
"type": "string",
|
|
1045
|
+
"enum": [
|
|
1046
|
+
"payload-mirror",
|
|
1047
|
+
"marketplace-index"
|
|
1048
|
+
]
|
|
1049
|
+
},
|
|
1050
|
+
"remoteUrl": {
|
|
1051
|
+
"type": "string",
|
|
1052
|
+
"pattern": "^(?:https?|file)://.+\\.git$",
|
|
1053
|
+
"description": "仅允许 http(s) 或 file(测试传输)且以 .git 结尾的远端 URL"
|
|
1054
|
+
},
|
|
1055
|
+
"visibility": {
|
|
1056
|
+
"type": "string",
|
|
1057
|
+
"enum": [
|
|
1058
|
+
"internal",
|
|
1059
|
+
"public"
|
|
1060
|
+
]
|
|
1061
|
+
},
|
|
1062
|
+
"branch": {
|
|
1063
|
+
"type": "string",
|
|
1064
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._/-]*$"
|
|
1065
|
+
},
|
|
1066
|
+
"dependsOn": {
|
|
1067
|
+
"type": "string",
|
|
1068
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$",
|
|
1069
|
+
"description": "消费另一目标(须为 payload-mirror)推送后的 commit sha;运行时校验引用存在且无环"
|
|
1070
|
+
},
|
|
1071
|
+
"marketplace": {
|
|
1072
|
+
"type": "object",
|
|
1073
|
+
"description": "marketplace-index 目标必填:渲染 .claude-plugin/marketplace.json 所用的市场元数据",
|
|
1074
|
+
"required": [
|
|
1075
|
+
"form",
|
|
1076
|
+
"name",
|
|
1077
|
+
"owner"
|
|
1078
|
+
],
|
|
1079
|
+
"additionalProperties": false,
|
|
1080
|
+
"properties": {
|
|
1081
|
+
"form": {
|
|
1082
|
+
"type": "string",
|
|
1083
|
+
"enum": [
|
|
1084
|
+
"github",
|
|
1085
|
+
"url"
|
|
1086
|
+
]
|
|
1087
|
+
},
|
|
1088
|
+
"name": {
|
|
1089
|
+
"type": "string",
|
|
1090
|
+
"minLength": 1
|
|
1091
|
+
},
|
|
1092
|
+
"owner": {
|
|
1093
|
+
"type": "string",
|
|
1094
|
+
"minLength": 1
|
|
1095
|
+
},
|
|
1096
|
+
"sourceRepo": {
|
|
1097
|
+
"type": "string",
|
|
1098
|
+
"pattern": "^[a-zA-Z0-9._-]+/[a-zA-Z0-9._-]+$",
|
|
1099
|
+
"description": "可选 owner/repo;github form 缺省时以 owner/name 组装"
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
},
|
|
1103
|
+
"staticFiles": {
|
|
1104
|
+
"type": "array",
|
|
1105
|
+
"description": "随目标一起写入的静态文件(from 为源仓库相对路径,to 为目标仓库相对路径)",
|
|
1106
|
+
"items": {
|
|
1107
|
+
"type": "object",
|
|
1108
|
+
"required": [
|
|
1109
|
+
"from",
|
|
1110
|
+
"to"
|
|
1111
|
+
],
|
|
1112
|
+
"additionalProperties": false,
|
|
1113
|
+
"properties": {
|
|
1114
|
+
"from": {
|
|
1115
|
+
"type": "string",
|
|
1116
|
+
"minLength": 1,
|
|
1117
|
+
"pattern": "^(?!/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(/|$))(?!\\.$)(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/$).*$"
|
|
1118
|
+
},
|
|
1119
|
+
"to": {
|
|
1120
|
+
"type": "string",
|
|
1121
|
+
"minLength": 1,
|
|
1122
|
+
"pattern": "^(?!/)(?!\\.\\/)(?!.*\\\\)(?!.*:)(?!\\.\\.(/|$))(?!\\.$)(?!.*\\/\\.\\.\\/)(?!.*\\/\\.\\.$)(?!.*\\/\\.\\/)(?!.*\\/\\/)(?!.*\\0)(?!.*\\/\\.$)(?!.*\\/$).*$"
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
},
|
|
1128
|
+
"allOf": [
|
|
1129
|
+
{
|
|
1130
|
+
"if": {
|
|
1131
|
+
"properties": {
|
|
1132
|
+
"kind": {
|
|
1133
|
+
"const": "marketplace-index"
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
"required": [
|
|
1137
|
+
"kind"
|
|
1138
|
+
]
|
|
1139
|
+
},
|
|
1140
|
+
"then": {
|
|
1141
|
+
"required": [
|
|
1142
|
+
"marketplace"
|
|
1143
|
+
]
|
|
1144
|
+
}
|
|
1145
|
+
},
|
|
1146
|
+
{
|
|
1147
|
+
"if": {
|
|
1148
|
+
"properties": {
|
|
1149
|
+
"kind": {
|
|
1150
|
+
"const": "payload-mirror"
|
|
1151
|
+
}
|
|
1152
|
+
},
|
|
1153
|
+
"required": [
|
|
1154
|
+
"kind"
|
|
1155
|
+
]
|
|
1156
|
+
},
|
|
1157
|
+
"then": {
|
|
1158
|
+
"not": {
|
|
1159
|
+
"required": [
|
|
1160
|
+
"marketplace"
|
|
1161
|
+
]
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
876
1167
|
"releaseDocuments": {
|
|
877
1168
|
"type": "object",
|
|
878
1169
|
"description": "Optional configuration-driven multilingual release-document refresh for one release unit. Absence preserves legacy behaviour. Lexical layer only; runtime path, locale-membership and collision checks apply additionally.",
|
|
@@ -41,7 +41,9 @@
|
|
|
41
41
|
"PUBLISHED",
|
|
42
42
|
"VERIFIED",
|
|
43
43
|
"PARTIAL",
|
|
44
|
-
"BLOCKED"
|
|
44
|
+
"BLOCKED",
|
|
45
|
+
"DISTRIBUTING",
|
|
46
|
+
"DISTRIBUTED"
|
|
45
47
|
],
|
|
46
48
|
"description": "Current status of the run"
|
|
47
49
|
},
|
|
@@ -52,7 +54,8 @@
|
|
|
52
54
|
"prepare",
|
|
53
55
|
"publish",
|
|
54
56
|
"reconcile",
|
|
55
|
-
"verify"
|
|
57
|
+
"verify",
|
|
58
|
+
"distribute"
|
|
56
59
|
],
|
|
57
60
|
"description": "The command that initiated this run"
|
|
58
61
|
},
|
|
@@ -128,7 +131,9 @@
|
|
|
128
131
|
"codex-marketplace-install",
|
|
129
132
|
"kimi-marketplace-install",
|
|
130
133
|
"codebuddy-marketplace-install",
|
|
131
|
-
"set-default-branch"
|
|
134
|
+
"set-default-branch",
|
|
135
|
+
"distribute-probe",
|
|
136
|
+
"distribute-mirror"
|
|
132
137
|
],
|
|
133
138
|
"description": "Type of external action"
|
|
134
139
|
},
|
|
@@ -143,9 +148,10 @@
|
|
|
143
148
|
"deferred",
|
|
144
149
|
"PASSED_AUTOMATIC",
|
|
145
150
|
"PASSED_MANUAL",
|
|
146
|
-
"NOT_REQUIRED_UNCHANGED"
|
|
151
|
+
"NOT_REQUIRED_UNCHANGED",
|
|
152
|
+
"NO_CHANGE"
|
|
147
153
|
],
|
|
148
|
-
"description": "Result status of this checkpoint (uncertain = started, result unknown; deferred = marketplace action postponed to verify phase; PASSED_AUTOMATIC/PASSED_MANUAL/NOT_REQUIRED_UNCHANGED
|
|
154
|
+
"description": "Result status of this checkpoint (uncertain = started, result unknown; deferred = marketplace action postponed to verify phase; PASSED_AUTOMATIC/PASSED_MANUAL/NOT_REQUIRED_UNCHANGED 为验证阶段专用状态; NO_CHANGE = distribute 目标暂存差异为空,未产生 commit/tag/push)"
|
|
149
155
|
},
|
|
150
156
|
"preObserve": {
|
|
151
157
|
"type": "string",
|
|
@@ -206,6 +212,7 @@
|
|
|
206
212
|
"GATE_FAILED",
|
|
207
213
|
"AUTH_MISSING",
|
|
208
214
|
"REMOTE_CONFLICT",
|
|
215
|
+
"REMOTE_UNAVAILABLE",
|
|
209
216
|
"HOOK_TIMEOUT",
|
|
210
217
|
"PARTIAL_RELEASE",
|
|
211
218
|
"POST_PUBLISH_VERIFY_FAILED"
|
|
@@ -223,6 +230,51 @@
|
|
|
223
230
|
"phase": {
|
|
224
231
|
"type": "string",
|
|
225
232
|
"description": "Phase identifier for deferred checkpoints (e.g. post-publish-verification)"
|
|
233
|
+
},
|
|
234
|
+
"remoteUrl": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"description": "distribute 目标远端 URL"
|
|
237
|
+
},
|
|
238
|
+
"branch": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"description": "distribute 目标分支"
|
|
241
|
+
},
|
|
242
|
+
"tag": {
|
|
243
|
+
"type": "string",
|
|
244
|
+
"description": "distribute 分发 tag"
|
|
245
|
+
},
|
|
246
|
+
"tagCommit": {
|
|
247
|
+
"type": "string",
|
|
248
|
+
"pattern": "^[a-f0-9]{40}$",
|
|
249
|
+
"description": "冻结的 create-tag 预期 commit"
|
|
250
|
+
},
|
|
251
|
+
"previousHead": {
|
|
252
|
+
"type": "string",
|
|
253
|
+
"pattern": "^[a-f0-9]{40}$",
|
|
254
|
+
"description": "执行前目标分支 tip"
|
|
255
|
+
},
|
|
256
|
+
"pushedCommit": {
|
|
257
|
+
"type": "string",
|
|
258
|
+
"pattern": "^[a-f0-9]{40}$",
|
|
259
|
+
"description": "实际推送的 commit(与 ls-remote 交叉核对)"
|
|
260
|
+
},
|
|
261
|
+
"mode": {
|
|
262
|
+
"type": "string",
|
|
263
|
+
"enum": [
|
|
264
|
+
"pushed",
|
|
265
|
+
"no-change",
|
|
266
|
+
"dry-run"
|
|
267
|
+
],
|
|
268
|
+
"description": "distribute 执行模式"
|
|
269
|
+
},
|
|
270
|
+
"executor": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"description": "执行者标识"
|
|
273
|
+
},
|
|
274
|
+
"payloadFileCount": {
|
|
275
|
+
"type": "integer",
|
|
276
|
+
"minimum": 0,
|
|
277
|
+
"description": "写入目标的载荷文件数"
|
|
226
278
|
}
|
|
227
279
|
}
|
|
228
280
|
}
|
|
@@ -568,7 +620,8 @@
|
|
|
568
620
|
"command": {
|
|
569
621
|
"enum": [
|
|
570
622
|
"reconcile",
|
|
571
|
-
"verify"
|
|
623
|
+
"verify",
|
|
624
|
+
"distribute"
|
|
572
625
|
]
|
|
573
626
|
}
|
|
574
627
|
},
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-config
|
|
3
|
+
description: "Config-only workflow profile: route confirms config-only diff, assess with schema validation, prepare --workflow config (code-class gates trimmed), workflowDecision records publish path (public bytes unchanged → no publish path; changed → lightchain prepare→approve→publish→verify)"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Codex 安装入口解析协议**:在调用 CLI 前,Agent 必须从宿主当前已加载技能的元数据中取得本 `SKILL.md` 的实际绝对路径,并将该字面量记为 `SKILL_FILE`。
|
|
7
|
+
> `SKILL_FILE` 不是环境变量;禁止从工作目录、可执行搜索路径、源码仓库或 shell 调用上下文猜测。若宿主未提供该绝对路径,立即停止并报告安装定位失败。
|
|
8
|
+
> 对 `SKILL_FILE` 执行 `realpath`,取其目录向上两级得到 `PLUGIN_ROOT`;校验真实技能路径匹配 `PLUGIN_ROOT/skills/*/SKILL.md`。
|
|
9
|
+
> 令 `RELEASE_SKILL_ENTRY=PLUGIN_ROOT/bin/release-skill.mjs`,对入口执行 `realpath` containment、`lstat` 非符号链接且为普通文件校验。
|
|
10
|
+
> 每一次 shell 工具调用都必须在同一个调用中用上述已验证绝对值设置 `RELEASE_SKILL_ENTRY`,然后执行 `node "$RELEASE_SKILL_ENTRY" ...`;不得依赖前一次 shell 的变量。
|
|
11
|
+
>
|
|
12
|
+
|
|
13
|
+
# release-config
|
|
14
|
+
|
|
15
|
+
## 触发
|
|
16
|
+
|
|
17
|
+
用户询问或执行纯配置变更的发布流程。包含 `.release-skill/project.yaml`、配置 schema 等配置文件的修改,且无代码、文档或 marketplace 变更。
|
|
18
|
+
|
|
19
|
+
## 当前状态
|
|
20
|
+
|
|
21
|
+
`release-config` 是工作流配置文件 (§4) 定义的独立工作流之一,专门处理仅配置变更的场景。它遵循简化生命周期,专注于配置验证和发布路径决策分支。
|
|
22
|
+
|
|
23
|
+
**机械实现**: `prepare --workflow config` 确定性地裁剪代码类门禁(H5),并比较当前
|
|
24
|
+
per-unit `snapshotDigest` 与最新冻结 plan——公开字节未变 → `publishPath:
|
|
25
|
+
'no-publish-needed'`(externalActions 被移除,无 publish 路径);字节变化或无对比
|
|
26
|
+
plan → `publishPath: 'publish-needed'`(fail-safe)。决策以 `workflowDecision` 绑定
|
|
27
|
+
进 plan digest,不可篡改。**不存在** `NO_PUBLISH_NEEDED`/`REPORTED` 虚构状态:
|
|
28
|
+
prepare 的真实输出是 plan 内的 `workflowDecision`。
|
|
29
|
+
|
|
30
|
+
**边界**: 跳过代码类 gates(declared hooks、snapshot-verify gates、source-authority
|
|
31
|
+
closure、skill-resource-closure)。保留 baseline/snapshots/plan freeze/docs
|
|
32
|
+
freshness。consumer-verify 仅在触发生效发布时参与。
|
|
33
|
+
|
|
34
|
+
## 职责与边界
|
|
35
|
+
|
|
36
|
+
- **步骤① diff 确认 config-only**: 调用 `release-skill route` command 确认仅有配置变更
|
|
37
|
+
- **步骤② assess with schema validation**: 执行配置结构验证、schema 检查、contract 一致性
|
|
38
|
+
- **步骤③ prepare --workflow config**: 本地 freeze 检查,生成只读计划;输出 `workflowDecision`
|
|
39
|
+
- **步骤④ decision branch**(来自 plan.workflowDecision):
|
|
40
|
+
- 场景 A:`publishPath === 'no-publish-needed'`(公开字节未变化)→ 记录决策并结束,
|
|
41
|
+
无 publish 路径,不运行 approve/publish/verify
|
|
42
|
+
- 场景 B:`publishPath === 'publish-needed'`(公开 surface 变化或不可判定)→ 运行
|
|
43
|
+
轻链 (approve→publish→verify)
|
|
44
|
+
|
|
45
|
+
**授权边界**: 命令调用本身即授权执行配置的 hooks/gates。config-only 工作流的远程写操作受标准 approval 机制约束,不 bypass 安全 gate。
|
|
46
|
+
|
|
47
|
+
**阶段通过规则**:
|
|
48
|
+
- 场景 A: prepare 输出 `workflowDecision.decision === 'public-bytes-unchanged'`(无 publish 路径)
|
|
49
|
+
- 场景 B: `status === 'VERIFIED'` + CLI exit code 0
|
|
50
|
+
|
|
51
|
+
## 正向执行路径
|
|
52
|
+
|
|
53
|
+
1. 运行 `release-skill route --root <path> --json` 获取 diff 分类
|
|
54
|
+
2. 若推荐 `workflowKind === 'config-only'`,则使用本技能
|
|
55
|
+
3. 执行步骤②:运行 `release-skill assess --root <path> --offline --json` 进行 schema validation
|
|
56
|
+
4. 执行步骤③:运行 `release-skill prepare --offline --workflow config --target-version <ver> --json`
|
|
57
|
+
5. 读取输出中的 `workflowDecision`:
|
|
58
|
+
- **A**: `publishPath === 'no-publish-needed'` → 记录决策(plan 已冻结,无
|
|
59
|
+
externalActions),结束。无需 approve/publish/verify
|
|
60
|
+
- **B**: `publishPath === 'publish-needed'` → 继续 approve → publish → verify 链条
|
|
61
|
+
6. (场景 B 续) 执行步骤⑥:运行 `release-skill approve --plan <path> --actor <name>`
|
|
62
|
+
7. (场景 B 续) 执行步骤⑦:运行 `release-skill publish --plan <path> --approval <path>`
|
|
63
|
+
8. (场景 B 续) 执行步骤⑧:运行 `release-skill verify --plan <path> --run <path>`
|
|
64
|
+
|
|
65
|
+
## 确定性脚本调用
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Step 1: Diff classification confirmation (config-only)
|
|
69
|
+
node "$RELEASE_SKILL_ENTRY" route --root <path> --json
|
|
70
|
+
|
|
71
|
+
# Step 2: Assess with schema validation
|
|
72
|
+
node "$RELEASE_SKILL_ENTRY" assess --root <path> --offline --json
|
|
73
|
+
|
|
74
|
+
# Step 3: Prepare --workflow config (local freeze + publish-path decision)
|
|
75
|
+
node "$RELEASE_SKILL_ENTRY" prepare --offline \
|
|
76
|
+
--workflow config --target-version <version> --json
|
|
77
|
+
# Output (JSON): { workflowKind: 'config',
|
|
78
|
+
# workflowDecision: { decision: 'public-bytes-unchanged'|'public-bytes-changed'|'indeterminable',
|
|
79
|
+
# publishPath: 'no-publish-needed'|'publish-needed', comparedPlan: '<digest>.json' } }
|
|
80
|
+
|
|
81
|
+
# Decision Branch A (no-publish-needed): plan frozen with zero externalActions;
|
|
82
|
+
# the decision is bound into the plan digest. No publish commands run.
|
|
83
|
+
|
|
84
|
+
# Decision Branch B (publish-needed): light chain execution
|
|
85
|
+
node "$RELEASE_SKILL_ENTRY" approve \
|
|
86
|
+
--plan <path> --actor <person-name>
|
|
87
|
+
node "$RELEASE_SKILL_ENTRY" publish \
|
|
88
|
+
--plan <path> --approval <path>
|
|
89
|
+
node "$RELEASE_SKILL_ENTRY" verify \
|
|
90
|
+
--plan <path> --run <path> --json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 故障路由
|
|
94
|
+
|
|
95
|
+
| 场景 | 状态 | 处理 |
|
|
96
|
+
|------|------|------|
|
|
97
|
+
| 非纯配置变更(mixed=true) | full-happy-end | 路由到 `release-skill ship` 完整工作流 |
|
|
98
|
+
| schema validation 失败 | CONFIG_SCHEMA_INVALID | 修正 project.yaml 或 schemas 结构错误后重试 step② |
|
|
99
|
+
| contract verification 失败 | CONFIG_CONFLICT | 解决配置冲突后重试 step② |
|
|
100
|
+
| prepare 检测到基线漂移 | BASELINE_DRIFT_DETECTED | 人工审查 drift 后决定是否继续或回滚 |
|
|
101
|
+
| workflowDecision 不可判定(无对比 plan) | indeterminable | fail-safe 到 publish-needed,走场景 B |
|
|
102
|
+
| approval expired | APPROVAL_EXPIRED | 重新执行 approve,digest 必须匹配 |
|
|
103
|
+
| remote conflict at publish | REMOTE_CONFLICT | 人工决策:force override 或 cancel |
|
|
104
|
+
|
|
105
|
+
## 决策树 (Step 4)
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
┌─────────────────────────────────────────┐
|
|
109
|
+
│ prepare --workflow config completed │
|
|
110
|
+
└──────────────────┬──────────────────────┘
|
|
111
|
+
│
|
|
112
|
+
┌──────────┴──────────┐
|
|
113
|
+
│ │
|
|
114
|
+
▼ ▼
|
|
115
|
+
┌───────────────┐ ┌───────────────────┐
|
|
116
|
+
│ public bytes │ │ public bytes │
|
|
117
|
+
│ unchanged │ │ changed / │
|
|
118
|
+
│ (or no plan │ │ indeterminable │
|
|
119
|
+
│ → fail-safe │ │ │
|
|
120
|
+
│ → publish │ │ │
|
|
121
|
+
│ needed) │ │ │
|
|
122
|
+
└───────┬───────┘ └────────┬──────────┘
|
|
123
|
+
│ │
|
|
124
|
+
▼ ▼
|
|
125
|
+
┌───────────────┐ ┌───────────────────┐
|
|
126
|
+
│ no-publish │ │ light chain │
|
|
127
|
+
│ needed: │ │ approve→publish │
|
|
128
|
+
│ decision │ │ →verify │
|
|
129
|
+
│ recorded in │ │ │
|
|
130
|
+
│ plan digest │ │ │
|
|
131
|
+
└───────────────┘ └───────────────────┘
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## 与其他工作流的关系
|
|
135
|
+
|
|
136
|
+
- **docs-only**: 纯文档变更时使用 `release-docs`
|
|
137
|
+
- **marketplace-only**: 仅 marketplace 变更时使用独立工作流
|
|
138
|
+
- **full-happy-end**: 混合变更(code+config+docs)时降级到此完整路径
|
|
139
|
+
|
|
140
|
+
## 关联技能
|
|
141
|
+
|
|
142
|
+
- `release-skill route`: 快速入门决策路由(§4.3)
|
|
143
|
+
- `release-assess`: 配置 schema/contract 验证入口
|
|
144
|
+
- `release-prepare`: 离线冻结检查(`--workflow config` 输出 publish-path 决策)
|
|
145
|
+
- `release-approve`: Plan approval(仅场景 B)
|
|
146
|
+
- `release-publish`: 制品发布(仅在 public surface 变化时执行)
|
|
147
|
+
- `release-verify`: 消费者验证(场景 B 的最终验证门)
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-docs
|
|
3
|
+
description: "Docs-only workflow profile: route confirms docs-only diff, style-guard gates (check-style.mjs file paths), render-public-site --check drift scan, docs refresh rehearsal → binder write, prepare --workflow docs (code-class gates trimmed), approve/publish/verify with consumer-verify preserved"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Codex 安装入口解析协议**:在调用 CLI 前,Agent 必须从宿主当前已加载技能的元数据中取得本 `SKILL.md` 的实际绝对路径,并将该字面量记为 `SKILL_FILE`。
|
|
7
|
+
> `SKILL_FILE` 不是环境变量;禁止从工作目录、可执行搜索路径、源码仓库或 shell 调用上下文猜测。若宿主未提供该绝对路径,立即停止并报告安装定位失败。
|
|
8
|
+
> 对 `SKILL_FILE` 执行 `realpath`,取其目录向上两级得到 `PLUGIN_ROOT`;校验真实技能路径匹配 `PLUGIN_ROOT/skills/*/SKILL.md`。
|
|
9
|
+
> 令 `RELEASE_SKILL_ENTRY=PLUGIN_ROOT/bin/release-skill.mjs`,对入口执行 `realpath` containment、`lstat` 非符号链接且为普通文件校验。
|
|
10
|
+
> 每一次 shell 工具调用都必须在同一个调用中用上述已验证绝对值设置 `RELEASE_SKILL_ENTRY`,然后执行 `node "$RELEASE_SKILL_ENTRY" ...`;不得依赖前一次 shell 的变量。
|
|
11
|
+
>
|
|
12
|
+
|
|
13
|
+
# release-docs
|
|
14
|
+
|
|
15
|
+
## 触发
|
|
16
|
+
|
|
17
|
+
用户询问或执行纯文档变更的发布流程。包含 `docs/public/site/`, `README*`, `CHANGELOG`, `release-notes/` 等文件的修改,且无代码、配置或 marketplace 变更。
|
|
18
|
+
|
|
19
|
+
## 当前状态
|
|
20
|
+
|
|
21
|
+
`release-docs` 是工作流配置文件 (§4) 定义的独立工作流之一,专门处理仅文档变更的场景。它遵循标准发布生命周期,但跳过代码类检查门(声明式 hooks、snapshot-verify gates、source-authority closure、skill-resource-closure),专注于文档质量 gate。
|
|
22
|
+
|
|
23
|
+
**机械实现**: `prepare --workflow docs` 在 prepare 内确定性地裁剪代码类门禁(H5),
|
|
24
|
+
plan 记录 `workflowKind: 'docs'` 与 `workflowDecision`(绑定进 plan digest)。
|
|
25
|
+
**边界**: NOT merging repos;不对代码类 gates(如 schema validation、contract verification)负责。
|
|
26
|
+
|
|
27
|
+
## 职责与边界
|
|
28
|
+
|
|
29
|
+
- **步骤① diff 分类确认**: 调用 `release-skill route` command 对工作树 diff 分类,确认仅有文档变更
|
|
30
|
+
- **步骤② style-guard 三道门**: 调用 `check-style.mjs`(只接受文件路径参数,exit 0/1/2)执行事实性/可读性/风格检查
|
|
31
|
+
- **步骤③ render-public-site --check**: 调用 `render-public-site.mjs --check [--repo <name>]` 做渲染漂移扫描(内存泄漏扫描 + 树基线对比)
|
|
32
|
+
- **步骤④ docs refresh**: 执行 rehearsal → binder 写入(本地文档更新,不 commit/push)
|
|
33
|
+
- **步骤⑤ prepare --workflow docs**: 轻量 freeze(裁剪代码类 gates,保留 docs freshness/public-surface/baseline/snapshots/plan freeze)
|
|
34
|
+
- **步骤⑥–⑧**: approve → publish → verify(consumer-verify 保留)
|
|
35
|
+
|
|
36
|
+
**授权边界**: 命令调用本身即授权执行配置的 hooks/gates。本地文档写入授权只覆盖声明的本地文档目标,不是 Git commit/push/publish 或安装的授权。
|
|
37
|
+
|
|
38
|
+
**阶段通过规则**: `status === 'VERIFIED'` 且 CLI exit code 为 0。`PARTIAL` 状态允许安全重试已完成的 checkpoint。
|
|
39
|
+
|
|
40
|
+
## 正向执行路径
|
|
41
|
+
|
|
42
|
+
1. 运行 `release-skill route --root <path> [--target-version <ver>] --json` 获取 diff 分类和工作流推荐
|
|
43
|
+
2. 若推荐 `workflowKind === 'docs-only'`,则使用本技能
|
|
44
|
+
3. 执行步骤②:调用 `check-style.mjs <doc-path>...` 执行事实/可读性/风格检查
|
|
45
|
+
4. 执行步骤③:调用 `render-public-site.mjs --check [--repo <name>]` 验证渲染无漂移
|
|
46
|
+
5. 执行步骤④:运行 `release-skill docs refresh --unit <id> --write --confirm-refresh <digest> --ack-local-document-write`
|
|
47
|
+
6. 执行步骤⑤:运行 `release-skill prepare --offline --workflow docs --target-version <ver>`
|
|
48
|
+
7. 执行步骤⑥:人工审阅后运行 `release-skill approve --plan <path> --actor <name>`
|
|
49
|
+
8. 执行步骤⑦:运行 `release-skill publish --plan <path> --approval <path>`
|
|
50
|
+
9. 执行步骤⑧:运行 `release-skill verify --plan <path> --run <path>`
|
|
51
|
+
|
|
52
|
+
## 确定性脚本调用
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Step 1: Diff classification (from release-skill route)
|
|
56
|
+
node "$RELEASE_SKILL_ENTRY" route --root <path> --json
|
|
57
|
+
|
|
58
|
+
# Step 2: Style-guard three gates (check-style.mjs takes file paths only)
|
|
59
|
+
node "${WORKBUDDY_ROOT}/adapters/workbuddy/skills/skill-family-docs-style-guard/scripts/check-style.mjs" \
|
|
60
|
+
<doc-path-1> <doc-path-2>
|
|
61
|
+
|
|
62
|
+
# Step 3: Render site check (drift + leak scan against committed baseline)
|
|
63
|
+
node "${DOC_RENDER_ROOT}/packages/skill-family-doc-render/scripts/render-public-site.mjs" --check [--repo <repo-name>] # source-only
|
|
64
|
+
|
|
65
|
+
# Step 4: Docs refresh with rehearsal
|
|
66
|
+
node "$RELEASE_SKILL_ENTRY" docs refresh --unit <id> --json
|
|
67
|
+
# Then confirm and write:
|
|
68
|
+
node "$RELEASE_SKILL_ENTRY" docs refresh --unit <id> \
|
|
69
|
+
--write --confirm-refresh <refreshDigest> --ack-local-document-write --json
|
|
70
|
+
|
|
71
|
+
# Step 5: Lightweight prepare --workflow docs
|
|
72
|
+
node "$RELEASE_SKILL_ENTRY" prepare --offline \
|
|
73
|
+
--workflow docs --target-version <version> --json
|
|
74
|
+
|
|
75
|
+
# Step 6: Approval
|
|
76
|
+
node "$RELEASE_SKILL_ENTRY" approve \
|
|
77
|
+
--plan <path> --actor <person-name>
|
|
78
|
+
|
|
79
|
+
# Step 7: Publish
|
|
80
|
+
node "$RELEASE_SKILL_ENTRY" publish \
|
|
81
|
+
--plan <path> --approval <path>
|
|
82
|
+
|
|
83
|
+
# Step 8: Verify (consumer-verify preserved)
|
|
84
|
+
node "$RELEASE_SKILL_ENTRY" verify \
|
|
85
|
+
--plan <path> --run <path> --json
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 故障路由
|
|
89
|
+
|
|
90
|
+
| 场景 | 状态 | 处理 |
|
|
91
|
+
|------|------|------|
|
|
92
|
+
| 非纯文档变更(mixed=true) | full-happy-end | 路由到 `release-skill ship` 完整工作流 |
|
|
93
|
+
| style-guard 检查失败 | exit 1(check-style.mjs) | 修正文档问题后重试 step② |
|
|
94
|
+
| check-style.mjs 运行错误 | exit 2 | 检查参数(只接受文件路径)与文件存在性 |
|
|
95
|
+
| render-site 漂移 | RENDER_SITE_DRIFT | 重新渲染并提交基线后重试 step③ |
|
|
96
|
+
| prepare 检测到未刷新文档 | PREPARE_STALE_DOCS | 重新执行 step④ → 提交 → 重新 prepare |
|
|
97
|
+
| 非 VERIFIED 终态 | NEEDS_INPUT / BLOCKED | 根据错误码诊断具体问题 |
|
|
98
|
+
|
|
99
|
+
## 与其他工作流的关系
|
|
100
|
+
|
|
101
|
+
- **config-only**: 仅配置变更时使用 `release-config`
|
|
102
|
+
- **marketplace-only**: 仅 marketplace 变更时使用独立工作流
|
|
103
|
+
- **full-happy-end**: 混合变更(code+docs)时降级到此完整路径
|
|
104
|
+
|
|
105
|
+
## 关联技能
|
|
106
|
+
|
|
107
|
+
- `release-skill route`: 快速入门决策路由(§4.3)
|
|
108
|
+
- `release-assess`: 项目发布就绪度评估
|
|
109
|
+
- `release-prepare`: 冻结发布计划(`--workflow docs` 裁剪代码类门禁)
|
|
110
|
+
- `release-publish`: 发布 GitHub/npm 制品
|
|
111
|
+
- `release-verify`: 消费者验证和远程状态重检
|
|
112
|
+
- `skill-family-docs-style-guard`(skill-family-docs adapter): `check-style.mjs` 文档质量三道门
|
|
113
|
+
- `render-public-site`(skill-family-doc-render): 站点渲染漂移与泄漏扫描
|