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,357 @@
1
+ # Brief artifacts
2
+
3
+ Use this reference only for the `BRIEF` mode of `nobrainer-writing`. Pick one
4
+ artifact and keep the output small enough that a busy reader can decide or act
5
+ without reconstructing the story.
6
+
7
+ ## The common shape
8
+
9
+ ```text
10
+ Title: <observable failure or user outcome>
11
+ Problem or goal: <one sentence>
12
+ Impact or value: <who is affected and why it matters>
13
+ Evidence or context: <reproduction, example, link, version, or UNKNOWN>
14
+ Acceptance or question: <how we know what to do or what answer is needed>
15
+ Next action: <one owner/action, if relevant>
16
+ ```
17
+
18
+ Use only fields that change triage or implementation. Do not add a history
19
+ section, root-cause theory, solution design or generic closing unless the reader
20
+ needs it to act. Facts from the requester outrank polished wording; unknowns
21
+ stay visible.
22
+
23
+ Task-shaped artifacts (`BUG`, `ISSUE`, `USER_STORY` and `REQUEST`) always expose
24
+ two fields:
25
+
26
+ - `Description`: what is wrong, needed or intended.
27
+ - `Definition of Done (DoD)`: the observable closure condition and required proof.
28
+
29
+ Keep `Acceptance` for observable product behavior; do not hide the description or
30
+ DoD inside `Problem`, `Context`, `Done when` or a generic paragraph. `COMMENT`
31
+ is intentionally smaller and does not need task fields.
32
+
33
+ Number every acceptance criterion sequentially as `AC01`, `AC02`, `AC03` and so
34
+ on. Start at `AC01`, do not leave gaps, and do not use anonymous bullets or
35
+ checkboxes under `Acceptance`. DoD remains separate and may reference the AC IDs.
36
+
37
+ Before compressing, keep a private ledger of material facts: when it started,
38
+ what did or did not happen, exact statuses/errors, conditions, uncertainty and
39
+ the requested action. A concern is not proof of a failure, and a request to know
40
+ whether something is safe is not permission to invent the policy that decides
41
+ it. If the source does not define the desired behavior, write the open decision
42
+ or `UNKNOWN` instead of adding a warning, retry rule, UI state or implementation.
43
+
44
+ ## COMMENT
45
+
46
+ Use for code review, issue updates, decisions, questions and status. Start with
47
+ the observation or decision, then the impact, evidence and one request.
48
+
49
+ ```text
50
+ ENV: <Name> | URL: <route or N/A> | User: <role or redacted alias>
51
+ <Observation or decision>. <Why it matters or what changed>.
52
+ <Requested action or question>.
53
+ Evidence: <file, line, test, link or concrete example>.
54
+ ```
55
+
56
+ Good code-review comment:
57
+
58
+ > ENV: TEST | URL: N/A | User: reviewer
59
+ >
60
+ > This returns `200` when the provider times out, so the caller treats a failed
61
+ > sync as success. Return the error or mark the result `UNKNOWN`, and add a
62
+ > timeout test; evidence: `sync_provider()` line 84 and the missing-timeout test.
63
+
64
+ Good status comment:
65
+
66
+ ```text
67
+ ENV: QA | URL: https://demo.example.test/runs/42 | User: qa-operator
68
+ The timeout is now reported as a failed sync, and test `provider_timeout_marks_failure` passes. Next: review the PR.
69
+ ```
70
+
71
+ Do not turn a comment into a mini-report. If there is no concrete observation,
72
+ write a direct question instead of praise followed by a vague suggestion.
73
+
74
+ ## BUG
75
+
76
+ Title the observable failure, not a guessed cause.
77
+
78
+ ````text
79
+ Title: [Bug] <what fails> when <condition>
80
+
81
+ Description: <one sentence describing the failure>
82
+
83
+ ENV:
84
+ - Name: <QA | DEV | TEST | PROD | PREPROD | BETA | UNKNOWN>
85
+ - URL: <exact non-secret route or page, or N/A when no URL applies>
86
+ - User: <role or redacted/synthetic alias, never a credential>
87
+ - Build/client: <release, client, OS, deployment or UNKNOWN, when useful>
88
+
89
+ Steps to reproduce:
90
+ 1. <setup>
91
+ 2. <action>
92
+ 3. <result>
93
+
94
+ Current behavior: <what happens now>
95
+ Expected behavior: <what should happen>
96
+
97
+ API request (cURL), when applicable:
98
+ ```bash
99
+ # Complete redacted curl command: method, URL, headers and body.
100
+ ```
101
+
102
+ API response, when applicable:
103
+ ```http
104
+ # Status, headers and body.
105
+ ```
106
+
107
+ Database query (read-only), when applicable:
108
+ ```sql
109
+ -- Read-only query.
110
+ ```
111
+
112
+ Database result, when applicable:
113
+ ```text
114
+ # Observed result; use its actual format when useful.
115
+ ```
116
+
117
+ Evidence, for a UI screenshot or MP4 recording, when applicable: <attach file>
118
+ HAR, only when the page-load/request chain matters: <attach file or N/A>
119
+
120
+ Definition of Done (DoD): <observable regression proof and required checks>
121
+ ````
122
+
123
+ `Description`, `ENV:`, `Steps to reproduce`, `Current behavior` and
124
+ `Expected behavior` are separate diagnostic fields. `ENV:` keeps the
125
+ environment name, exact URL and user used together; its optional `Build/client`
126
+ line preserves useful release or client context. Surface-proof sections remain separate
127
+ and appear only when applicable. Keep `URL` as `N/A` for a worker, CLI
128
+ or other flow with no page to open. Use `UNKNOWN` when the requester does not
129
+ know a value; do not replace a missing value with a guess.
130
+
131
+ Proof must match the affected surface:
132
+
133
+ - **API:** include a complete redacted `curl` request in one fenced `bash` block
134
+ and the response in a separate fenced `http` block. Keep method, URL, all
135
+ captured headers, body, status and response body; redact sensitive values
136
+ without changing the request's material shape.
137
+ - **Database:** include the read-only query and result in separate fenced blocks;
138
+ use `sql` for the query and the result's actual format when useful.
139
+ - **UI:** put a screenshot or an MP4 recording in `Evidence`. If the failure
140
+ depends on the page-load/request chain, attach a HAR too; keep the exact URL
141
+ and reproduction steps in the report.
142
+
143
+ When a bug crosses more than one surface, include each applicable proof pair or
144
+ artifact. Do not collapse them into a generic `Evidence` paragraph. A URL or
145
+ prose description alone does not replace UI evidence. If required proof is not
146
+ supplied, return `INPUT_REQUIRED` and identify what is missing instead of drafting
147
+ a report with weaker substitute evidence.
148
+
149
+ Example:
150
+
151
+ ````text
152
+ Title: [Bug] Sync reports success after a provider timeout
153
+
154
+ Description: A timeout leaves the sync marked as successful.
155
+
156
+ ENV:
157
+ - Name: TEST
158
+ - URL: N/A (worker-only reproduction)
159
+ - User: sync-test-user
160
+ - Build/client: release 1.3.0, local worker, macOS, staging provider
161
+
162
+ Steps to reproduce:
163
+ 1. Start a sync against a provider that does not answer.
164
+ 2. Wait for the request timeout.
165
+ 3. Open the run history.
166
+
167
+ Current behavior: The UI shows “success” and no retry is scheduled.
168
+ Expected behavior: The run is marked failed or explicitly unknown.
169
+
170
+ Database query (read-only):
171
+ ```sql
172
+ SELECT status, error FROM sync_runs WHERE id = 42;
173
+ ```
174
+
175
+ Database result:
176
+ ```text
177
+ status=success, error=timeout
178
+ ```
179
+
180
+ Definition of Done (DoD): A regression test proves timeout is not reported as
181
+ success, and any retry behavior in scope is explicitly agreed and covered.
182
+ ````
183
+
184
+ Leave the suspected root cause out unless it is verified. A useful bug report
185
+ lets another person reproduce the behavior without a meeting.
186
+
187
+ ## ISSUE
188
+
189
+ Use for a feature, workflow improvement or change request. Keep `Description` to
190
+ one sentence, then use only the fields that help someone decide or build it.
191
+
192
+ ```text
193
+ Title: [Feature] <user outcome>
194
+
195
+ Description: <what is hard, missing or unreliable today>
196
+ Who is affected: <specific user or workflow>
197
+ Desired outcome: <what the user can do or rely on afterwards>
198
+ Evidence: <example, frequency, user wording or link>
199
+
200
+ Acceptance:
201
+ - [ ] AC01: <observable pass/fail result>
202
+ - [ ] AC02: <observable edge case or failure result>
203
+ - [ ] AC03: <proof or compatibility condition, if relevant>
204
+
205
+ Definition of Done (DoD):
206
+ - [ ] <acceptance criteria pass in the affected surface>
207
+ - [ ] <required tests/checks and proof are attached or linked>
208
+ ```
209
+
210
+ Example:
211
+
212
+ ```text
213
+ Title: [Feature] Show why a sync was not retried
214
+
215
+ Description: A failed run only says “failed”, so it is unclear whether the next
216
+ run is safe to start.
217
+ Who is affected: Operators checking a failed scheduled sync.
218
+ Desired outcome: The run shows whether the failure is retryable and what to do.
219
+ Evidence: The current log contains the error, but the run history does not.
220
+
221
+ Acceptance:
222
+ - [ ] AC01: Retryable failures show “retryable” and the next retry time.
223
+ - [ ] AC02: Non-retryable failures show “manual action required”.
224
+ - [ ] AC03: The existing error detail remains available for diagnosis.
225
+
226
+ Definition of Done (DoD):
227
+ - [ ] The three acceptance criteria pass in the run-history UI.
228
+ - [ ] Automated coverage and the verification result are attached to the issue.
229
+ ```
230
+
231
+ ## USER_STORY
232
+
233
+ Use the user's goal, not a UI control or implementation task. The familiar
234
+ persona/goal/value sentence is useful, but the acceptance criteria decide what
235
+ counts as complete.
236
+
237
+ Derive acceptance from the stated goal. If the source gives only a concern or a
238
+ question, keep the criterion at that level and name the missing decision; do not
239
+ invent a product policy to make the story look complete. Use `Given/When/Then`
240
+ only when it improves verification or matches the team's existing language.
241
+
242
+ ```text
243
+ Title: <short user outcome>
244
+
245
+ Description: <real problem, context or constraint behind the goal>
246
+
247
+ As a <specific user>, I want <goal> so that <value>.
248
+
249
+ Context: <real situation or constraint, if needed>
250
+ Acceptance:
251
+ - AC01: Given <context>, when <action>, then <observable result>.
252
+ - AC02: <another independent pass/fail result>
253
+
254
+ Definition of Done (DoD):
255
+ - [ ] <the acceptance criteria pass for the named user>
256
+ - [ ] <required tests/checks and proof are attached or linked>
257
+
258
+ Out of scope: <important boundary, if needed>
259
+ ```
260
+
261
+ Example:
262
+
263
+ ```text
264
+ Title: Explain failed scheduled syncs
265
+
266
+ Description: Operators currently see a failed run without knowing whether it is
267
+ safe to retry.
268
+
269
+ As an operator, I want to know whether a failed sync can be retried so that I
270
+ do not duplicate data or leave a delivery gap.
271
+
272
+ Acceptance:
273
+ - AC01: Given a timeout, when I open the run, then it is marked retryable and shows
274
+ the next retry time.
275
+ - AC02: Given an authentication failure, when I open the run, then it is marked
276
+ “manual action required”.
277
+
278
+ Definition of Done (DoD):
279
+ - [ ] Timeout and authentication scenarios pass in the run-history UI.
280
+ - [ ] The verification result is attached and the existing error detail remains
281
+ available.
282
+ ```
283
+
284
+ Do not force the `As a / I want / so that` form when the real request is a bug,
285
+ decision or operational task. A plain one-sentence outcome is better than a
286
+ ceremonial story that hides the need.
287
+
288
+ ## REQUEST
289
+
290
+ Use for a short ask to a person or team:
291
+
292
+ ```text
293
+ Description: <what needs to change or be produced, and why>
294
+ Request: <one concrete action>
295
+ Why: <one sentence of context>
296
+ Input or location: <file, link, example or attachment>
297
+ Needed by: <date only when real>
298
+ Definition of Done (DoD): <the exact output and proof the requester can verify>
299
+ ```
300
+
301
+ Example:
302
+
303
+ ```text
304
+ Description: The issue template does not tell reporters what proof is required
305
+ for API, database and UI failures.
306
+ Request: Update the public bug template with separate copyable proof fields.
307
+ Why: Reporters should be able to paste the evidence without reconstructing it.
308
+ Input or location: .github/ISSUE_TEMPLATE/bug_report.md
309
+ Needed by: 2026-09-02
310
+ Definition of Done (DoD): The template has separate request/response, query/result
311
+ and UI/HAR fields, and the repository checks confirm their order.
312
+ ```
313
+
314
+ ## Human-feel and compression gate
315
+
316
+ Keep:
317
+
318
+ - exact product, file, error and user terms;
319
+ - the writer's real stance, uncertainty and concrete example;
320
+ - one clear ask or next action;
321
+ - enough context to reproduce or decide.
322
+
323
+ Cut:
324
+
325
+ - greetings, praise and “I would like to kindly…” before the point;
326
+ - “improve the experience”, “make it robust” and similar goals without a
327
+ measurable result;
328
+ - invented metrics, root causes, personas, urgency or agreement;
329
+ - repeated summaries, generic conclusions and implementation detail the reader
330
+ did not request.
331
+
332
+ Never add mistakes, random slang or fake personal experience to make text seem
333
+ human. Naturalness comes from concrete source material and restrained editing.
334
+
335
+ Before returning, check:
336
+
337
+ ```text
338
+ ACTIONABLE: PASS | FAIL
339
+ FACTS_TRACEABLE: PASS | FAIL
340
+ EXPECTED_OR_DESIRED_CLEAR: PASS | FAIL
341
+ ACCEPTANCE_OR_QUESTION_CLEAR: PASS | FAIL | NOT_APPLICABLE
342
+ NO_INVENTED_CAUSE_OR_CONTEXT: PASS | FAIL
343
+ LOW_VALUE_SENTENCES_REMOVED: PASS | FAIL
344
+ ```
345
+
346
+ Return `INPUT_REQUIRED` if a failed check would require invention.
347
+
348
+ ## Research basis
349
+
350
+ Checked 2026-09-02. These are design inputs, not copied platform templates:
351
+
352
+ - [GitHub issue and pull request templates](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates) supports reusable guidance and structured issue forms.
353
+ - [GitHub issue form configuration](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository) shows required fields and separate expected/actual evidence; the public form schema is platform-specific, so this skill remains Markdown-first.
354
+ - [GitLab Documentation Style Guide](https://docs.gitlab.com/development/documentation/styleguide/) emphasizes concise, direct, precise, searchable and conversational-but-brief writing.
355
+ - [Digital.gov: Writing for understanding](https://digital.gov/guides/plain-language/writing) recommends audience-specific language, short sections and active responsibility.
356
+ - [Atlassian: User stories](https://www.atlassian.com/agile/project-management/user-stories) connects persona, goal, value and acceptance criteria; its 3 Cs are Card, Conversation and Confirmation.
357
+ - [hannsxpeter/humanizer](https://github.com/hannsxpeter/humanizer/blob/main/SKILL.md) recommends preserving an authentic voice and making minimal edits when the input already sounds human; it explicitly rejects detector gaming.
@@ -0,0 +1,76 @@
1
+ # Plain technical English
2
+
3
+ Default to Writing's `TECHNICAL` mode for English specifications, instructions,
4
+ runbooks and technical explanations when no other mode is requested. Infer the profile from the artifact:
5
+ `PROCEDURE` for actions, `EXPLANATION` for understanding. A mixed document can
6
+ use both. Apply plain, precise language to ordinary replies too, without adding
7
+ a procedural template. Keep marketing and other requested voices appropriate
8
+ to their purpose. Write directly in the requested language; non-English output
9
+ uses natural grammar and the same meaning checks, not the English dictionary
10
+ or a mandatory translation pass. A technical product alone does not make an
11
+ artifact technical documentation.
12
+
13
+ This is an independent writing adaptation informed by
14
+ [ASD-STE100](https://www.asd-ste100.org/about_STE.html) and
15
+ [Karpathy's suggestion](https://x.com/karpathy/status/2105819303471976479).
16
+ It does not reproduce the standard or dictionary, check all its rules, or
17
+ claim official approval, certification or full conformance. A formal STE
18
+ request requires the current official standard, domain terminology and
19
+ qualified review; this mode alone cannot establish compliance.
20
+
21
+ ## Preserve meaning before simplifying
22
+
23
+ Use Writing's meaning ledger. Freeze commands, code, identifiers, quotations,
24
+ links, numbers, units, scope, sequence, permission strength, negation,
25
+ uncertainty and safety conditions. Keep `may`, `must` and `should` distinct.
26
+ Do not split a condition away from the action it restricts or change `and` to `or`.
27
+ Do not invent the actor, test result or missing step to make a sentence cleaner.
28
+ Mandatory quoted wording remains verbatim; simplify its surrounding explanation.
29
+
30
+ Choose one name per concept from the project's terminology. Define an unfamiliar
31
+ term once if the reader needs it. Keep precise domain terms and technical verbs;
32
+ do not replace them with a common but less accurate word. There is no automatic
33
+ forbidden-word list, synonym substitution or ban on words ending in `-ing`.
34
+
35
+ ## PROCEDURE: make the next action clear
36
+
37
+ - Put prerequisites and safety conditions before the action they govern.
38
+ - Give each step one action. Use a direct command when the source is an
39
+ instruction; preserve optional actions and permissions as optional.
40
+ - Prefer short sentences, with a 20-word target for newly written prose.
41
+ Split for comprehension, never by cutting a command, condition or caveat.
42
+ - Keep the original order when it changes behavior. State the expected result
43
+ only when supported. Keep recovery instructions with their trigger.
44
+
45
+ ## EXPLANATION: make the mechanism clear
46
+
47
+ - State the result or concept, then explain the cause, limitation or consequence.
48
+ - Prefer short sentences, with a 25-word target and one topic per paragraph.
49
+ - Use active voice when the actor is known. Keep passive voice when the actor
50
+ is unknown or naming one would invent a fact.
51
+ - Use a small example or diagram only when it resolves a concrete ambiguity.
52
+ Do not produce a diagram, interactive page or video for every explanation.
53
+
54
+ Sentence targets are editing aids, not pass/fail limits for this adaptation.
55
+ Code, exact quotations and necessary technical terms can exceed them. Do not
56
+ claim official STE compliance from word counts or a few regex checks.
57
+
58
+ ## Verify the rewrite
59
+
60
+ Compare every ledger item with the result. Check especially combined conditions,
61
+ exceptions, optional versus mandatory actions, unknown actors and unverified
62
+ outcomes. A shorter text fails if its meaning changes. Restore necessary detail
63
+ before returning it; ask only when the source itself is materially ambiguous.
64
+
65
+ Return the finished text by default. If an audit is requested, state the profile,
66
+ meaning-check result and any unresolved source ambiguity. Report words or tokens
67
+ only if measured. A word-count reduction does not prove cheaper tasks, better
68
+ models, safer operation or official conformance.
69
+
70
+ ## Source boundaries
71
+
72
+ Reviewed 2026-10-02: [official FAQ](https://www.asd-ste100.org/STE_faq.html)
73
+ distinguishes procedures from descriptions and permits passive descriptions
74
+ when the actor is unknown. The [official tools page](https://www.asd-ste100.org/STEsoftware.html)
75
+ does not make a language checker a substitute for the standard. Karpathy
76
+ recommends an existing method; he did not invent it or supply a Flow benchmark.
@@ -0,0 +1,86 @@
1
+ # Research basis for high-signal writing
2
+
3
+ Research question: which current writing methods best reduce generic AI prose
4
+ and word count without losing meaning, evidence, audience fit or safety?
5
+
6
+ Decision supported: define one portable writing skill for messages, comments,
7
+ documentation, reports and longer content. Every source was accessed on
8
+ 2026-08-28. Repository sources are pinned below; publisher documentation remains
9
+ a live URL, so no immutable snapshot or unshown publication date is claimed.
10
+
11
+ ## Ten approaches reviewed
12
+
13
+ | # | Source and provenance | Useful approach | Limitation carried into the skill |
14
+ |---|---|---|---|
15
+ | 1 | [blader/humanizer 2.11.2](https://github.com/blader/humanizer/blob/38b88903a5080c72a8c0472e79dcc9ffbf07938b/SKILL.md); commit `38b8890` dated 2026-08-19, Git blob `c9c2242`, accessed 2026-08-28 | Preserve every claim, never invent facts, and let a real writing sample override generic style rules. | A long pattern catalogue is useful for audit but too heavy for every ordinary draft; punctuation and vocabulary are contextual, not proof of authorship. |
16
+ | 2 | [hannsxpeter/humanizer 1.2.1](https://github.com/hannsxpeter/humanizer/blob/c35d49f5d57ed6e2222c23fab22b30e34ffa79e5/SKILL.md); commit `c35d49f` dated 2026-08-16, Git blob `b5bad0d`, accessed 2026-08-28 | Treat voice matching and conservative editing as the goal, with explicit false-positive restraint. | Do not frame quality work as beating detectors or disguising authorship. |
17
+ | 3 | [Concise Output 1.2.0](https://github.com/jagreehal/jagreehal-claude-skills/blob/810e8d69ef23476f15f3f5ee1044b9552a9fdba0/skills/concise-output/SKILL.md); commit `810e8d6` dated 2026-07-29, Git blob `f0e528f`, accessed 2026-08-28 | Put the point first, delete filler and test whether each sentence earns its place. | Extreme brevity needs exceptions for teaching, trade-offs, safety and long-form argument. |
18
+ | 4 | [Microsoft: simple words and concise sentences](https://learn.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences); live publisher page accessed 2026-08-28 | Use precise simple words, remove words without substance and keep text scannable. | Simple must not become abrupt, vague or less accurate. |
19
+ | 5 | [Google developer documentation: voice and tone](https://developers.google.com/style/tone); live publisher page accessed 2026-08-28 | Write clearly, directly and naturally for a global audience; avoid buzzwords, canned phrases and unnecessary entertainment. | Conversational writing is not a transcript of speech and should not import slang or cultural references by default. |
20
+ | 6 | [Digital.gov plain-language guide](https://digital.gov/guides/plain-language/writing) and [18F plain language](https://guides.18f.org/content-guide/our-approach/plain-language/); both live publisher pages accessed 2026-08-28 | Start from the specific audience, use active responsibility where useful, short sections and familiar literal terms. | Plain language is audience-relative; specialist readers may need precise technical terms. |
21
+ | 7 | [Mailchimp content style guide](https://styleguide.mailchimp.com/grammar-and-mechanics/); live publisher page accessed 2026-08-28 | Build an information hierarchy, lead with the main point, stay specific and adapt tone to the reader and channel. | Friendly voice never outranks clarity, truth or the reader's emotional context. |
22
+ | 8 | [GitLab documentation style guide](https://docs.gitlab.com/development/documentation/styleguide/); live publisher page accessed 2026-08-28 | Make documentation concise, direct, precise, task-oriented and easy to search or scan; avoid sales claims and self-reference. | Documentation structure differs from email, social and long-form prose, so one fixed template would overfit. |
23
+ | 9 | [IBM Carbon writing style](https://carbondesignsystem.com/guidelines/content/writing-style/); live publisher page accessed 2026-08-28 | Trim to as few words as possible without becoming terse, and vary tone with the user's journey and task. | Word count alone cannot judge usefulness; context and comprehension remain the acceptance test. |
24
+ | 10 | [W3C writing for web accessibility](https://www.w3.org/WAI/tips/writing/); live publisher page accessed 2026-08-28 | Use clear sentences, meaningful headings and links, expanded acronyms and structure that remains understandable to assistive technology. | Compression must not remove orientation or make meaning depend on visual layout. |
25
+
26
+ ## Facts, inference and decision
27
+
28
+ `FACT`: Across maintained corporate, government and accessibility guidance, the
29
+ recurring practices are audience-first purpose, front-loaded information,
30
+ simple precise language, useful structure, active responsibility, consistent
31
+ terms and removal of unsupported or repetitive prose.
32
+
33
+ `FACT`: The reviewed humanizer skills add two valuable safeguards: preserve a
34
+ meaning ledger and use an authentic voice sample instead of injecting generic
35
+ "human" quirks.
36
+
37
+ `INFERENCE`: AI slop is primarily a relevance, structure and evidence problem.
38
+ A word blacklist can help detect clusters, but it cannot establish quality and
39
+ creates false positives when applied as a hard ban.
40
+
41
+ `INFERENCE`: A literal 80% reduction is unsafe as a universal acceptance rule.
42
+ The transferable Pareto principle is to protect decision-relevant value and
43
+ remove low-value ceremony until every remaining sentence earns its place.
44
+
45
+ `DECISION`: Use one lightweight protocol with a frozen content contract, a
46
+ structure-first compression pass, an integrity checksum, artifact-specific
47
+ shapes and final-only output. Keep detailed research outside `SKILL.md` so an
48
+ ordinary invocation pays only for operational guidance.
49
+
50
+ ## Rejected patterns
51
+
52
+ - deliberate grammar errors, fake anecdotes or random slang as evidence of
53
+ humanity;
54
+ - optimizing for an AI detector or claiming human authorship;
55
+ - hard bans on punctuation, sentence length or individual vocabulary;
56
+ - a mandatory before/after report that makes every short answer longer;
57
+ - compression ratios that override facts, caveats, accessibility or action.
58
+
59
+
60
+ ## Plain technical English adaptation — 2026-10-02
61
+
62
+ [Karpathy's original post](https://x.com/karpathy/status/2105819303471976479)
63
+ recommends the existing ASD-STE100 method for readable explanations, and choosing
64
+ diagrams or interactive artifacts when they aid understanding. It is a writing
65
+ suggestion, not a measured performance result for Flow.
66
+
67
+ The [official overview](https://www.asd-ste100.org/about_STE.html) describes a
68
+ controlled language with rules and a dictionary. The
69
+ [official FAQ](https://www.asd-ste100.org/STE_faq.html) distinguishes procedural
70
+ and descriptive text, including passive descriptions when the actor is unknown.
71
+ Writing adopts independently phrased clarity guidance in
72
+ [plain technical English](plain-technical-english.md), with a meaning ledger and
73
+ explicit limits. It does not ship the dictionary, certify conformance or infer
74
+ token/cost savings. The existing contextual anti-slop rules remain in force for
75
+ other modes and languages.
76
+
77
+
78
+ ### Default communication refinement — 2026-10-02
79
+
80
+ Owner-requested policy: use plain technical English for operational exchanges
81
+ between agents, while user-facing replies keep the requested language. This is
82
+ a design default, not evidence that English improves every model or reduces
83
+ tokens. The factual contract is shared; a second translation call is not required.
84
+ English technical artifacts select TECHNICAL when no mode is requested. Other
85
+ languages use natural plain language with the same meaning-preservation checks.
86
+ Caller schemas, quoted text and explicit language/voice requests remain binding.