harnessed 4.8.0 → 4.9.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 (55) hide show
  1. package/bin/harnessed-inject-state.mjs +35 -4
  2. package/dist/cli.mjs +53 -10
  3. package/dist/cli.mjs.map +1 -1
  4. package/dist/index.mjs +1 -1
  5. package/dist/index.mjs.map +1 -1
  6. package/manifests/optional/perturn-inject.yaml +49 -0
  7. package/package.json +1 -1
  8. package/workflows/auto/SKILL.md +12 -12
  9. package/workflows/auto/SKILL.zh-Hans.md +8 -10
  10. package/workflows/discuss/auto/SKILL.md +12 -11
  11. package/workflows/discuss/auto/SKILL.zh-Hans.md +8 -9
  12. package/workflows/discuss/phase/SKILL.md +12 -11
  13. package/workflows/discuss/phase/SKILL.zh-Hans.md +8 -9
  14. package/workflows/discuss/strategic/SKILL.md +12 -11
  15. package/workflows/discuss/strategic/SKILL.zh-Hans.md +8 -9
  16. package/workflows/discuss/subtask/SKILL.md +12 -11
  17. package/workflows/discuss/subtask/SKILL.zh-Hans.md +8 -9
  18. package/workflows/plan/architecture/SKILL.md +12 -11
  19. package/workflows/plan/architecture/SKILL.zh-Hans.md +8 -9
  20. package/workflows/plan/auto/SKILL.md +12 -11
  21. package/workflows/plan/auto/SKILL.zh-Hans.md +8 -9
  22. package/workflows/plan/phase/SKILL.md +12 -11
  23. package/workflows/plan/phase/SKILL.zh-Hans.md +8 -9
  24. package/workflows/research/SKILL.md +12 -40
  25. package/workflows/research/SKILL.zh-Hans.md +8 -38
  26. package/workflows/retro/SKILL.md +12 -11
  27. package/workflows/retro/SKILL.zh-Hans.md +8 -9
  28. package/workflows/task/auto/SKILL.md +12 -11
  29. package/workflows/task/auto/SKILL.zh-Hans.md +9 -10
  30. package/workflows/task/clarify/SKILL.md +12 -11
  31. package/workflows/task/clarify/SKILL.zh-Hans.md +9 -10
  32. package/workflows/task/code/SKILL.md +12 -11
  33. package/workflows/task/code/SKILL.zh-Hans.md +9 -10
  34. package/workflows/task/deliver/SKILL.md +12 -11
  35. package/workflows/task/deliver/SKILL.zh-Hans.md +9 -10
  36. package/workflows/task/test/SKILL.md +12 -11
  37. package/workflows/task/test/SKILL.zh-Hans.md +9 -10
  38. package/workflows/verify/auto/SKILL.md +12 -11
  39. package/workflows/verify/auto/SKILL.zh-Hans.md +8 -9
  40. package/workflows/verify/code-review/SKILL.md +12 -11
  41. package/workflows/verify/code-review/SKILL.zh-Hans.md +8 -9
  42. package/workflows/verify/design/SKILL.md +12 -11
  43. package/workflows/verify/design/SKILL.zh-Hans.md +9 -10
  44. package/workflows/verify/multispec/SKILL.md +12 -11
  45. package/workflows/verify/multispec/SKILL.zh-Hans.md +9 -10
  46. package/workflows/verify/paranoid/SKILL.md +12 -11
  47. package/workflows/verify/paranoid/SKILL.zh-Hans.md +9 -10
  48. package/workflows/verify/progress/SKILL.md +12 -11
  49. package/workflows/verify/progress/SKILL.zh-Hans.md +9 -10
  50. package/workflows/verify/qa/SKILL.md +12 -11
  51. package/workflows/verify/qa/SKILL.zh-Hans.md +9 -10
  52. package/workflows/verify/security/SKILL.md +12 -11
  53. package/workflows/verify/security/SKILL.zh-Hans.md +9 -10
  54. package/workflows/verify/simplify/SKILL.md +12 -11
  55. package/workflows/verify/simplify/SKILL.zh-Hans.md +9 -10
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // package.json
2
2
  var package_default = {
3
- version: "4.8.0"};
3
+ version: "4.9.1"};
4
4
 
5
5
  // src/index.ts
6
6
  var VERSION = package_default.version;
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAkGb,CAAA;;;AC/FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.8.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 \"harnessed-inject-state\": \"./bin/harnessed-inject-state.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 \"bin\",\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"]}
1
+ {"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAkGb,CAAA;;;AC/FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.9.1\",\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 \"harnessed-inject-state\": \"./bin/harnessed-inject-state.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 \"bin\",\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"]}
@@ -0,0 +1,49 @@
1
+ # yaml-language-server: $schema=../../schemas/manifest.v1.schema.json
2
+ # Phase 35 (v5.0 Spec 3/G) — opt-in per-turn injection hook.
3
+ # Registers a UserPromptSubmit hook that runs bin/harnessed-inject-state.mjs each
4
+ # turn: the bin prints a <workflow-state> breadcrumb (you-are-here / next sub) +
5
+ # a relevance-filtered <project-context> block for the ACTIVE session's workflow
6
+ # (session-scoped via the composite ledger key — Phase 34/35). The bin exits 0
7
+ # silently when there is no active workflow, so an enabled hook in a non-workflow
8
+ # repo is a cheap no-op. Opt-in (manifests/optional/) because per-turn injection
9
+ # has a token cost (~1500 budget) and only matters in a harnessed-workflow repo.
10
+ # Idempotent — re-install on an existing matching entry → skip.
11
+ apiVersion: harnessed/v1
12
+ kind: Manifest
13
+ metadata:
14
+ name: perturn-inject
15
+ display_name: Per-Turn State Injection (UserPromptSubmit)
16
+ description: Opt-in UserPromptSubmit hook injecting the active session's workflow-state + project-context each turn (Spec 3/G).
17
+ upstream:
18
+ source: perturn-inject
19
+ homepage: https://github.com/easyinplay/harnessed
20
+ repository: https://github.com/easyinplay/harnessed.git
21
+ license: MIT
22
+ notice: First-party harnessed hook (Phase 35, v5.0 Spec 3/G).
23
+ spec:
24
+ type: cc-hook
25
+ component_type: command
26
+ category: meta
27
+ install_type: hook
28
+ install:
29
+ method: cc-hook-add
30
+ cmd: "node bin/harnessed-inject-state.mjs"
31
+ hook_event: UserPromptSubmit
32
+ hook_command: "node bin/harnessed-inject-state.mjs"
33
+ idempotent_check: "grep -q harnessed-inject-state ~/.claude/settings.json"
34
+ verify:
35
+ cmd: "grep -q harnessed-inject-state ~/.claude/settings.json"
36
+ timeout_ms: 5000
37
+ expected_exit_code: 0
38
+ uninstall:
39
+ cmd: "true"
40
+ upstream_health:
41
+ stability: beta
42
+ last_check: "2026-06-25"
43
+ last_known_good_version: "0.1.0"
44
+ fallback_action: warn
45
+ signed_by: easyinplay
46
+ platforms:
47
+ - linux
48
+ - darwin
49
+ - win32
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harnessed",
3
- "version": "4.8.0",
3
+ "version": "4.9.1",
4
4
  "description": "AI coding harness package manager + composition orchestrator",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -105,18 +105,18 @@ Sister `workflows/capabilities.yaml`:
105
105
 
106
106
  ## How to invoke
107
107
 
108
- Use the Bash tool to run:
109
-
110
- ```bash
111
- echo "$ARGUMENTS" | harnessed run auto --task-stdin
112
- ```
113
-
114
- If `$ARGUMENTS` is empty, run `harnessed run auto` (no stdin pipe).
115
-
116
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
117
- - For stage-by-stage review, append `--staged` (pauses between stages for user review).
118
-
119
- <!-- harnessed-generated:v3.4.4 -->
108
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run auto` — that is the CI/headless
109
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
110
+ invoked from inside a Claude Code session).
111
+
112
+ Run the `/auto` slash command instead (generated by `harnessed setup` at
113
+ `~/.claude/commands/auto.md`). It drives the stage natively: `harnessed gates` → which
114
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
115
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
116
+ full state-machine steps live in `~/.claude/commands/auto.md`; if that file is absent,
117
+ follow that same gates prompt spawn checkpoint sequence yourself.
118
+
119
+ <!-- harnessed-generated:v4.9.1 -->
120
120
 
121
121
  ## References
122
122
 
@@ -104,18 +104,16 @@ Sister `workflows/capabilities.yaml`:
104
104
 
105
105
  ## 如何调用
106
106
 
107
- 使用 Bash 工具运行:
107
+ CC-native 编排。**不要** pipe 到 `harnessed run auto` —— 那是 CI/headless 路径(in-process
108
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
108
109
 
109
- ```bash
110
- echo "$ARGUMENTS" | harnessed run auto --task-stdin
111
- ```
110
+ 改用 `/auto` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/auto.md`)。
111
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
112
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
113
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/auto.md`;
114
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
112
115
 
113
- 如果 `$ARGUMENTS` 为空,运行 `harnessed run auto`(不带 stdin pipe)。
114
-
115
- 完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一个阶段。根据对话上下文决定是否调用 — 该提示仅供参考,不作强制指引。
116
- - 如需逐 stage 审查,追加 `--staged`(每个 stage 完成后暂停,等待用户 review)。
117
-
118
- <!-- harnessed-generated:v3.4.4 -->
116
+ <!-- harnessed-generated:v4.9.1 -->
119
117
 
120
118
  ## 参考文档
121
119
 
@@ -53,17 +53,18 @@ Sister `workflows/capabilities.yaml`:
53
53
 
54
54
  ## How to invoke
55
55
 
56
- Use the Bash tool to run:
57
-
58
- ```bash
59
- echo "$ARGUMENTS" | harnessed run discuss --task-stdin
60
- ```
61
-
62
- If `$ARGUMENTS` is empty, run `harnessed run discuss` (no stdin pipe).
63
-
64
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
65
-
66
- <!-- harnessed-generated:v3.4.4 -->
56
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run discuss` — that is the CI/headless
57
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
58
+ invoked from inside a Claude Code session).
59
+
60
+ Run the `/discuss` slash command instead (generated by `harnessed setup` at
61
+ `~/.claude/commands/discuss.md`). It drives the stage natively: `harnessed gates` → which
62
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
63
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
64
+ full state-machine steps live in `~/.claude/commands/discuss.md`; if that file is absent,
65
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
66
+
67
+ <!-- harnessed-generated:v4.9.1 -->
67
68
 
68
69
  ## References
69
70
 
@@ -53,17 +53,16 @@ Sister `workflows/capabilities.yaml`:
53
53
 
54
54
  ## 如何调用
55
55
 
56
- 使用 Bash 工具运行:
56
+ CC-native 编排。**不要** pipe 到 `harnessed run discuss` —— 那是 CI/headless 路径(in-process
57
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
57
58
 
58
- ```bash
59
- echo "$ARGUMENTS" | harnessed run discuss --task-stdin
60
- ```
59
+ 改用 `/discuss` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/discuss.md`)。
60
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
61
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
62
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/discuss.md`;
63
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
61
64
 
62
- `$ARGUMENTS` 为空,运行 `harnessed run discuss`(不带 stdin pipe)。
63
-
64
- 执行完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一个阶段。请根据对话上下文决定是否调用——该提示仅供参考,非强制指令。
65
-
66
- <!-- harnessed-generated:v3.4.4 -->
65
+ <!-- harnessed-generated:v4.9.1 -->
67
66
 
68
67
  ## 参考资料
69
68
 
@@ -53,17 +53,18 @@ Sister `workflows/judgments/phase-gate.yaml`:
53
53
 
54
54
  ## How to invoke
55
55
 
56
- Use the Bash tool to run:
57
-
58
- ```bash
59
- echo "$ARGUMENTS" | harnessed run discuss-phase --task-stdin
60
- ```
61
-
62
- If `$ARGUMENTS` is empty, run `harnessed run discuss-phase` (no stdin pipe).
63
-
64
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
65
-
66
- <!-- harnessed-generated:v3.4.4 -->
56
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run discuss-phase` — that is the CI/headless
57
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
58
+ invoked from inside a Claude Code session).
59
+
60
+ Run the `/discuss-phase` slash command instead (generated by `harnessed setup` at
61
+ `~/.claude/commands/discuss-phase.md`). It drives the stage natively: `harnessed gates` → which
62
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
63
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
64
+ full state-machine steps live in `~/.claude/commands/discuss-phase.md`; if that file is absent,
65
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
66
+
67
+ <!-- harnessed-generated:v4.9.1 -->
67
68
 
68
69
  ## References
69
70
 
@@ -53,17 +53,16 @@ Sister `workflows/judgments/phase-gate.yaml`:
53
53
 
54
54
  ## 如何调用
55
55
 
56
- 使用 Bash 工具运行:
56
+ CC-native 编排。**不要** pipe 到 `harnessed run discuss-phase` —— 那是 CI/headless 路径(in-process
57
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
57
58
 
58
- ```bash
59
- echo "$ARGUMENTS" | harnessed run discuss-phase --task-stdin
60
- ```
59
+ 改用 `/discuss-phase` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/discuss-phase.md`)。
60
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
61
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
62
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/discuss-phase.md`;
63
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
61
64
 
62
- `$ARGUMENTS` 为空,运行 `harnessed run discuss-phase`(不带 stdin pipe)。
63
-
64
- 执行完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一个阶段。请根据对话上下文决定是否调用——该提示仅供参考,非强制指令。
65
-
66
- <!-- harnessed-generated:v3.4.4 -->
65
+ <!-- harnessed-generated:v4.9.1 -->
67
66
 
68
67
  ## 参考资料
69
68
 
@@ -57,17 +57,18 @@ Sister `workflows/judgments/strategic-gate.yaml`:
57
57
 
58
58
  ## How to invoke
59
59
 
60
- Use the Bash tool to run:
61
-
62
- ```bash
63
- echo "$ARGUMENTS" | harnessed run discuss-strategic --task-stdin
64
- ```
65
-
66
- If `$ARGUMENTS` is empty, run `harnessed run discuss-strategic` (no stdin pipe).
67
-
68
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
69
-
70
- <!-- harnessed-generated:v3.4.4 -->
60
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run discuss-strategic` — that is the CI/headless
61
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
62
+ invoked from inside a Claude Code session).
63
+
64
+ Run the `/discuss-strategic` slash command instead (generated by `harnessed setup` at
65
+ `~/.claude/commands/discuss-strategic.md`). It drives the stage natively: `harnessed gates` → which
66
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
67
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
68
+ full state-machine steps live in `~/.claude/commands/discuss-strategic.md`; if that file is absent,
69
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
70
+
71
+ <!-- harnessed-generated:v4.9.1 -->
71
72
 
72
73
  ## References
73
74
 
@@ -57,17 +57,16 @@ Sister `workflows/judgments/strategic-gate.yaml`:
57
57
 
58
58
  ## 如何调用
59
59
 
60
- 使用 Bash 工具运行:
60
+ CC-native 编排。**不要** pipe 到 `harnessed run discuss-strategic` —— 那是 CI/headless 路径(in-process
61
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
61
62
 
62
- ```bash
63
- echo "$ARGUMENTS" | harnessed run discuss-strategic --task-stdin
64
- ```
63
+ 改用 `/discuss-strategic` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/discuss-strategic.md`)。
64
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
65
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
66
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/discuss-strategic.md`;
67
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
65
68
 
66
- `$ARGUMENTS` 为空,运行 `harnessed run discuss-strategic`(不带 stdin pipe)。
67
-
68
- 执行完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一个阶段。请根据对话上下文决定是否调用——该提示仅供参考,非强制指令。
69
-
70
- <!-- harnessed-generated:v3.4.4 -->
69
+ <!-- harnessed-generated:v4.9.1 -->
71
70
 
72
71
  ## 参考资料
73
72
 
@@ -58,17 +58,18 @@ Sister `workflows/judgments/subtask-gate.yaml`:
58
58
 
59
59
  ## How to invoke
60
60
 
61
- Use the Bash tool to run:
62
-
63
- ```bash
64
- echo "$ARGUMENTS" | harnessed run discuss-subtask --task-stdin
65
- ```
66
-
67
- If `$ARGUMENTS` is empty, run `harnessed run discuss-subtask` (no stdin pipe).
68
-
69
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
70
-
71
- <!-- harnessed-generated:v3.4.4 -->
61
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run discuss-subtask` — that is the CI/headless
62
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
63
+ invoked from inside a Claude Code session).
64
+
65
+ Run the `/discuss-subtask` slash command instead (generated by `harnessed setup` at
66
+ `~/.claude/commands/discuss-subtask.md`). It drives the stage natively: `harnessed gates` → which
67
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
68
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
69
+ full state-machine steps live in `~/.claude/commands/discuss-subtask.md`; if that file is absent,
70
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
71
+
72
+ <!-- harnessed-generated:v4.9.1 -->
72
73
 
73
74
  ## References
74
75
 
@@ -58,17 +58,16 @@ Sister `workflows/judgments/subtask-gate.yaml`:
58
58
 
59
59
  ## 如何调用
60
60
 
61
- 使用 Bash 工具运行:
61
+ CC-native 编排。**不要** pipe 到 `harnessed run discuss-subtask` —— 那是 CI/headless 路径(in-process
62
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
62
63
 
63
- ```bash
64
- echo "$ARGUMENTS" | harnessed run discuss-subtask --task-stdin
65
- ```
64
+ 改用 `/discuss-subtask` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/discuss-subtask.md`)。
65
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
66
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
67
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/discuss-subtask.md`;
68
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
66
69
 
67
- `$ARGUMENTS` 为空,运行 `harnessed run discuss-subtask`(不带 stdin pipe)。
68
-
69
- 执行完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一个阶段。请根据对话上下文决定是否调用——该提示仅供参考,非强制指令。
70
-
71
- <!-- harnessed-generated:v3.4.4 -->
70
+ <!-- harnessed-generated:v4.9.1 -->
72
71
 
73
72
  ## 参考资料
74
73
 
@@ -54,17 +54,18 @@ trigger `is-complex-architecture` 重构 ref。
54
54
 
55
55
  ## How to invoke
56
56
 
57
- Use the Bash tool to run:
58
-
59
- ```bash
60
- echo "$ARGUMENTS" | harnessed run plan-architecture --task-stdin
61
- ```
62
-
63
- If `$ARGUMENTS` is empty, run `harnessed run plan-architecture` (no stdin pipe).
64
-
65
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
66
-
67
- <!-- harnessed-generated:v3.4.4 -->
57
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run plan-architecture` — that is the CI/headless
58
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
59
+ invoked from inside a Claude Code session).
60
+
61
+ Run the `/plan-architecture` slash command instead (generated by `harnessed setup` at
62
+ `~/.claude/commands/plan-architecture.md`). It drives the stage natively: `harnessed gates` → which
63
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
64
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
65
+ full state-machine steps live in `~/.claude/commands/plan-architecture.md`; if that file is absent,
66
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
67
+
68
+ <!-- harnessed-generated:v4.9.1 -->
68
69
 
69
70
  ## References
70
71
 
@@ -54,17 +54,16 @@ trigger `is-complex-architecture` 重构 ref。
54
54
 
55
55
  ## 如何调用
56
56
 
57
- 使用 Bash 工具运行:
57
+ CC-native 编排。**不要** pipe 到 `harnessed run plan-architecture` —— 那是 CI/headless 路径(in-process
58
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
58
59
 
59
- ```bash
60
- echo "$ARGUMENTS" | harnessed run plan-architecture --task-stdin
61
- ```
60
+ 改用 `/plan-architecture` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/plan-architecture.md`)。
61
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
62
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
63
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/plan-architecture.md`;
64
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
62
65
 
63
- `$ARGUMENTS` 为空,运行 `harnessed run plan-architecture`(不带 stdin pipe)。
64
-
65
- 完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一阶段。是否调用由对话上下文决定——该提示仅供参考,非强制指令。
66
-
67
- <!-- harnessed-generated:v3.4.4 -->
66
+ <!-- harnessed-generated:v4.9.1 -->
68
67
 
69
68
  ## 参考文档
70
69
 
@@ -54,17 +54,18 @@ Sister `workflows/capabilities.yaml`:
54
54
 
55
55
  ## How to invoke
56
56
 
57
- Use the Bash tool to run:
58
-
59
- ```bash
60
- echo "$ARGUMENTS" | harnessed run plan --task-stdin
61
- ```
62
-
63
- If `$ARGUMENTS` is empty, run `harnessed run plan` (no stdin pipe).
64
-
65
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
66
-
67
- <!-- harnessed-generated:v3.4.4 -->
57
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run plan` — that is the CI/headless
58
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
59
+ invoked from inside a Claude Code session).
60
+
61
+ Run the `/plan` slash command instead (generated by `harnessed setup` at
62
+ `~/.claude/commands/plan.md`). It drives the stage natively: `harnessed gates` → which
63
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
64
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
65
+ full state-machine steps live in `~/.claude/commands/plan.md`; if that file is absent,
66
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
67
+
68
+ <!-- harnessed-generated:v4.9.1 -->
68
69
 
69
70
  ## References
70
71
 
@@ -54,17 +54,16 @@ Sister `workflows/capabilities.yaml`:
54
54
 
55
55
  ## 如何调用
56
56
 
57
- 使用 Bash 工具运行:
57
+ CC-native 编排。**不要** pipe 到 `harnessed run plan` —— 那是 CI/headless 路径(in-process
58
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
58
59
 
59
- ```bash
60
- echo "$ARGUMENTS" | harnessed run plan --task-stdin
61
- ```
60
+ 改用 `/plan` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/plan.md`)。
61
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
62
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
63
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/plan.md`;
64
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
62
65
 
63
- `$ARGUMENTS` 为空,运行 `harnessed run plan`(不带 stdin pipe)。
64
-
65
- 完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一阶段。是否调用由对话上下文决定——该提示仅供参考,非强制指令。
66
-
67
- <!-- harnessed-generated:v3.4.4 -->
66
+ <!-- harnessed-generated:v4.9.1 -->
68
67
 
69
68
  ## 参考文档
70
69
 
@@ -56,17 +56,18 @@ reframe)。
56
56
 
57
57
  ## How to invoke
58
58
 
59
- Use the Bash tool to run:
60
-
61
- ```bash
62
- echo "$ARGUMENTS" | harnessed run plan-phase --task-stdin
63
- ```
64
-
65
- If `$ARGUMENTS` is empty, run `harnessed run plan-phase` (no stdin pipe).
66
-
67
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
68
-
69
- <!-- harnessed-generated:v3.4.4 -->
59
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run plan-phase` — that is the CI/headless
60
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
61
+ invoked from inside a Claude Code session).
62
+
63
+ Run the `/plan-phase` slash command instead (generated by `harnessed setup` at
64
+ `~/.claude/commands/plan-phase.md`). It drives the stage natively: `harnessed gates` → which
65
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
66
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
67
+ full state-machine steps live in `~/.claude/commands/plan-phase.md`; if that file is absent,
68
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
69
+
70
+ <!-- harnessed-generated:v4.9.1 -->
70
71
 
71
72
  ## References
72
73
 
@@ -56,17 +56,16 @@ reframe)。
56
56
 
57
57
  ## 如何调用
58
58
 
59
- 使用 Bash 工具运行:
59
+ CC-native 编排。**不要** pipe 到 `harnessed run plan-phase` —— 那是 CI/headless 路径(in-process
60
+ SDK spawn,会阻塞 session、绕过 Agent Teams,在 Claude Code 内部调用时还会挂死)。
60
61
 
61
- ```bash
62
- echo "$ARGUMENTS" | harnessed run plan-phase --task-stdin
63
- ```
62
+ 改用 `/plan-phase` slash command(由 `harnessed setup` 生成于 `~/.claude/commands/plan-phase.md`)。
63
+ 它以 CC-native 方式驱动:`harnessed gates` 决定哪些 sub fire,`harnessed prompt <sub>` 给出每个
64
+ spawn-ready prompt,然后用 CC-native subagent(Task / Agent 工具)逐个 spawn 已 fire 的 sub,
65
+ 每个结果用 `harnessed checkpoint` 记录。完整 state-machine 步骤见 `~/.claude/commands/plan-phase.md`;
66
+ 若该文件不存在,自行按 gates → prompt → spawn → checkpoint 同序执行。
64
67
 
65
- `$ARGUMENTS` 为空,运行 `harnessed run plan-phase`(不带 stdin pipe)。
66
-
67
- 完成后,Bash 输出会在 stderr 打印 `Next:` 提示,建议下一阶段。是否调用由对话上下文决定——该提示仅供参考,非强制指令。
68
-
69
- <!-- harnessed-generated:v3.4.4 -->
68
+ <!-- harnessed-generated:v4.9.1 -->
70
69
 
71
70
  ## 参考文档
72
71
 
@@ -39,43 +39,15 @@ Sister `workflows/capabilities.yaml` entries:
39
39
 
40
40
  ## How to invoke
41
41
 
42
- **Preferred path** (master orchestrator): dispatch to the per-sub-workflow slash commands in the order this stage prescribes. Each sub command lives at `<claude-home>/commands/<sub-name>.md` (installed by `harnessed setup`) with its own dual-path fallback.
43
-
44
- **Fallback path** (when the upstream isn't installed or returns no result): use the Task tool to spawn a general-purpose subagent with this prompt:
45
-
46
- > You are a **Research analyst**.
47
- >
48
- > **Mission**: Multi-source investigation (docs / web search / codebase grep / library probe) producing a `findings.md` with citations, NOT speculation. Use `ctx7` for library docs, `tavily-mcp` / `exa-mcp` for web, `gh` CLI for GitHub artifacts, and codebase `Grep` for internal references.
49
- >
50
- > **Default-suspect mode**: assume the change is broken / risky / incomplete until proven otherwise. Cite `file:line` for every finding; do not generalize.
51
- >
52
- > **Review checklist**:
53
- > 1. Resolve each unknown claim to a citable source (URL, file:line, or `ctx7` doc id)
54
- >
55
- > 2. Cite version explicitly when discussing library / framework APIs (training cutoff may be stale)
56
- >
57
- > 3. Capture conflicting sources side-by-side; do not silently pick one
58
- >
59
- > 4. Flag `OPEN: <question>` for items the user must decide; never paper over
60
- >
61
- > 5. Persist results to `.planning/<phase>/findings.md` for cross-session handoff
62
- >
63
- > **Output format**: structured report with severity-classified findings (verified / unverified / conflicting / open). One finding per line: `[severity] file:line — problem (one sentence); fix: suggested change`. If no findings, say so explicitly. No preamble, no end-of-report summary.
64
-
65
- (Role prompt is self-contained — works even when the upstream `specialist` user-skill / plugin isn't installed.)
66
-
67
- (`harnessed setup` also installs a `research` Claude Code slash command at `<claude-home>/commands/research.md` so `/research` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed research --apply` CLI claims are removed; that subcommand was never implemented.)
68
-
69
- ## How to invoke
70
-
71
- Use the Bash tool to run:
72
-
73
- ```bash
74
- echo "$ARGUMENTS" | harnessed run research --task-stdin
75
- ```
76
-
77
- If `$ARGUMENTS` is empty, run `harnessed run research` (no stdin pipe).
78
-
79
- After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
80
-
81
- <!-- harnessed-generated:v3.4.4 -->
42
+ Orchestrated CC-natively. Do NOT pipe to `harnessed run research` that is the CI/headless
43
+ path (an in-process SDK spawn that blocks the session, bypasses Agent Teams, and hangs when
44
+ invoked from inside a Claude Code session).
45
+
46
+ Run the `/research` slash command instead (generated by `harnessed setup` at
47
+ `~/.claude/commands/research.md`). It drives the stage natively: `harnessed gates` → which
48
+ subs fire, `harnessed prompt <sub>` each spawn-ready prompt, then a CC-native subagent
49
+ (Task / Agent tool) per fired sub, recording each outcome with `harnessed checkpoint`. The
50
+ full state-machine steps live in `~/.claude/commands/research.md`; if that file is absent,
51
+ follow that same gates → prompt → spawn → checkpoint sequence yourself.
52
+
53
+ <!-- harnessed-generated:v4.9.1 -->