harnessed 3.4.3 → 3.4.4
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 +3 -0
- package/dist/cli.mjs +1084 -745
- package/dist/cli.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/workflows/auto/SKILL.md +10 -4
- package/workflows/capabilities.yaml +1 -1
- package/workflows/discuss/auto/SKILL.md +9 -4
- package/workflows/discuss/phase/SKILL.md +11 -29
- package/workflows/discuss/strategic/SKILL.md +11 -31
- package/workflows/discuss/subtask/SKILL.md +11 -29
- package/workflows/execute-task/SKILL.md +7 -6
- package/workflows/execute-task/workflow.yaml +93 -0
- package/workflows/plan/architecture/SKILL.md +11 -31
- package/workflows/plan/auto/SKILL.md +9 -4
- package/workflows/plan/phase/SKILL.md +11 -31
- package/workflows/research/SKILL.md +14 -1
- package/workflows/retro/SKILL.md +11 -29
- package/workflows/task/auto/SKILL.md +9 -4
- package/workflows/task/clarify/SKILL.md +11 -29
- package/workflows/task/code/SKILL.md +11 -31
- package/workflows/task/deliver/SKILL.md +12 -32
- package/workflows/task/test/SKILL.md +11 -31
- package/workflows/verify/auto/SKILL.md +9 -4
- package/workflows/verify/code-review/SKILL.md +11 -33
- package/workflows/verify/design/SKILL.md +11 -33
- package/workflows/verify/multispec/SKILL.md +11 -31
- package/workflows/verify/paranoid/SKILL.md +11 -35
- package/workflows/verify/progress/SKILL.md +11 -29
- package/workflows/verify/qa/SKILL.md +11 -31
- package/workflows/verify/security/SKILL.md +11 -33
- package/workflows/verify/simplify/SKILL.md +11 -31
- package/workflows/execute-task/phases.yaml +0 -73
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,OA8Fb,CAAA;;;AC3FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"3.4.
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OA8Fb,CAAA;;;AC3FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"3.4.4\",\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 \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\"\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"]}
|
package/package.json
CHANGED
package/workflows/auto/SKILL.md
CHANGED
|
@@ -103,14 +103,20 @@ Sister `workflows/capabilities.yaml`:
|
|
|
103
103
|
- 4 stage-master `/discuss /plan /task /verify` 仍可独立 invoke — `/auto` 是 opt-in NEW workflow
|
|
104
104
|
- `--staged` opt-in for stage gate UX (每 stage 完停 user review)
|
|
105
105
|
|
|
106
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
107
106
|
## How to invoke
|
|
108
107
|
|
|
109
|
-
|
|
108
|
+
Use the Bash tool to run:
|
|
110
109
|
|
|
111
|
-
|
|
110
|
+
```bash
|
|
111
|
+
echo "$ARGUMENTS" | harnessed run auto --task-stdin
|
|
112
|
+
```
|
|
112
113
|
|
|
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 -->
|
|
114
120
|
|
|
115
121
|
## References
|
|
116
122
|
|
|
@@ -451,7 +451,7 @@ capabilities:
|
|
|
451
451
|
since: v2.0
|
|
452
452
|
category: tool-bundled-skill
|
|
453
453
|
description: Sub-task completion gate (verbatim COMPLETE; max-iterations fallback)
|
|
454
|
-
sdk_ref: src/
|
|
454
|
+
sdk_ref: src/workflow/lib/ralphLoop.ts
|
|
455
455
|
fires_when:
|
|
456
456
|
- subtask.completion_required == true
|
|
457
457
|
|
|
@@ -51,14 +51,19 @@ Sister `workflows/capabilities.yaml`:
|
|
|
51
51
|
|
|
52
52
|
- Slash command: `/discuss <text>` (bare per ADR 0030 namespace policy D-02 LOCK after `harnessed setup`)
|
|
53
53
|
|
|
54
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
55
54
|
## How to invoke
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
Use the Bash tool to run:
|
|
58
57
|
|
|
59
|
-
|
|
58
|
+
```bash
|
|
59
|
+
echo "$ARGUMENTS" | harnessed run discuss --task-stdin
|
|
60
|
+
```
|
|
60
61
|
|
|
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 -->
|
|
62
67
|
|
|
63
68
|
## References
|
|
64
69
|
|
|
@@ -51,37 +51,19 @@ Sister `workflows/judgments/phase-gate.yaml`:
|
|
|
51
51
|
- < 1 天工作量
|
|
52
52
|
- bug 修复且已有最小复现
|
|
53
53
|
|
|
54
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
55
54
|
## How to invoke
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
> 1. List every open decision as a single question (1 line each)
|
|
69
|
-
>
|
|
70
|
-
> 2. For each, list 2-4 candidate answers with one-line tradeoffs
|
|
71
|
-
>
|
|
72
|
-
> 3. Identify cross-phase contracts (data flow / API shape / migration order)
|
|
73
|
-
>
|
|
74
|
-
> 4. Flag decisions blocking start (must answer before plan) vs. deferrable
|
|
75
|
-
>
|
|
76
|
-
> 5. Persist to `.planning/<phase>/findings.md` + `knowledge.md` for hand-off
|
|
77
|
-
>
|
|
78
|
-
> 6. If the layer is genuinely clear, say 'no clarification needed' and exit
|
|
79
|
-
>
|
|
80
|
-
> **Output format**: structured report with severity-classified findings (blocking / deferrable / resolved). 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.
|
|
81
|
-
|
|
82
|
-
(Role prompt is self-contained — works even when the upstream `gsd-discuss-phase` user-skill / plugin isn't installed.)
|
|
83
|
-
|
|
84
|
-
(Sister `~/.claude/commands/discuss-phase.md` is also generated by `harnessed setup` so `/discuss-phase` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed discuss-phase --apply` CLI claims are removed; that subcommand was never implemented.)
|
|
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 -->
|
|
85
67
|
|
|
86
68
|
## References
|
|
87
69
|
|
|
@@ -55,39 +55,19 @@ Sister `workflows/judgments/strategic-gate.yaml`:
|
|
|
55
55
|
- continuing 已有 phase 的执行
|
|
56
56
|
- 用户已给明确 ticket / spec
|
|
57
57
|
|
|
58
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
59
58
|
## How to invoke
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
> 1. What user problem does this solve? Who specifically experiences it today?
|
|
73
|
-
>
|
|
74
|
-
> 2. Why this, why now? (alternative cost of working on something else)
|
|
75
|
-
>
|
|
76
|
-
> 3. What does success look like — measurable, not vibes (1 metric, not 5)?
|
|
77
|
-
>
|
|
78
|
-
> 4. Is the scope MVP-able? What's the smallest cut that still proves the bet?
|
|
79
|
-
>
|
|
80
|
-
> 5. What assumptions are load-bearing? Which would kill the feature if wrong?
|
|
81
|
-
>
|
|
82
|
-
> 6. Who pays the maintenance cost after ship — same team, or a hand-off?
|
|
83
|
-
>
|
|
84
|
-
> 7. Decision: ship / iterate / kill / table — with one-line reason
|
|
85
|
-
>
|
|
86
|
-
> **Output format**: structured report with severity-classified findings (ship / iterate / kill / table (each with reason)). 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.
|
|
87
|
-
|
|
88
|
-
(Role prompt is self-contained — works even when the upstream `gstack-office-hours` user-skill / plugin isn't installed.)
|
|
89
|
-
|
|
90
|
-
(Sister `~/.claude/commands/discuss-strategic.md` is also generated by `harnessed setup` so `/discuss-strategic` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed discuss-strategic --apply` CLI claims are removed; that subcommand was never implemented.)
|
|
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 -->
|
|
91
71
|
|
|
92
72
|
## References
|
|
93
73
|
|
|
@@ -56,37 +56,19 @@ Sister `workflows/judgments/subtask-gate.yaml`:
|
|
|
56
56
|
- 标准库直接调用
|
|
57
57
|
- bug 修复且已知根因
|
|
58
58
|
|
|
59
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
60
59
|
## How to invoke
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
> 1. State the subtask in one sentence; confirm scope with user if ambiguous
|
|
74
|
-
>
|
|
75
|
-
> 2. Produce 2-4 distinct approaches (not just '2 flavors of the same idea')
|
|
76
|
-
>
|
|
77
|
-
> 3. For each: complexity, perf, failure modes, test surface, future change cost
|
|
78
|
-
>
|
|
79
|
-
> 4. Recommend one with 1-2 line reason; flag risks of the chosen path
|
|
80
|
-
>
|
|
81
|
-
> 5. Output a `findings.md` block the implementer can paste into the task
|
|
82
|
-
>
|
|
83
|
-
> 6. If options collapse to one (others clearly bad), say so and exit fast
|
|
84
|
-
>
|
|
85
|
-
> **Output format**: structured report with severity-classified findings (recommended / acceptable / rejected). 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.
|
|
86
|
-
|
|
87
|
-
(Role prompt is self-contained — works even when the upstream `superpowers-brainstorming` user-skill / plugin isn't installed.)
|
|
88
|
-
|
|
89
|
-
(Sister `~/.claude/commands/discuss-subtask.md` is also generated by `harnessed setup` so `/discuss-subtask` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed discuss-subtask --apply` CLI claims are removed; that subcommand was never implemented.)
|
|
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 -->
|
|
90
72
|
|
|
91
73
|
## References
|
|
92
74
|
|
|
@@ -38,10 +38,11 @@ v2 schema fields per `src/workflow/schema/workflow.ts` (T2.4.W0.1 16th surface
|
|
|
38
38
|
- `parallelism: judgments.parallelism-gate.<route>.fires` (D-11 subagent / Agent Teams / main session route)
|
|
39
39
|
- `fallback.max_iterations_exceeded: {action, message, exit_code}` (R20.10 acceptance c "explicit NOT silent")
|
|
40
40
|
|
|
41
|
-
Per-phase models load from `workflows/execute-task/
|
|
42
|
-
spawns each phase as a
|
|
41
|
+
Per-phase models load from `workflows/execute-task/workflow.yaml` (v3 SoT post
|
|
42
|
+
v3.4.4 Phase 6 — v2 phases.yaml deleted); runWorkflow spawns each phase as a
|
|
43
|
+
sub-agent via `@anthropic-ai/claude-agent-sdk` 0.3.142+
|
|
43
44
|
(`AgentDefinition` 5-字段 unpack — ADR 0011 § 4). ralph-loop SDK wrapper at 04-deliver
|
|
44
|
-
reuses sister Phase 2.2 v0.2.0 ship: `src/
|
|
45
|
+
reuses sister Phase 2.2 v0.2.0 ship: `src/workflow/lib/ralphLoop.ts` (54L) + `sdkSpawn.ts` (91L)
|
|
45
46
|
+ 4-layer dual-signal `isComplete` (NOT 重写 — per RESEARCH § 3.1).
|
|
46
47
|
|
|
47
48
|
## CLI invocation (the only enforced entry — B-28)
|
|
@@ -78,6 +79,6 @@ the CLI subcommand above (B-28 single-entry contract).
|
|
|
78
79
|
- ADR 0011 — execute-task SDK + ralph-loop integration (phase 2.2 W6 — finalize)
|
|
79
80
|
- `.planning/intel/omc-comparison.md` § CD-2 — per-phase model tier defaults
|
|
80
81
|
- `src/cli/execute-task.ts` — CLI implementation (T5.1)
|
|
81
|
-
- `workflows/execute-task/
|
|
82
|
-
- `src/
|
|
83
|
-
- `src/
|
|
82
|
+
- `workflows/execute-task/workflow.yaml` — 4-phase config (v3 SoT; v3.4.4 Phase 6 ship — v2 phases.yaml deleted)
|
|
83
|
+
- `src/workflow/lib/sdkSpawn.ts` — SDK query() consumer (T4.1)
|
|
84
|
+
- `src/workflow/lib/ralphLoop.ts` — verbatim COMPLETE round-trip
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# workflows/execute-task/workflow.yaml — v3.4.4 Phase 4 Commit 1 NEW (Path A)
|
|
2
|
+
# Former v2 `phases.yaml` (74L) deleted v3.4.4 Phase 6 Wave 3c — this v3
|
|
3
|
+
# workflow.yaml is now the single SoT. Authored fresh per HANDOFF-v3.4.4 L745
|
|
4
|
+
# Path A decision + PHASE-4-SPEC L101-180 verbatim.
|
|
5
|
+
#
|
|
6
|
+
# 4-phase chain mirrors v2 verbatim:
|
|
7
|
+
# 01-clarify superpowers-brainstorming opus gate: subtask-gate.brainstorming.fires
|
|
8
|
+
# 02-code karpathy 心法 + on[] sonnet conditional: tdd / grill-with-docs / zoom-out
|
|
9
|
+
# 03-test superpowers TDD sonnet on: test_fail → diagnose
|
|
10
|
+
# 04-deliver ralph-loop haiku args.completion_promise=COMPLETE + fallback
|
|
11
|
+
#
|
|
12
|
+
# v2 → v3 字段 delta (PHASE-4-SPEC L13 + L116-178):
|
|
13
|
+
# BUMP `schema_version: harnessed.workflow.v3` (sister Phase 3.3 W0.5 WorkflowSchemaV3)
|
|
14
|
+
# ADD `disciplines_applied: [6 basename]` (D-09 L0 Discipline Substrate, Pattern A A.1 strict Literal Union)
|
|
15
|
+
# ADD `tools_available: [7 capabilities.yaml entry name]` (D-05 Contract C1 cross-validate)
|
|
16
|
+
# KEEP phases verbatim from former v2 phases.yaml (Path A1 — coexisted through Phase 5; v2 deleted Phase 6 Wave 3c)
|
|
17
|
+
#
|
|
18
|
+
# Per-phase model tier (intel CD-2 § 第 4 条) preserved verbatim from v2:
|
|
19
|
+
# opus / sonnet / sonnet / haiku
|
|
20
|
+
# Override via CLI: `--model-tier inherit` (B-10 escape hatch).
|
|
21
|
+
#
|
|
22
|
+
# Sister refs:
|
|
23
|
+
# - .planning/v3.4.4/PHASE-4-SPEC.md L101-180 (NEW yaml shape verbatim)
|
|
24
|
+
# - workflows/execute-task/phases.yaml (former v2 SoT — DELETED v3.4.4 Phase 6 Wave 3c; this workflow.yaml is sole SoT)
|
|
25
|
+
# - workflows/research/workflow.yaml (v3 standalone shape reference)
|
|
26
|
+
# - workflows/verify/simplify/workflow.yaml (v3 sub-workflow shape reference)
|
|
27
|
+
# - workflows/capabilities.yaml (7 capability refs: superpowers-brainstorming/tdd/grill-with-docs/zoom-out/diagnose/ralph-loop/planning-with-files)
|
|
28
|
+
# - workflows/defaults.yaml ralph_max_iterations.execute-task.{01..04}
|
|
29
|
+
# - workflows/disciplines/{karpathy,output-style,language,operational,priority,protocols}.yaml (L0 substrate)
|
|
30
|
+
# - src/workflow/schema/workflow.ts WorkflowSchemaV3 (Phase 3.3 W0.5 SHIPPED 122L)
|
|
31
|
+
|
|
32
|
+
schema_version: harnessed.workflow.v3
|
|
33
|
+
workflow: execute-task
|
|
34
|
+
description: |
|
|
35
|
+
子任务执行 workflow — 4-phase chain (brainstorming → karpathy + mattpocock route by
|
|
36
|
+
condition → TDD + diagnose → ralph-loop COMPLETE) triggered by harnessed CLI
|
|
37
|
+
`harnessed execute-task --task <text>` OR universal `harnessed run execute-task`.
|
|
38
|
+
|
|
39
|
+
disciplines_applied: [karpathy, output-style, language, operational, priority, protocols]
|
|
40
|
+
tools_available: [superpowers-brainstorming, tdd, grill-with-docs, zoom-out, diagnose, ralph-loop, planning-with-files]
|
|
41
|
+
|
|
42
|
+
phases:
|
|
43
|
+
- id: 01-clarify
|
|
44
|
+
name: brainstorming
|
|
45
|
+
upstream: superpowers brainstorming
|
|
46
|
+
capability: '{{ capabilities.superpowers-brainstorming.cmd }}'
|
|
47
|
+
model: opus
|
|
48
|
+
max_iterations: '{{ defaults.ralph_max_iterations.execute-task.01-clarify }}'
|
|
49
|
+
gate: judgments.subtask-gate.brainstorming.fires
|
|
50
|
+
|
|
51
|
+
- id: 02-code
|
|
52
|
+
name: code (karpathy 心法 always-on + mattpocock conditional route)
|
|
53
|
+
upstream: karpathy
|
|
54
|
+
model: sonnet
|
|
55
|
+
max_iterations: '{{ defaults.ralph_max_iterations.execute-task.02-code }}'
|
|
56
|
+
on:
|
|
57
|
+
- if: 'judgments.tdd-gate.tdd-strongly-suggested.fires'
|
|
58
|
+
invoke: '{{ capabilities.tdd.cmd }}'
|
|
59
|
+
- if: 'phase.spec_ambiguous == true'
|
|
60
|
+
invoke: '{{ capabilities.grill-with-docs.cmd }}'
|
|
61
|
+
- if: 'phase.unfamiliar_module == true'
|
|
62
|
+
invoke: '{{ capabilities.zoom-out.cmd }}'
|
|
63
|
+
|
|
64
|
+
- id: 03-test
|
|
65
|
+
name: test (conditional TDD + diagnose on fail)
|
|
66
|
+
upstream: superpowers TDD
|
|
67
|
+
capability: '{{ capabilities.tdd.cmd }}'
|
|
68
|
+
model: sonnet
|
|
69
|
+
max_iterations: '{{ defaults.ralph_max_iterations.execute-task.03-test }}'
|
|
70
|
+
on:
|
|
71
|
+
- if: 'test_fail == true'
|
|
72
|
+
invoke: '{{ capabilities.diagnose.cmd }}'
|
|
73
|
+
|
|
74
|
+
- id: 04-deliver
|
|
75
|
+
name: deliver (ralph-loop COMPLETE gate + max-iter fallback)
|
|
76
|
+
upstream: ralph-loop
|
|
77
|
+
capability: '{{ capabilities.ralph-loop.cmd }}'
|
|
78
|
+
model: haiku
|
|
79
|
+
args:
|
|
80
|
+
completion_promise: COMPLETE
|
|
81
|
+
max_iterations: '{{ defaults.ralph_max_iterations.execute-task.04-deliver }}'
|
|
82
|
+
gate: judgments.parallelism-gate.fires
|
|
83
|
+
parallelism: judgments.parallelism-gate.ralph-loop-wrapper.fires
|
|
84
|
+
on:
|
|
85
|
+
- if: 'subtask.lines >= 20 and subtask.type != "single_command_query"'
|
|
86
|
+
invoke: '{{ capabilities.ralph-loop.cmd }}'
|
|
87
|
+
- if: 'subtask.lines < 20 or subtask.type == "single_command_query"'
|
|
88
|
+
action: skip
|
|
89
|
+
fallback:
|
|
90
|
+
max_iterations_exceeded:
|
|
91
|
+
action: emit_warning_and_halt
|
|
92
|
+
message: '⚠️ ralph-loop max-iterations ({{ args.max_iterations }}) exceeded for execute-task 04-deliver. Sub-task likely incomplete — see workflow engine catch handler for manual options.'
|
|
93
|
+
exit_code: 1
|
|
@@ -52,39 +52,19 @@ trigger `is-complex-architecture` 重构 ref。
|
|
|
52
52
|
- 性能 / scaling 关键路径
|
|
53
53
|
- 引入显著技术债 / migration 风险
|
|
54
54
|
|
|
55
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
56
55
|
## How to invoke
|
|
57
56
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
> 1. Identify the smallest architecture change that satisfies all requirements
|
|
70
|
-
>
|
|
71
|
-
> 2. Diagram component boundaries (data flow / call direction / ownership)
|
|
72
|
-
>
|
|
73
|
-
> 3. List interfaces / contracts between components (function signatures, API shapes)
|
|
74
|
-
>
|
|
75
|
-
> 4. Failure modes: what happens when each component is slow / down / inconsistent?
|
|
76
|
-
>
|
|
77
|
-
> 5. Migration / rollback path — can we ship in slices, or all-at-once?
|
|
78
|
-
>
|
|
79
|
-
> 6. Choose mechanisms with the lowest blast radius and lowest unique vocabulary
|
|
80
|
-
>
|
|
81
|
-
> 7. Document tradeoffs of the rejected alternatives (so reviewers see the road not taken)
|
|
82
|
-
>
|
|
83
|
-
> **Output format**: structured report with severity-classified findings (approved / approved-with-changes / blocked). 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.
|
|
84
|
-
|
|
85
|
-
(Role prompt is self-contained — works even when the upstream `plan-eng-review` user-skill / plugin isn't installed.)
|
|
86
|
-
|
|
87
|
-
(Sister `~/.claude/commands/plan-architecture.md` is also generated by `harnessed setup` so `/plan-architecture` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed plan-architecture --apply` CLI claims are removed; that subcommand was never implemented.)
|
|
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 -->
|
|
88
68
|
|
|
89
69
|
## References
|
|
90
70
|
|
|
@@ -52,14 +52,19 @@ Sister `workflows/capabilities.yaml`:
|
|
|
52
52
|
|
|
53
53
|
- Slash command: `/plan <text>` (bare per ADR 0030 namespace policy D-02 LOCK after `harnessed setup`)
|
|
54
54
|
|
|
55
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
56
55
|
## How to invoke
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
Use the Bash tool to run:
|
|
59
58
|
|
|
60
|
-
|
|
59
|
+
```bash
|
|
60
|
+
echo "$ARGUMENTS" | harnessed run plan --task-stdin
|
|
61
|
+
```
|
|
61
62
|
|
|
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 -->
|
|
63
68
|
|
|
64
69
|
## References
|
|
65
70
|
|
|
@@ -54,39 +54,19 @@ reframe)。
|
|
|
54
54
|
- `progress.md` — phase 进度跟踪 + cross-session 恢复
|
|
55
55
|
- (`findings.md` 由 discuss-* sub-workflow 产出, 此处不重复)
|
|
56
56
|
|
|
57
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
58
57
|
## How to invoke
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
> 1. Each task names the exact files it touches (NOT just 'auth module')
|
|
72
|
-
>
|
|
73
|
-
> 2. Each task has acceptance criteria a third party can verify
|
|
74
|
-
>
|
|
75
|
-
> 3. Dependencies are explicit (task N requires task M output)
|
|
76
|
-
>
|
|
77
|
-
> 4. Tasks are ≤1 day each; split if larger
|
|
78
|
-
>
|
|
79
|
-
> 5. Identify the verification step (test / lint / typecheck) for each task
|
|
80
|
-
>
|
|
81
|
-
> 6. Persist as `task_plan.md` + `progress.md` via planning-with-files `/plan`
|
|
82
|
-
>
|
|
83
|
-
> 7. Final pass: a fresh agent should be able to execute from these files alone
|
|
84
|
-
>
|
|
85
|
-
> **Output format**: structured report with severity-classified findings (ready-to-execute / needs-revision / blocked). 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.
|
|
86
|
-
|
|
87
|
-
(Role prompt is self-contained — works even when the upstream `gsd-plan-phase` user-skill / plugin isn't installed.)
|
|
88
|
-
|
|
89
|
-
(Sister `~/.claude/commands/plan-phase.md` is also generated by `harnessed setup` so `/plan-phase` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed plan-phase --apply` CLI claims are removed; that subcommand was never implemented.)
|
|
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 -->
|
|
90
70
|
|
|
91
71
|
## References
|
|
92
72
|
|
|
@@ -37,7 +37,6 @@ Sister `workflows/capabilities.yaml` entries:
|
|
|
37
37
|
- 关键词 / 时效内容 → Tavily MCP (默认)
|
|
38
38
|
- 抓整站 / 站点结构 → Tavily crawl/map
|
|
39
39
|
|
|
40
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
41
40
|
## How to invoke
|
|
42
41
|
|
|
43
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/commands/<sub-name>.md` with its own dual-path fallback.
|
|
@@ -66,3 +65,17 @@ Sister `workflows/capabilities.yaml` entries:
|
|
|
66
65
|
(Role prompt is self-contained — works even when the upstream `specialist` user-skill / plugin isn't installed.)
|
|
67
66
|
|
|
68
67
|
(Sister `~/.claude/commands/research.md` is also generated by `harnessed setup` 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 -->
|
package/workflows/retro/SKILL.md
CHANGED
|
@@ -47,37 +47,19 @@ Sister `workflows/capabilities.yaml` entries:
|
|
|
47
47
|
- ✅ **触发**: 项目结束 / 里程碑结束 / 用户明示 "复盘 / retro / lessons learned"
|
|
48
48
|
- ❌ **跳过**: 日常 PR / 单 phase 完成 (常规 verify-progress 已够用)
|
|
49
49
|
|
|
50
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
51
50
|
## How to invoke
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
> 1. What did we set out to do, vs. what actually shipped?
|
|
65
|
-
>
|
|
66
|
-
> 2. Top 3 surprises (positive or negative) — root cause each
|
|
67
|
-
>
|
|
68
|
-
> 3. Decisions that paid off; decisions we would reverse
|
|
69
|
-
>
|
|
70
|
-
> 4. Process changes for next milestone (concrete, not vague)
|
|
71
|
-
>
|
|
72
|
-
> 5. What deserves a permanent rule entry (CLAUDE.md / docs/adr/)?
|
|
73
|
-
>
|
|
74
|
-
> 6. Persist verbatim to `.planning/RETROSPECTIVE.md` — append, do not overwrite
|
|
75
|
-
>
|
|
76
|
-
> **Output format**: structured report with severity-classified findings (lesson / decision / surprise / process-change). 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.
|
|
77
|
-
|
|
78
|
-
(Role prompt is self-contained — works even when the upstream `retro-gstack` user-skill / plugin isn't installed.)
|
|
79
|
-
|
|
80
|
-
(Sister `~/.claude/commands/retro.md` is also generated by `harnessed setup` so `/retro` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed retro --apply` CLI claims are removed; that subcommand was never implemented.)
|
|
52
|
+
Use the Bash tool to run:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
echo "$ARGUMENTS" | harnessed run retro --task-stdin
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If `$ARGUMENTS` is empty, run `harnessed run retro` (no stdin pipe).
|
|
59
|
+
|
|
60
|
+
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.
|
|
61
|
+
|
|
62
|
+
<!-- harnessed-generated:v3.4.4 -->
|
|
81
63
|
|
|
82
64
|
## References
|
|
83
65
|
|
|
@@ -57,14 +57,19 @@ Sister `workflows/capabilities.yaml`:
|
|
|
57
57
|
|
|
58
58
|
- Slash command: `/task <text>` (bare per ADR 0030 namespace policy D-02 LOCK after `harnessed setup`)
|
|
59
59
|
|
|
60
|
-
<!-- v3.4.3-dual-path-invocation -->
|
|
61
60
|
## How to invoke
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
Use the Bash tool to run:
|
|
64
63
|
|
|
65
|
-
|
|
64
|
+
```bash
|
|
65
|
+
echo "$ARGUMENTS" | harnessed run task --task-stdin
|
|
66
|
+
```
|
|
66
67
|
|
|
67
|
-
|
|
68
|
+
If `$ARGUMENTS` is empty, run `harnessed run task` (no stdin pipe).
|
|
69
|
+
|
|
70
|
+
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.
|
|
71
|
+
|
|
72
|
+
<!-- harnessed-generated:v3.4.4 -->
|
|
68
73
|
|
|
69
74
|
## References
|
|
70
75
|
|