nobrainer-tech-flow 0.0.0-stage → 2.4.1

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 (151) 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 +205 -0
  9. package/CLAUDE.md +205 -0
  10. package/CONTRIBUTING.md +70 -0
  11. package/GEMINI.md +1 -0
  12. package/LICENSE +21 -0
  13. package/README.md +659 -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/RELEASING.md +24 -0
  28. package/docs/SESSION_RESTART.md +70 -0
  29. package/docs/SKILL_CURATION.md +124 -0
  30. package/docs/TESTING.md +232 -0
  31. package/docs/TRY_IT.md +109 -0
  32. package/docs/releases/v1.0.0.md +81 -0
  33. package/docs/releases/v1.1.0.md +85 -0
  34. package/docs/releases/v1.10.0.md +34 -0
  35. package/docs/releases/v1.11.0-publication-readback.md +25 -0
  36. package/docs/releases/v1.11.0.md +42 -0
  37. package/docs/releases/v1.12.0.md +30 -0
  38. package/docs/releases/v1.13.0.md +46 -0
  39. package/docs/releases/v1.14.0.md +43 -0
  40. package/docs/releases/v1.14.1.md +21 -0
  41. package/docs/releases/v1.2.0.md +87 -0
  42. package/docs/releases/v1.2.1.md +92 -0
  43. package/docs/releases/v1.3.0-publication-readback.md +69 -0
  44. package/docs/releases/v1.3.0.md +66 -0
  45. package/docs/releases/v1.3.1-publication-readback.md +76 -0
  46. package/docs/releases/v1.3.1.md +59 -0
  47. package/docs/releases/v1.4.0-publication-readback.md +81 -0
  48. package/docs/releases/v1.4.0.md +43 -0
  49. package/docs/releases/v1.5.0-publication-readback.md +76 -0
  50. package/docs/releases/v1.5.0.md +54 -0
  51. package/docs/releases/v1.6.0.md +64 -0
  52. package/docs/releases/v1.6.1-publication-readback.md +53 -0
  53. package/docs/releases/v1.6.1.md +82 -0
  54. package/docs/releases/v1.7.0.md +42 -0
  55. package/docs/releases/v1.7.1-publication-readback.md +64 -0
  56. package/docs/releases/v1.7.1.md +49 -0
  57. package/docs/releases/v1.8.0.md +63 -0
  58. package/docs/releases/v1.8.1.md +32 -0
  59. package/docs/releases/v1.9.0.md +33 -0
  60. package/docs/releases/v2.0.0-candidate.md +28 -0
  61. package/docs/releases/v2.0.0.md +53 -0
  62. package/docs/releases/v2.0.1.md +135 -0
  63. package/docs/releases/v2.0.2.md +189 -0
  64. package/docs/releases/v2.1.0.md +64 -0
  65. package/docs/releases/v2.1.1.md +43 -0
  66. package/docs/releases/v2.2.0.md +64 -0
  67. package/docs/releases/v2.2.1.md +11 -0
  68. package/docs/releases/v2.3.0.md +97 -0
  69. package/docs/releases/v2.3.1.md +71 -0
  70. package/docs/releases/v2.3.2.md +242 -0
  71. package/docs/releases/v2.4.0.md +126 -0
  72. package/docs/releases/v2.4.1.md +63 -0
  73. package/gemini-extension.json +6 -0
  74. package/hooks/claude-hooks.json +17 -0
  75. package/hooks/hooks-cursor.json +10 -0
  76. package/hooks/run-hook.cmd +36 -0
  77. package/hooks/session-start +38 -0
  78. package/package.json +69 -4
  79. package/plugin.json +51 -0
  80. package/scripts/build_plugin.py +50 -0
  81. package/scripts/check_flow_update.py +18 -0
  82. package/scripts/check_public_commit.py +86 -0
  83. package/scripts/fetch_public_refs.py +69 -0
  84. package/scripts/install.py +600 -0
  85. package/scripts/install.sh +1420 -0
  86. package/scripts/install_guards.py +279 -0
  87. package/scripts/install_personalization.py +527 -0
  88. package/scripts/install_skills.py +951 -0
  89. package/scripts/npm_install.py +85 -0
  90. package/scripts/recommend_flow_setup.py +1537 -0
  91. package/scripts/validate_skills.py +465 -0
  92. package/skills/nobrainer-auto-fine-tune/SKILL.md +79 -0
  93. package/skills/nobrainer-auto-fine-tune/references/capacity-audit.md +49 -0
  94. package/skills/nobrainer-autoimprove/SKILL.md +212 -0
  95. package/skills/nobrainer-autoimprove/scripts/count_words.py +22 -0
  96. package/skills/nobrainer-browser/SKILL.md +234 -0
  97. package/skills/nobrainer-browser/references/cdp-profile-restart.md +93 -0
  98. package/skills/nobrainer-build/SKILL.md +173 -0
  99. package/skills/nobrainer-codex-context/SKILL.md +111 -0
  100. package/skills/nobrainer-codex-context/scripts/codex_context.py +175 -0
  101. package/skills/nobrainer-decide/SKILL.md +198 -0
  102. package/skills/nobrainer-dispatcher/SKILL.md +256 -0
  103. package/skills/nobrainer-dispatcher/agents/openai.yaml +4 -0
  104. package/skills/nobrainer-rca/SKILL.md +163 -0
  105. package/skills/nobrainer-research/SKILL.md +131 -0
  106. package/skills/nobrainer-review/SKILL.md +195 -0
  107. package/skills/nobrainer-security/SKILL.md +166 -0
  108. package/skills/nobrainer-sessions/SKILL.md +223 -0
  109. package/skills/nobrainer-sessions/references/evidence-receipt.md +55 -0
  110. package/skills/nobrainer-sessions/references/protocol.md +337 -0
  111. package/skills/nobrainer-sessions/references/session-restart.md +255 -0
  112. package/skills/nobrainer-sessions/scripts/evidence_receipt.py +373 -0
  113. package/skills/nobrainer-sessions/scripts/restart_gate.py +140 -0
  114. package/skills/nobrainer-sessions/scripts/run_bounded.py +390 -0
  115. package/skills/nobrainer-sessions/scripts/session_title.py +43 -0
  116. package/skills/nobrainer-skill-doctor/SKILL.md +149 -0
  117. package/skills/nobrainer-skill-doctor/references/astra.md +19 -0
  118. package/skills/nobrainer-skill-doctor/scripts/audit.py +100 -0
  119. package/skills/nobrainer-skill-doctor/scripts/context_candidates.py +133 -0
  120. package/skills/nobrainer-spec-driven-development/SKILL.md +132 -0
  121. package/skills/nobrainer-spec-driven-development/references/spec-template.md +114 -0
  122. package/skills/nobrainer-team/SKILL.md +165 -0
  123. package/skills/nobrainer-team/references/team-plan.md +64 -0
  124. package/skills/nobrainer-tech-flow/SKILL.md +239 -0
  125. package/skills/nobrainer-tech-flow/VERSION +1 -0
  126. package/skills/nobrainer-tech-flow/references/autopilot.md +72 -0
  127. package/skills/nobrainer-tech-flow/references/codex-routing.md +21 -0
  128. package/skills/nobrainer-tech-flow/references/communication.md +108 -0
  129. package/skills/nobrainer-tech-flow/references/correction-hooks.md +110 -0
  130. package/skills/nobrainer-tech-flow/references/daily-update.md +28 -0
  131. package/skills/nobrainer-tech-flow/references/delivery.md +243 -0
  132. package/skills/nobrainer-tech-flow/references/idea-to-delivery.md +82 -0
  133. package/skills/nobrainer-tech-flow/references/long-run-state.md +209 -0
  134. package/skills/nobrainer-tech-flow/references/model-routing.md +83 -0
  135. package/skills/nobrainer-tech-flow/references/optional-decisions.md +83 -0
  136. package/skills/nobrainer-tech-flow/references/project-start.md +22 -0
  137. package/skills/nobrainer-tech-flow/references/routing.md +125 -0
  138. package/skills/nobrainer-tech-flow/references/setup.md +180 -0
  139. package/skills/nobrainer-tech-flow/references/worktrees.md +138 -0
  140. package/skills/nobrainer-tech-flow/scripts/check_flow_update.py +298 -0
  141. package/skills/nobrainer-tech-flow/scripts/cleanup_worktree.py +327 -0
  142. package/skills/nobrainer-tech-flow/scripts/decision_config.py +107 -0
  143. package/skills/nobrainer-tech-flow/scripts/flow_guard.py +252 -0
  144. package/skills/nobrainer-tech-flow/scripts/typed_decisions.py +210 -0
  145. package/skills/nobrainer-wiki/SKILL.md +164 -0
  146. package/skills/nobrainer-wiki/references/setup.md +88 -0
  147. package/skills/nobrainer-writing/SKILL.md +272 -0
  148. package/skills/nobrainer-writing/agents/openai.yaml +4 -0
  149. package/skills/nobrainer-writing/references/brief-artifacts.md +357 -0
  150. package/skills/nobrainer-writing/references/plain-technical-english.md +76 -0
  151. package/skills/nobrainer-writing/references/research.md +86 -0
@@ -0,0 +1,164 @@
1
+ ---
2
+ name: nobrainer-wiki
3
+ description: "Use when the owner says nb-wiki, nb-add, nb-get, nb-tidy, or llm-wiki; asks to create or query a wiki, save durable knowledge, or safely audit and maintain a Markdown knowledge base across projects or sessions; do not use for transient task state."
4
+ ---
5
+
6
+ # NoBrainer Wiki
7
+
8
+ Build and use a small, trustworthy knowledge system only when information should
9
+ compound across tasks. This skill is explicitly inspired by Andrej Karpathy's
10
+ [LLM wiki concept](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f)
11
+ and is an independent portable adaptation, not an official Karpathy project.
12
+
13
+ Read [references/setup.md](references/setup.md) before creating or reconnecting a
14
+ wiki. One skill owns all wiki behavior so setup, query, capture and maintenance
15
+ cannot drift into competing wrappers.
16
+
17
+ ## Select one mode
18
+
19
+ - `SETUP`: decide whether a wiki is justified, then create/connect/govern it.
20
+ - `GET`: read-only targeted retrieval. This is the default for a question.
21
+ - `ADD`: explicit ingestion or promotion of durable knowledge.
22
+ - `TIDY_AUDIT`: inspect trust, links, freshness and backlog without writing.
23
+ - `TIDY_APPLY`: apply only deterministic approved maintenance after an audit.
24
+
25
+ Do not combine modes invisibly. A `GET` that discovers a durable insight does
26
+ not authorize `ADD`; a tidy audit does not authorize semantic rewrites.
27
+
28
+ ## Decide whether a wiki is justified
29
+
30
+ Prefer normal repository documentation when knowledge is local to one codebase
31
+ and already discoverable. A wiki is justified when durable decisions, sources,
32
+ research, explicit owner preferences or operational knowledge must be queried
33
+ across tasks/sessions and would otherwise be repeatedly reconstructed.
34
+
35
+ Do not store live execution state, leases, current hashes, transient blockers,
36
+ credentials or secrets. A spec defines a contract; a plan orders work; a wiki
37
+ preserves reusable knowledge. One fact has one canonical owner.
38
+
39
+ ## Shared safety and knowledge contract
40
+
41
+ Resolve the wiki root from project instructions or the owner; never guess a
42
+ destination. Read its rules, index, classification boundary, relevant pages and
43
+ dirty/writer state before any operation.
44
+
45
+ Classify source and destination:
46
+
47
+ - `PUBLIC`: safe for intentional disclosure;
48
+ - `INTERNAL`: non-public operating knowledge without restricted personal data;
49
+ - `CONFIDENTIAL`: explicitly restricted, minimum necessary content;
50
+ - `SECRET`: credentials, keys, tokens, cookies, seed phrases or equivalents.
51
+
52
+ Never write `SECRET` material to source captures, pages, inboxes, logs, prompts
53
+ or Git history. Never promote private personalization into a public repository.
54
+ Respect copyright/access constraints and prefer concise synthesis plus provenance
55
+ over copying an external work.
56
+
57
+ Separate observed fact, attributed claim, inference, recommendation and
58
+ forecast. Every durable entry needs source, date, scope, classification and
59
+ certainty; dates are absolute. Preserve contradictions and stale-risk markers
60
+ rather than silently choosing a convenient version.
61
+
62
+ ## `SETUP`
63
+
64
+ Run a read-only preflight:
65
+
66
+ - inspect existing instructions, wiki/map/rules, folder conventions and Git
67
+ state;
68
+ - detect sources/pages/inbox/log, writers, sync and automation;
69
+ - classify the target and compare it with the minimal model in the setup
70
+ reference;
71
+ - check every managed marker pair and overlapping dirty file.
72
+
73
+ Create only missing pieces and preserve established conventions. Use one source
74
+ of truth and one inbox per independent writer/machine. Do not initialize a
75
+ repository, pull/rebase, relocate, truncate or overwrite existing content just
76
+ because a template differs. Unknown classification, malformed markers,
77
+ conflicting writer or dirty overlapping scope is `BLOCKED`.
78
+
79
+ ## `GET` — read-only retrieval
80
+
81
+ 1. Rewrite the question into concepts, aliases, languages and freshness needs.
82
+ 2. Use the index as a map, then `rg` exact/relevant terms. Follow only useful
83
+ links and cited sources; do not load the whole vault by default.
84
+ 3. Prefer curated pages and inspect raw sources when a claim, conflict or exact
85
+ wording needs verification.
86
+ 4. Enforce the requester's access boundary and redact unsafe paths/details.
87
+ 5. Return `WIKI_FACT`, `INFERENCE`, `RECOMMENDATION` and `UNKNOWN` distinctly,
88
+ with page/source provenance and freshness.
89
+
90
+ An absent lexical hit is not proof of absence. Search synonyms and related map
91
+ entries before declaring a gap. `GET` never repairs, updates freshness, captures
92
+ the answer, commits or pushes.
93
+
94
+ ## `ADD` — durable capture or promotion
95
+
96
+ 1. Confirm the owner requested persistence or that the project's explicit
97
+ `LEARNING_WRITE_POLICY: AUTO_SCOPED` covers this durable event, then resolve
98
+ one writer for the target files.
99
+ 2. Read the complete allowed input; record provenance, date, classification and
100
+ capture method. Keep verbatim source separate from synthesis.
101
+ 3. Extract only reusable facts, decisions, definitions, evidence and procedures.
102
+ Exclude transient status and unsupported conclusions.
103
+ 4. Search existing pages by terms/aliases/languages before creating anything.
104
+ 5. Prepare one scoped write set: allowed source capture, pages, index, log and
105
+ exact inbox items to promote.
106
+ 6. Apply minimal edits with citations and relative links.
107
+ 7. Verify target content, index reachability, source links, classification and
108
+ secret boundaries before marking inbox items processed.
109
+ 8. Append one meaningful change-log entry only after successful promotion.
110
+
111
+ A mixed sensitive source requires an explicit sanitization list and destination
112
+ approval. Do not mass-rewrite, resolve owner decisions, commit, push or publish
113
+ unless those actions were separately authorized.
114
+
115
+ For video or recorded-session knowledge, preserve the complete available
116
+ timestamped transcript or caption stream as the raw source before synthesis.
117
+ Keep source capture separate from curated knowledge, cite timestamp ranges, and
118
+ use articles or summaries only as secondary cross-checks. If the complete
119
+ stream is unavailable, mark the capture partial rather than reconstructing
120
+ missing speech from surrounding context.
121
+
122
+ ## `TIDY_AUDIT` and `TIDY_APPLY`
123
+
124
+ Audit exact dangling links, index drift, stale/time-sensitive claims, uncited
125
+ material claims, contradictions, duplicate candidates, orphans, inbox backlog,
126
+ classification leaks and secret/PII risk. Every finding needs file/line, evidence,
127
+ confidence and one recommended action. An orphan may be intentional; a fuzzy
128
+ title match is not permission to merge.
129
+
130
+ `TIDY_APPLY` may automatically perform only deterministic reversible work in the
131
+ approved scope: an exact link correction with a proven target, missing index
132
+ link, format normalization, or removal of a processed inbox item whose payload
133
+ is proven present and retention allows removal. Semantic merges, page/source
134
+ deletion, contradiction choice, reclassification and broad rewrites require an
135
+ owner decision. Re-read before each write, rerun checks after, and preserve a
136
+ scoped rollback.
137
+
138
+ ## Durable personalization without hidden memory
139
+
140
+ Preserve only explicit reusable preferences, corrections, decisions and verified
141
+ working patterns. At task start retrieve only relevant pages; at close capture
142
+ only information likely to matter again. Do not infer a permanent trait from one
143
+ interaction. The owner must be able to inspect, correct and remove personalized
144
+ knowledge.
145
+
146
+ An external memory or retrieval service must earn its place with a representative
147
+ task set and a measured recall, context and latency target. Before adoption,
148
+ define project/account scope, source provenance, freshness and expiry, conflict
149
+ handling, correction/deletion/export, privacy, cost and a file-readable fallback.
150
+ Treat an injected profile or recalled item as context to verify, never as current
151
+ state or authority. Keep this policy in `nobrainer-wiki`; do not create another
152
+ permanent skill merely for a provider integration.
153
+
154
+ ## Automation and close gate
155
+
156
+ Manual capture/promotion is the default. Schedule it only when measured volume
157
+ justifies a bounded trigger/input/output, one state owner, idempotence, retry
158
+ budget, conflict stop, secret filtering, dry run, logs and rollback. Scheduler,
159
+ credentials, commit/push and publishing remain owner gates.
160
+
161
+ Finish with mode, root/classification, exact pages/sources/inbox/log touched,
162
+ provenance, checks, contradictions, omitted sensitive material, uncertainty,
163
+ rollback and one next action. Never claim a clean or synchronized wiki when a
164
+ scan/source was partial or inaccessible.
@@ -0,0 +1,88 @@
1
+ # NoBrainer Wiki setup reference
2
+
3
+ Adapt this reference to the target. Existing conventions win when they preserve
4
+ the same safety and information boundaries.
5
+
6
+ ## Minimal layout
7
+
8
+ ```text
9
+ WIKI_ROOT/
10
+ WIKI.md durable rules and confidentiality boundaries
11
+ index.md small map to curated knowledge
12
+ log.md append-only meaningful changes
13
+ sources/ raw captures with provenance and classification
14
+ pages/ curated, linked, cited knowledge
15
+ _inbox/WRITER.md append-only candidates owned by one writer
16
+ ```
17
+
18
+ Do not create empty layers that have no present use. A project-local wiki may
19
+ live under its existing docs structure.
20
+
21
+ ## Curated page contract
22
+
23
+ ```markdown
24
+ # Human title
25
+
26
+ One durable statement a future reader can act on.
27
+
28
+ CLASSIFICATION: PUBLIC | INTERNAL | CONFIDENTIAL
29
+ LAST_VERIFIED: YYYY-MM-DD | UNKNOWN
30
+
31
+ ## Facts
32
+
33
+ - <observed or source-backed claim> (source: <relative source or URL>)
34
+
35
+ ## Decisions and implications
36
+
37
+ - <decision, owner, date and scope>
38
+
39
+ ## Contradictions / stale risk
40
+
41
+ - <conflict or freshness warning, or NONE>
42
+
43
+ ## Related
44
+
45
+ - [[another-page]]
46
+ ```
47
+
48
+ Use absolute dates. Mark observed fact, inference, recommendation and forecast
49
+ separately. Do not resolve conflicting sources by silently deleting one.
50
+
51
+ ## Managed instruction block
52
+
53
+ Insert a project-specific block with a complete marker pair. Keep it concise so
54
+ instructions do not become a copy of the wiki protocol.
55
+
56
+ ```markdown
57
+ <!-- NB-WIKI:START -->
58
+ ## NoBrainer Wiki
59
+
60
+ Knowledge root: `WIKI_ROOT`. Rules: `WIKI_ROOT/WIKI.md`.
61
+ - At session start, read `WIKI_ROOT/index.md`, then search only relevant pages.
62
+ - Capture only durable facts in the current writer's inbox; never secrets.
63
+ - Use `nobrainer-wiki` mode `GET` for queries, `ADD` for explicit persistence,
64
+ and `TIDY_AUDIT` before any maintenance write.
65
+ - Runtime state, leases and transient blockers stay in their canonical ledgers.
66
+ <!-- NB-WIKI:END -->
67
+ ```
68
+
69
+ Before replacement, require exactly one START and one END in the correct order.
70
+ Zero markers means append at the repository's conventional location. Any other
71
+ count/order is a stop for manual repair. Verify a byte-level before/after diff
72
+ outside the managed block.
73
+
74
+ ## Setup report
75
+
76
+ ```text
77
+ WIKI_DECISION: REUSE | CREATE | REPAIR | NOT_JUSTIFIED | BLOCKED
78
+ ROOT: <resolved path/reference>
79
+ CLASSIFICATION: <level>
80
+ FILES_REUSED: <list>
81
+ FILES_CREATED: <list>
82
+ INSTRUCTIONS_UPDATED: <list>
83
+ AUTOMATION: NOT_CONFIGURED | PROPOSED | VERIFIED
84
+ CHECKS: <commands/readbacks>
85
+ UNCERTAINTY: <items or NONE>
86
+ ROLLBACK: <exact procedure and readback>
87
+ NEXT_ACTION: <one action>
88
+ ```
@@ -0,0 +1,272 @@
1
+ ---
2
+ name: nobrainer-writing
3
+ description: "Use when the owner says nb-write, nb-brief, nobrainer-writing, nobrainer-style, or nobrainer-human-like, or asks for prose quality work on a user-facing artifact, such as drafting, rewriting, compressing, humanizing, editing, or reviewing it; maximize useful information per word without dropping facts, evidence, caveats, voice, or required action."
4
+ ---
5
+
6
+ # NoBrainer Writing
7
+
8
+ Produce high-signal prose that helps a specific reader understand, decide or act.
9
+ Treat the Pareto idea as a direction: preserve nearly all decision-relevant value
10
+ while using far fewer words. It is not permission to remove evidence, conditions
11
+ or nuance merely to hit an arbitrary ratio.
12
+
13
+ The protocol, field names and examples in this public skill are written in
14
+ English. Match the requested output language; when English is requested, use
15
+ plain, idiomatic English rather than a literal translation.
16
+
17
+ This skill owns prose quality. `nobrainer-research` owns missing or current
18
+ external facts, `nobrainer-decide` owns consequential choices, and
19
+ `nobrainer-build` owns behavioral code changes and repository integration. A
20
+ small text-only edit can stay here. Do not invoke this skill for a one-sentence
21
+ answer that is already clear, specific and complete.
22
+
23
+ Use `BRIEF` for a short actionable artifact: a comment, bug report, feature
24
+ issue, user story, status update or one clear request. It is a mode of this
25
+ skill, not a new skill. Read [references/brief-artifacts.md](references/brief-artifacts.md)
26
+ for the matching shape and examples before drafting.
27
+
28
+ Read [references/research.md](references/research.md) only when changing this
29
+ protocol, auditing its rationale or comparing another writing method. Ordinary
30
+ writing runs should not spend context on the research record.
31
+
32
+ ## Choose one mode
33
+
34
+ - `DRAFT`: create prose from an established brief and verified source material.
35
+ - `COMPRESS`: shorten existing prose while preserving its material meaning.
36
+ - `REWRITE`: improve clarity, structure, voice and naturalness without changing
37
+ the factual contract.
38
+ - `REVIEW`: identify only material prose defects and propose the smallest useful
39
+ correction; do not rewrite merely to express a preference.
40
+ - `TECHNICAL`: make English procedures or explanations easier to follow. Read
41
+ [plain technical English](references/plain-technical-english.md) for its two
42
+ profiles and meaning checks. It is not a certified ASD-STE100 checker.
43
+ - `BRIEF`: create or compress one short actionable artifact. Choose exactly one
44
+ shape from the reference: `COMMENT`, `BUG`, `ISSUE`, `USER_STORY` or `REQUEST`.
45
+
46
+ If the user did not name a mode, default to `TECHNICAL` for English technical
47
+ procedures and explanations, including specs and runbooks. For other artifacts,
48
+ infer the smallest mode that satisfies the request. Answer users directly in
49
+ their requested language; keep non-English technical prose clear and natural
50
+ without applying an English dictionary or forcing an intermediate translation.
51
+ Explicit language, format and voice requirements take precedence. A request to "humanize" means `REWRITE`, not detector evasion or the
52
+ injection of fake mistakes.
53
+
54
+ ## Freeze the content contract
55
+
56
+ Before drafting, resolve internally:
57
+
58
+ ```text
59
+ PURPOSE:
60
+ AUDIENCE:
61
+ USE_AFTER_READING:
62
+ ARTIFACT_AND_CHANNEL:
63
+ LANGUAGE_AND_TONE:
64
+ VOICE_SOURCE: supplied sample | project guide | inferred neutral | NONE
65
+ MUST_PRESERVE: facts | names | numbers | dates | links | quotations | terms |
66
+ commands | conditions | uncertainty | caveats | requested action
67
+ SOURCE_STATUS: VERIFIED | PROVIDED | RESEARCH_REQUIRED | UNKNOWN
68
+ LENGTH_OR_FORMAT_CONSTRAINT:
69
+ ```
70
+
71
+ Infer obvious fields from the request and current project. Ask one focused
72
+ question only when the answer changes factual meaning, audience fit, material
73
+ tone or safety. In a larger Flow run, use the approved BUDDY brief and do not
74
+ re-open settled requirements.
75
+
76
+ For `BRIEF`, additionally freeze the observed problem or desired outcome, the
77
+ reader's next action, the smallest useful evidence, and the pass/fail condition
78
+ when one exists. If a missing fact would make the artifact misleading or
79
+ non-actionable, ask one precise question or return `INPUT_REQUIRED`; do not fill
80
+ the gap with a plausible cause, metric, user or environment.
81
+
82
+ Preserve every material input detail, including onset, negation, current status,
83
+ condition and uncertainty. Do not turn a fear, hypothesis or requested decision
84
+ into an observed fact or an invented acceptance rule. If the desired behavior is
85
+ not specified, keep the decision open or write `UNKNOWN` rather than choosing a
86
+ warning, retry policy, UI state or technical solution.
87
+
88
+ For `COMPRESS`, `REWRITE` and `TECHNICAL`, make a private meaning ledger before changing the
89
+ text. Track every material claim, number, name, date, URL, quotation,
90
+ attribution, identifier, command, negation, condition, uncertainty marker,
91
+ caveat and call to action. Never add a source, experience, opinion, metric or
92
+ detail that the input does not support. Route a material knowledge gap to
93
+ `nobrainer-research`; do not cover it with fluent prose.
94
+
95
+ ## Write in six passes
96
+
97
+ 1. **Outcome:** state the answer, decision, result or requested action in the
98
+ first useful sentence. Keep background only when the reader needs it to
99
+ interpret that outcome.
100
+ 2. **Structure:** group each idea once. Put decision-relevant information first.
101
+ Use headings, bullets or a table only when they make a real relationship
102
+ easier to scan than short prose.
103
+ 3. **Compression:** remove throat-clearing, repeated points, self-reference,
104
+ empty transitions, generic summaries and decorative detail. Merge sentences
105
+ only while the result remains easier to understand.
106
+ 4. **Precision:** prefer concrete nouns and precise verbs. Name the actor when it
107
+ clarifies responsibility. Use one term per concept and define necessary
108
+ jargon for the actual audience.
109
+ 5. **Voice:** match an authentic supplied sample or project guide when one
110
+ exists. Otherwise use a direct, calm and natural neutral voice. Adapt tone to
111
+ the reader's situation; technical, legal, error and safety text should not be
112
+ made casual for entertainment.
113
+ 6. **Integrity:** compare the final text with the meaning ledger and the user's
114
+ requested action. Restore anything materially lost, and remove anything that
115
+ cannot be traced to the input or a cited source.
116
+
117
+ Compress structure before swapping vocabulary. A shorter synonym cannot repair
118
+ a paragraph with no clear purpose.
119
+
120
+ For `BRIEF`, put the outcome or failure in the title/first sentence, keep one
121
+ problem or goal per artifact, and include only evidence that changes action or
122
+ triage. Use the fewest applicable fields. A comment is normally a few sentences;
123
+ an issue or story is normally one description, a short evidence/context block and
124
+ two to five testable criteria. Put long logs, transcripts and screenshots after
125
+ the concise core or link them; never hide them when they are needed for proof.
126
+ Return the finished artifact only unless the owner asks for an audit.
127
+
128
+ For task-shaped `BRIEF` artifacts (`BUG`, `ISSUE`, `USER_STORY` and `REQUEST`),
129
+ write `Description:` and `Definition of Done (DoD):` as explicit fields.
130
+ `Description` states what is wrong, needed or intended; `Acceptance` states
131
+ observable product behavior when applicable; `Definition of Done (DoD)` states
132
+ the closure condition and required proof. Do not hide either field inside a
133
+ generic paragraph or rename DoD to a vague `Done when`. `COMMENT` stays compact
134
+ and does not need task fields.
135
+
136
+ Number every acceptance criterion with a sequential two-digit ID: `AC01`, `AC02`,
137
+ `AC03` and so on. Start at `AC01`, do not leave gaps, and do not use anonymous
138
+ checkboxes under `Acceptance`; DoD remains a separate section and may reference
139
+ the acceptance IDs.
140
+
141
+ For both `BUG` and `COMMENT`, always provide one compact `ENV:` block with
142
+ `Name`, `URL` and `User`. `Name` is one of `QA`, `DEV`, `TEST`, `PROD`,
143
+ `PREPROD`, `BETA` or `UNKNOWN`; use `N/A` when a field genuinely does not
144
+ apply. `User` is a role or redacted/synthetic alias, never a credential.
145
+
146
+ For `BUG`, start with `Description`, then keep the diagnostic fields separate and
147
+ in this order: `ENV:`, `Steps to reproduce`, `Current behavior` and
148
+ `Expected behavior`; follow them with the applicable surface-proof sections:
149
+ `API request (cURL)`, `API response`, `Database query (read-only)`,
150
+ `Database result`, `Evidence` for a UI screenshot or MP4 recording and, only when
151
+ the page-load/request chain matters, `HAR`; finish with `Definition of Done (DoD)`.
152
+ Use `UNKNOWN` when a value is not known; never silently omit a required field or
153
+ invent its value.
154
+
155
+ For `ISSUE`, keep `Description` to one sentence, then use `Who is affected`,
156
+ `Desired outcome`, `Evidence`, `Acceptance` and `Definition of Done (DoD)` by
157
+ default. Add another field only when it changes triage or implementation.
158
+
159
+ Surface proof has a copyable artifact shape:
160
+
161
+ - **API:** put the complete redacted request in a fenced `bash` block as a
162
+ `curl` command, including method, URL, all captured headers and body. Put the
163
+ observed response in a separate fenced `http` block with status, all captured
164
+ headers and body. Redact sensitive values without changing the request's
165
+ material shape.
166
+ - **Database:** put the read-only query and its result in separate fenced code
167
+ blocks, using `sql` for the query and the result's actual format when useful.
168
+ Redact sensitive rows and values.
169
+ - **UI:** put a screenshot or MP4 recording under `Evidence`. If the failure
170
+ depends on the page-load or request chain, attach a HAR as well; the exact URL
171
+ and steps still belong in the report.
172
+
173
+ If several surfaces are involved, include each applicable proof pair or artifact.
174
+ Do not replace the API/DB proof pairs with generic prose. For a UI bug, `Evidence`
175
+ is the attachment field; a URL or prose description alone does not replace it.
176
+ If required proof is missing, return `INPUT_REQUIRED` and name the missing
177
+ artifact instead of drafting a weaker report.
178
+
179
+ ## Anti-slop gate
180
+
181
+ Remove these patterns when they add no information:
182
+
183
+ - praise, greetings, apologies or announcements before the actual point;
184
+ - inflated significance, sales language, vague attribution and unsupported
185
+ certainty;
186
+ - headings that repeat the next sentence, repetitive transitions, forced groups
187
+ of three and multiple labels that say the same thing;
188
+ - fake candor, invented objections, rejected options no reader proposed,
189
+ dramatic fragments and generic optimistic endings;
190
+ - abstract metaphors, buzzwords or modifiers standing in for a concrete fact;
191
+ - formatting used as decoration, including excessive bold text, emoji and a
192
+ list where one sentence is clearer;
193
+ - comments or documentation that restate visible code instead of explaining a
194
+ non-obvious reason, constraint, risk or consequence.
195
+
196
+ These are contextual signals, not a forbidden-word list. Keep a transition,
197
+ technical term, passive construction, long sentence, repeated phrase or unusual
198
+ punctuation when it is accurate, natural for the writer and useful to the
199
+ reader. Professional grammar is not an AI tell.
200
+
201
+ Never simulate humanity with typos, missing punctuation, fabricated anecdotes,
202
+ random slang, artificial sentence fragments or opinions the author did not
203
+ express. Do not optimize for an AI detector or claim that prose is human-written.
204
+
205
+ ## Match the artifact
206
+
207
+ - **Reply, comment or status:** outcome first, then only decisive evidence,
208
+ blocker and next action.
209
+ - **Email or request:** purpose, essential context, one clear ask and timing when
210
+ material.
211
+ - **README or instructions:** purpose, prerequisites, shortest successful path,
212
+ verification and only likely failure recovery.
213
+ - **Pull request:** lead with why the change is needed, then describe only the net
214
+ change against the actual PR base and the verification that helps review it.
215
+ Remove abandoned approaches, local absolute paths and routine checks already
216
+ evident from required CI; preserve still-relevant links, images and caveats.
217
+ - **Report or decision note:** answer, verified facts, inference or trade-off,
218
+ decision and next action. Keep fact and inference visibly distinct.
219
+ - **Long-form content:** thesis, evidence and implications in a coherent arc.
220
+ Concision removes repetition; it does not flatten a real argument into notes.
221
+ - **Code comment:** explain why, invariant, risk or surprising consequence.
222
+ Delete comments that merely translate the code into English.
223
+ - **Marketing or social copy:** audience problem, concrete value or proof and one
224
+ honest action. Do not manufacture urgency, authority or transformation.
225
+
226
+ For a natural human feel, preserve the author's actual nouns, stance, uncertainty
227
+ and occasional first-person phrasing when supplied. Prefer a specific example
228
+ over a polished generalization. Do not manufacture typos, slang, anecdotes,
229
+ opinions, emotional claims or "human" irregularity; do not optimize for an AI
230
+ detector or claim that a person wrote the result.
231
+
232
+ ## Quality gate
233
+
234
+ Before returning the text, require:
235
+
236
+ ```text
237
+ PURPOSE_CLEAR: PASS | FAIL
238
+ ANSWER_OR_ACTION_FRONT_LOADED: PASS | NOT_APPLICABLE | FAIL
239
+ MEANING_PRESERVED: PASS | NOT_APPLICABLE | FAIL
240
+ CLAIMS_TRACEABLE: PASS | NOT_APPLICABLE | FAIL
241
+ CAVEATS_AND_CONDITIONS_PRESERVED: PASS | NOT_APPLICABLE | FAIL
242
+ VOICE_AND_AUDIENCE_FIT: PASS | FAIL
243
+ VALUE_DENSITY: PASS | FAIL
244
+ SCAN_AND_ACCESSIBILITY: PASS | NOT_APPLICABLE | FAIL
245
+ ```
246
+
247
+ `VALUE_DENSITY` passes when every sentence adds a distinct fact, implication,
248
+ instruction, decision, transition or intentional voice effect. Ask of each
249
+ sentence: if it disappears, does meaning, evidence, tone or action materially
250
+ change? If not, cut it.
251
+
252
+ A lower word count is diagnostic, not acceptance. Do not over-compress a short
253
+ source, remove a necessary example, collapse separate conditions or hide risk.
254
+ When accessibility matters, preserve descriptive headings, meaningful link text,
255
+ expanded acronyms and enough context to understand the text out of layout.
256
+
257
+ ## Return the result
258
+
259
+ Return only the finished prose by default. Do not surround a two-line answer
260
+ with a process report. When the owner asks for an audit, comparison or measured
261
+ compression of the prose itself, add a compact block after the result:
262
+
263
+ ```text
264
+ MODE:
265
+ WORDS: before -> after | NOT_MEASURED
266
+ MATERIAL_CHANGES:
267
+ PRESERVED_CONTRACT:
268
+ UNVERIFIED_OR_INPUT_REQUIRED:
269
+ ```
270
+
271
+ Return `INPUT_REQUIRED` instead of drafting when a missing fact, source, voice
272
+ sample or constraint would force invention or materially change the result.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "NoBrainer Writing"
3
+ short_description: "Write concise, natural comments, issues, stories, and prose."
4
+ default_prompt: "Use $nobrainer-writing; use nb-brief for a short, concrete comment, issue, bug report, or user story."