coding-agent-harness 1.0.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 (139) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -0
  3. package/README.md +141 -0
  4. package/SKILL.md +423 -0
  5. package/docs-release/README.md +30 -0
  6. package/docs-release/architecture/overview.md +52 -0
  7. package/docs-release/guides/agent-installation.md +139 -0
  8. package/examples/minimal-project/.harness-capabilities.json +8 -0
  9. package/examples/minimal-project/AGENTS.md +4 -0
  10. package/examples/minimal-project/CLAUDE.md +3 -0
  11. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/execution_strategy.md +10 -0
  12. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/progress.md +11 -0
  13. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/review.md +27 -0
  14. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/task_plan.md +14 -0
  15. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/visual_roadmap.md +11 -0
  16. package/examples/minimal-project/docs/Harness-Ledger.md +6 -0
  17. package/package.json +34 -0
  18. package/references/adversarial-review-standard.md +173 -0
  19. package/references/agents-md-pattern.md +140 -0
  20. package/references/cadence-ledger.md +55 -0
  21. package/references/ci-cd-standard.md +90 -0
  22. package/references/delivery-operating-model-standard.md +145 -0
  23. package/references/docs-directory-standard.md +125 -0
  24. package/references/harness-ledger.md +148 -0
  25. package/references/lessons-governance.md +157 -0
  26. package/references/long-running-task-standard.md +209 -0
  27. package/references/module-parallel-standard.md +292 -0
  28. package/references/planning-loop.md +192 -0
  29. package/references/project-onboarding-audit.md +167 -0
  30. package/references/regression-system.md +89 -0
  31. package/references/repo-governance-standard.md +131 -0
  32. package/references/review-routing-standard.md +103 -0
  33. package/references/ssot-governance.md +111 -0
  34. package/references/walkthrough-closeout.md +135 -0
  35. package/references/worktree-parallel.md +184 -0
  36. package/scripts/check-harness.mjs +728 -0
  37. package/scripts/harness.mjs +201 -0
  38. package/scripts/lib/dashboard-writer.mjs +95 -0
  39. package/scripts/lib/harness-core.mjs +1318 -0
  40. package/scripts/smoke-dashboard.mjs +70 -0
  41. package/scripts/test-harness.mjs +482 -0
  42. package/templates/AGENTS.md.template +82 -0
  43. package/templates/CLAUDE.md.template +12 -0
  44. package/templates/dashboard/assets/app.css +399 -0
  45. package/templates/dashboard/assets/app.js +435 -0
  46. package/templates/dashboard/assets/i18n.js +47 -0
  47. package/templates/dashboard/assets/markdown-reader.js +116 -0
  48. package/templates/dashboard/assets/mermaid-renderer.js +59 -0
  49. package/templates/dashboard/index.html +18 -0
  50. package/templates/ledger/Harness-Ledger.md +39 -0
  51. package/templates/lessons/lesson-arch-process-change.md +47 -0
  52. package/templates/lessons/lesson-new-doc.md +50 -0
  53. package/templates/lessons/lesson-ref-change.md +45 -0
  54. package/templates/planning/execution_strategy.md +40 -0
  55. package/templates/planning/findings.md +24 -0
  56. package/templates/planning/long-running-task-contract.md +69 -0
  57. package/templates/planning/module_plan.md +36 -0
  58. package/templates/planning/module_session_prompt.md +39 -0
  59. package/templates/planning/optional/artifacts/INDEX.md +12 -0
  60. package/templates/planning/optional/references/INDEX.md +13 -0
  61. package/templates/planning/optional/slices/_slice-template/brief.md +27 -0
  62. package/templates/planning/optional/slices/_slice-template/evidence.md +9 -0
  63. package/templates/planning/optional/slices/_slice-template/review.md +31 -0
  64. package/templates/planning/progress.md +33 -0
  65. package/templates/planning/review.md +48 -0
  66. package/templates/planning/task_plan.md +86 -0
  67. package/templates/planning/visual_roadmap.md +28 -0
  68. package/templates/reference/adversarial-review-standard.md +28 -0
  69. package/templates/reference/ci-cd-standard.md +28 -0
  70. package/templates/reference/delivery-operating-model-standard.md +28 -0
  71. package/templates/reference/docs-library-standard.md +28 -0
  72. package/templates/reference/engineering-standard.md +29 -0
  73. package/templates/reference/execution-workflow-standard.md +29 -0
  74. package/templates/reference/harness-ledger-standard.md +26 -0
  75. package/templates/reference/long-running-task-standard.md +28 -0
  76. package/templates/reference/regression-ssot-governance.md +28 -0
  77. package/templates/reference/repo-governance-standard.md +29 -0
  78. package/templates/reference/review-routing-standard.md +29 -0
  79. package/templates/reference/testing-standard.md +28 -0
  80. package/templates/reference/walkthrough-standard.md +28 -0
  81. package/templates/reference/worktree-standard.md +28 -0
  82. package/templates/regression/Cadence-Ledger.md +41 -0
  83. package/templates/ssot/Delivery-SSoT.md +43 -0
  84. package/templates/ssot/Feature-SSoT.md +43 -0
  85. package/templates/ssot/Lessons-SSoT.md +44 -0
  86. package/templates/ssot/Module-Registry.md +43 -0
  87. package/templates/ssot/Regression-SSoT.md +51 -0
  88. package/templates/verifier/verifier-output.md +43 -0
  89. package/templates/walkthrough/Closeout-SSoT.md +43 -0
  90. package/templates/walkthrough/walkthrough-template.md +63 -0
  91. package/templates-zh-CN/AGENTS.md.template +92 -0
  92. package/templates-zh-CN/CLAUDE.md.template +12 -0
  93. package/templates-zh-CN/dashboard/assets/app.css +399 -0
  94. package/templates-zh-CN/dashboard/assets/app.js +435 -0
  95. package/templates-zh-CN/dashboard/assets/i18n.js +47 -0
  96. package/templates-zh-CN/dashboard/assets/markdown-reader.js +116 -0
  97. package/templates-zh-CN/dashboard/assets/mermaid-renderer.js +59 -0
  98. package/templates-zh-CN/dashboard/index.html +18 -0
  99. package/templates-zh-CN/ledger/Harness-Ledger.md +50 -0
  100. package/templates-zh-CN/lessons/lesson-arch-process-change.md +47 -0
  101. package/templates-zh-CN/lessons/lesson-new-doc.md +49 -0
  102. package/templates-zh-CN/lessons/lesson-ref-change.md +59 -0
  103. package/templates-zh-CN/planning/execution_strategy.md +37 -0
  104. package/templates-zh-CN/planning/findings.md +24 -0
  105. package/templates-zh-CN/planning/long-running-task-contract.md +118 -0
  106. package/templates-zh-CN/planning/module_plan.md +43 -0
  107. package/templates-zh-CN/planning/module_session_prompt.md +70 -0
  108. package/templates-zh-CN/planning/optional/artifacts/INDEX.md +13 -0
  109. package/templates-zh-CN/planning/optional/references/INDEX.md +13 -0
  110. package/templates-zh-CN/planning/optional/slices/_slice-template/brief.md +35 -0
  111. package/templates-zh-CN/planning/optional/slices/_slice-template/evidence.md +12 -0
  112. package/templates-zh-CN/planning/optional/slices/_slice-template/review.md +37 -0
  113. package/templates-zh-CN/planning/progress.md +29 -0
  114. package/templates-zh-CN/planning/review.md +69 -0
  115. package/templates-zh-CN/planning/task_plan.md +116 -0
  116. package/templates-zh-CN/planning/visual_roadmap.md +24 -0
  117. package/templates-zh-CN/reference/adversarial-review-standard.md +89 -0
  118. package/templates-zh-CN/reference/ci-cd-standard.md +72 -0
  119. package/templates-zh-CN/reference/delivery-operating-model-standard.md +79 -0
  120. package/templates-zh-CN/reference/docs-library-standard.md +59 -0
  121. package/templates-zh-CN/reference/engineering-standard.md +80 -0
  122. package/templates-zh-CN/reference/execution-workflow-standard.md +81 -0
  123. package/templates-zh-CN/reference/harness-ledger-standard.md +91 -0
  124. package/templates-zh-CN/reference/long-running-task-standard.md +156 -0
  125. package/templates-zh-CN/reference/regression-ssot-governance.md +82 -0
  126. package/templates-zh-CN/reference/repo-governance-standard.md +84 -0
  127. package/templates-zh-CN/reference/review-routing-standard.md +82 -0
  128. package/templates-zh-CN/reference/testing-standard.md +72 -0
  129. package/templates-zh-CN/reference/walkthrough-standard.md +83 -0
  130. package/templates-zh-CN/reference/worktree-standard.md +116 -0
  131. package/templates-zh-CN/regression/Cadence-Ledger.md +48 -0
  132. package/templates-zh-CN/ssot/Delivery-SSoT.md +60 -0
  133. package/templates-zh-CN/ssot/Feature-SSoT.md +49 -0
  134. package/templates-zh-CN/ssot/Lessons-SSoT.md +49 -0
  135. package/templates-zh-CN/ssot/Module-Registry.md +48 -0
  136. package/templates-zh-CN/ssot/Regression-SSoT.md +51 -0
  137. package/templates-zh-CN/verifier/verifier-output.md +38 -0
  138. package/templates-zh-CN/walkthrough/Closeout-SSoT.md +42 -0
  139. package/templates-zh-CN/walkthrough/walkthrough-template.md +62 -0
@@ -0,0 +1,12 @@
1
+ # Claude Code Entry
2
+
3
+ This repository uses `AGENTS.md` as the primary operating contract for all coding agents.
4
+
5
+ Before making changes:
6
+
7
+ 1. Read `AGENTS.md`.
8
+ 2. Follow its reading matrix for the work type.
9
+ 3. Create or update task files for non-trivial work.
10
+ 4. Keep this file as a thin Claude Code compatibility entry. Do not copy the full policy here.
11
+
12
+ When policy changes are needed, update `AGENTS.md` or the referenced standards, then keep this file pointing back to them.
@@ -0,0 +1,399 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --bg: #f4f6f3;
4
+ --surface: #fbfcf8;
5
+ --surface-2: #eef2ec;
6
+ --ink: #182018;
7
+ --muted: #627061;
8
+ --line: #dce3d8;
9
+ --accent: #2e6b4f;
10
+ --accent-2: #9d6b2f;
11
+ --danger: #a83f32;
12
+ --warn: #9a6a13;
13
+ --ok: #2f7b4f;
14
+ --shadow: 0 18px 45px rgba(32, 43, 28, 0.10);
15
+ font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
16
+ }
17
+
18
+ [data-theme="dark"] {
19
+ color-scheme: dark;
20
+ --bg: #151812;
21
+ --surface: #1d2219;
22
+ --surface-2: #252d20;
23
+ --ink: #edf1e8;
24
+ --muted: #a9b4a1;
25
+ --line: #384230;
26
+ --accent: #83c69d;
27
+ --accent-2: #d3a15f;
28
+ --danger: #e17668;
29
+ --warn: #e0b456;
30
+ --ok: #85cf9b;
31
+ --shadow: 0 18px 45px rgba(0, 0, 0, 0.28);
32
+ }
33
+
34
+ * { box-sizing: border-box; }
35
+ body {
36
+ margin: 0;
37
+ background: var(--bg);
38
+ color: var(--ink);
39
+ }
40
+ button, select {
41
+ font: inherit;
42
+ }
43
+ .layout {
44
+ min-height: 100vh;
45
+ display: grid;
46
+ grid-template-columns: 248px minmax(0, 1fr);
47
+ }
48
+ .sidebar {
49
+ border-right: 1px solid var(--line);
50
+ background: var(--surface);
51
+ padding: 22px 18px;
52
+ position: sticky;
53
+ top: 0;
54
+ height: 100vh;
55
+ }
56
+ .brand {
57
+ display: grid;
58
+ gap: 4px;
59
+ margin-bottom: 24px;
60
+ }
61
+ .brand strong { font-size: 18px; }
62
+ .brand span { color: var(--muted); font-size: 13px; }
63
+ .nav {
64
+ display: grid;
65
+ gap: 6px;
66
+ }
67
+ .nav button, .control button, .drawer-tabs button {
68
+ border: 0;
69
+ background: transparent;
70
+ color: var(--muted);
71
+ border-radius: 7px;
72
+ padding: 9px 10px;
73
+ text-align: left;
74
+ cursor: pointer;
75
+ }
76
+ .nav button.active, .nav button:hover, .control button.active, .drawer-tabs button.active {
77
+ background: var(--surface-2);
78
+ color: var(--ink);
79
+ }
80
+ .main {
81
+ padding: 24px clamp(18px, 4vw, 44px);
82
+ min-width: 0;
83
+ }
84
+ .topbar {
85
+ display: flex;
86
+ justify-content: space-between;
87
+ gap: 18px;
88
+ align-items: flex-start;
89
+ margin-bottom: 22px;
90
+ }
91
+ .eyebrow {
92
+ color: var(--muted);
93
+ font-size: 13px;
94
+ margin: 0 0 6px;
95
+ }
96
+ h1, h2, h3, p { margin-top: 0; letter-spacing: 0; }
97
+ h1 { font-size: clamp(26px, 4vw, 42px); line-height: 1.04; max-width: 760px; }
98
+ h2 { font-size: 20px; }
99
+ h3 { font-size: 15px; }
100
+ .controls {
101
+ display: flex;
102
+ flex-wrap: wrap;
103
+ gap: 8px;
104
+ justify-content: flex-end;
105
+ }
106
+ .control {
107
+ display: inline-flex;
108
+ border: 1px solid var(--line);
109
+ border-radius: 8px;
110
+ padding: 3px;
111
+ background: var(--surface);
112
+ }
113
+ .status-grid {
114
+ display: grid;
115
+ grid-template-columns: minmax(260px, 1.4fr) repeat(3, minmax(150px, 0.7fr));
116
+ gap: 12px;
117
+ margin-bottom: 18px;
118
+ }
119
+ .panel, .metric, .table-panel, .drawer {
120
+ background: var(--surface);
121
+ border: 1px solid var(--line);
122
+ border-radius: 8px;
123
+ box-shadow: var(--shadow);
124
+ }
125
+ .metric {
126
+ padding: 16px;
127
+ min-height: 112px;
128
+ }
129
+ .metric strong {
130
+ display: block;
131
+ font-size: 30px;
132
+ line-height: 1;
133
+ }
134
+ .metric span, .muted { color: var(--muted); }
135
+ .readiness {
136
+ padding: 18px;
137
+ }
138
+ .readiness .state {
139
+ display: inline-flex;
140
+ align-items: center;
141
+ border-radius: 7px;
142
+ padding: 6px 9px;
143
+ font-weight: 700;
144
+ margin-bottom: 14px;
145
+ }
146
+ .state.pass, .tag.pass { background: color-mix(in srgb, var(--ok) 18%, transparent); color: var(--ok); }
147
+ .state.warn, .tag.warn { background: color-mix(in srgb, var(--warn) 18%, transparent); color: var(--warn); }
148
+ .state.fail, .tag.fail, .tag.open { background: color-mix(in srgb, var(--danger) 18%, transparent); color: var(--danger); }
149
+ .page-grid {
150
+ display: grid;
151
+ grid-template-columns: minmax(0, 1fr) 410px;
152
+ gap: 16px;
153
+ align-items: start;
154
+ }
155
+ .page-grid > * {
156
+ min-width: 0;
157
+ }
158
+ .table-panel {
159
+ overflow: hidden;
160
+ min-width: 0;
161
+ }
162
+ .panel-head {
163
+ display: flex;
164
+ justify-content: space-between;
165
+ gap: 12px;
166
+ padding: 14px 16px;
167
+ border-bottom: 1px solid var(--line);
168
+ }
169
+ .table-wrap { overflow: auto; }
170
+ table {
171
+ width: 100%;
172
+ border-collapse: collapse;
173
+ font-size: 14px;
174
+ }
175
+ [data-density="compact"] table { font-size: 13px; }
176
+ th, td {
177
+ padding: 11px 12px;
178
+ border-bottom: 1px solid var(--line);
179
+ vertical-align: top;
180
+ text-align: left;
181
+ }
182
+ [data-density="compact"] th, [data-density="compact"] td { padding: 7px 9px; }
183
+ th {
184
+ color: var(--muted);
185
+ font-size: 12px;
186
+ font-weight: 700;
187
+ text-transform: uppercase;
188
+ }
189
+ tr {
190
+ cursor: pointer;
191
+ }
192
+ tr:hover td {
193
+ background: color-mix(in srgb, var(--accent) 8%, transparent);
194
+ }
195
+ .linklike {
196
+ border: 0;
197
+ padding: 0;
198
+ background: transparent;
199
+ color: var(--accent);
200
+ font: inherit;
201
+ text-align: left;
202
+ cursor: pointer;
203
+ overflow-wrap: anywhere;
204
+ }
205
+ .linklike:hover { text-decoration: underline; }
206
+ .tag {
207
+ display: inline-flex;
208
+ border-radius: 999px;
209
+ padding: 4px 8px;
210
+ font-size: 12px;
211
+ font-weight: 700;
212
+ background: var(--surface-2);
213
+ }
214
+ .bar {
215
+ height: 7px;
216
+ border-radius: 999px;
217
+ background: var(--surface-2);
218
+ overflow: hidden;
219
+ margin-top: 6px;
220
+ }
221
+ .bar i {
222
+ display: block;
223
+ height: 100%;
224
+ background: var(--accent);
225
+ }
226
+ .drawer {
227
+ position: sticky;
228
+ top: 18px;
229
+ min-width: 0;
230
+ max-height: calc(100vh - 36px);
231
+ overflow: hidden;
232
+ display: grid;
233
+ grid-template-rows: auto auto auto minmax(0, 1fr);
234
+ }
235
+ .drawer-head {
236
+ padding: 15px 16px;
237
+ border-bottom: 1px solid var(--line);
238
+ }
239
+ .drawer-tabs {
240
+ display: flex;
241
+ gap: 4px;
242
+ overflow-x: auto;
243
+ padding: 8px;
244
+ border-bottom: 1px solid var(--line);
245
+ }
246
+ .drawer-mode {
247
+ display: flex;
248
+ gap: 6px;
249
+ padding: 8px 12px;
250
+ border-bottom: 1px solid var(--line);
251
+ }
252
+ .drawer-mode button {
253
+ border: 1px solid var(--line);
254
+ background: transparent;
255
+ color: var(--muted);
256
+ border-radius: 7px;
257
+ padding: 6px 9px;
258
+ cursor: pointer;
259
+ }
260
+ .drawer-mode button.active {
261
+ color: var(--ink);
262
+ background: var(--surface-2);
263
+ }
264
+ .drawer-tabs button {
265
+ white-space: nowrap;
266
+ font-size: 13px;
267
+ }
268
+ .drawer-body {
269
+ padding: 16px;
270
+ overflow: auto;
271
+ }
272
+ .markdown {
273
+ line-height: 1.55;
274
+ color: var(--ink);
275
+ }
276
+ .markdown h1 { font-size: 24px; }
277
+ .markdown h2 { font-size: 18px; margin-top: 18px; }
278
+ .markdown pre {
279
+ white-space: pre-wrap;
280
+ background: var(--surface-2);
281
+ border-radius: 7px;
282
+ padding: 10px;
283
+ overflow: auto;
284
+ }
285
+ .rendered-table-wrap {
286
+ overflow: auto;
287
+ margin: 12px 0;
288
+ border: 1px solid var(--line);
289
+ border-radius: 7px;
290
+ }
291
+ .rendered-table {
292
+ min-width: 520px;
293
+ background: var(--surface);
294
+ }
295
+ .md-table {
296
+ margin: 0 0 2px;
297
+ box-shadow: none;
298
+ }
299
+ .mermaid-fallback {
300
+ margin: 12px 0;
301
+ border: 1px solid var(--line);
302
+ border-radius: 8px;
303
+ padding: 10px;
304
+ background: var(--surface-2);
305
+ }
306
+ .mermaid-rendered {
307
+ margin: 12px 0;
308
+ border: 1px solid var(--line);
309
+ border-radius: 8px;
310
+ padding: 10px;
311
+ background: var(--surface-2);
312
+ overflow-x: auto;
313
+ }
314
+ .mermaid-rendered figcaption {
315
+ font-weight: 700;
316
+ color: var(--accent);
317
+ margin-bottom: 8px;
318
+ }
319
+ .mermaid-rendered svg {
320
+ min-width: 360px;
321
+ width: 100%;
322
+ height: auto;
323
+ }
324
+ .mermaid-node rect {
325
+ fill: var(--surface);
326
+ stroke: var(--accent);
327
+ stroke-width: 1.5;
328
+ }
329
+ .mermaid-node text {
330
+ fill: var(--ink);
331
+ font-size: 11px;
332
+ }
333
+ .mermaid-edge {
334
+ stroke: var(--accent);
335
+ stroke-width: 1.5;
336
+ fill: none;
337
+ }
338
+ .mermaid-arrow {
339
+ fill: var(--accent);
340
+ }
341
+ .graph-panel {
342
+ margin-bottom: 16px;
343
+ overflow: hidden;
344
+ }
345
+ .graph-lanes {
346
+ display: grid;
347
+ grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
348
+ gap: 10px;
349
+ padding: 14px;
350
+ }
351
+ .lane {
352
+ display: grid;
353
+ gap: 5px;
354
+ min-height: 88px;
355
+ border: 1px solid var(--line);
356
+ border-radius: 8px;
357
+ padding: 10px;
358
+ background: var(--surface-2);
359
+ }
360
+ .lane span, .lane small {
361
+ color: var(--muted);
362
+ overflow-wrap: anywhere;
363
+ }
364
+ .mermaid-fallback figcaption {
365
+ font-weight: 700;
366
+ color: var(--accent);
367
+ margin-bottom: 8px;
368
+ }
369
+ .risk-list {
370
+ display: grid;
371
+ gap: 8px;
372
+ }
373
+ .risk-item {
374
+ border-left: 3px solid var(--accent-2);
375
+ padding: 8px 10px;
376
+ background: var(--surface-2);
377
+ border-radius: 6px;
378
+ }
379
+ .empty {
380
+ color: var(--muted);
381
+ padding: 18px;
382
+ }
383
+ @media (max-width: 980px) {
384
+ .layout { grid-template-columns: 1fr; }
385
+ .sidebar {
386
+ position: static;
387
+ height: auto;
388
+ border-right: 0;
389
+ border-bottom: 1px solid var(--line);
390
+ }
391
+ .nav { grid-template-columns: repeat(4, minmax(0, 1fr)); }
392
+ .status-grid, .page-grid { grid-template-columns: 1fr; }
393
+ .drawer { position: static; max-height: none; }
394
+ }
395
+ @media (max-width: 620px) {
396
+ .topbar { display: block; }
397
+ .controls { justify-content: flex-start; }
398
+ .nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
399
+ }