nobrainer-tech-flow 0.0.0-stage → 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.
Files changed (149) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +18 -0
  3. package/.claude-plugin/plugin.json +21 -0
  4. package/.codex-plugin/plugin.json +47 -0
  5. package/.opencode/INSTALL.md +37 -0
  6. package/.opencode/plugins/nobrainer-tech-skills.js +66 -0
  7. package/.pi/extensions/nobrainer-tech-skills.js +64 -0
  8. package/AGENTS.md +204 -0
  9. package/CLAUDE.md +204 -0
  10. package/CONTRIBUTING.md +70 -0
  11. package/GEMINI.md +1 -0
  12. package/LICENSE +21 -0
  13. package/README.md +658 -2
  14. package/SECURITY.md +33 -0
  15. package/adapters/bootstrap.md +27 -0
  16. package/assets/nobrainer-tech-logo.svg +1 -0
  17. package/assets/nobrainer-workflow.svg +155 -0
  18. package/assets/plugin-logo.png +0 -0
  19. package/bin/nobrainer-tech-flow.mjs +48 -0
  20. package/docs/BOUNDED_RUNNER.md +60 -0
  21. package/docs/CHAT_PLUGINS.md +29 -0
  22. package/docs/COMPATIBILITY.md +371 -0
  23. package/docs/INSTALL.md +626 -0
  24. package/docs/MIGRATION_TO_FLOW.md +117 -0
  25. package/docs/NAMING.md +39 -0
  26. package/docs/PRIVACY.md +9 -0
  27. package/docs/SESSION_RESTART.md +70 -0
  28. package/docs/SKILL_CURATION.md +124 -0
  29. package/docs/TESTING.md +232 -0
  30. package/docs/TRY_IT.md +109 -0
  31. package/docs/releases/v1.0.0.md +81 -0
  32. package/docs/releases/v1.1.0.md +85 -0
  33. package/docs/releases/v1.10.0.md +34 -0
  34. package/docs/releases/v1.11.0-publication-readback.md +25 -0
  35. package/docs/releases/v1.11.0.md +42 -0
  36. package/docs/releases/v1.12.0.md +30 -0
  37. package/docs/releases/v1.13.0.md +46 -0
  38. package/docs/releases/v1.14.0.md +43 -0
  39. package/docs/releases/v1.14.1.md +21 -0
  40. package/docs/releases/v1.2.0.md +87 -0
  41. package/docs/releases/v1.2.1.md +92 -0
  42. package/docs/releases/v1.3.0-publication-readback.md +69 -0
  43. package/docs/releases/v1.3.0.md +66 -0
  44. package/docs/releases/v1.3.1-publication-readback.md +76 -0
  45. package/docs/releases/v1.3.1.md +59 -0
  46. package/docs/releases/v1.4.0-publication-readback.md +81 -0
  47. package/docs/releases/v1.4.0.md +43 -0
  48. package/docs/releases/v1.5.0-publication-readback.md +76 -0
  49. package/docs/releases/v1.5.0.md +54 -0
  50. package/docs/releases/v1.6.0.md +64 -0
  51. package/docs/releases/v1.6.1-publication-readback.md +53 -0
  52. package/docs/releases/v1.6.1.md +82 -0
  53. package/docs/releases/v1.7.0.md +42 -0
  54. package/docs/releases/v1.7.1-publication-readback.md +64 -0
  55. package/docs/releases/v1.7.1.md +49 -0
  56. package/docs/releases/v1.8.0.md +63 -0
  57. package/docs/releases/v1.8.1.md +32 -0
  58. package/docs/releases/v1.9.0.md +33 -0
  59. package/docs/releases/v2.0.0-candidate.md +28 -0
  60. package/docs/releases/v2.0.0.md +53 -0
  61. package/docs/releases/v2.0.1.md +135 -0
  62. package/docs/releases/v2.0.2.md +189 -0
  63. package/docs/releases/v2.1.0.md +64 -0
  64. package/docs/releases/v2.1.1.md +43 -0
  65. package/docs/releases/v2.2.0.md +64 -0
  66. package/docs/releases/v2.2.1.md +11 -0
  67. package/docs/releases/v2.3.0.md +97 -0
  68. package/docs/releases/v2.3.1.md +71 -0
  69. package/docs/releases/v2.3.2.md +242 -0
  70. package/docs/releases/v2.4.0.md +126 -0
  71. package/gemini-extension.json +6 -0
  72. package/hooks/claude-hooks.json +17 -0
  73. package/hooks/hooks-cursor.json +10 -0
  74. package/hooks/run-hook.cmd +36 -0
  75. package/hooks/session-start +38 -0
  76. package/package.json +69 -4
  77. package/plugin.json +51 -0
  78. package/scripts/build_plugin.py +50 -0
  79. package/scripts/check_flow_update.py +18 -0
  80. package/scripts/check_public_commit.py +86 -0
  81. package/scripts/fetch_public_refs.py +69 -0
  82. package/scripts/install.py +600 -0
  83. package/scripts/install.sh +1392 -0
  84. package/scripts/install_guards.py +279 -0
  85. package/scripts/install_personalization.py +527 -0
  86. package/scripts/install_skills.py +951 -0
  87. package/scripts/npm_install.py +85 -0
  88. package/scripts/recommend_flow_setup.py +1522 -0
  89. package/scripts/validate_skills.py +465 -0
  90. package/skills/nobrainer-auto-fine-tune/SKILL.md +79 -0
  91. package/skills/nobrainer-auto-fine-tune/references/capacity-audit.md +49 -0
  92. package/skills/nobrainer-autoimprove/SKILL.md +212 -0
  93. package/skills/nobrainer-autoimprove/scripts/count_words.py +22 -0
  94. package/skills/nobrainer-browser/SKILL.md +234 -0
  95. package/skills/nobrainer-browser/references/cdp-profile-restart.md +93 -0
  96. package/skills/nobrainer-build/SKILL.md +173 -0
  97. package/skills/nobrainer-codex-context/SKILL.md +111 -0
  98. package/skills/nobrainer-codex-context/scripts/codex_context.py +175 -0
  99. package/skills/nobrainer-decide/SKILL.md +198 -0
  100. package/skills/nobrainer-dispatcher/SKILL.md +256 -0
  101. package/skills/nobrainer-dispatcher/agents/openai.yaml +4 -0
  102. package/skills/nobrainer-rca/SKILL.md +163 -0
  103. package/skills/nobrainer-research/SKILL.md +131 -0
  104. package/skills/nobrainer-review/SKILL.md +195 -0
  105. package/skills/nobrainer-security/SKILL.md +166 -0
  106. package/skills/nobrainer-sessions/SKILL.md +223 -0
  107. package/skills/nobrainer-sessions/references/evidence-receipt.md +55 -0
  108. package/skills/nobrainer-sessions/references/protocol.md +337 -0
  109. package/skills/nobrainer-sessions/references/session-restart.md +255 -0
  110. package/skills/nobrainer-sessions/scripts/evidence_receipt.py +373 -0
  111. package/skills/nobrainer-sessions/scripts/restart_gate.py +140 -0
  112. package/skills/nobrainer-sessions/scripts/run_bounded.py +390 -0
  113. package/skills/nobrainer-sessions/scripts/session_title.py +43 -0
  114. package/skills/nobrainer-skill-doctor/SKILL.md +149 -0
  115. package/skills/nobrainer-skill-doctor/references/astra.md +19 -0
  116. package/skills/nobrainer-skill-doctor/scripts/audit.py +100 -0
  117. package/skills/nobrainer-skill-doctor/scripts/context_candidates.py +133 -0
  118. package/skills/nobrainer-spec-driven-development/SKILL.md +132 -0
  119. package/skills/nobrainer-spec-driven-development/references/spec-template.md +114 -0
  120. package/skills/nobrainer-team/SKILL.md +165 -0
  121. package/skills/nobrainer-team/references/team-plan.md +64 -0
  122. package/skills/nobrainer-tech-flow/SKILL.md +239 -0
  123. package/skills/nobrainer-tech-flow/VERSION +1 -0
  124. package/skills/nobrainer-tech-flow/references/autopilot.md +72 -0
  125. package/skills/nobrainer-tech-flow/references/codex-routing.md +21 -0
  126. package/skills/nobrainer-tech-flow/references/communication.md +108 -0
  127. package/skills/nobrainer-tech-flow/references/correction-hooks.md +110 -0
  128. package/skills/nobrainer-tech-flow/references/daily-update.md +28 -0
  129. package/skills/nobrainer-tech-flow/references/delivery.md +243 -0
  130. package/skills/nobrainer-tech-flow/references/idea-to-delivery.md +82 -0
  131. package/skills/nobrainer-tech-flow/references/long-run-state.md +209 -0
  132. package/skills/nobrainer-tech-flow/references/model-routing.md +83 -0
  133. package/skills/nobrainer-tech-flow/references/optional-decisions.md +83 -0
  134. package/skills/nobrainer-tech-flow/references/project-start.md +22 -0
  135. package/skills/nobrainer-tech-flow/references/routing.md +125 -0
  136. package/skills/nobrainer-tech-flow/references/setup.md +180 -0
  137. package/skills/nobrainer-tech-flow/references/worktrees.md +138 -0
  138. package/skills/nobrainer-tech-flow/scripts/check_flow_update.py +298 -0
  139. package/skills/nobrainer-tech-flow/scripts/cleanup_worktree.py +327 -0
  140. package/skills/nobrainer-tech-flow/scripts/decision_config.py +107 -0
  141. package/skills/nobrainer-tech-flow/scripts/flow_guard.py +252 -0
  142. package/skills/nobrainer-tech-flow/scripts/typed_decisions.py +210 -0
  143. package/skills/nobrainer-wiki/SKILL.md +164 -0
  144. package/skills/nobrainer-wiki/references/setup.md +88 -0
  145. package/skills/nobrainer-writing/SKILL.md +272 -0
  146. package/skills/nobrainer-writing/agents/openai.yaml +4 -0
  147. package/skills/nobrainer-writing/references/brief-artifacts.md +357 -0
  148. package/skills/nobrainer-writing/references/plain-technical-english.md +76 -0
  149. package/skills/nobrainer-writing/references/research.md +86 -0
@@ -0,0 +1,135 @@
1
+ # nobrainer-tech-flow 2.0.1 verification record
2
+
3
+ Source version: 2.0.1. Publication is a separate check against the public tag
4
+ and release archive; this document alone does not establish distribution.
5
+
6
+ Corrections made by 2.0.2 (see its [record](v2.0.2.md)): the statements below that
7
+ a symlink-loop destination is reported (not on Python 3.13), that a Claude import is
8
+ recognised "only when it is a plain, stand-alone one" (code spans, nested fences,
9
+ comments, raw HTML and more were still mistaken for imports; 2.0.2 recognises only a
10
+ file that holds nothing but the import), that a non-absolute environment variable is
11
+ an error (for every client, not only the one that reads it; a blank one also counted
12
+ as unset) and that copy mode ignores bytecode (any `.pyc`, not only `__pycache__`).
13
+
14
+ 2.0.1 is a corrective release for 2.0.0. It adds no skill and keeps the
15
+ eighteen-skill portfolio. The only skill-text change with a behavioural effect is
16
+ a fallback for a missing `nobrainer-sessions` (see "Documentation and skills").
17
+
18
+ ## What changed
19
+
20
+ Client adapters
21
+
22
+ - Codex marketplace entry: the plugin is named `nobrainer-tech-flow` like its
23
+ manifest and uses a local source, so `codex plugin add` finds and installs it.
24
+ Before, neither plugin name matched both files.
25
+ - Codex manifest: the two default prompts fit the 128-character limit; longer
26
+ ones are ignored by the client.
27
+ - OpenCode: the bootstrap is still added after a compaction, when the first user
28
+ message has no text part, and a missing bootstrap file no longer throws.
29
+ - Pi: dead state removed; a missing bootstrap file no longer fails a request.
30
+ - Hooks: `hooks/session-start`, `hooks/run-hook.cmd` and `adapters/bootstrap.md`
31
+ are pinned to LF, so a Windows checkout with `core.autocrlf=true` still runs the
32
+ scripts and the bootstrap reaches the model without carriage returns.
33
+ `session-start` accepts a backslash script path when run under Git Bash, which
34
+ is how the Windows batch half of the wrapper starts it. `run-hook.cmd` itself
35
+ is unchanged and must stay POSIX-sh compatible, because hosts start it
36
+ through `/bin/sh`.
37
+
38
+ Installers and setup
39
+
40
+ - `install_skills.py`: copy mode no longer calls `ctypes.CDLL(None)` on Windows;
41
+ repeating a copy install over an identical copy is a no-op, ignoring bytecode
42
+ and `.DS_Store` litter, and a foreign directory is rejected by comparing names
43
+ and sizes before any file is read; a destination that is a file, a symlink loop
44
+ or unreadable, and a dangling link, are reported instead of crashing; the
45
+ preview names links from a selected skill to a skill that will be absent.
46
+ - Claude Code `CLAUDE_CONFIG_DIR` and OpenCode `XDG_CONFIG_HOME` select the skills
47
+ directory, and Codex `CODEX_HOME` and the same two select the instruction file,
48
+ when `--home` is not given. An explicit `--home` ignores them. A value that is
49
+ not an absolute path is an error, and a blank one counts as unset.
50
+ - `install_personalization.py`: a Claude file that imports the Codex global file
51
+ is treated as inheriting only when the import is a plain, stand-alone one and
52
+ the Codex file holds the block; otherwise the block is written and the reason
53
+ printed. Codex's `AGENTS.override.md` blocks the write it would shadow. The new
54
+ `--keep-options` flag keeps earlier auto-update, session-restart and wiki-root
55
+ settings, recognising a grant only as the exact line the installer writes for it
56
+ (so a `--preferences` value quoting the wording cannot forge one), and the block
57
+ no longer carries a stray blank line.
58
+ - `recommend_flow_setup.py`: without a terminal (including a closed stdin) and with
59
+ an answer missing it stops with `INPUT_REQUIRED` and the flags to pass, instead
60
+ of hanging or crashing; it follows the same environment variables, resolves a
61
+ relative `--home`, always keeps earlier options, treats a symlink loop as a
62
+ conflict and says what to do when the Codex override file blocks the write.
63
+ - All three scripts write UTF-8 to a pipe, so paths and instruction-file lines
64
+ outside the Windows code page no longer abort them, and the guided setup reads
65
+ the `gh` output as UTF-8.
66
+ - `session_title.py`: the default UTC title no longer needs a time-zone database,
67
+ which Windows does not ship.
68
+ - `check_public_commit.py`: decodes Git output as UTF-8 and reports a missing Git.
69
+
70
+ Upgrading
71
+
72
+ - If you ran the guided setup with 2.0.0 while `CLAUDE_CONFIG_DIR` or
73
+ `XDG_CONFIG_HOME` was set, 2.0.0 had written to the default location instead.
74
+ Re-running with 2.0.1 then stops and says so; run the same command with
75
+ `--rollback --apply` once, or pass `--home` to keep that location.
76
+ - The next personalization run rewrites the managed block once (the stray blank
77
+ line is gone) and shows the difference in its preview.
78
+
79
+ Documentation and skills
80
+
81
+ - README lists all eighteen skills, states six compatibility levels and no longer
82
+ says 1.6 is current; `CLAUDE.md`/`AGENTS.md` lose stray backslashes; one
83
+ machine path is removed from `tasks/todo.md`.
84
+ - `docs/INSTALL.md`: correct code fences, the guided-setup flags, the Claude Code
85
+ and Codex plugin commands and invocation forms, a subset example that keeps
86
+ what the core skill links to, one-channel-per-client guidance, and a Windows
87
+ section. Adapter descriptions match the code, and Cursor is no longer called
88
+ tested.
89
+ - Three small skill-text edits, none evaluated with model runs (none was
90
+ possible here):
91
+ - `references/worktrees.md` and `references/daily-update.md` name their helper
92
+ scripts through `<flow-skill-dir>`, as the other references do, instead of a
93
+ path that exists only inside this repository.
94
+ - `nobrainer-codex-context` starts its read-only probe from the project through
95
+ `<context-skill-dir>`. The old text said to run it from the skill directory,
96
+ where it inspected the skill folder and reported `MISSING`.
97
+ - The core skill runs the Sessions startup step only when `nobrainer-sessions`
98
+ is installed and otherwise stays in MAIN. Before, a subset install without
99
+ Sessions pointed at a file that does not exist. Nothing changes when Sessions
100
+ is installed.
101
+
102
+ Release gates
103
+
104
+ - The skill `VERSION` file and `package-lock.json` must match the manifests;
105
+ `check_flow_update.py` reads the former.
106
+ - A cross-skill link map fails when a skill starts linking into another skill,
107
+ the subset example in `docs/INSTALL.md` must have no dead links, and the README
108
+ table must list every skill.
109
+ - CI syntax-checks the skill helper scripts and runs a Windows job.
110
+
111
+ ## Reproduce the repository checks
112
+
113
+ From the exact reviewed release checkout, run:
114
+
115
+ ```sh
116
+ python3 scripts/validate_skills.py --suite
117
+ python3 -m unittest discover -s tests -q
118
+ ```
119
+
120
+ The Windows job runs the validators plus `tests.test_windows_smoke` and
121
+ `tests.test_adapters`. It passed on GitHub's `windows-latest` (Git Bash, Python
122
+ 3.11, Node 22) for this source, including the `cmd` wrapper reaching the bootstrap
123
+ through Git Bash and a copy-mode install. The whole suite is not run there: some
124
+ historical evidence tests compare text byte for byte and assume LF checkouts.
125
+
126
+ ## Evidence limits
127
+
128
+ These checks establish local helper behavior, source contracts and the client
129
+ readbacks named in the [compatibility record](../COMPATIBILITY.md). They do not
130
+ prove that a client routes a task through Flow, that a model followed a skill, or
131
+ that Cursor, Gemini CLI, Kimi Code, OpenCode or Pi accept the adapters at
132
+ runtime; the OpenCode synthetic text part follows the message shape simulated in
133
+ the tests, not a real OpenCode session. Known gaps that this release does not address are the cost of starting
134
+ Flow on a trivial task, the worktree-per-task default, and the differences between
135
+ the Flow and Dispatcher ledgers.
@@ -0,0 +1,189 @@
1
+ # nobrainer-tech-flow 2.0.2 verification record
2
+
3
+ Source version: 2.0.2. Publication is a separate check against the public tag
4
+ and release archive; this document alone does not establish distribution.
5
+
6
+ 2.0.2 builds on the [2.0.1 record](v2.0.1.md): everything in it is part of this
7
+ release. It adds two installer scripts and fixes what two independent reviews found.
8
+ It adds no skill (the portfolio stays eighteen) and changes no skill text, adapter
9
+ or hook; the manifests change only their version.
10
+
11
+ ## What changed
12
+
13
+ Installing without Python
14
+
15
+ - `scripts/install.sh` is a POSIX sh script for one client (`claude`, `codex`,
16
+ `opencode` or `copilot`): `sh scripts/install.sh --client claude` previews,
17
+ `--apply` installs, `--undo --apply` reverses. It runs in dash, bash, zsh and
18
+ busybox on macOS, Linux and WSL, and in Git Bash on Windows, and needs only the
19
+ usual system tools (sed, grep, head, tail, mktemp, sha256sum or shasum, and git
20
+ to show the source commit).
21
+ - The README opens its install section with a prompt to paste into any coding
22
+ agent: it clones or updates the repository and follows the install method the
23
+ README gives for that agent. It names no version, script or client list, so it
24
+ stays valid as they change. The same two commands follow for a terminal.
25
+ - It uses the same locations, variables, conflict rule and setup record as the
26
+ Python scripts, and writes byte for byte the block the Python helper writes, so a
27
+ setup made by either one can be undone by the other.
28
+ - It never grants an authorization, links only (like `install.py`), and leaves a
29
+ managed block that is already there exactly as it is, where `install.py` rewrites
30
+ it to the current text and keeps its options.
31
+ - It refuses the paths the Python scripts refuse (a control character, a line or
32
+ paragraph separator, and, where `iconv` is installed, bytes that are not UTF-8),
33
+ so a record it writes stays readable to them, and it reads `--home=~/x` as
34
+ `install.py` does.
35
+
36
+ One command with Python
37
+
38
+ - `python3 scripts/install.py --client claude` does the same through the guided
39
+ setup with every skill selected. It asks nothing, prints the exact text it would
40
+ write, refuses a target that is not its own link, and runs the guided setup's own
41
+ checks in the preview, so the preview refuses whatever `--apply` would refuse.
42
+
43
+ Undo that reverses the install
44
+
45
+ - The setup record keeps the backup from the first install. Before, every later
46
+ run replaced it with the file as it was just before that run, so after an update
47
+ the undo restored a file that still held the block (found by the second review).
48
+ - Undo puts the managed block back as it was before the first setup (removed, or
49
+ the block that was there) and leaves the rest of the file as it is now. The file
50
+ comes back byte for byte when nothing else changed, and edits made outside the
51
+ block since are kept. A block that was already there before the first install,
52
+ with its options and preference, is no longer deleted by the undo. That holds
53
+ for setups recorded by 2.0.2: a 2.0.0 or 2.0.1 record made when the block was
54
+ already there holds no backup, so its undo still removes the block.
55
+ - The block is replaced as whole lines, the line break after its END marker
56
+ included, so both undos give the same bytes even after edits around the block,
57
+ and text added after a block that ended the file keeps a line of its own.
58
+
59
+ Claude files that import the Codex instructions
60
+
61
+ - The block is skipped only when the Claude file holds nothing but the import line
62
+ (`@~/.codex/AGENTS.md` or the absolute path) and the Codex file has the block;
63
+ every other Claude file gets its own block. 2.0.1 tried to recognise an import
64
+ anywhere in the file; the second review showed, against the real Claude Code
65
+ 2.1.284, ordinary files where it saw an import that Claude Code does not load
66
+ (for example a list step whose closing fence sits at column 0, a quoted indented
67
+ example, a link definition, a tab after spaces), which left Claude without the
68
+ block. A second copy of the block is harmless; a missing one is not.
69
+
70
+ Fixes from the independent review of 2.0.1
71
+
72
+ Each has a regression test that fails against the 2.0.1 scripts.
73
+
74
+ - An environment variable that the selected client never reads (a literal
75
+ `XDG_CONFIG_HOME=~/.config` with Claude Code, a relative `CODEX_HOME` with
76
+ Copilot) stopped every client and made a finished setup impossible to undo. Only
77
+ the variable the client reads is checked now, and its value is used exactly as
78
+ written. An empty `CODEX_HOME` or `XDG_CONFIG_HOME` counts as unset, as Codex
79
+ 0.158.0 (checked) and the XDG specification treat it; spaces only, and an empty
80
+ `CLAUDE_CONFIG_DIR`, are relative paths and an error.
81
+ - A grant could be forged under `--keep-options` from a `--wiki-root` path that
82
+ carried a line-separator character (U+2028, U+0085, U+001C and others), because
83
+ grant lines were found with `str.splitlines`. A grant is now a whole line ending
84
+ at `\n` or `\r\n`, and a preference or wiki path must be one printable line. An
85
+ edited grant line is not kept, and the run now says so and names the flag.
86
+ - On Python 3.13 a destination that is a symlink loop was accepted (`resolve()` no
87
+ longer raises); it is reported again.
88
+ - Copy mode ignored every `.pyc` and any directory named like litter, so a planted
89
+ `json.pyc` next to a script (importable, and it shadows the standard library) was
90
+ reported as an identical copy. Only `__pycache__` directories and `.DS_Store` and
91
+ `Thumbs.db` files are ignored now.
92
+ - A home path that is not valid UTF-8, that holds a line break, or an empty or
93
+ relative `HOME` is refused before anything is written; such paths used to finish
94
+ a setup that could not be undone.
95
+ - End of input at the interactive selection prompt ends the run instead of raising.
96
+ - The 2.0.1 statement that Claude Code "does not accept" a relative or `~`
97
+ `CLAUDE_CONFIG_DIR` was wrong: Claude Code 2.1.284 creates the directory named by
98
+ a relative value in its working directory and takes `~` literally. The installer
99
+ still refuses such values because it cannot know what the client means.
100
+
101
+ Smaller changes from the second review
102
+
103
+ - The printed undo and install summaries are read from the setup record, not from
104
+ printed paths, and the undo counts the links it actually removed.
105
+ - Messages name this command's flags (`--undo --apply`), a link left by an earlier
106
+ layout gets the migration command, Windows hints say `py -3`, and when
107
+ `CLAUDE_CONFIG_DIR`, `CODEX_HOME` or `XDG_CONFIG_HOME` chose the location the
108
+ output says to keep it set for the undo.
109
+ - In `install.py` the link check before `--apply` runs where the skills go, not
110
+ only in the temp folder. `install.sh` checks in the temp folder; when a link still
111
+ fails where the skills go, it removes the links that run made and stops.
112
+
113
+ Fixes from the review of the new scripts
114
+
115
+ A third read-only review, of `install.sh`, the new undo and `install.py`, found no
116
+ blocker and 13 smaller problems. Each fix below has a test that fails against the
117
+ scripts before it, except the one for concurrent runs, which was checked by hand.
118
+
119
+ - A hint that points to the Python undo keeps `--home`; following it used to undo
120
+ the default profile instead. On Windows it says `py -3`.
121
+ - When the Claude file had become nothing but the Codex import, a repeat run left a
122
+ record that neither undo could reverse. The record now drops that file, as the
123
+ guided setup's does, and the undo removes the links.
124
+ - Several runs at once could write links into the checkout, and a run could report
125
+ success after another one removed its links. A link is never made through a link
126
+ another run just made: one run wins, the others stop and remove only their own.
127
+ - `sh scripts/install.sh` failed with `CDPATH` set.
128
+ - When a record names another place, both installers now name the setting that
129
+ setup was made with (for example `CLAUDE_CONFIG_DIR=...`, or the variable unset),
130
+ and the undo command they print works as printed.
131
+ - `install.sh` undoes a file that ends in a lone CR (old Mac line breaks) or holds a
132
+ NUL byte byte for byte; before, it installed and then refused to undo.
133
+ - A variable of another client that holds a control character no longer stops
134
+ `install.sh`.
135
+ - The mutation check found checks that no test reached; they now have tests (see
136
+ below).
137
+
138
+ Documentation and gates
139
+
140
+ - README, `docs/INSTALL.md`, `docs/TESTING.md` and `.opencode/INSTALL.md` describe
141
+ the new scripts and rules; the erratum for the 2.0.1 statements above is at the
142
+ top of its record.
143
+ - Tests: `tests/test_shell_installer.py` and `tests/test_one_command_installer.py`
144
+ run the real scripts against a private home; the shell tests also run in every
145
+ POSIX shell found and with no Python on the `PATH`, and check both lists of skill
146
+ names against the Python installer. The regression tests fail against the
147
+ previous scripts.
148
+ - Mutation check: 34 mutants of `install.sh`, each removing one check or behavior;
149
+ the shell tests catch 30. Of the other four, two change nothing (a second check
150
+ refuses the same backup paths, and `mktemp` already creates the record private)
151
+ and two matter only when another process changes the links during a run: the
152
+ re-check before an undo removes a link, and `ln -n` for runs at the same time,
153
+ checked by hand (12 rounds of 4 runs at once: one run succeeds each time, its
154
+ record matches its links, and nothing is written into the checkout). Of the
155
+ `install.py` mutants tried, only the link check at `--apply` is not caught; it
156
+ matters only where the skills folder refuses links that the temp folder allows.
157
+ - CI runs both installers' tests in the Windows job (the shell one under Git Bash),
158
+ the whole suite on Python 3.13 with Node 22, checks `sh -n scripts/install.sh`,
159
+ and fails instead of skipping when a runner cannot create links.
160
+ - `scripts/install.sh` is pinned to LF, like the hook scripts.
161
+
162
+ ## Reproduce the repository checks
163
+
164
+ From the exact reviewed release checkout, run:
165
+
166
+ ```sh
167
+ python3 scripts/validate_skills.py --suite
168
+ python3 -m unittest discover -s tests -q
169
+ ```
170
+
171
+ ## Evidence limits
172
+
173
+ These checks establish local helper behavior, source contracts and the client
174
+ readbacks named in the [compatibility record](../COMPATIBILITY.md), which was made
175
+ against the 2.0.1 adapters that this release leaves unchanged. They do not prove
176
+ that a client routes a task through Flow, that a model followed a skill, or that
177
+ Cursor, Gemini CLI, Kimi Code, OpenCode or Pi accept the adapters at runtime. No
178
+ client was read back on an install made by either new script.
179
+
180
+ - The shell installer ran here in dash, bash (POSIX mode), busybox sh and zsh
181
+ emulating sh on Linux; CI runs it under macOS's own `/bin/sh` and under Git Bash
182
+ on Windows. A Windows account without the right to create links was not run.
183
+ - The single-line import rule was checked against the real Claude Code 2.1.284
184
+ only through the review's documents; the rule itself needs no Markdown parsing.
185
+ - `install.sh` refuses a path that is not UTF-8 only where `iconv` is installed.
186
+ Runs at the same time were checked by hand, not in the suite.
187
+ - Known gaps that this release does not address are the cost of starting Flow on a
188
+ trivial task, the worktree-per-task default, and the differences between the Flow
189
+ and Dispatcher ledgers.
@@ -0,0 +1,64 @@
1
+ # nobrainer-tech-flow 2.1.0 verification record
2
+
3
+ Source version: 2.1.0. Publication requires separate tag and release-archive
4
+ readback; this document does not by itself establish distribution.
5
+
6
+ ## Scope
7
+
8
+ This release adds explicit idea intake and connects generated SDD acceptance
9
+ criteria to the existing autopilot loop. It adds plain technical English as a
10
+ mode of Writing. There are still eighteen skills and no new background runner,
11
+ scheduler, model benchmark or provider call. Existing installers and adapters
12
+ are unchanged except for release versions.
13
+
14
+ The source since 2.0.2 also includes the
15
+ [approved-plan autopilot change](https://github.com/nobrainer-tech/nobrainer-tech-flow/pull/71).
16
+ The [2.0.2 record](v2.0.2.md) remains the installer baseline.
17
+
18
+ ## Sources and adaptation
19
+
20
+ - [Karpathy's original post](https://x.com/karpathy/status/2105819303471976479):
21
+ writing and explanation guidance, not a new language or a Flow benchmark.
22
+ - [ASD-STE100 overview](https://www.asd-ste100.org/about_STE.html) and
23
+ [official FAQ](https://www.asd-ste100.org/STE_faq.html): the existing controlled
24
+ language and the distinction between procedures and descriptions.
25
+ - [Writing adaptation](../../skills/nobrainer-writing/references/plain-technical-english.md):
26
+ independently phrased guidance, without the dictionary or a conformance claim.
27
+
28
+ ## Verification
29
+
30
+ The new paths were reviewed against a frozen source baseline and small writing
31
+ exercises. The baseline already supported end-to-end work: this change makes
32
+ the idea intake, requested SDD and final acceptance binding explicit. It is not
33
+ a measured reliability improvement.
34
+
35
+ An English procedure exercise preserved the literal command, production
36
+ prohibition, UNKNOWN status, named operator, permission and backup condition.
37
+ A Polish rewrite retained its language, exact quote and command, combined
38
+ conditions, unknown actor and uncertainty. These were same-session native
39
+ worker exercises, with MAIN inspecting the saved source and output. They were
40
+ not blind trials or clean-session skill discovery; the small holdout does not
41
+ establish general performance. No model benchmark or provider call was added.
42
+
43
+ A separate native source review found no verified actionable defect in its
44
+ inspected slice. It did not verify runtime discovery, all adapters or deployed
45
+ behavior. Repository validation and public distribution are separate gates;
46
+ exact CI and publication readback are linked from the release.
47
+
48
+ Local checks on 2026-10-02: both skill validators passed; the full Python
49
+ unit/archive suite passed 391 tests with 2 platform/environment skips; staged
50
+ Gitleaks found no secrets. Version consistency is checked by the suite.
51
+ These are repository results, not client-runtime acceptance. The site has its own
52
+ validator/tests and browser checks at 1024 × 800 and 390 × 844. Copying the idea
53
+ prompt must produce the visible text in the clipboard, and the technical
54
+ writing details must expand without horizontal overflow.
55
+
56
+ ## Limits and rollback
57
+
58
+ No cross-client discovery, autonomous uptime, lower task cost, token savings,
59
+ formal STE compliance or superiority over another workflow is claimed. The
60
+ English mode preserves other requested languages and marketing styles.
61
+
62
+ For rollback, use the reviewed v2.0.2 source and the documented installer dry-run,
63
+ conflict and backup checks. The versioned installation source must stay present
64
+ while client links point to it. No user settings are changed by this source release.
@@ -0,0 +1,43 @@
1
+ # nobrainer-tech-flow 2.1.1 verification record
2
+
3
+ Source version: 2.1.1. This corrects the communication defaults introduced with
4
+ [2.1.0](v2.1.0.md). Publication is a separate tag and source-archive check.
5
+
6
+ ## Scope
7
+
8
+ One Flow communication policy governs operational prose between agents and
9
+ user-facing replies. Agent exchanges default to plain technical English, while
10
+ user replies are written directly in the requested language. Team, Dispatcher and Sessions reference the same policy. The unchanged
11
+ bootstrap already routes to Flow, which owns that default. Existing task schemas,
12
+ source literals, language overrides, permissions and evidence remain binding.
13
+
14
+ Writing selects TECHNICAL for English technical artifacts when no other mode
15
+ is requested. Other languages use natural plain language with the same factual
16
+ contract. Marketing, creative work and author voice keep their purpose.
17
+
18
+ There is no additional translation call, provider, model setting, benchmark,
19
+ runtime process or skill. This policy concerns visible messages, not hidden
20
+ reasoning. It does not claim full ASD-STE100 compliance or performance savings.
21
+
22
+ ## Evidence and limits
23
+
24
+ The frozen v2.1.0 baseline already passed the two small communication exercises;
25
+ its instructions did not mandate the agent-language default. This release makes
26
+ the policy explicit. The same two pressure cases and three fresh holdout
27
+ exercises passed meaning checks, including a Polish worker-language override,
28
+ exact code/JSON/quoted warnings, and a warm Polish marketing artifact. MAIN
29
+ checked the actual saved outputs and literal preservation. Same-session exercises are not a blind causal comparison
30
+ or proof that every client loads and follows the skill.
31
+
32
+ Release gates: source/link/version validators, adapter and installer-link
33
+ regressions, full Python tests, staged secret scan, semantic pressure and holdout
34
+ checks, source review, and separate release/archive readback. The release notes
35
+ link exact CI results after validation. No cross-client runtime or cost claim
36
+ is inferred from these gates.
37
+
38
+ ## Rollback
39
+
40
+ Use the reviewed v2.1.0 source and the documented installation dry-run and
41
+ backup checks. No persisted schema or data migration is introduced. Keep the
42
+ source checkout present while client links point to it. Explicit user language
43
+ and style instructions override the new default without a rollback.
@@ -0,0 +1,64 @@
1
+ # nobrainer-tech-flow 2.2.0 verification record
2
+
3
+ The communication reference now chooses the simplest useful presentation and
4
+ closes non-trivial work with inspected proof and visible unfinished requirements.
5
+ Text remains the default; diagrams explain relationships; HTML needs useful
6
+ interaction. Explicit formats and artifact-only output take precedence. Video
7
+ requires a bounded purpose and available tools, with a text/storyboard fallback.
8
+
9
+ ## Scope and weight
10
+
11
+ One existing reference owns these rules. The eighteen skills, bootstrap and skill
12
+ bodies are unchanged. No new renderer, provider, dependency, helper, data schema
13
+ or result store is shipped. The reference also makes two observed failure classes
14
+ explicit: machine-only output must not gain Markdown fences, and exact source
15
+ text must stay separate from process metadata. Other execution stages and their
16
+ workflow diagrams are unchanged; no diagram refresh is needed for this prose policy.
17
+
18
+ ## Actual checks and limits
19
+
20
+ The [frozen inputs and raw answers](../evals/clear-results-v2.2.0.json) record
21
+ fresh local CLI processes on 3 October 2026, using an explicitly supplied
22
+ communication reference. Codex CLI 0.157.1 requested `gpt-6-astra` at `xhigh`;
23
+ its event stream does not independently identify the served model. Claude Code
24
+ 2.1.286 requested `opus` at `xhigh`; returned usage identifies first-party
25
+ `claude-opus-5-5` for the text trials. The HTML artifact receipt reports both
26
+ `claude-opus-5-5` and `claude-opus-4-8`; the reason is unproven. Tools and external
27
+ actions were disabled for these probes.
28
+ No provider or client configuration was changed.
29
+
30
+ Each baseline answered three development cases; each first candidate answered
31
+ those three plus three fresh holdout cases. All per-case coarse assertions passed,
32
+ but independent review found two failures in the first candidate output: Codex
33
+ combined an exact error with the exit status; Claude fenced the outer JSON map.
34
+ Those failures remain in the record. After the narrow instruction clarification,
35
+ both clients passed a fresh single-task case: strict JSON, exact stdout, separate
36
+ integer exit status and unverified public work. This is a focused correction
37
+ check, not a re-score of the earlier run or proof of a quality gain.
38
+
39
+ Two earlier candidate artifacts were inspected and exercised by MAIN: a Python
40
+ stable-deduplication function passed six checks, including unhashable values,
41
+ order, input preservation and an iterator; a self-contained retry explanation
42
+ worked in the Codex browser at default, zero and four failures. Keyboard increment,
43
+ 390-pixel layout without overflow and inert markup-like label text were checked.
44
+ These artifact checks bind the first candidate reference, before the format/literal
45
+ clarification. They do not establish autonomous client tool execution.
46
+
47
+ This is explicit-source behavior evidence, not automatic installed-skill discovery,
48
+ a full-task client benchmark, a matched competitor comparison or proof of lower
49
+ cost, faster work or better completion rates. Single runs do not estimate reliability.
50
+ The current models can still violate instructions; MAIN must inspect real outputs.
51
+ Video rendering, full client lifecycle and general compatibility remain unverified.
52
+
53
+ Required release gates are the structure/suite validators, full unit tests, staged
54
+ secret scan, independent source/output review and separate release/archive/site
55
+ readback. CI results belong to the published commit, not the initial failed local
56
+ run: that run encountered an installed `tests` namespace conflict, an intermittent
57
+ short-timeout case and a release-note link before its target was written.
58
+
59
+ ## Rollback
60
+
61
+ Return to v2.1.1 through the documented installer preview/backup flow. No persisted
62
+ schema or migration is introduced. Keep the source checkout while client links
63
+ refer to it. A requested simpler format or explicit language overrides the defaults
64
+ without requiring rollback.
@@ -0,0 +1,11 @@
1
+ # v2.2.1: install Flow from npm and use the skills plugin
2
+
3
+ This release adds distribution paths without adding modules or a task-execution service. The eighteen skill bodies remain unchanged from v2.2.0.
4
+
5
+ - npm provides a named command to preview, apply and undo the existing client setup. Application retains a verified copy of release files at a stable profile path, so npx cache removal does not break installed links. Python 3.11+ is required for installation; help/version need only Node.
6
+ - A hook-free plugin ZIP contains the same skills, references and helpers, portable identity, OpenAI presentation metadata and Claude compatibility metadata.
7
+ - ChatGPT/Codex and Claude support skills plugins. Available tools and permissions remain the client's responsibility. Directory approval and client runtime acceptance are separate from package validation.
8
+
9
+ See [installation](../INSTALL.md) for npm commands, [native plugins](../CHAT_PLUGINS.md) for supported surfaces and [privacy](../PRIVACY.md) for the package's data boundary.
10
+
11
+ Verification records must distinguish packed-tarball installation, ZIP content checks, repository regression, npm publication and directory/client readback. A ZIP or a published npm tarball alone does not prove task performance in every client.
@@ -0,0 +1,97 @@
1
+ # nobrainer-tech-flow 2.3.0: delegate ready work and verify the result
2
+
3
+ Release date: 2026-10-12. Theme: delegation-first.
4
+
5
+ Use available native workers for independent work while the main session keeps
6
+ coordination, integration and acceptance in one place. For example, independent
7
+ implementation, documentation and test tasks can start together when their
8
+ inputs, write scopes, capacity and authorized usage allow it. The main session
9
+ inspects the returned artifacts before accepting the result.
10
+
11
+ ## What changes
12
+
13
+ - In non-trivial work, every useful independent ready unit goes promptly to a
14
+ native worker, up to verified host capacity and authorized usage. The main
15
+ session coordinates, integrates, verifies and refills slots. If eligible ready
16
+ work stays in the main session while a slot is free, the plan records the
17
+ concrete reason. A missing measured speedup alone is not a reason to keep it
18
+ there.
19
+ - Each native worker receives a compact packet: `TASK`, `INPUTS`, `WRITE_SCOPE`,
20
+ `DEPENDENCIES`, `METHOD`, `MODEL_AND_EFFORT`, `AUTHORITY`, `ACCEPTANCE`,
21
+ `BUDGET_AND_STOP` and `RETURN`. The packet carries the task's actual constraints
22
+ and proof requirements.
23
+ - After each completion, the main session audits the result and refills the free
24
+ slot with ready work without waiting for unrelated slow workers. Waiting,
25
+ suspended and uncertain workers carry a reason and a bounded next observation.
26
+ - Before a large or risky group of writers starts, a builder-readiness check
27
+ identifies missing implementation inputs. Routine choices stay within existing
28
+ authority; material unresolved decisions return to the owner.
29
+
30
+ The [delivery contract](../../skills/nobrainer-tech-flow/references/delivery.md),
31
+ [team assignments](../../skills/nobrainer-team/SKILL.md) and
32
+ [dispatcher](../../skills/nobrainer-dispatcher/SKILL.md) own these rules. The
33
+ portfolio remains eighteen skills. This release changes workflow instructions;
34
+ it adds no task-execution service.
35
+
36
+ ## Safety and client limits
37
+
38
+ One writer owns each mutable state. Exact worker IDs bind dispatch and readback;
39
+ an uncertain send must be reconciled before another attempt can create a
40
+ duplicate. Delegation remains flat unless recursion is expressly authorized.
41
+ Visible conversations require an explicit owner request. The main session
42
+ audits artifacts and preserves quota and cost ceilings.
43
+
44
+ Native worker availability, tool access and capacity depend on the client. When
45
+ usable native workers are unavailable, the main session continues authorized
46
+ work and reports the limitation. Passing source checks does not prove that every
47
+ client follows the contract during a real task.
48
+
49
+ ## Verification record
50
+
51
+ Local checks on the final candidate bytes (macOS, Python 3.14):
52
+
53
+ - `python3 scripts/validate_skills.py` and `python3 scripts/validate_skills.py --suite`:
54
+ both passed.
55
+ - `python3 -m unittest tests.test_delegation_contract`: 7 source-contract tests
56
+ passed, including the route from ordinary fan-out to the builder-readiness check.
57
+ - `python3 -m unittest discover -s tests`: 403 tests ran; all passed except 2
58
+ skipped platform-specific tests.
59
+ - Root instructions stay within budget: `AGENTS.md` and `CLAUDE.md` are
60
+ identical at 204 lines and 1,600 words, the entry skill has 239 lines and 1,748
61
+ words, the bootstrap has 220 words and the portfolio has eighteen skills.
62
+ - A secret scan with the repository's gitleaks configuration found no leaks.
63
+
64
+ An independent release review found one routing gap: ordinary fan-out did not
65
+ reach the builder-readiness check. The delivery contract now links it, and a
66
+ regression test covers the link. The pull request's Validate workflow runs the
67
+ repository checks on Linux, macOS and Windows for the exact candidate commit; the
68
+ GitHub release records that run.
69
+
70
+ No runtime benchmark was run for this release. No measured speed or token saving
71
+ is claimed. Static contract tests and repository regression checks do not
72
+ establish live scheduling behavior, task quality or a performance advantage over
73
+ another workflow.
74
+
75
+ ## Distribution and rollback
76
+
77
+ npm registry publication is still pending owner publisher access. The public
78
+ [npm latest endpoint](https://registry.npmjs.org/nobrainer-tech-flow/latest)
79
+ returned HTTP 404 on 2026-10-11. The v2.3.0 commands in
80
+ [installation](../INSTALL.md) become available after registry publication and
81
+ readback. A source release or locally packed tarball does not establish that.
82
+
83
+ The separate [native plugin export](https://github.com/nobrainer-tech/nobrainer-tech-flow-plugin)
84
+ follows the canonical GitHub release and its checked plugin ZIP. Export
85
+ verification, directory approval and target-client acceptance each need their
86
+ own readback.
87
+
88
+ To roll back, return to v2.2.1 through the documented installer preview and undo
89
+ flow, then restore the reviewed source. Keep retained source files while any
90
+ client links refer to them.
91
+
92
+ Sources (inspiration only): [GSD Core](https://github.com/open-gsd/gsd-core) for
93
+ fresh-context parallel waves; [oh-my-openagent v5.1.29](https://github.com/code-yeongyu/oh-my-openagent/releases/tag/v5.1.29)
94
+ for background-task states; and a public workflow pack's recent builder
95
+ feasibility check and parallel-dispatch guidance, attributed on the
96
+ [website comparison pages](https://nobrainer.tech/flow/compare/). These are
97
+ design references, not measured comparisons.