aboutsummaryrefslogtreecommitdiffziptar.gz
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..d588d7f
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,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.