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,371 @@
1
+ # nobrainer-tech-flow compatibility evidence
2
+
3
+ nobrainer-tech-flow keeps one portable `skills/` source, but portability is
4
+ not the same as a proven client integration. Record these levels separately:
5
+
6
+ 1. `SOURCE_VALIDATED` — the portable `SKILL.md` folders pass repository
7
+ validators; this makes no client claim.
8
+ 2. `REPOSITORY_CHECKED` — the manifest, hook, plugin or installer has a
9
+ deterministic local parse or execution test against the repository's frozen
10
+ contract; this does not prove the client accepts it.
11
+ 3. `CLIENT_LOADED` — the exact installed client version accepts the package and
12
+ reports the expected skills or bootstrap as loaded.
13
+ 4. `RUNTIME_VERIFIED_EXPLICIT` — a clean client session loads and follows the
14
+ canonical body under explicit invocation; this does not prove discovery.
15
+ 5. `RUNTIME_VERIFIED` — a clean client session discovers and follows
16
+ `nobrainer-tech-flow` without manually pasting its body.
17
+ 6. `DISTRIBUTED` — the exact release is available through the claimed public
18
+ marketplace or install channel and was read back after installation.
19
+
20
+ Never promote one level from evidence belonging to another.
21
+ Merge is a repository delivery state, not a client-compatibility level; release
22
+ evidence records it separately.
23
+
24
+ The current source version is **2.1.1**. Its release scope and proof limits are
25
+ recorded in the [2.1.1 verification record](releases/v2.1.1.md), which refines
26
+ the communication defaults of [2.1.0](releases/v2.1.0.md).
27
+ It builds on the [2.0.2 installer record](releases/v2.0.2.md).
28
+ The [2.0.0](releases/v2.0.0.md) and [1.14.1](releases/v1.14.1.md) records are
29
+ historical evidence, not statements about the current source. The package/entrypoint migration
30
+ is documented in the [migration guide](MIGRATION_TO_FLOW.md).
31
+
32
+ For 2.0.x, portable structure, installation, selected setup, personalization,
33
+ update checks and guarded cleanup have repository-level tests. The historical
34
+ client matrix below does not establish fresh 2.0 automatic discovery,
35
+ parallel execution, live Jev/Laya access or marketplace acceptance.
36
+ Source release availability must be verified separately against its public tag.
37
+ The unchanged command runner retains its scoped [v1.7.0 evidence](releases/v1.7.0.md).
38
+
39
+ The 1.6.1 instruction review
40
+ clarifies skill precedence and sufficient verification. Its evidence is a
41
+ source-contract review; the v1.6 runtime results apply only to the archived
42
+ release bytes. It adds no model-wide or cross-client runtime claim.
43
+
44
+ The source channel was `DISTRIBUTED` for `v1.5.0`, with its exact historical
45
+ merge, tag and installation in the [publication evidence](releases/v1.5.0-publication-readback.md).
46
+ That record and [v1.3.1](releases/v1.3.1-publication-readback.md) remain rollback evidence. Pin a reviewed full
47
+ commit SHA when immutability matters. Neither source publication nor an installed
48
+ folder proves marketplace acceptance or model behavior.
49
+
50
+ ## Model-neutral readiness
51
+
52
+ `WORKFLOW_READY` is a product-positioning label, not a seventh compatibility
53
+ level. It means the portable policy can carry a selected model, effort, budget
54
+ and escalation gate; it does not prove that a provider exposes or follows that
55
+ policy.
56
+
57
+ | Model / family | Workflow posture | Runtime evidence |
58
+ |---|---|---|
59
+ | GPT-6 Astra | `WORKFLOW_READY`: host-selected policy, optional native capabilities | Bounded v1.6 Codex behavioral probes; exact source and limits in the [release evidence](releases/v1.6.0.md) |
60
+ | Other OpenAI models | Same portable instructions and policy | Only exact tested model IDs in the release evidence; no family-wide pass |
61
+ | Claude models | Same portable instructions and policy | Historical explicit client evidence below; no automatic claim for a new model |
62
+ | Other models / clients | Portable Markdown plus available tools | Unverified until tested in that host |
63
+
64
+ OpenAI [announced GPT-6 Astra](https://openai.com/index/gpt-6-astra/) on
65
+ 2026-09-03. Names and access change; inspect the host's actual model list rather
66
+ than treating this document as a model catalogue. No provider is a dependency.
67
+
68
+ `v1.0.0` remains a separately verified nine-skill rollback anchor with its own
69
+ [publication readback](releases/v1.0.0.md).
70
+
71
+ The v1.3.0 source release has additional local runtime evidence in
72
+ [the historical harness evaluation](evals/v1.3.0-harness-clarity-2026-08-30.md)
73
+ and current behavioral evidence in
74
+ [the Autoimprove evaluation](evals/v1.3.0-autoimprove-integrity-2026-09-01.md).
75
+ The older client transcripts remain hash-scoped and do not silently upgrade to
76
+ marketplace or automatic-routing claims. Both clients retain explicit-runtime
77
+ evidence only; automatic routing and client publication remain unverified.
78
+
79
+ ## Adapter contracts and historical client evidence
80
+
81
+ `REPOSITORY_CHECKED` below means deterministic repository tests passed. It does
82
+ not mean the external client's parser accepted or loaded the package.
83
+
84
+ | Client / harness | Source | Repository contract | Client load | Runtime | Distribution |
85
+ |---|---|---|---|---|---|
86
+ | Claude Code | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: manifest, portable installer and Claude SessionStart output | `CLIENT_LOADED`: CLI `2.1.241`, isolated plugin, namespaced explicit invocation | `RUNTIME_VERIFIED_EXPLICIT`: final nobrainer-tech-flow route reached and read canonical Autoimprove; automatic routing remains unverified | `NOT_PUBLISHED` |
87
+ | Codex | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: accepted manifest schema and portable installer | `CLIENT_LOADED`: CLI `0.149.1`, repo-scoped copy, explicit canonical invocation | `RUNTIME_VERIFIED_EXPLICIT`: final Luna cases and isolated implementation passed; automatic and alias-only routing remain unverified | `NOT_PUBLISHED` |
88
+ | Cursor | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: manifest path and Cursor SessionStart output | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
89
+ | OpenCode | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: skills registration plus idempotent first-user transform | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
90
+ | GitHub Copilot CLI | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: portable installer and repository instructions; no bootstrap | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
91
+ | Gemini CLI | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: extension manifest and owned context include | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
92
+ | Kimi Code | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: canonical skills path, `nobrainer-tech-flow` session-start field and native-tool boundary | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
93
+ | Devin CLI | `SOURCE_VALIDATED` | no dedicated adapter | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
94
+ | Pi | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: package resources and per-request dedupe transform | `CLIENT_LOADED`: resource loader `0.87.1` only, no session (see the current-source readback) | `NOT_VERIFIED` | `NOT_PUBLISHED` |
95
+ | Hermes Agent | `SOURCE_VALIDATED` | `REPOSITORY_CHECKED`: root Agent Plugins v1 manifest only; no bootstrap | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
96
+ | Antigravity and other plugin hosts | `SOURCE_VALIDATED` | no host-specific contract | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
97
+ | Generic Agent Skills consumers | `SOURCE_VALIDATED` | canonical folders only | `NOT_VERIFIED` | `NOT_VERIFIED` | `NOT_PUBLISHED` |
98
+
99
+ Adapter checks apply to the current source. The client/runtime cells retain their
100
+ recorded historical versions and hashes; they do not silently transfer to the current source.
101
+ Consult the current release record for new probes. There is deliberately no blanket “works everywhere”
102
+ badge: an unknown harness gets portable skill folders, then needs its own
103
+ discovery/bootstrap proof before promotion.
104
+
105
+ ## Adapter contract
106
+
107
+ All adapters point at the same eighteen directories. They may expose discovery and
108
+ one small `NOBRAINER_BOOTSTRAP_V1` routing context, but they must not copy or
109
+ rewrite skill bodies.
110
+
111
+ - Claude and Cursor hooks emit exactly one platform-specific JSON field.
112
+ - OpenCode and Pi detect their marker so one request never carries the bootstrap
113
+ twice. OpenCode prefixes the first user message's text and, when that message
114
+ has none (after a compaction), adds a synthetic text part. Pi adds it to every
115
+ model request that lacks it, because the host rebuilds the message list per
116
+ request.
117
+ - Gemini includes an extension-owned context file instead of changing a user's
118
+ global instructions.
119
+ - Kimi maps native tools but explicitly refuses to treat a hidden subagent as
120
+ proof of visible cross-session transport.
121
+ - Codex uses native skill discovery and has no hook entry or default
122
+ `hooks/hooks.json` file. Claude points explicitly to
123
+ `hooks/claude-hooks.json`, preventing Codex from auto-discovering the
124
+ Claude-specific SessionStart adapter.
125
+ - The portable root manifest contains no client-specific bootstrap. Hermes can
126
+ consume it through its Agent Plugins path, where skills remain namespaced and
127
+ explicitly selected until a clean runtime transcript proves more.
128
+ - Copilot and Devin use portable skill folders and repository instructions only;
129
+ no dedicated startup hook or client plugin contract is claimed.
130
+
131
+ ## Current-source readback (2026-09-29)
132
+
133
+ Run against a checkout of the 2.0.1 source (2.0.2 changes no adapter or hook and
134
+ only the version in the manifests) with isolated client configuration and
135
+ no real model request: the Claude Code session ran against a local stand-in API
136
+ endpoint and Codex against a closed network, and both plugin installs used a
137
+ local checkout, not the GitHub source. The rows show what the client loads and
138
+ sends, not how a model behaves.
139
+
140
+ | Client | Readback | Level |
141
+ |---|---|---|
142
+ | Claude Code `2.1.284` (Linux) | `claude plugin validate` passed. `claude plugin marketplace add` and `claude plugin install nobrainer-tech-flow@nobrainer-tech` installed 2.0.1 with 18 skills. The `SessionStart` hook exited 0 and the request to the model carried the `NOBRAINER_BOOTSTRAP_V1` context once. With `CLAUDE_CONFIG_DIR` set, guided setup installed into that directory, the client listed the installed skills, the instruction block reached the request and `~/.claude` stayed untouched. | `CLIENT_LOADED`; bootstrap delivery observed; routing unverified |
143
+ | Codex `0.158.0` (Linux) | `codex plugin marketplace add` and `codex plugin add nobrainer-tech-flow@nobrainer-tech-skills-dev` installed 2.0.1. The model prompt listed 18 skills as `nobrainer-tech-flow:nobrainer-*`, and the plugin listing returned both default prompts. With 2.0.0 neither plugin name installed. | `CLIENT_LOADED`; routing unverified |
144
+ | Pi `0.87.1` (Linux, resource loader only) | The extension loaded with its `resources_discover` and `context` handlers, 18 skills and no diagnostics. | `CLIENT_LOADED` for the loader; no session |
145
+ | Windows (CI only: GitHub-hosted `windows-latest`, Git Bash, Python 3.11, Node 22) | The Windows smoke job passed on this source: both validators, the adapter tests and `tests/test_windows_smoke.py` (the `cmd` wrapper reaching the bootstrap through Git Bash, a copy-mode install, personalization with `CODEX_HOME`, the UTC session title). | `REPOSITORY_CHECKED` on Windows; no client read back |
146
+
147
+ The Codex row used the marketplace's earlier name, `nobrainer-tech-skills-dev`.
148
+ Since 2.4.0 it is `nobrainer-tech`: on 2026-10-18, Codex `0.163.0` (macOS) with
149
+ an empty `CODEX_HOME` added the 2.4.0 source checkout as a local marketplace
150
+ `nobrainer-tech` and installed `nobrainer-tech-flow@nobrainer-tech` with 18
151
+ skills (`CLIENT_LOADED`; routing unverified). An old `nobrainer-tech-skills-dev`
152
+ install stays enabled next to the new one until it is removed; see the
153
+ [migration guide](MIGRATION_TO_FLOW.md#existing-installation-identities).
154
+
155
+ The other rows above keep their earlier level: no readback of OpenCode, Cursor,
156
+ Gemini CLI, Kimi Code or Copilot CLI was made for this source. The Windows job
157
+ runs the validators and the modules listed in [Testing](TESTING.md), not the
158
+ whole suite.
159
+
160
+ ## Codex module names (2.3.2 readback)
161
+
162
+ Checked on 2026-10-14 with Codex 0.157.1 on macOS and the 2.3.1 source. The real
163
+ client ran against a local stand-in server with all other network blocked, so no
164
+ model was involved. The table shows the name the client lists and whether a typed
165
+ name made it add the module text to the request, not how a model behaves.
166
+
167
+ | Install | Listed as | Typed `$nobrainer-tech-flow` | Typed `$nobrainer-tech-flow:nobrainer-tech-flow` |
168
+ |---|---|---|---|
169
+ | `scripts/install.sh` links into a git checkout, which holds the plugin manifests | `nobrainer-tech-flow:nobrainer-tech-flow` | no module text added | module text added |
170
+ | The npm package (from `npm pack`; it ships `.codex-plugin` and `.claude-plugin`), linked by the installer | `nobrainer-tech-flow:nobrainer-tech-flow` | no module text added | module text added |
171
+ | `install_skills.py --mode copy` (real folders, no manifest above them) | `nobrainer-tech-flow` | module text added | no module text added |
172
+
173
+ Codex names a module `<plugin>:<skill>` when a `.codex-plugin`, `.claude-plugin` or
174
+ `.cursor-plugin` manifest sits above the folder a link resolves to. A checkout that
175
+ keeps only `.kimi-plugin`, the root `plugin.json`, `gemini-extension.json` or
176
+ `.agents/plugins`, or none of them, lists the plain name and takes the plain form.
177
+ A mention linked to the module's `SKILL.md` path added the module text in the first
178
+ row, whichever of the two names its text showed. The Codex 0.158.0 row above, a
179
+ plugin install, lists the skills under the plugin name as well.
180
+
181
+ Not checked: what a model does with the plain form when the listing is namespaced,
182
+ the terminal and desktop mention pickers, other Codex versions and operating
183
+ systems, and a plugin-channel install on 0.157.1. Level: `CLIENT_LOADED`; routing
184
+ unverified.
185
+
186
+ ## Clean-session acceptance
187
+
188
+ The approved-plan [autopilot loop](../skills/nobrainer-tech-flow/references/autopilot.md)
189
+ is development source after the v2.0.2 tag. It adds explicit select, execute,
190
+ check, review, correct and advance guidance.
191
+ It preserves the active client and its authority boundary. Source validation
192
+ and the deterministic lifecycle checks do not establish fresh automatic
193
+ discovery or unattended continuation in any client; those still need the
194
+ clean-session evidence below. This guidance adds no CLI executor or scheduler.
195
+
196
+ For each client, record the exact client version, model, operating system,
197
+ installation source and commit or release. Start with no project-specific rule
198
+ that names NoBrainer. Preserve the complete transcript and use these probes:
199
+
200
+ For a long-running probe, read back `SESSION_HEALTH_GATE` at `START`,
201
+ `AFTER_COMPACTION`, `MATERIAL_TRANSITION` and `BEFORE_CLOSEOUT`, using the
202
+ host/configured policy rather than assuming universal limits. Record
203
+ `UNKNOWN`/`UNSUPPORTED` signals and lower proof instead of guessing. Read back
204
+ `RUNTIME_RELEASE` separately: `task_complete` does not prove that task-owned
205
+ browser, tool or subprocess workers are closed.
206
+ Missing optional telemetry does not block safe bounded work or artifact acceptance;
207
+ it only limits the health claim. An explicitly required hard budget still needs
208
+ reliable enforcement. A configured warning checkpoints goal/TODO and prevents optional new workers or
209
+ large units; a hard threshold requires the clear/end-turn gate. Repository
210
+ examples are not universal host limits.
211
+ For resumable probes, persist one task-local Markdown `GOAL_FILE`. Before clear,
212
+ prove its checkpoint and no active writer, then record `CLEAR_MODE` and host
213
+ readback. After clear or a fresh turn, reload the file from disk and reconcile
214
+ identity, checkout and evidence; a transcript summary or host-native goal is not
215
+ the canonical recovery source.
216
+
217
+ ### Automatic routing
218
+
219
+ The portable `ROUTED` policy describes how a plan may select an advertised
220
+ capability tier; it is not a cross-provider gateway. A client must read back the
221
+ actual model, effort and budget before claiming automatic routing. An unavailable
222
+ target is `MODEL_ESCALATION_PROPOSED` or `OWNER_APPROVAL`, never a silent
223
+ fallback.
224
+
225
+ ```text
226
+ Use nobrainer-tech-flow to design and implement an ambiguous feature that crosses several modules
227
+ and may affect production.
228
+ ```
229
+
230
+ Passing behavior:
231
+
232
+ - `nobrainer-tech-flow` is selected without pasting its body;
233
+ - the agent enters a short requirements/acceptance gate before writes;
234
+ - it creates one canonical plan and shows a compact Progress checklist;
235
+ - production effects remain owner-gated;
236
+ - it does not manufacture workers before work units exist.
237
+
238
+ ### Correction and review loop
239
+
240
+ ```text
241
+ I changed my mind: keep the public API unchanged. Update the plan accordingly.
242
+ ```
243
+
244
+ Passing behavior: the old requirement is marked superseded, dependent TODO
245
+ items and evidence are invalidated, and the affected route is rebuilt without a
246
+ second ordinary clarification round. A simulated verified review finding must
247
+ return to Build and then fresh Review; it may not reuse the old green result.
248
+
249
+ ### Explicit technical invocation
250
+
251
+ ```text
252
+ $nobrainer-tech-flow Deliver this task with the smallest safe workflow.
253
+ ```
254
+
255
+ Type the name the client lists for the module. In Codex that is
256
+ `$nobrainer-tech-flow:nobrainer-tech-flow` when the module is listed under the
257
+ plugin name and `$nobrainer-tech-flow` when it is listed plainly (see
258
+ [Codex module names](#codex-module-names-232-readback)).
259
+
260
+ Passing behavior: the client loads the nobrainer-tech-flow technical
261
+ `nobrainer-tech-flow` body and any
262
+ required relative reference without the user pasting either one.
263
+
264
+ ### Compatibility alias control
265
+
266
+ ```text
267
+ Use nobrainer-tech-flow to deliver this task with the smallest safe workflow.
268
+ Compatibility alias probe: use nb-ultra or nb-flow to deliver this task with the smallest safe workflow.
269
+ ```
270
+
271
+ `nb-ultra`, `nb-flow` and `nb-workflow` are compatibility trigger phrases, not
272
+ the product name or additional skill names.
273
+ Record whether the client supports and selects it through implicit matching.
274
+ Do not present this as an explicit invocation guarantee. In the v1.3.0 Codex
275
+ probe, alias-only selection failed under a crowded skill catalog and a prompt
276
+ that prohibited file reads; the canonical `$nobrainer-tech-flow` probe passed.
277
+
278
+ ### Non-trigger control
279
+
280
+ ```text
281
+ Fix this obvious typo in README.md.
282
+ ```
283
+
284
+ Passing behavior: the visible MAIN coordinator makes this tiny correction
285
+ directly, without SDD, a wiki or a native worker. One visible MAIN can coordinate
286
+ many native workers for non-trivial work under the
287
+ [delegation contract](../skills/nobrainer-tech-flow/references/delivery.md#coordinated-team-execution).
288
+
289
+ ## Runtime evidence record
290
+
291
+ Store a transcript or durable report with:
292
+
293
+ ```text
294
+ CLIENT:
295
+ CLIENT_VERSION:
296
+ MODEL:
297
+ OS:
298
+ INSTALL_SOURCE:
299
+ RELEASE_OR_COMMIT:
300
+ SKILL_SHA256:
301
+ INVOCATION: CANONICAL_EXPLICIT | IMPLICIT_DESCRIPTION
302
+ PROMPT:
303
+ SKILL_DISCOVERED:
304
+ FIRST_WRITE_BEFORE_GATE: YES | NO
305
+ RESULT: PASS | FAIL | BLOCKED
306
+ SESSION_HEALTH_GATE:
307
+ RUNTIME_RELEASE:
308
+ OWNED_WORKER_READBACK:
309
+ EVIDENCE_PATH:
310
+ ```
311
+
312
+ Marketplace screenshots, manifest parsing, an installer exit code, or a skill
313
+ appearing on disk do not replace this acceptance test.
314
+
315
+ For a hook-based client, preserve the emitted JSON and prove the client consumed
316
+ the marker. For OpenCode or Pi, preserve both adapter logs/readback and the first
317
+ model action. A prompt that pastes the skill body does not prove discovery. A
318
+ valid explicit run by the name the client lists proves explicit loading, not
319
+ automatic routing.
320
+
321
+ ## Optional bounded command runtime (1.7.0)
322
+
323
+ The Sessions helper runs explicit argv commands using Python 3.11+ on POSIX.
324
+ It is opt-in and ships with the skill; no daemon or new hook registration is
325
+ required. Windows process-group enforcement is unsupported. The eighteen
326
+ plain-text skills remain portable; this helper does not narrow their format
327
+ compatibility. See [runtime limits and examples](BOUNDED_RUNNER.md).
328
+
329
+ ## Session restart capability levels
330
+
331
+ The `session-restart` mode shipped in v1.8.0 and refined in v1.8.1 is a
332
+ client/model-neutral Sessions
333
+ protocol. The optional Python 3.11+ helper evaluates observations and runs without
334
+ a model or client SDK. It does not implement native creation or archival.
335
+ Explicit nobrainer-tech-flow entry invokes startup naming and health assessment through `nobrainer-tech-flow`.
336
+ This is agent-executed care; no native transport backend is bundled.
337
+ Human-readable startup and rollover titles use `<stable task title> | started DD-MM` where a
338
+ host supports create-time titles or rename. The registry retains the full start
339
+ timestamp and timezone, and IDs remain authoritative. A client without title
340
+ mutation reports that cosmetic capability as unsupported; this is not a failed
341
+ transfer and no universal rename API is implied.
342
+
343
+ - No hooks: the model checks at task boundaries and prepares durable progress.
344
+ - Hooks: a reviewed client adapter may supply normalized observations and invoke
345
+ the helper; hook names and output envelopes remain client-specific.
346
+ - Native sessions: automatic rotation additionally requires fresh creation, exact
347
+ identity/readback, shared checkpoint access and authoritative ownership transfer.
348
+ - No archive API: a verified successor can continue with source archive pending.
349
+ - No safe transport/ownership: manual handoff; no hidden worker substitution.
350
+
351
+ Existing client-load evidence does not establish restart support. Native
352
+ end-to-end restart, all-model behavior and net cost savings are unverified until
353
+ tested separately for the exact adapter/client version. No global hooks are
354
+ installed by enabling portable instructions. See [the guide](SESSION_RESTART.md).
355
+ # Optional typed-decision runtime
356
+
357
+ The eighteen-skill Markdown lifecycle requires only the host's existing model.
358
+ Jev/Laya are optional profiles, off by default; Python and model access are not
359
+ core prerequisites. See [configuration](../skills/nobrainer-tech-flow/references/optional-decisions.md).
360
+
361
+ | Profile | Required only when enabled | Current proof |
362
+ |---|---|---|
363
+ | Core | Host able to follow project instructions | Existing host-specific evidence below; no universal runtime assertion |
364
+ | Jev shadow | Python 3, authorized TypeSafe key and HTTPS access | Live synthetic Noul/Choice/Score via direct Jev 1.13.0 on macOS |
365
+ | Laya shadow | Apple Silicon, separately installed Laya-MLX, cached model and compatible Python | Live synthetic Noul/Choice/Score with multilingual MLX checkpoint, offline loading on macOS |
366
+
367
+ Typed-answer validity is not semantic correctness: Laya assigned a middling
368
+ urgency score to the no-deadline fixture. Do not advertise equivalence or
369
+ promote suggestions into hard decisions based on this smoke test. Per-call
370
+ timings include process/model startup and are not warm inference benchmarks.
371
+ No clean-session proof for a new harness is implied by these helper tests.