1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# CLAUDE.md — workflow tool repo (sessions changing wf)
This repo = the tool: `shared/CLAUDE.md` (symlinked as `/projects/CLAUDE.md`, loaded by every agent)
+ `wf.py` / `wf_res.py` / `wflib/`. Reference: `docs/design.md`, `docs/resource-ledger.md`.
No personal data here (project names, tasks, paths under home): the workflow's own tasks live in a
separate private wf project; publishable as is.
## Everything here is live
Workers run the main tree's `master` the moment it changes. So:
- `wf.py`, `wf_res.py`, `wflib/`, `shared/CLAUDE.md`, `templates/` → git worktree
`.worktrees/<topic>` on a branch, never the main tree.
- Release = fast-forward merge to `master`, only after:
1. `python3 -m unittest discover -s tests` green in the worktree;
2. `wf check` run with the new code in every project of `wf projects` gives the same
result as the old code (or only the intended differences);
3. a line on top of `CHANGES.md`: date, what changed, what a project must do (if anything).
- The user sees each release. Push only to remote `home` (private), never elsewhere.
## Compatibility
- Commands and options are only added. Rename/remove → old spelling works one more release
and prints a one-line notice.
- TASKS.md format change → raise `FORMAT` (`wflib/config.py`) + `wf migrate` step; older
projects keep read commands, write commands refuse until migrated.
- `shared/CLAUDE.md` reaches a worker at its next session start: a rule change must not make
files written under the old rule invalid. Keep it short; project needs go to the project.
## Code rules
- Python ≥ 3.11 stdlib only. `wflib/` pure (text in, text out); files and printing in `wf.py` / `wf_res.py`.
- TDD; oracles = hand-written literals; see each new test fail first.
- Expected failures: one `wf: …` line on stderr, exit 1; usage errors exit 2; no tracebacks.
|