harnessed 4.2.0 → 4.4.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/README.md +2 -2
- package/dist/cli.mjs +62 -27
- package/dist/cli.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/manifests/skill-packs/gsd.yaml +14 -14
- package/manifests/skill-packs/gstack.yaml +3 -3
- package/manifests/skill-packs/mattpocock-skills.yaml +1 -1
- package/package.json +1 -1
- package/workflows/capabilities.yaml +233 -5
- package/workflows/disciplines/doc-discipline.yaml +49 -0
- package/workflows/judgments/stage-phase-gate.yaml +42 -0
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAgGb,CAAA;;;AC7FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAgGb,CAAA;;;AC7FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.4.0\",\n \"description\": \"AI coding harness package manager + composition orchestrator\",\n \"type\": \"module\",\n \"license\": \"Apache-2.0\",\n \"author\": \"easyinplay\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/easyinplay/harnessed.git\"\n },\n \"homepage\": \"https://github.com/easyinplay/harnessed#readme\",\n \"bugs\": \"https://github.com/easyinplay/harnessed/issues\",\n \"keywords\": [\n \"claude-code\",\n \"ai-harness\",\n \"package-manager\",\n \"composition\",\n \"skill-pack\",\n \"mcp\",\n \"orchestrator\"\n ],\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.0\",\n \"bin\": {\n \"harnessed\": \"./dist/cli.mjs\"\n },\n \"main\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./schemas\": {\n \"types\": \"./dist/schemas/index.d.ts\",\n \"import\": \"./dist/schemas/index.mjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"manifests\",\n \"messages\",\n \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\",\n \"THIRD-PARTY-NOTICES.md\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsc --noEmit && tsup\",\n \"build:schema\": \"node ./scripts/build-schema.mjs\",\n \"validate:schema\": \"node ./scripts/validate-schema.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage --passWithNoTests\",\n \"bench\": \"vitest bench --run\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"format\": \"biome format --write .\"\n },\n \"dependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \"0.3.142\",\n \"@clack/prompts\": \"^0.10.1\",\n \"@sinclair/typebox\": \"^0.34.49\",\n \"ajv\": \"^8.20.0\",\n \"ajv-errors\": \"^3.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^13.0.0\",\n \"diff\": \"^9.0.0\",\n \"expr-eval\": \"^2.0.2\",\n \"picocolors\": \"^1.1.1\",\n \"proper-lockfile\": \"^4.1.2\",\n \"yaml\": \"^2.9.0\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.0.0\",\n \"@types/node\": \"^22.10.0\",\n \"@types/proper-lockfile\": \"^4.1.4\",\n \"@vitest/coverage-v8\": \"^4.0.0\",\n \"tsup\": \"^8.3.0\",\n \"typescript\": \"^5.6.0\",\n \"vitest\": \"^4.0.0\"\n },\n \"pnpm\": {\n \"onlyBuiltDependencies\": [\n \"esbuild\"\n ]\n }\n}\n","// Main library entry — re-exports public APIs.\n// phase 1.1 batch 1: skeleton only; schema validator wired in batch 2 (T3+).\n\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION = pkg.version\n"]}
|
|
@@ -3,14 +3,14 @@ apiVersion: harnessed/v1
|
|
|
3
3
|
kind: Manifest
|
|
4
4
|
metadata:
|
|
5
5
|
name: gsd
|
|
6
|
-
display_name: GSD (
|
|
6
|
+
display_name: GSD Core (Git. Ship. Done.)
|
|
7
7
|
description: Project-manager orchestrator providing /gsd-* discuss-plan-execute-verify workflow.
|
|
8
8
|
upstream:
|
|
9
|
-
source:
|
|
10
|
-
homepage: https://github.com/gsd
|
|
11
|
-
repository: https://github.com/gsd
|
|
9
|
+
source: "@opengsd/gsd-core"
|
|
10
|
+
homepage: https://github.com/open-gsd/gsd-core
|
|
11
|
+
repository: https://github.com/open-gsd/gsd-core.git
|
|
12
12
|
license: MIT
|
|
13
|
-
notice: GSD by gsd
|
|
13
|
+
notice: GSD Core (Git. Ship. Done.) by open-gsd, used as orchestration layer in harnessed plan-feature workflow.
|
|
14
14
|
spec:
|
|
15
15
|
type: cli-npm
|
|
16
16
|
component_type: command
|
|
@@ -18,20 +18,20 @@ spec:
|
|
|
18
18
|
install_type: npm
|
|
19
19
|
install:
|
|
20
20
|
method: npm-cli
|
|
21
|
-
cmd: "npx --yes
|
|
22
|
-
npm_version: ^1.
|
|
23
|
-
idempotent_check: "test -d ~/.claude/skills/gsd"
|
|
21
|
+
cmd: "npx --yes @opengsd/gsd-core@latest --claude --global"
|
|
22
|
+
npm_version: ^1.4.1
|
|
23
|
+
idempotent_check: "test -d ~/.claude/skills/gsd-plan-phase"
|
|
24
24
|
verify:
|
|
25
|
-
cmd: "
|
|
25
|
+
cmd: "test -f ~/.claude/skills/gsd-plan-phase/SKILL.md"
|
|
26
26
|
timeout_ms: 10000
|
|
27
27
|
uninstall:
|
|
28
|
-
cmd: "
|
|
28
|
+
cmd: "npx --yes @opengsd/gsd-core@latest --uninstall --claude"
|
|
29
29
|
cleanup_paths:
|
|
30
|
-
- ~/.claude/skills/gsd
|
|
30
|
+
- ~/.claude/skills/gsd-plan-phase
|
|
31
31
|
upstream_health:
|
|
32
|
-
stability:
|
|
33
|
-
last_check: "2026-
|
|
34
|
-
last_known_good_version: 1.
|
|
32
|
+
stability: stable
|
|
33
|
+
last_check: "2026-06-09"
|
|
34
|
+
last_known_good_version: 1.4.1
|
|
35
35
|
fallback_action: warn
|
|
36
36
|
signed_by: easyinplay
|
|
37
37
|
platforms:
|
|
@@ -19,7 +19,7 @@ spec:
|
|
|
19
19
|
install:
|
|
20
20
|
method: git-clone-with-setup
|
|
21
21
|
cmd: "git clone https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && bash ./setup.sh"
|
|
22
|
-
git_ref:
|
|
22
|
+
git_ref: 1626d4857bfe30da2690dd6a3217961934aa3192
|
|
23
23
|
idempotent_check: "test -d ~/.claude/skills/gstack/.git"
|
|
24
24
|
verify:
|
|
25
25
|
cmd: "test -f ~/.claude/skills/gstack/skills/office-hours.md"
|
|
@@ -30,8 +30,8 @@ spec:
|
|
|
30
30
|
- ~/.claude/skills/gstack
|
|
31
31
|
upstream_health:
|
|
32
32
|
stability: stable
|
|
33
|
-
last_check: "2026-
|
|
34
|
-
last_known_good_version:
|
|
33
|
+
last_check: "2026-06-09"
|
|
34
|
+
last_known_good_version: 1.52.1.0
|
|
35
35
|
fallback_action: warn
|
|
36
36
|
signed_by: easyinplay
|
|
37
37
|
platforms:
|
package/package.json
CHANGED
|
@@ -574,6 +574,14 @@ capabilities:
|
|
|
574
574
|
description: cc-handoff Ideation→Onboarding + Plan→Execute + file-ownership-strict 跨 CC instance 协议
|
|
575
575
|
discipline_ref: workflows/disciplines/protocols.yaml
|
|
576
576
|
|
|
577
|
+
doc-discipline:
|
|
578
|
+
impl: harnessed-bundled
|
|
579
|
+
cmd: '<not-applicable-behavioral>'
|
|
580
|
+
since: v6.0
|
|
581
|
+
category: behavioral
|
|
582
|
+
description: STATE digest <100L halt + one-fact-per-file + overview-pointer-no-inline-narrative + transient-archive + status-from-artifacts + responsibility-one-home (6 rules)
|
|
583
|
+
discipline_ref: workflows/disciplines/doc-discipline.yaml
|
|
584
|
+
|
|
577
585
|
# ============================================================================
|
|
578
586
|
# Bucket 7 — gstack 33 optional registry-only (D-12 NEW v3)
|
|
579
587
|
# ============================================================================
|
|
@@ -977,6 +985,72 @@ capabilities:
|
|
|
977
985
|
fires_when:
|
|
978
986
|
- subtask.bug_root_cause_unknown == true
|
|
979
987
|
|
|
988
|
+
spec:
|
|
989
|
+
impl: gstack
|
|
990
|
+
install_type: user-skill
|
|
991
|
+
skill_dir: gstack
|
|
992
|
+
cmd: /spec
|
|
993
|
+
since: v5.1
|
|
994
|
+
category: tool-slash-cmd
|
|
995
|
+
description: 5-stage spec → GitHub issue → 可选 agent 生成
|
|
996
|
+
fires_when:
|
|
997
|
+
- phase.stage == 'plan' AND phase.needs_spec_to_issues == true
|
|
998
|
+
|
|
999
|
+
skillify:
|
|
1000
|
+
impl: gstack
|
|
1001
|
+
install_type: user-skill
|
|
1002
|
+
skill_dir: gstack
|
|
1003
|
+
cmd: /skillify
|
|
1004
|
+
since: v5.1
|
|
1005
|
+
category: tool-slash-cmd
|
|
1006
|
+
description: 把现有流程蒸馏成新 gstack skill
|
|
1007
|
+
fires_when:
|
|
1008
|
+
- user.explicit_signal includes 'skillify'
|
|
1009
|
+
|
|
1010
|
+
pair-agent:
|
|
1011
|
+
impl: gstack
|
|
1012
|
+
install_type: user-skill
|
|
1013
|
+
skill_dir: gstack
|
|
1014
|
+
cmd: /pair-agent
|
|
1015
|
+
since: v5.1
|
|
1016
|
+
category: tool-slash-cmd
|
|
1017
|
+
description: 远程 agent 配对 + ngrok tunnel
|
|
1018
|
+
fires_when:
|
|
1019
|
+
- user.explicit_signal includes 'pair agent'
|
|
1020
|
+
|
|
1021
|
+
scrape:
|
|
1022
|
+
impl: gstack
|
|
1023
|
+
install_type: user-skill
|
|
1024
|
+
skill_dir: gstack
|
|
1025
|
+
cmd: /scrape
|
|
1026
|
+
since: v5.1
|
|
1027
|
+
category: tool-slash-cmd
|
|
1028
|
+
description: 批量页面抓取
|
|
1029
|
+
fires_when:
|
|
1030
|
+
- user.explicit_signal includes 'scrape'
|
|
1031
|
+
|
|
1032
|
+
benchmark-models:
|
|
1033
|
+
impl: gstack
|
|
1034
|
+
install_type: user-skill
|
|
1035
|
+
skill_dir: gstack
|
|
1036
|
+
cmd: /benchmark-models
|
|
1037
|
+
since: v5.1
|
|
1038
|
+
category: tool-slash-cmd
|
|
1039
|
+
description: 跨模型基准对比 (Claude/GPT/Gemini)
|
|
1040
|
+
fires_when:
|
|
1041
|
+
- user.explicit_signal includes 'benchmark models'
|
|
1042
|
+
|
|
1043
|
+
landing-report:
|
|
1044
|
+
impl: gstack
|
|
1045
|
+
install_type: user-skill
|
|
1046
|
+
skill_dir: gstack
|
|
1047
|
+
cmd: /landing-report
|
|
1048
|
+
since: v5.1
|
|
1049
|
+
category: tool-slash-cmd
|
|
1050
|
+
description: post-landing 落地报告
|
|
1051
|
+
fires_when:
|
|
1052
|
+
- phase.stage == 'verify' AND phase.needs_landing_report == true
|
|
1053
|
+
|
|
980
1054
|
# ============================================================================
|
|
981
1055
|
# Bucket 8 — Supplementary v3 NEW (2 entry)
|
|
982
1056
|
# ============================================================================
|
|
@@ -1003,17 +1077,171 @@ capabilities:
|
|
|
1003
1077
|
- subtask.needs_google_workspace == true
|
|
1004
1078
|
|
|
1005
1079
|
# ============================================================================
|
|
1006
|
-
# Bucket 9 — gsd-research-phase
|
|
1080
|
+
# Bucket 9 — GSD research/explore (v3 gsd-research-phase → v4.2 gsd-explore remap)
|
|
1007
1081
|
# ============================================================================
|
|
1082
|
+
#
|
|
1083
|
+
# GSD Core 1.4.1 (open-gsd/gsd-core rename) dropped the standalone
|
|
1084
|
+
# `gsd-research-phase` skill; closest surviving analog is `gsd-explore`
|
|
1085
|
+
# (codebase + multi-source exploration). Entry is orphan (no workflow.yaml
|
|
1086
|
+
# template interpolates it), so remap is a pure skill_dir/cmd swap.
|
|
1008
1087
|
|
|
1009
|
-
gsd-
|
|
1088
|
+
gsd-explore:
|
|
1010
1089
|
impl: gsd
|
|
1011
1090
|
install_type: user-skill
|
|
1012
|
-
skill_dir: gsd-
|
|
1013
|
-
cmd: /gsd-
|
|
1091
|
+
skill_dir: gsd-explore
|
|
1092
|
+
cmd: /gsd-explore
|
|
1014
1093
|
since: v3.0
|
|
1015
1094
|
category: tool-slash-cmd
|
|
1016
|
-
description: GSD
|
|
1095
|
+
description: GSD explore (codebase + 多 source 调研, GSD Core 1.4.1 successor to dropped gsd-research-phase)
|
|
1017
1096
|
fires_when:
|
|
1018
1097
|
- phase.stage == 'research'
|
|
1019
1098
|
- phase.requires_multi_source_research == true
|
|
1099
|
+
|
|
1100
|
+
# ============================================================================
|
|
1101
|
+
# Bucket 10 — GSD Core 1.4.1 additive rewire (v5.1 Upstream Re-sync)
|
|
1102
|
+
# ============================================================================
|
|
1103
|
+
#
|
|
1104
|
+
# @opengsd/gsd-core 1.4.1 (get-shit-done-cc → @opengsd/gsd-core rename) reorganized
|
|
1105
|
+
# its skill surface. These 12 additive entries describe the new upstream entry points
|
|
1106
|
+
# so workflow.yaml templates + judgments gates can reference them. All mirror the
|
|
1107
|
+
# gsd-discuss-phase shape verbatim (impl: gsd / install_type: user-skill /
|
|
1108
|
+
# category: tool-slash-cmd / skill_dir == cmd basename). skill_dir verified on disk
|
|
1109
|
+
# at ~/.claude/skills/<skill_dir>/ (2026-06-09).
|
|
1110
|
+
#
|
|
1111
|
+
# KEYSTONE: gsd-execute-phase is deliberately NOT wired — the execute mechanism stays
|
|
1112
|
+
# harnessed self-owned (CC-native spawn + ralph-loop + v4.2 checkpoint ledger).
|
|
1113
|
+
#
|
|
1114
|
+
# 4 design-contract phase skills (spec/ui/secure/ai-integration) pair with sister
|
|
1115
|
+
# judgments triggers in workflows/judgments/stage-phase-gate.yaml.
|
|
1116
|
+
|
|
1117
|
+
gsd-spec-phase:
|
|
1118
|
+
impl: gsd
|
|
1119
|
+
install_type: user-skill
|
|
1120
|
+
skill_dir: gsd-spec-phase
|
|
1121
|
+
cmd: /gsd-spec-phase
|
|
1122
|
+
since: v5.1
|
|
1123
|
+
category: tool-slash-cmd
|
|
1124
|
+
description: GSD spec-phase SDD spec lock (sister judgments/stage-phase-gate.yaml)
|
|
1125
|
+
fires_when:
|
|
1126
|
+
- phase.stage == 'plan' and phase.requires_spec == true
|
|
1127
|
+
|
|
1128
|
+
gsd-ui-phase:
|
|
1129
|
+
impl: gsd
|
|
1130
|
+
install_type: user-skill
|
|
1131
|
+
skill_dir: gsd-ui-phase
|
|
1132
|
+
cmd: /gsd-ui-phase
|
|
1133
|
+
since: v5.1
|
|
1134
|
+
category: tool-slash-cmd
|
|
1135
|
+
description: GSD ui-phase UI design contract (sister judgments/stage-phase-gate.yaml)
|
|
1136
|
+
fires_when:
|
|
1137
|
+
- phase.has_ui_changes == true
|
|
1138
|
+
|
|
1139
|
+
gsd-secure-phase:
|
|
1140
|
+
impl: gsd
|
|
1141
|
+
install_type: user-skill
|
|
1142
|
+
skill_dir: gsd-secure-phase
|
|
1143
|
+
cmd: /gsd-secure-phase
|
|
1144
|
+
since: v5.1
|
|
1145
|
+
category: tool-slash-cmd
|
|
1146
|
+
description: GSD secure-phase security threat-model gate (sister judgments/stage-phase-gate.yaml)
|
|
1147
|
+
fires_when:
|
|
1148
|
+
- phase.has_auth_or_secrets == true
|
|
1149
|
+
|
|
1150
|
+
gsd-ai-integration-phase:
|
|
1151
|
+
impl: gsd
|
|
1152
|
+
install_type: user-skill
|
|
1153
|
+
skill_dir: gsd-ai-integration-phase
|
|
1154
|
+
cmd: /gsd-ai-integration-phase
|
|
1155
|
+
since: v5.1
|
|
1156
|
+
category: tool-slash-cmd
|
|
1157
|
+
description: GSD ai-integration-phase AI-SPEC design contract (sister judgments/stage-phase-gate.yaml)
|
|
1158
|
+
fires_when:
|
|
1159
|
+
- phase.builds_ai_system == true
|
|
1160
|
+
|
|
1161
|
+
gsd-ingest-docs:
|
|
1162
|
+
impl: gsd
|
|
1163
|
+
install_type: user-skill
|
|
1164
|
+
skill_dir: gsd-ingest-docs
|
|
1165
|
+
cmd: /gsd-ingest-docs
|
|
1166
|
+
since: v5.1
|
|
1167
|
+
category: tool-slash-cmd
|
|
1168
|
+
description: GSD ingest-docs bootstrap .planning from existing docs (cc-handoff Ideation→Onboarding)
|
|
1169
|
+
fires_when:
|
|
1170
|
+
- phase.type == 'onboarding'
|
|
1171
|
+
|
|
1172
|
+
gsd-new-project:
|
|
1173
|
+
impl: gsd
|
|
1174
|
+
install_type: user-skill
|
|
1175
|
+
skill_dir: gsd-new-project
|
|
1176
|
+
cmd: /gsd-new-project
|
|
1177
|
+
since: v5.1
|
|
1178
|
+
category: tool-slash-cmd
|
|
1179
|
+
description: GSD new-project greenfield project init
|
|
1180
|
+
fires_when:
|
|
1181
|
+
- phase.type == 'new_project'
|
|
1182
|
+
|
|
1183
|
+
gsd-new-milestone:
|
|
1184
|
+
impl: gsd
|
|
1185
|
+
install_type: user-skill
|
|
1186
|
+
skill_dir: gsd-new-milestone
|
|
1187
|
+
cmd: /gsd-new-milestone
|
|
1188
|
+
since: v5.1
|
|
1189
|
+
category: tool-slash-cmd
|
|
1190
|
+
description: GSD new-milestone brownfield milestone start
|
|
1191
|
+
fires_when:
|
|
1192
|
+
- phase.type == 'new_milestone'
|
|
1193
|
+
|
|
1194
|
+
gsd-extract-learnings:
|
|
1195
|
+
impl: gsd
|
|
1196
|
+
install_type: user-skill
|
|
1197
|
+
skill_dir: gsd-extract-learnings
|
|
1198
|
+
cmd: /gsd-extract-learnings
|
|
1199
|
+
since: v5.1
|
|
1200
|
+
category: tool-slash-cmd
|
|
1201
|
+
description: GSD extract-learnings 提取 decisions/lessons from completed phase
|
|
1202
|
+
fires_when:
|
|
1203
|
+
- phase.is_milestone_close == true
|
|
1204
|
+
|
|
1205
|
+
gsd-audit-milestone:
|
|
1206
|
+
impl: gsd
|
|
1207
|
+
install_type: user-skill
|
|
1208
|
+
skill_dir: gsd-audit-milestone
|
|
1209
|
+
cmd: /gsd-audit-milestone
|
|
1210
|
+
since: v5.1
|
|
1211
|
+
category: tool-slash-cmd
|
|
1212
|
+
description: GSD audit-milestone milestone completion audit
|
|
1213
|
+
fires_when:
|
|
1214
|
+
- phase.is_milestone_close == true
|
|
1215
|
+
|
|
1216
|
+
gsd-complete-milestone:
|
|
1217
|
+
impl: gsd
|
|
1218
|
+
install_type: user-skill
|
|
1219
|
+
skill_dir: gsd-complete-milestone
|
|
1220
|
+
cmd: /gsd-complete-milestone
|
|
1221
|
+
since: v5.1
|
|
1222
|
+
category: tool-slash-cmd
|
|
1223
|
+
description: GSD complete-milestone archive completed milestone
|
|
1224
|
+
fires_when:
|
|
1225
|
+
- phase.is_milestone_close == true
|
|
1226
|
+
|
|
1227
|
+
gsd-milestone-summary:
|
|
1228
|
+
impl: gsd
|
|
1229
|
+
install_type: user-skill
|
|
1230
|
+
skill_dir: gsd-milestone-summary
|
|
1231
|
+
cmd: /gsd-milestone-summary
|
|
1232
|
+
since: v5.1
|
|
1233
|
+
category: tool-slash-cmd
|
|
1234
|
+
description: GSD milestone-summary milestone summary
|
|
1235
|
+
fires_when:
|
|
1236
|
+
- phase.is_milestone_close == true
|
|
1237
|
+
|
|
1238
|
+
gsd-docs-update:
|
|
1239
|
+
impl: gsd
|
|
1240
|
+
install_type: user-skill
|
|
1241
|
+
skill_dir: gsd-docs-update
|
|
1242
|
+
cmd: /gsd-docs-update
|
|
1243
|
+
since: v5.1
|
|
1244
|
+
category: tool-slash-cmd
|
|
1245
|
+
description: GSD docs-update post-ship doc update
|
|
1246
|
+
fires_when:
|
|
1247
|
+
- phase.needs_doc_update == true
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# workflows/disciplines/doc-discipline.yaml
|
|
2
|
+
# 文档纪律 — bundled discipline (STATE digest line-limit + one-fact-per-file +
|
|
3
|
+
# overview-pointer-no-inline-narrative + transient-consume-then-archive +
|
|
4
|
+
# status-derived-from-artifacts + responsibility-matrix-one-home)
|
|
5
|
+
# Phase v6.0 T11.1 — 7th L0 Discipline Substrate per D-09
|
|
6
|
+
# Codifies CLAUDE.md 文档纪律 section (三层渐进式结构 + 反腐防膨胀铁律)
|
|
7
|
+
|
|
8
|
+
schema_version: harnessed.discipline.v1
|
|
9
|
+
discipline: doc
|
|
10
|
+
enforcement_layer: commit
|
|
11
|
+
auto_enforce: true
|
|
12
|
+
|
|
13
|
+
rules:
|
|
14
|
+
- id: state-digest-line-limit
|
|
15
|
+
description: STATE.md >100 lines triggers halt; override via `HARNESSED_ALLOW_LONG_STATE=1`
|
|
16
|
+
enforcement: halt
|
|
17
|
+
trigger: "phase.type == 'commit' AND changed_files contains '.planning/STATE.md'"
|
|
18
|
+
check_method: external-cmd
|
|
19
|
+
# No auto_fix_cmd — halt rules do not auto-fix; override is env-based in TS
|
|
20
|
+
|
|
21
|
+
- id: one-fact-per-file
|
|
22
|
+
description: Decision docs must be single-topic; duplicate fact spread across files violates one-fact-per-file
|
|
23
|
+
enforcement: warn
|
|
24
|
+
trigger: "phase.type == 'commit' AND changed_files matches '\\.planning/'"
|
|
25
|
+
check_method: heuristic
|
|
26
|
+
|
|
27
|
+
- id: overview-pointer-no-inline-narrative
|
|
28
|
+
description: ROADMAP/overview docs must not inline closing narrative (叙事进 SUMMARY, not ROADMAP)
|
|
29
|
+
enforcement: warn
|
|
30
|
+
trigger: "phase.type == 'commit' AND changed_files matches 'ROADMAP\\.md|STATE\\.md'"
|
|
31
|
+
check_method: heuristic
|
|
32
|
+
|
|
33
|
+
- id: transient-consume-then-archive
|
|
34
|
+
description: HANDOFF and other transient artifacts must be archived after consumption, not accumulated at .planning/ root
|
|
35
|
+
enforcement: warn
|
|
36
|
+
trigger: "phase.type == 'commit' AND changed_files matches 'HANDOFF'"
|
|
37
|
+
check_method: heuristic
|
|
38
|
+
|
|
39
|
+
- id: status-derived-from-artifacts
|
|
40
|
+
description: Phase status must derive from VERIFICATION artifacts + test results, not hand-maintained booleans in STATE/ROADMAP
|
|
41
|
+
enforcement: warn
|
|
42
|
+
trigger: "phase.type == 'commit' AND changed_files contains '.planning/STATE.md'"
|
|
43
|
+
check_method: heuristic
|
|
44
|
+
|
|
45
|
+
- id: responsibility-matrix-one-home
|
|
46
|
+
description: Each fact has exactly one home per responsibility matrix (decision→ADR, requirement→REQUIREMENTS, etc.); cross-file duplication is a violation
|
|
47
|
+
enforcement: info
|
|
48
|
+
trigger: "phase.type == 'commit' AND changed_files matches '\\.planning/'"
|
|
49
|
+
check_method: heuristic
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# workflows/judgments/stage-phase-gate.yaml
|
|
2
|
+
# Stage/condition-gated design-contract 判据 — GSD Core 1.4.1 (v5.1 Upstream Re-sync)
|
|
3
|
+
# Pairs with: GSD design-contract phase skills (spec / ui / secure / ai-integration)
|
|
4
|
+
#
|
|
5
|
+
# Parallel to phase-gate.yaml (gsd-discuss-phase). The 4 design-contract phase skills
|
|
6
|
+
# fire on stage/condition predicates and invoke their sister capabilities.yaml entries
|
|
7
|
+
# (fires_when string matches the capabilities.yaml expression verbatim).
|
|
8
|
+
|
|
9
|
+
schema_version: harnessed.judgment.v1
|
|
10
|
+
|
|
11
|
+
triggers:
|
|
12
|
+
gsd-spec-phase:
|
|
13
|
+
description: |
|
|
14
|
+
GSD /gsd-spec-phase — SDD spec lock. Fires at plan stage when the phase
|
|
15
|
+
requires a spec design contract before execution.
|
|
16
|
+
fires_when: "phase.stage == 'plan' and phase.requires_spec == true"
|
|
17
|
+
invokes:
|
|
18
|
+
- capability: gsd-spec-phase
|
|
19
|
+
|
|
20
|
+
gsd-ui-phase:
|
|
21
|
+
description: |
|
|
22
|
+
GSD /gsd-ui-phase — UI design contract. Fires when the phase introduces
|
|
23
|
+
UI changes needing a design system / layout contract.
|
|
24
|
+
fires_when: "phase.has_ui_changes == true"
|
|
25
|
+
invokes:
|
|
26
|
+
- capability: gsd-ui-phase
|
|
27
|
+
|
|
28
|
+
gsd-secure-phase:
|
|
29
|
+
description: |
|
|
30
|
+
GSD /gsd-secure-phase — security threat-model gate. Fires when the phase
|
|
31
|
+
touches auth or secrets and needs a threat-model design contract.
|
|
32
|
+
fires_when: "phase.has_auth_or_secrets == true"
|
|
33
|
+
invokes:
|
|
34
|
+
- capability: gsd-secure-phase
|
|
35
|
+
|
|
36
|
+
gsd-ai-integration-phase:
|
|
37
|
+
description: |
|
|
38
|
+
GSD /gsd-ai-integration-phase — AI-SPEC design contract. Fires when the
|
|
39
|
+
phase builds an AI system needing an AI-SPEC.md design contract.
|
|
40
|
+
fires_when: "phase.builds_ai_system == true"
|
|
41
|
+
invokes:
|
|
42
|
+
- capability: gsd-ai-integration-phase
|