@harness-engineering/cli 1.26.0 → 1.26.1

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 (179) hide show
  1. package/dist/agents/skills/README.md +1 -0
  2. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +33 -5
  3. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +6 -0
  4. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +25 -1
  5. package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +22 -6
  6. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +2 -1
  7. package/dist/agents/skills/claude-code/initialize-test-suite-project/SKILL.md +415 -0
  8. package/dist/agents/skills/claude-code/initialize-test-suite-project/skill.yaml +35 -0
  9. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +33 -5
  10. package/dist/agents/skills/codex/harness-execution/SKILL.md +6 -0
  11. package/dist/agents/skills/codex/harness-planning/SKILL.md +25 -1
  12. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +22 -6
  13. package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +2 -1
  14. package/dist/agents/skills/codex/initialize-test-suite-project/SKILL.md +415 -0
  15. package/dist/agents/skills/codex/initialize-test-suite-project/skill.yaml +35 -0
  16. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +33 -5
  17. package/dist/agents/skills/cursor/harness-execution/SKILL.md +6 -0
  18. package/dist/agents/skills/cursor/harness-planning/SKILL.md +25 -1
  19. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +22 -6
  20. package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +2 -1
  21. package/dist/agents/skills/cursor/initialize-test-suite-project/SKILL.md +415 -0
  22. package/dist/agents/skills/cursor/initialize-test-suite-project/skill.yaml +35 -0
  23. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +33 -5
  24. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +6 -0
  25. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +25 -1
  26. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +22 -6
  27. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +2 -1
  28. package/dist/agents/skills/gemini-cli/initialize-test-suite-project/SKILL.md +415 -0
  29. package/dist/agents/skills/gemini-cli/initialize-test-suite-project/skill.yaml +35 -0
  30. package/dist/agents/skills/tests/initialize-test-suite-project.test.ts +152 -0
  31. package/dist/{agents-md-OPOZA5L7.js → agents-md-VI3HLR7E.js} +3 -3
  32. package/dist/{architecture-PMVMO6SF.js → architecture-ZDDKEVID.js} +4 -4
  33. package/dist/{assess-project-ZW7EKNIT.js → assess-project-Y6W7YDUA.js} +1 -1
  34. package/dist/bin/harness-mcp.js +16 -15
  35. package/dist/bin/harness.js +27 -27
  36. package/dist/{check-phase-gate-NTLAU3LO.js → check-phase-gate-CXR3VM22.js} +4 -4
  37. package/dist/{chunk-CAS3TS4Y.js → chunk-2BPPS6YQ.js} +793 -94
  38. package/dist/{chunk-VV2PJT4K.js → chunk-2FPUPRCY.js} +777 -598
  39. package/dist/{chunk-IFHAUFJX.js → chunk-3AMQYWGT.js} +2 -2
  40. package/dist/{chunk-FI3D6D7U.js → chunk-56A6OXVA.js} +9 -9
  41. package/dist/{chunk-QYSWNPXZ.js → chunk-7GY6WNEI.js} +1 -1
  42. package/dist/{chunk-ZBQ3ZY75.js → chunk-AMRC4FU2.js} +44 -41
  43. package/dist/{chunk-JZ6GORAK.js → chunk-B66LRB5M.js} +1 -1
  44. package/dist/{chunk-KFE2X7LG.js → chunk-BK4DJIIY.js} +4 -4
  45. package/dist/{chunk-G6SYTGOH.js → chunk-DBIX3X4H.js} +2 -2
  46. package/dist/{chunk-KXIAHHHP.js → chunk-FUND5WJR.js} +2 -2
  47. package/dist/{chunk-JWSVLC4I.js → chunk-JV4Y2U5F.js} +1 -1
  48. package/dist/{chunk-RNAGPTKF.js → chunk-K56DTX7G.js} +6 -6
  49. package/dist/{chunk-EXTWTJRF.js → chunk-N6B6RKQQ.js} +1 -1
  50. package/dist/{chunk-JBJ4AVE4.js → chunk-NY7DTZ6K.js} +3 -3
  51. package/dist/{chunk-Z2JORLRT.js → chunk-OLW7BJ5N.js} +1 -1
  52. package/dist/{chunk-HAOBHL3W.js → chunk-ORNEK65Y.js} +1 -1
  53. package/dist/{chunk-7JNZXJKY.js → chunk-PNNFCVW4.js} +5 -5
  54. package/dist/{chunk-NIOB6FTG.js → chunk-Q3ZLVMQM.js} +1 -1
  55. package/dist/{chunk-NVGQO4VM.js → chunk-RAVD7QLY.js} +8 -8
  56. package/dist/{chunk-J3O64D2A.js → chunk-TSVYBDDE.js} +1 -1
  57. package/dist/{chunk-KSFUJT5B.js → chunk-TY2ESLVL.js} +1 -1
  58. package/dist/{chunk-4KSKV5MK.js → chunk-VKS3F46M.js} +1 -1
  59. package/dist/{chunk-UBRD5FH4.js → chunk-WZ7UHPT3.js} +9 -9
  60. package/dist/{chunk-77EZGPSR.js → chunk-YC4EYIER.js} +8 -2
  61. package/dist/{chunk-6SCA4NEZ.js → chunk-ZN6ROTYP.js} +1 -1
  62. package/dist/{ci-workflow-H52EMCL6.js → ci-workflow-EW37KVPS.js} +3 -3
  63. package/dist/{create-skill-6QWJHQYS.js → create-skill-4T5CBSJ2.js} +2 -2
  64. package/dist/{dist-TG63OKA5.js → dist-CJDGASPP.js} +2 -2
  65. package/dist/{dist-PGQ32ZI7.js → dist-NCNAXUFD.js} +1 -1
  66. package/dist/{docs-GP4VUSIB.js → docs-4XI2FQW2.js} +4 -4
  67. package/dist/{engine-KQG5RVXX.js → engine-4L4CDTHU.js} +3 -3
  68. package/dist/{entropy-RXESIYKC.js → entropy-PBYSIQYS.js} +3 -3
  69. package/dist/{feedback-HS7ZYXOU.js → feedback-OTIFW5MK.js} +1 -1
  70. package/dist/{generate-agent-definitions-I4B7CVOB.js → generate-agent-definitions-CZGUXIIN.js} +4 -4
  71. package/dist/{graph-loader-TIVI6NQ7.js → graph-loader-RDXSEBD7.js} +1 -1
  72. package/dist/index.js +27 -27
  73. package/dist/{loader-CWAH6B4H.js → loader-UZOXCWFC.js} +3 -3
  74. package/dist/{mcp-KHK5KYER.js → mcp-GWVVV6LH.js} +16 -15
  75. package/dist/{performance-WDW5WS3J.js → performance-5UQPP3XX.js} +4 -4
  76. package/dist/{review-pipeline-QOZGWCTY.js → review-pipeline-65V4EO6O.js} +3 -3
  77. package/dist/{runtime-SFEFRPLX.js → runtime-PXX7HNB3.js} +3 -3
  78. package/dist/{scan-IJ7EYTF7.js → scan-WM7XDUF7.js} +1 -1
  79. package/dist/{security-2K7UUK6T.js → security-CAYDRZIZ.js} +1 -1
  80. package/dist/{validate-HXM6DXRZ.js → validate-CWGXR7QM.js} +4 -4
  81. package/dist/{validate-cross-check-ULQLEOME.js → validate-cross-check-BKCNLZYG.js} +3 -3
  82. package/package.json +4 -4
  83. package/dist/agents/commands/claude-code/harness/harness.md +0 -36
  84. package/dist/agents/commands/codex/AGENTS.md +0 -39
  85. package/dist/agents/commands/codex/harness/add-harness-component/SKILL.md +0 -204
  86. package/dist/agents/commands/codex/harness/add-harness-component/agents/openai.yaml +0 -3
  87. package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +0 -257
  88. package/dist/agents/commands/codex/harness/cleanup-dead-code/agents/openai.yaml +0 -3
  89. package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +0 -191
  90. package/dist/agents/commands/codex/harness/detect-doc-drift/agents/openai.yaml +0 -3
  91. package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +0 -289
  92. package/dist/agents/commands/codex/harness/enforce-architecture/agents/openai.yaml +0 -3
  93. package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +0 -442
  94. package/dist/agents/commands/codex/harness/harness-architecture-advisor/agents/openai.yaml +0 -3
  95. package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +0 -929
  96. package/dist/agents/commands/codex/harness/harness-autopilot/agents/openai.yaml +0 -3
  97. package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +0 -418
  98. package/dist/agents/commands/codex/harness/harness-brainstorming/agents/openai.yaml +0 -3
  99. package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +0 -850
  100. package/dist/agents/commands/codex/harness/harness-code-review/agents/openai.yaml +0 -3
  101. package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +0 -236
  102. package/dist/agents/commands/codex/harness/harness-codebase-cleanup/agents/openai.yaml +0 -3
  103. package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +0 -378
  104. package/dist/agents/commands/codex/harness/harness-debugging/agents/openai.yaml +0 -3
  105. package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +0 -190
  106. package/dist/agents/commands/codex/harness/harness-dependency-health/agents/openai.yaml +0 -3
  107. package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +0 -472
  108. package/dist/agents/commands/codex/harness/harness-docs-pipeline/agents/openai.yaml +0 -3
  109. package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +0 -522
  110. package/dist/agents/commands/codex/harness/harness-execution/agents/openai.yaml +0 -3
  111. package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +0 -172
  112. package/dist/agents/commands/codex/harness/harness-hotspot-detector/agents/openai.yaml +0 -3
  113. package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +0 -195
  114. package/dist/agents/commands/codex/harness/harness-impact-analysis/agents/openai.yaml +0 -3
  115. package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +0 -178
  116. package/dist/agents/commands/codex/harness/harness-integrity/agents/openai.yaml +0 -3
  117. package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +0 -299
  118. package/dist/agents/commands/codex/harness/harness-onboarding/agents/openai.yaml +0 -3
  119. package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +0 -272
  120. package/dist/agents/commands/codex/harness/harness-perf/agents/openai.yaml +0 -3
  121. package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +0 -592
  122. package/dist/agents/commands/codex/harness/harness-planning/agents/openai.yaml +0 -3
  123. package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +0 -181
  124. package/dist/agents/commands/codex/harness/harness-refactoring/agents/openai.yaml +0 -3
  125. package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +0 -701
  126. package/dist/agents/commands/codex/harness/harness-release-readiness/agents/openai.yaml +0 -3
  127. package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +0 -607
  128. package/dist/agents/commands/codex/harness/harness-roadmap/agents/openai.yaml +0 -3
  129. package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +0 -147
  130. package/dist/agents/commands/codex/harness/harness-security-scan/agents/openai.yaml +0 -3
  131. package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +0 -314
  132. package/dist/agents/commands/codex/harness/harness-skill-authoring/agents/openai.yaml +0 -3
  133. package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +0 -1280
  134. package/dist/agents/commands/codex/harness/harness-soundness-review/agents/openai.yaml +0 -3
  135. package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +0 -255
  136. package/dist/agents/commands/codex/harness/harness-supply-chain-audit/agents/openai.yaml +0 -3
  137. package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +0 -189
  138. package/dist/agents/commands/codex/harness/harness-tdd/agents/openai.yaml +0 -3
  139. package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +0 -171
  140. package/dist/agents/commands/codex/harness/harness-test-advisor/agents/openai.yaml +0 -3
  141. package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +0 -433
  142. package/dist/agents/commands/codex/harness/harness-verification/agents/openai.yaml +0 -3
  143. package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +0 -170
  144. package/dist/agents/commands/codex/harness/harness-verify/agents/openai.yaml +0 -3
  145. package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +0 -244
  146. package/dist/agents/commands/codex/harness/initialize-harness-project/agents/openai.yaml +0 -3
  147. package/dist/agents/commands/cursor/harness/add-harness-component.mdc +0 -200
  148. package/dist/agents/commands/cursor/harness/cleanup-dead-code.mdc +0 -253
  149. package/dist/agents/commands/cursor/harness/detect-doc-drift.mdc +0 -187
  150. package/dist/agents/commands/cursor/harness/enforce-architecture.mdc +0 -304
  151. package/dist/agents/commands/cursor/harness/harness-architecture-advisor.mdc +0 -457
  152. package/dist/agents/commands/cursor/harness/harness-autopilot.mdc +0 -924
  153. package/dist/agents/commands/cursor/harness/harness-brainstorming.mdc +0 -414
  154. package/dist/agents/commands/cursor/harness/harness-code-review.mdc +0 -865
  155. package/dist/agents/commands/cursor/harness/harness-codebase-cleanup.mdc +0 -232
  156. package/dist/agents/commands/cursor/harness/harness-debugging.mdc +0 -374
  157. package/dist/agents/commands/cursor/harness/harness-dependency-health.mdc +0 -187
  158. package/dist/agents/commands/cursor/harness/harness-docs-pipeline.mdc +0 -468
  159. package/dist/agents/commands/cursor/harness/harness-execution.mdc +0 -518
  160. package/dist/agents/commands/cursor/harness/harness-hotspot-detector.mdc +0 -169
  161. package/dist/agents/commands/cursor/harness/harness-impact-analysis.mdc +0 -192
  162. package/dist/agents/commands/cursor/harness/harness-integrity.mdc +0 -175
  163. package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +0 -296
  164. package/dist/agents/commands/cursor/harness/harness-perf.mdc +0 -268
  165. package/dist/agents/commands/cursor/harness/harness-planning.mdc +0 -587
  166. package/dist/agents/commands/cursor/harness/harness-refactoring.mdc +0 -177
  167. package/dist/agents/commands/cursor/harness/harness-release-readiness.mdc +0 -697
  168. package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +0 -603
  169. package/dist/agents/commands/cursor/harness/harness-security-scan.mdc +0 -162
  170. package/dist/agents/commands/cursor/harness/harness-skill-authoring.mdc +0 -300
  171. package/dist/agents/commands/cursor/harness/harness-soundness-review.mdc +0 -1275
  172. package/dist/agents/commands/cursor/harness/harness-supply-chain-audit.mdc +0 -252
  173. package/dist/agents/commands/cursor/harness/harness-tdd.mdc +0 -185
  174. package/dist/agents/commands/cursor/harness/harness-test-advisor.mdc +0 -168
  175. package/dist/agents/commands/cursor/harness/harness-verification.mdc +0 -429
  176. package/dist/agents/commands/cursor/harness/harness-verify.mdc +0 -167
  177. package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +0 -240
  178. package/dist/agents/commands/gemini-cli/harness/harness.toml +0 -277
  179. package/dist/{chunk-RRHUCDRD.js → chunk-ZP5E7YET.js} +3 -3
@@ -0,0 +1,35 @@
1
+ name: initialize-test-suite-project
2
+ version: "1.0.0"
3
+ description: Scaffold or migrate a test-suite project (API, E2E/UI, or shared library) with test-suite-specific layer models, tags, reporter stack, and custom report
4
+ stability: static
5
+ cognitive_mode: constructive-architect
6
+ triggers:
7
+ - manual
8
+ platforms:
9
+ - claude-code
10
+ - gemini-cli
11
+ - cursor
12
+ - codex
13
+ tools:
14
+ - Bash
15
+ - Read
16
+ - Write
17
+ - Glob
18
+ cli:
19
+ command: harness skill run initialize-test-suite-project
20
+ args:
21
+ - name: path
22
+ description: Project root path
23
+ required: false
24
+ mcp:
25
+ tool: run_skill
26
+ input:
27
+ skill: initialize-test-suite-project
28
+ path: string
29
+ type: flexible
30
+ tier: 1
31
+ state:
32
+ persistent: false
33
+ files: []
34
+ depends_on:
35
+ - initialize-harness-project
@@ -0,0 +1,152 @@
1
+ // agents/skills/tests/initialize-test-suite-project.test.ts
2
+ //
3
+ // Contract tests for the initialize-test-suite-project skill. Generic schema,
4
+ // structure, and platform-parity checks live in the sibling *.test.ts files;
5
+ // this file locks in invariants specific to this skill — its composition with
6
+ // initialize-harness-project, phase structure, and the cross-file references
7
+ // that make the slash command and docs discoverable.
8
+
9
+ import { describe, it, expect } from 'vitest';
10
+ import { readFileSync, existsSync } from 'fs';
11
+ import { resolve, dirname } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ import { parse } from 'yaml';
14
+
15
+ const __dirname = dirname(fileURLToPath(import.meta.url));
16
+ const SKILLS_DIR = resolve(__dirname, '..');
17
+ const REPO_ROOT = resolve(SKILLS_DIR, '..', '..');
18
+
19
+ const SKILL_NAME = 'initialize-test-suite-project';
20
+ const PARENT_SKILL = 'initialize-harness-project';
21
+ const PLATFORMS = ['claude-code', 'gemini-cli', 'cursor', 'codex'] as const;
22
+
23
+ function readSkillYaml(platform: string): Record<string, unknown> {
24
+ const path = resolve(SKILLS_DIR, platform, SKILL_NAME, 'skill.yaml');
25
+ return parse(readFileSync(path, 'utf-8'));
26
+ }
27
+
28
+ function readSkillMd(platform: string): string {
29
+ return readFileSync(resolve(SKILLS_DIR, platform, SKILL_NAME, 'SKILL.md'), 'utf-8');
30
+ }
31
+
32
+ describe('initialize-test-suite-project metadata', () => {
33
+ it.each(PLATFORMS)('%s skill.yaml declares correct name and tier', (platform) => {
34
+ const meta = readSkillYaml(platform);
35
+ expect(meta.name).toBe(SKILL_NAME);
36
+ expect(meta.tier).toBe(1);
37
+ expect(meta.type).toBe('flexible');
38
+ expect(meta.cognitive_mode).toBe('constructive-architect');
39
+ });
40
+
41
+ it.each(PLATFORMS)('%s skill.yaml depends on initialize-harness-project', (platform) => {
42
+ const meta = readSkillYaml(platform);
43
+ expect(meta.depends_on).toContain(PARENT_SKILL);
44
+ });
45
+
46
+ it.each(PLATFORMS)('%s skill.yaml is registered for all four platforms', (platform) => {
47
+ const meta = readSkillYaml(platform) as { platforms: string[] };
48
+ for (const p of PLATFORMS) {
49
+ expect(meta.platforms).toContain(p);
50
+ }
51
+ });
52
+
53
+ it.each(PLATFORMS)('%s skill.yaml does not set a custom command_namespace', (platform) => {
54
+ const meta = readSkillYaml(platform) as Record<string, unknown>;
55
+ expect(meta.command_namespace).toBeUndefined();
56
+ });
57
+ });
58
+
59
+ describe('initialize-test-suite-project SKILL.md structure', () => {
60
+ const REQUIRED_PHASES = [
61
+ '### Phase 1: CLASSIFY',
62
+ '### Phase 2: DECIDE',
63
+ '### Phase 3: CONFIGURE',
64
+ '### Phase 4: VALIDATE',
65
+ ];
66
+
67
+ it.each(PLATFORMS)('%s SKILL.md declares all four phases', (platform) => {
68
+ const body = readSkillMd(platform);
69
+ for (const phase of REQUIRED_PHASES) {
70
+ expect(body, `missing phase heading "${phase}" in ${platform}`).toContain(phase);
71
+ }
72
+ });
73
+
74
+ it.each(PLATFORMS)('%s SKILL.md names all three archetypes', (platform) => {
75
+ const body = readSkillMd(platform);
76
+ expect(body).toMatch(/API test suite/i);
77
+ expect(body).toMatch(/E2E ?\/ ?UI/i);
78
+ expect(body).toMatch(/Shared test library/i);
79
+ });
80
+
81
+ it.each(PLATFORMS)('%s SKILL.md documents both layer variants A and B', (platform) => {
82
+ const body = readSkillMd(platform);
83
+ expect(body).toMatch(/Variant A/);
84
+ expect(body).toMatch(/Variant B/);
85
+ });
86
+
87
+ it.each(PLATFORMS)(
88
+ '%s SKILL.md includes the "Prove the guards fire" verification step',
89
+ (platform) => {
90
+ const body = readSkillMd(platform);
91
+ expect(body).toMatch(/Prove the [Gg]uards [Ff]ire/);
92
+ }
93
+ );
94
+
95
+ it.each(PLATFORMS)('%s SKILL.md describes the custom report scaffolding', (platform) => {
96
+ const body = readSkillMd(platform);
97
+ expect(body).toMatch(/scripts\/generate-reports\.ts/);
98
+ });
99
+
100
+ it.each(PLATFORMS)('%s SKILL.md documents quarantine tag grepInvert', (platform) => {
101
+ const body = readSkillMd(platform);
102
+ expect(body).toMatch(/grepInvert/);
103
+ expect(body).toMatch(/@known-failure/);
104
+ expect(body).toMatch(/@wip/);
105
+ });
106
+
107
+ it.each(PLATFORMS)('%s SKILL.md hands control back to parent skill', (platform) => {
108
+ const body = readSkillMd(platform);
109
+ expect(body).toContain(PARENT_SKILL);
110
+ });
111
+ });
112
+
113
+ describe('initialize-test-suite-project composition with initialize-harness-project', () => {
114
+ it.each(PLATFORMS)('%s parent skill dispatches to initialize-test-suite-project', (platform) => {
115
+ const parentPath = resolve(SKILLS_DIR, platform, PARENT_SKILL, 'SKILL.md');
116
+ if (!existsSync(parentPath)) return;
117
+ const parent = readFileSync(parentPath, 'utf-8');
118
+ expect(
119
+ parent,
120
+ `${platform}/${PARENT_SKILL}/SKILL.md must reference ${SKILL_NAME} for dispatch`
121
+ ).toContain(SKILL_NAME);
122
+ });
123
+ });
124
+
125
+ describe('initialize-test-suite-project cross-file registration', () => {
126
+ it('is listed in docs/reference/skills-catalog.md under Tier 1', () => {
127
+ const catalog = readFileSync(
128
+ resolve(REPO_ROOT, 'docs', 'reference', 'skills-catalog.md'),
129
+ 'utf-8'
130
+ );
131
+ const tier1Section = catalog.split('## Tier 2')[0] ?? '';
132
+ expect(tier1Section).toContain(`### ${SKILL_NAME}`);
133
+ });
134
+
135
+ it('is referenced in docs/guides/qa-quickstart.md as a slash command', () => {
136
+ const guide = readFileSync(resolve(REPO_ROOT, 'docs', 'guides', 'qa-quickstart.md'), 'utf-8');
137
+ expect(guide).toContain(`/harness:${SKILL_NAME}`);
138
+ });
139
+
140
+ it('is referenced in docs/guides/features-overview.md', () => {
141
+ const overview = readFileSync(
142
+ resolve(REPO_ROOT, 'docs', 'guides', 'features-overview.md'),
143
+ 'utf-8'
144
+ );
145
+ expect(overview).toContain(`/harness:${SKILL_NAME}`);
146
+ });
147
+
148
+ it('is listed in agents/skills/README.md Setup section', () => {
149
+ const readme = readFileSync(resolve(SKILLS_DIR, 'README.md'), 'utf-8');
150
+ expect(readme).toContain(SKILL_NAME);
151
+ });
152
+ });
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateAgentsMd
3
- } from "./chunk-6SCA4NEZ.js";
4
- import "./chunk-77EZGPSR.js";
3
+ } from "./chunk-ZN6ROTYP.js";
4
+ import "./chunk-YC4EYIER.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
- import "./chunk-VV2PJT4K.js";
6
+ import "./chunk-2FPUPRCY.js";
7
7
  import "./chunk-KFQGP6VL.js";
8
8
  export {
9
9
  generateAgentsMd
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  checkDependenciesDefinition,
3
3
  handleCheckDependencies
4
- } from "./chunk-KFE2X7LG.js";
5
- import "./chunk-J3O64D2A.js";
4
+ } from "./chunk-BK4DJIIY.js";
5
+ import "./chunk-TSVYBDDE.js";
6
6
  import "./chunk-EPUKTTJZ.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
- import "./chunk-77EZGPSR.js";
8
+ import "./chunk-YC4EYIER.js";
9
9
  import "./chunk-RL4VMEXL.js";
10
- import "./chunk-VV2PJT4K.js";
10
+ import "./chunk-2FPUPRCY.js";
11
11
  import "./chunk-KFQGP6VL.js";
12
12
  export {
13
13
  checkDependenciesDefinition,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  assessProjectDefinition,
3
3
  handleAssessProject
4
- } from "./chunk-RNAGPTKF.js";
4
+ } from "./chunk-K56DTX7G.js";
5
5
  import "./chunk-W6Y7ZW3Y.js";
6
6
  import "./chunk-KFQGP6VL.js";
7
7
  export {
@@ -1,28 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-CAS3TS4Y.js";
5
- import "../chunk-RNAGPTKF.js";
4
+ } from "../chunk-2BPPS6YQ.js";
5
+ import "../chunk-K56DTX7G.js";
6
6
  import "../chunk-RC5ZY3EV.js";
7
- import "../chunk-UBRD5FH4.js";
8
- import "../chunk-IFHAUFJX.js";
9
- import "../chunk-G6SYTGOH.js";
10
- import "../chunk-JBJ4AVE4.js";
11
- import "../chunk-KFE2X7LG.js";
12
- import "../chunk-J3O64D2A.js";
13
- import "../chunk-FI3D6D7U.js";
14
- import "../chunk-7JNZXJKY.js";
15
- import "../chunk-NVGQO4VM.js";
7
+ import "../chunk-WZ7UHPT3.js";
8
+ import "../chunk-3AMQYWGT.js";
9
+ import "../chunk-DBIX3X4H.js";
10
+ import "../chunk-NY7DTZ6K.js";
11
+ import "../chunk-BK4DJIIY.js";
12
+ import "../chunk-TSVYBDDE.js";
13
+ import "../chunk-56A6OXVA.js";
14
+ import "../chunk-PNNFCVW4.js";
15
+ import "../chunk-RAVD7QLY.js";
16
16
  import "../chunk-EPUKTTJZ.js";
17
17
  import "../chunk-W6Y7ZW3Y.js";
18
- import "../chunk-4KSKV5MK.js";
18
+ import "../chunk-VKS3F46M.js";
19
19
  import "../chunk-3ISINLYT.js";
20
20
  import "../chunk-6B6UN6SG.js";
21
- import "../chunk-Z2JORLRT.js";
22
- import "../chunk-77EZGPSR.js";
21
+ import "../chunk-OLW7BJ5N.js";
22
+ import "../chunk-YC4EYIER.js";
23
23
  import "../chunk-RL4VMEXL.js";
24
- import "../chunk-VV2PJT4K.js";
24
+ import "../chunk-2FPUPRCY.js";
25
25
  import "../chunk-HIK6OEUF.js";
26
+ import "../chunk-EBJQ6N4M.js";
26
27
  import "../chunk-3WGJMBKH.js";
27
28
  import "../chunk-KFQGP6VL.js";
28
29
 
@@ -3,44 +3,44 @@ import {
3
3
  createProgram,
4
4
  installCommandTelemetry,
5
5
  printFirstRunWelcome
6
- } from "../chunk-ZBQ3ZY75.js";
7
- import "../chunk-6SCA4NEZ.js";
8
- import "../chunk-HAOBHL3W.js";
9
- import "../chunk-QYSWNPXZ.js";
10
- import "../chunk-JZ6GORAK.js";
6
+ } from "../chunk-AMRC4FU2.js";
7
+ import "../chunk-ZN6ROTYP.js";
8
+ import "../chunk-ORNEK65Y.js";
9
+ import "../chunk-7GY6WNEI.js";
10
+ import "../chunk-B66LRB5M.js";
11
11
  import "../chunk-CQ553GZO.js";
12
- import "../chunk-EXTWTJRF.js";
12
+ import "../chunk-N6B6RKQQ.js";
13
13
  import "../chunk-GISMXMVL.js";
14
14
  import "../chunk-WWACIIBA.js";
15
15
  import "../chunk-TEFCFC4H.js";
16
- import "../chunk-KXIAHHHP.js";
17
- import "../chunk-KSFUJT5B.js";
16
+ import "../chunk-FUND5WJR.js";
17
+ import "../chunk-TY2ESLVL.js";
18
18
  import "../chunk-KET4QQZB.js";
19
- import "../chunk-JWSVLC4I.js";
20
- import "../chunk-NIOB6FTG.js";
19
+ import "../chunk-JV4Y2U5F.js";
20
+ import "../chunk-Q3ZLVMQM.js";
21
21
  import {
22
22
  dispatchSkillsFromGit
23
- } from "../chunk-CAS3TS4Y.js";
24
- import "../chunk-RNAGPTKF.js";
23
+ } from "../chunk-2BPPS6YQ.js";
24
+ import "../chunk-K56DTX7G.js";
25
25
  import "../chunk-RC5ZY3EV.js";
26
- import "../chunk-UBRD5FH4.js";
27
- import "../chunk-IFHAUFJX.js";
28
- import "../chunk-G6SYTGOH.js";
29
- import "../chunk-JBJ4AVE4.js";
30
- import "../chunk-KFE2X7LG.js";
31
- import "../chunk-J3O64D2A.js";
32
- import "../chunk-FI3D6D7U.js";
33
- import "../chunk-7JNZXJKY.js";
34
- import "../chunk-NVGQO4VM.js";
26
+ import "../chunk-WZ7UHPT3.js";
27
+ import "../chunk-3AMQYWGT.js";
28
+ import "../chunk-DBIX3X4H.js";
29
+ import "../chunk-NY7DTZ6K.js";
30
+ import "../chunk-BK4DJIIY.js";
31
+ import "../chunk-TSVYBDDE.js";
32
+ import "../chunk-56A6OXVA.js";
33
+ import "../chunk-PNNFCVW4.js";
34
+ import "../chunk-RAVD7QLY.js";
35
35
  import "../chunk-EPUKTTJZ.js";
36
36
  import "../chunk-W6Y7ZW3Y.js";
37
37
  import {
38
38
  findConfigFile,
39
39
  loadConfig
40
- } from "../chunk-4KSKV5MK.js";
40
+ } from "../chunk-VKS3F46M.js";
41
41
  import "../chunk-3ISINLYT.js";
42
42
  import "../chunk-6B6UN6SG.js";
43
- import "../chunk-Z2JORLRT.js";
43
+ import "../chunk-OLW7BJ5N.js";
44
44
  import {
45
45
  CLI_VERSION
46
46
  } from "../chunk-BM3PWGXQ.js";
@@ -51,12 +51,12 @@ import {
51
51
  readCheckState,
52
52
  shouldRunCheck,
53
53
  spawnBackgroundCheck
54
- } from "../chunk-77EZGPSR.js";
54
+ } from "../chunk-YC4EYIER.js";
55
55
  import "../chunk-RL4VMEXL.js";
56
- import "../chunk-VV2PJT4K.js";
57
- import "../chunk-RRHUCDRD.js";
58
- import "../chunk-EBJQ6N4M.js";
56
+ import "../chunk-2FPUPRCY.js";
57
+ import "../chunk-ZP5E7YET.js";
59
58
  import "../chunk-HIK6OEUF.js";
59
+ import "../chunk-EBJQ6N4M.js";
60
60
  import {
61
61
  handleError
62
62
  } from "../chunk-3WGJMBKH.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createCheckPhaseGateCommand,
3
3
  runCheckPhaseGate
4
- } from "./chunk-KXIAHHHP.js";
5
- import "./chunk-4KSKV5MK.js";
6
- import "./chunk-77EZGPSR.js";
4
+ } from "./chunk-FUND5WJR.js";
5
+ import "./chunk-VKS3F46M.js";
6
+ import "./chunk-YC4EYIER.js";
7
7
  import "./chunk-RL4VMEXL.js";
8
- import "./chunk-VV2PJT4K.js";
8
+ import "./chunk-2FPUPRCY.js";
9
9
  import "./chunk-EBJQ6N4M.js";
10
10
  import "./chunk-3WGJMBKH.js";
11
11
  import "./chunk-KFQGP6VL.js";