cowork-flow 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/README.en.md +46 -22
- package/README.md +10 -7
- package/docs/architecture.en.md +95 -0
- package/docs/architecture.md +7 -3
- package/docs/direction.en.md +71 -0
- package/docs/direction.md +6 -1
- package/docs/hosts.en.md +299 -0
- package/docs/hosts.md +5 -1
- package/docs/index.en.md +30 -0
- package/docs/index.md +2 -0
- package/docs/release.en.md +108 -0
- package/docs/release.md +2 -0
- package/package.json +2 -2
- package/presets/claude-code/.claude-plugin/plugin.json +1 -1
- package/presets/claude-code/skills/cowork-flow-bootstrap/SKILL.md +8 -2
- package/presets/codex/.codex-plugin/plugin.json +1 -1
- package/presets/codex/skills/cowork-flow-bootstrap/SKILL.md +8 -2
- package/presets/kimi-code/.kimi-plugin/plugin.json +1 -1
- package/presets/kimi-code/skills/cowork-flow-bootstrap/SKILL.md +8 -2
- package/presets/opencode/cowork-flow/skills/cowork-flow-bootstrap/SKILL.md +8 -2
- package/presets/qoder/.qoder-plugin/plugin.json +1 -1
- package/presets/qoder/skills/cowork-flow-bootstrap/SKILL.md +8 -2
- package/presets/zcode/.zcode-plugin/plugin.json +1 -1
- package/presets/zcode/skills/cowork-flow-bootstrap/SKILL.md +8 -2
- package/src/cli.js +1 -1
- package/src/commands/init.js +200 -16
- package/src/commands/registry.js +10 -7
- package/src/commands/source-refresh.js +5 -1
- package/src/commands/sync.js +4 -1
- package/src/lib/copy-template.js +23 -5
- package/src/lib/host-assets.js +119 -4
- package/src/lib/language.js +162 -0
- package/template/.cowork-flow/.version +1 -1
- package/template/.cowork-flow/config.yaml +8 -0
- package/template/.cowork-flow/scripts/adapters/cli/task_create_command.py +5 -3
- package/template/.cowork-flow/scripts/adapters/host/host_manifest.py +71 -2
- package/template/.cowork-flow/scripts/infra/config.py +85 -0
- package/template/.cowork-flow/scripts/services/decision_anchor_schema.py +104 -0
- package/template/.cowork-flow/scripts/services/fact_view.py +21 -15
- package/template/.cowork-flow/scripts/services/task_context.py +13 -7
- package/template/.cowork-flow/scripts/services/task_creation.py +72 -30
- package/template/.cowork-flow/scripts/services/task_gate_profiles.py +7 -24
- package/template/.cowork-flow/spec/contracts/context-injection.md +5 -4
- package/template/.cowork-flow/spec/contracts/decision-anchor.md +21 -14
- package/template/.cowork-flow/spec/contracts/plan-binding.md +2 -1
- package/template/.cowork-flow/spec/index.md +26 -26
- package/template/.cowork-flow/spec/references/definition-of-done.md +26 -26
- package/template/.cowork-flow/spec/references/index.md +16 -16
- package/template/.cowork-flow/spec/references/orchestration-patterns.md +71 -71
- package/template/.cowork-flow/spec/references/security-checklist.md +37 -37
- package/template/.cowork-flow/spec/references/testing-checklist.md +32 -32
- package/template/.cowork-flow/spec/runtime/host-assets.json +23 -4
- package/template/.cowork-flow/spec/runtime/index.md +10 -12
- package/template/.cowork-flow/spec/schemas/host-assets.schema.json +31 -0
- package/template/.cowork-flow/spec/schemas/index.md +5 -5
- package/template/.cowork-flow/templates/plan-template.md +91 -0
- package/template/locales/en-US/.cowork-flow/spec/contracts/decision-anchor.md +160 -0
- package/template/locales/en-US/.cowork-flow/templates/plan-template.md +91 -0
- package/template/skills/runtime-health/scripts/doctor.py +110 -0
- package/template/skills/task-planning/SKILL.md +19 -92
|
@@ -14,6 +14,7 @@ Before writing a plan, confirm the request has an executable scope, acceptance c
|
|
|
14
14
|
Read:
|
|
15
15
|
|
|
16
16
|
- Active task `decision-anchor.md`.
|
|
17
|
+
- The installed `.cowork-flow/templates/plan-template.md`.
|
|
17
18
|
- Relevant decision-anchor, design, guide, or spec files.
|
|
18
19
|
- Relevant `.cowork-flow/spec/` indexes and target specs.
|
|
19
20
|
- `.cowork-flow/spec/guides/index.md` for non-trivial, ambiguous, cross-layer, or reusable-work planning.
|
|
@@ -23,111 +24,29 @@ Read:
|
|
|
23
24
|
|
|
24
25
|
Save plans to `.cowork-flow/plans/YYYY-MM-DD-<slug>.md` unless the user asks for another path.
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Plans exist to prevent implementation drift. They must guide implementation by pinning task order, file boundaries, key symbols, the core patch shape, test proof, completion conditions, and prohibited drift. They are not architecture essays and must not explain every possible option.
|
|
29
|
-
|
|
30
|
-
Do not write option-comparison tables unless the user explicitly asks. Do not copy complete implementations into the plan. The plan should expose the core patch shape: where to change, what behavior changes, what key branch or pseudocode should guide the edit, how tests prove it, and which boundaries must not be crossed.
|
|
31
|
-
|
|
32
|
-
Start with a concise brief:
|
|
33
|
-
|
|
34
|
-
```markdown
|
|
35
|
-
# <Feature> Implementation Plan
|
|
36
|
-
|
|
37
|
-
> Execution rule: this plan exists to prevent implementation drift. The implementer must work through tasks in order.
|
|
38
|
-
> If the plan conflicts with current code facts, a plan-external file becomes necessary, or a test fails for an unplanned reason, stop and report back instead of expanding scope.
|
|
39
|
-
>
|
|
40
|
-
> For formal fixed-agent work: create a runtime context with `.cowork-flow/run subagent init`, pass `cowork_runtime_context_id: <runtime_context_id>` through the active Host Adapter, then dispatch `cowork-implement` or `cowork-check`. Close the runtime context after verification.
|
|
27
|
+
Use the installed `.cowork-flow/templates/plan-template.md` as the plan skeleton. It carries the execution rule, header table, goal and acceptance sections, global constraints, file boundaries, the per-task brief fields, and the final verification section, so this Skill does not restate them.
|
|
41
28
|
|
|
42
|
-
|
|
43
|
-
|----|------|
|
|
44
|
-
| **Goal** | <One sentence describing the observable behavior change> |
|
|
45
|
-
| **Task Type** | Tiny / Normal / High-risk: <reason> |
|
|
46
|
-
| **Strategy** | Serial / Parallel: <why> |
|
|
47
|
-
| **Success Criteria** | AC-001 / AC-002 / AC-003 |
|
|
48
|
-
| **Final Verification** | `<command>` -> exit 0; clause-by-clause check against applicable `.cowork-flow/spec/<dev_type>/` rules and project gates -> `pass` / `not_applicable` per clause |
|
|
49
|
-
| **Primary Risk** | Low / Medium / High: <one sentence> |
|
|
29
|
+
If the installed template is missing, stop and report it (run `cwf project sync .` to install it); do not invent a replacement shape.
|
|
50
30
|
|
|
51
|
-
|
|
31
|
+
The template is distributed at install time for the project language configured in `.cowork-flow/config.yaml` (`zh-CN` by default, or `en-US`). Write the plan in that language. Keep the template's machine-readable goal line and `AC-NNN` identifiers unchanged so task creation and workflow gates can parse them. Do not translate paths, commands, code identifiers, or spec file names.
|
|
52
32
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
## Acceptance Criteria
|
|
56
|
-
|
|
57
|
-
- AC-001: <observable behavior>
|
|
58
|
-
- AC-002: <observable behavior>
|
|
59
|
-
|
|
60
|
-
## Global Constraints
|
|
61
|
-
|
|
62
|
-
- <Architecture boundary, compatibility requirement, command, or output field that must be preserved>
|
|
63
|
-
- <Explicitly prohibited scope expansion>
|
|
64
|
-
|
|
65
|
-
## File Boundaries
|
|
33
|
+
### Plan Style: Task Briefs, Not Design Docs
|
|
66
34
|
|
|
67
|
-
|
|
68
|
-
- `tests/test_a.py`: <responsibility; only add or modify these tests>
|
|
35
|
+
Plans exist to prevent implementation drift. They must guide implementation by pinning task order, file boundaries, key symbols, the core patch shape, test proof, completion conditions, and prohibited drift. They are not architecture essays and must not explain every possible option.
|
|
69
36
|
|
|
70
|
-
|
|
71
|
-
```
|
|
37
|
+
Do not write option-comparison tables unless the user explicitly asks. Do not copy complete implementations into the plan. The plan should expose the core patch shape: where to change, what behavior changes, what key branch or pseudocode should guide the edit, how tests prove it, and which boundaries must not be crossed.
|
|
72
38
|
|
|
73
|
-
|
|
39
|
+
Fill the template in order: header table and goal first, then acceptance criteria, global constraints, file boundaries, one task brief per executable step, and a final verification section. Do not add a second plan shape or rename the template sections.
|
|
74
40
|
|
|
75
41
|
## Task Rules
|
|
76
42
|
|
|
77
43
|
- Classify the plan before writing tasks:
|
|
78
44
|
- **Tiny**: pure docs, names, comments, or no-behavior cleanup. Use file boundaries, completion conditions, and one verification command.
|
|
79
|
-
- **Normal**: ordinary behavior, test, or workflow guidance changes. Use the full task brief
|
|
45
|
+
- **Normal**: ordinary behavior, test, or workflow guidance changes. Use the full task brief.
|
|
80
46
|
- **High-risk**: workflow, runtime, template, spec, hook, state-machine, migration, or security-sensitive changes. Use the full task brief plus code-fact sources and explicit drift boundaries.
|
|
81
47
|
- Each task names exact files to create, modify, or test.
|
|
82
48
|
- Each task is small enough to execute and verify independently.
|
|
83
|
-
- Every Normal or High-risk task
|
|
84
|
-
|
|
85
|
-
```markdown
|
|
86
|
-
### Task N: <small goal>
|
|
87
|
-
|
|
88
|
-
**Purpose**
|
|
89
|
-
- <Observable behavior after this task is complete>
|
|
90
|
-
|
|
91
|
-
**Code Fact Sources**
|
|
92
|
-
- Read: `path/a.py::function_name`
|
|
93
|
-
- Read: `tests/test_a.py::test_existing_behavior`
|
|
94
|
-
|
|
95
|
-
**File Boundaries**
|
|
96
|
-
- Create / Modify / Test: `path/a.py` (only change <function/region>)
|
|
97
|
-
- Test: `tests/test_a.py` (only change <test/region>)
|
|
98
|
-
|
|
99
|
-
**Key Symbols**
|
|
100
|
-
- Change: `function_name()`, `ClassName.method()`, `<config-key>`
|
|
101
|
-
- Preserve: `existing_helper()`, output field `<field>`
|
|
102
|
-
|
|
103
|
-
**Implementation Notes**
|
|
104
|
-
```python
|
|
105
|
-
# Core control-flow sketch; adjust names to match existing code.
|
|
106
|
-
# Do not copy a complete implementation into the plan.
|
|
107
|
-
...
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
**Test Proof**
|
|
111
|
-
- `tests/test_a.py::test_x`: proves <specific behavior>
|
|
112
|
-
- Core assertion: <one sentence describing the assertion, not only the test name>
|
|
113
|
-
|
|
114
|
-
**Verification Command**
|
|
115
|
-
```bash
|
|
116
|
-
<command>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
When changed files are covered by `.cowork-flow/spec/<dev_type>/` rules, add the deciding command or a spec/gate check line (`pass` / `not_applicable` with reason; format example in `decision-anchor.md`) here; it is a strong review reminder, not a hard gate.
|
|
120
|
-
|
|
121
|
-
**Completion Conditions**
|
|
122
|
-
- <2-4 checkable conditions>
|
|
123
|
-
|
|
124
|
-
**Prohibited Drift**
|
|
125
|
-
- <2-5 explicit prohibited changes>
|
|
126
|
-
|
|
127
|
-
**Deviation Conditions**
|
|
128
|
-
- If <plan-external file/layer> becomes necessary, must stop and report back because the file boundary is wrong.
|
|
129
|
-
```
|
|
130
|
-
|
|
49
|
+
- Every Normal or High-risk task fills every required field in the template's task brief: Purpose, Code Fact Sources, File Boundaries, Key Symbols, Implementation Notes, Test Proof, Verification Command, Completion Conditions, Prohibited Drift, and Deviation Conditions.
|
|
131
50
|
- For Tiny tasks, keep the brief short but still name exact file boundaries, completion conditions, and verification commands.
|
|
132
51
|
- For behavior changes, include a failing test before implementation when behavior can be tested.
|
|
133
52
|
- For implementation tasks whose changed files are covered by `.cowork-flow/spec/` requirements, name the covered spec files in the plan and add the clause check to the task's `Verification Command` and the plan's `Final Verification`: run the deciding command when one exists, otherwise check clause by clause and record `pass` / `not_applicable` with reason. This is a strong review reminder, not a separate hard gate.
|
|
@@ -149,6 +68,12 @@ Then list task briefs, followed by integrated verification and completion checks
|
|
|
149
68
|
| "This task does not need a verification command." | No verification means no completion signal. Every task needs an executable verification command. | Add at least one automated check, such as typecheck, test, lint, or build. |
|
|
150
69
|
| "The plan should explore every alternative." | Heavy option analysis slows routine implementation and hides the path to execute. | State the chosen path and drift boundaries. Add option analysis only when the user asks or the decision is genuinely architectural. |
|
|
151
70
|
|
|
71
|
+
## Fixed-Agent Dispatch
|
|
72
|
+
|
|
73
|
+
> For formal fixed-agent work: create a runtime context with `.cowork-flow/run subagent init`, pass `cowork_runtime_context_id: <runtime_context_id>` through the active Host Adapter, then dispatch `cowork-implement` or `cowork-check`. Close the runtime context after verification.
|
|
74
|
+
|
|
75
|
+
Use this path when a task is dispatched to a fixed agent. The plan owns the task boundaries; the runtime context binds the dispatched agent to the current task.
|
|
76
|
+
|
|
152
77
|
## Plan Approval Gate
|
|
153
78
|
|
|
154
79
|
A plan can be marked approved only when all conditions hold:
|
|
@@ -156,6 +81,7 @@ A plan can be marked approved only when all conditions hold:
|
|
|
156
81
|
- Every task in the plan has clear acceptance criteria.
|
|
157
82
|
- Every task has implementation steps and verification commands.
|
|
158
83
|
- Task dependencies are explicit, including whether work is serial or parallelizable.
|
|
84
|
+
- The plan uses the installed `.cowork-flow/templates/plan-template.md` shape and the configured output language.
|
|
159
85
|
|
|
160
86
|
`implement.jsonl` is the current task's context index — the files in scope and
|
|
161
87
|
the spec pointers it needs — not the task list. The plan owns the task list.
|
|
@@ -189,7 +115,8 @@ Before handoff:
|
|
|
189
115
|
|
|
190
116
|
1. Confirm every `decision-anchor.md` acceptance criterion maps to a task.
|
|
191
117
|
2. Search the plan for placeholders.
|
|
192
|
-
3. Confirm every Normal or High-risk task
|
|
118
|
+
3. Confirm every Normal or High-risk task fills every required brief field in the template.
|
|
193
119
|
4. Check names, paths, command syntax, and expected outputs.
|
|
194
120
|
5. Confirm the plan says to stop and report back when code facts conflict with the plan, a plan-external file becomes necessary, or a test fails for an unplanned reason.
|
|
195
121
|
6. Confirm Final Verification carries the applicable `.cowork-flow/spec/<dev_type>/` clause check, or states why no spec file applies.
|
|
122
|
+
7. Confirm the plan is written in the configured language and keeps the machine-readable goal line and `AC-NNN` identifiers unchanged.
|