aibreze 0.1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Catalyst Forge LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # aiBreze
2
+
3
+ An installable writing rule set for AI agents.
4
+
5
+ aiBreze strips the performative, faux-profound register from prose.
6
+ Written **aiBreze**. npm **`aibreze`**. A spray, not a breeze.
7
+
8
+ Direct > clever. Clear > profound. Useful > insightful-sounding. No em
9
+ dashes in publishable prose.
10
+
11
+ Spray the prose, not the author. Earn the word.
12
+
13
+ ## Before / after
14
+
15
+ **Before.** At its core, building software isn't just about writing
16
+ code. It's about bridging the gap between imagination and execution,
17
+ creating solutions that don't merely function but fundamentally
18
+ transform the way we interact with technology.
19
+
20
+ **After.** Software turns an idea into something people can use. Good
21
+ software does that reliably.
22
+
23
+ ## What it is
24
+
25
+ A composable editorial system for agent-generated prose (and for human
26
+ prose in the same register). Markdown you install and point an agent at.
27
+ Not a CLI (yet), not an editor, not a list of "words ChatGPT uses."
28
+
29
+ ```text
30
+ core.md shared law (register, bans, cadence, heuristic)
31
+ genre files surface extras only (essay, landing, outreach, launch)
32
+ project overlay pronouns, carve-outs, protected lines
33
+
34
+ drafting
35
+
36
+ audit.md smell
37
+ claims.md substance first, then voice
38
+ ```
39
+
40
+ Genre files assume `core.md` and are additive: surface law only, no
41
+ copied bans. Do not fork `core.md`.
42
+
43
+ The **applicability heuristic** is the load-bearing idea. The problem is
44
+ unearned language, not the dictionary. Earn the word: "transformative"
45
+ is fine if something transformed and you can say from what into what.
46
+ "Inflection point" is fine if there was one. Overlay the terms that
47
+ usually pass *here*, with one-line why. The heuristic is the rule; the
48
+ list is not exhaustive.
49
+
50
+ `claims.md` is substance first, voice after. A clean-smelling wrong
51
+ essay is still wrong. Do not polish a lie.
52
+
53
+ ## Install
54
+
55
+ ```bash
56
+ pnpm add -D aibreze
57
+ ```
58
+
59
+ ## What's in the box
60
+
61
+ | File | Use |
62
+ | --- | --- |
63
+ | `rules/core.md` | Always. Register, applicability heuristic, teaching antithesis, hard bans, cadence, chat vs publish. |
64
+ | `rules/audit.md` | Paste-in smell audit (score, flags, protect list, top 5). |
65
+ | `rules/claims.md` | Skeptical peer review. Substance first, voice after. |
66
+ | `rules/essays.md` | Longform: one register, author in the essay, concrete instance. Not for reference docs. |
67
+ | `rules/landing.md` | Page copy: pronouns, rhetorical budgets, substance, read-aloud. |
68
+ | `rules/outreach.md` | Email / DM / text. Relationship first, one ask. |
69
+ | `rules/launch.md` | Shipping posts. Open on a specific moment or the artifact, not the announcement formula. |
70
+ | `rules/cursor.mdc` | Always-on agent digest. Copy into `.cursor/rules/`. |
71
+
72
+ ## Why "aiBreze"?
73
+
74
+ People who live with a smell stop noticing it. Generated prose does the
75
+ same trick. Charles Duhigg tells the household version in *The Power of
76
+ Habit* (2012): an odor-eliminating spray that flopped until the company
77
+ realized habituation was the problem, then sold the bottle as the reward
78
+ at the end of a cleaning habit. This package is that move for writing.
79
+ Make the smell visible, then take it off. Read Duhigg for the original.
80
+
81
+ The register is also leaking the other way: humans now write like the
82
+ models. aiBreze is a writing standard, not an AI-cleanup gimmick.
83
+
84
+ ## Not a humanizer
85
+
86
+ aiBreze does not determine whether a human or a model wrote something,
87
+ and it does not try to fool AI detectors. It applies the same standard
88
+ either way. If the prose smells, spray it.
89
+
90
+ Adjacent tools tend to be humanizers ("make this sound human"), banned-word
91
+ anti-slop lists, or general style linters (Vale, write-good). This package
92
+ is the layered law: genre surfaces, an applicability heuristic (earn the
93
+ word), claims before cologne, overlays instead of forks, and both
94
+ prevention at draft time and audit after. Authorship is irrelevant. Prose
95
+ quality is the subject.
96
+
97
+ ## Use from Node
98
+
99
+ ```ts
100
+ import { readRule, files, catalog } from "aibreze";
101
+
102
+ const core = readRule("core");
103
+ // files.audit is an absolute path to rules/audit.md
104
+ ```
105
+
106
+ Markdown is also exported as `aibreze/rules/core.md` (and the rest), so
107
+ an agent or a prompt assembler can read the files from `node_modules`.
108
+ v1 is `readRule`. Assembling core + genre + overlay is concatenation on
109
+ purpose.
110
+
111
+ ## Agent setup
112
+
113
+ 1. `pnpm add -D aibreze`
114
+ 2. Copy `node_modules/aibreze/rules/cursor.mdc` to
115
+ `.cursor/rules/aibreze.mdc`
116
+ 3. Point "Full rules" at `node_modules/aibreze/rules/core.md`
117
+ 4. Keep a project overlay (carve-outs, I vs we, protected lines)
118
+ 5. When drafting a page, essay, note, or ship post, open that genre file
119
+ 6. For a publish pass: paste `rules/core.md` plus the overlay, then
120
+ `rules/audit.md` or `rules/claims.md` (both are additive; do not paste
121
+ the prompt alone)
122
+
123
+ ## Overlay shape
124
+
125
+ Keep it short. Point at this package, then only:
126
+
127
+ - Pronouns per surface
128
+ - Terms that pass the applicability heuristic *here*, with one-line why
129
+ - Protected maxims / testimony
130
+ - Genre extras that are house law (every essay ends in a deed, brand
131
+ metaphor budget, …)
132
+
133
+ ## Site
134
+
135
+ The public site lives in [`site/`](site/) (FilePress, [`getfilepress`](https://www.npmjs.com/package/getfilepress)). [aibreze.com](https://aibreze.com). Source: [Catalyst-Forge-LLC/aibreze](https://github.com/Catalyst-Forge-LLC/aibreze).
136
+
137
+ ```bash
138
+ pnpm site:dev
139
+ pnpm site:build
140
+ ```
141
+
142
+ ## Publishing to npm
143
+
144
+ The maintainer publishes. Agents must not run `npm publish`,
145
+ `pnpm publish`, or `yarn npm publish`.
146
+
147
+ ## License
148
+
149
+ MIT. Copyright Catalyst Forge LLC.
@@ -0,0 +1,24 @@
1
+ declare const packageRoot: string;
2
+ declare const rulesDir: string;
3
+ export declare const ruleIds: readonly ["core", "audit", "claims", "essays", "landing", "outreach", "launch"];
4
+ export type RuleId = (typeof ruleIds)[number];
5
+ export declare const files: {
6
+ readonly core: string;
7
+ readonly audit: string;
8
+ readonly claims: string;
9
+ readonly essays: string;
10
+ readonly landing: string;
11
+ readonly outreach: string;
12
+ readonly launch: string;
13
+ readonly cursor: string;
14
+ };
15
+ export type FileId = keyof typeof files;
16
+ export declare const catalog: ReadonlyArray<{
17
+ id: FileId;
18
+ title: string;
19
+ use: string;
20
+ }>;
21
+ export declare function rulePath(id: FileId): string;
22
+ export declare function readRule(id: FileId): string;
23
+ export declare function assertRulesPresent(): string[];
24
+ export { packageRoot, rulesDir };
package/dist/index.js ADDED
@@ -0,0 +1,81 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const packageRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
5
+ const rulesDir = join(packageRoot, "rules");
6
+ export const ruleIds = [
7
+ "core",
8
+ "audit",
9
+ "claims",
10
+ "essays",
11
+ "landing",
12
+ "outreach",
13
+ "launch",
14
+ ];
15
+ export const files = {
16
+ core: join(rulesDir, "core.md"),
17
+ audit: join(rulesDir, "audit.md"),
18
+ claims: join(rulesDir, "claims.md"),
19
+ essays: join(rulesDir, "essays.md"),
20
+ landing: join(rulesDir, "landing.md"),
21
+ outreach: join(rulesDir, "outreach.md"),
22
+ launch: join(rulesDir, "launch.md"),
23
+ cursor: join(rulesDir, "cursor.mdc"),
24
+ };
25
+ export const catalog = [
26
+ {
27
+ id: "core",
28
+ title: "Core",
29
+ use: "Always. Target register, applicability heuristic, teaching antithesis, hard bans, cadence budgets, chat vs publish.",
30
+ },
31
+ {
32
+ id: "audit",
33
+ title: "Smell audit",
34
+ use: "Paste-in smell audit. Additive to core: extras, vocab hunt list, score and top-five.",
35
+ },
36
+ {
37
+ id: "claims",
38
+ title: "Claims + voice",
39
+ use: "Skeptical peer review. Substance first so you do not cologne a lie, then aiBreze.",
40
+ },
41
+ {
42
+ id: "essays",
43
+ title: "Essays / longform",
44
+ use: "Essays and talks: one register, author in the essay, concrete instance. Not for reference docs.",
45
+ },
46
+ {
47
+ id: "landing",
48
+ title: "Landing / marketing",
49
+ use: "Page copy: pronoun decision, rhetorical budgets, substance gaps, read-aloud gate.",
50
+ },
51
+ {
52
+ id: "outreach",
53
+ title: "Personal outreach",
54
+ use: "Email, DM, and text. Relationship first, one ask, links as context.",
55
+ },
56
+ {
57
+ id: "launch",
58
+ title: "Launch / announcement",
59
+ use: "Shipping posts. Open on a specific moment or the artifact, not the announcement formula.",
60
+ },
61
+ {
62
+ id: "cursor",
63
+ title: "Cursor pocket card",
64
+ use: "Always-on agent digest. Copy to `.cursor/rules/` and point at core plus a project overlay.",
65
+ },
66
+ ];
67
+ export function rulePath(id) {
68
+ return files[id];
69
+ }
70
+ export function readRule(id) {
71
+ return readFileSync(files[id], "utf8");
72
+ }
73
+ export function assertRulesPresent() {
74
+ const missing = [];
75
+ for (const id of Object.keys(files)) {
76
+ if (!existsSync(files[id]))
77
+ missing.push(files[id]);
78
+ }
79
+ return missing;
80
+ }
81
+ export { packageRoot, rulesDir };
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "aibreze",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "Installable writing rule set for AI agents. Sprays the performative, faux-profound register off prose. Core bans, smell audit, claims review, genre overlays.",
7
+ "license": "MIT",
8
+ "author": "Catalyst Forge LLC",
9
+ "keywords": [
10
+ "ai",
11
+ "writing",
12
+ "style-guide",
13
+ "prose",
14
+ "llm",
15
+ "prompts",
16
+ "copyediting",
17
+ "voice"
18
+ ],
19
+ "homepage": "https://aibreze.com",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/Catalyst-Forge-LLC/aibreze.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/Catalyst-Forge-LLC/aibreze/issues"
26
+ },
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "default": "./dist/index.js"
31
+ },
32
+ "./rules/*": "./rules/*",
33
+ "./package.json": "./package.json"
34
+ },
35
+ "files": [
36
+ "dist/index.js",
37
+ "dist/index.d.ts",
38
+ "rules",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "engines": {
43
+ "node": ">=20"
44
+ },
45
+ "devDependencies": {
46
+ "@types/node": "^24.3.0",
47
+ "typescript": "^5.9.2"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc",
51
+ "test": "tsc && node --test dist/index.test.js",
52
+ "site:dev": "pnpm --dir site dev",
53
+ "site:build": "pnpm --dir site run build",
54
+ "site:deploy": "pnpm --dir site run deploy"
55
+ }
56
+ }
package/rules/audit.md ADDED
@@ -0,0 +1,200 @@
1
+ # AI smell audit prompt
2
+
3
+ Reusable prompt for auditing any copy (landing pages, emails, blog posts,
4
+ social posts, docs) for signs it was AI-generated or AI-flavored.
5
+
6
+ **This prompt is additive.** Paste into a model, in order:
7
+
8
+ 1. [`core.md`](./core.md) (required) and the project's overlay
9
+ 2. Everything below the divider in this file
10
+ 3. The copy to audit
11
+
12
+ Do not treat the lists below as the house law. Hunt core's hard bans,
13
+ cadence budgets, and applicability heuristic from `core.md`, then the
14
+ extras here.
15
+
16
+ **When substance is in question** (overclaim, thin evidence, bad
17
+ attribution), use [`claims.md`](./claims.md) instead of or before a
18
+ smell-only pass.
19
+
20
+ ---
21
+
22
+ You are an expert copy editor with a specialty in detecting "AI smell":
23
+ the patterns, tics, and vocabulary that make writing feel
24
+ machine-generated, generic, or untrustworthy. Audit the copy I provide
25
+ below. You have `core.md` (and any overlay) in this context. Apply them.
26
+
27
+ If `core.md` is not in this context, stop and say so. Do not run a smell
28
+ pass that skips the house bans.
29
+
30
+ ## Your task
31
+
32
+ 1. **Score the copy 1-10 for AI smell** (1 = unmistakably human, 10 =
33
+ obviously generated), with a one-paragraph justification. A human
34
+ draft with two marketing words is not a 7. Score the pattern, not
35
+ the word count.
36
+ 2. **Flag tells that change how the piece reads**, plus every hard ban
37
+ and cadence tell in `core.md` that actually fires. Quote the
38
+ offending text, name the tell, explain briefly. Do not dump every
39
+ vocab-list hit. Apply the applicability heuristic first. A single
40
+ "robust" that names a real property is not a finding.
41
+ 3. **Suggest a rewrite** for flagged items that are worth changing.
42
+ Preserve meaning. Sound like a sharp, specific human.
43
+ 4. **Identify what's working.** Quote the most human, distinctive lines so
44
+ they get protected in any rewrite.
45
+ 5. **End with a prioritized fix list**: the 5 changes that would most
46
+ reduce the AI smell, in order of impact. The top 5 is the
47
+ deliverable. The flag list is evidence, not a to-do of 40 rewrites.
48
+
49
+ ## The tells to hunt
50
+
51
+ ### From core.md (do not re-list)
52
+
53
+ Hunt every hard ban and cadence tell in `core.md`: escalation formula,
54
+ honest framing, validation+profundity, mechanism inflation, narrative
55
+ theater, genuinely-stacks, dramatic apology, suspense, setup sentences,
56
+ em dashes, triad packing including prefix-repetition, empty marketing
57
+ vocab, helper theater, signpost openers, mic-drop closers, intensifier
58
+ filler, parallel-zinger density, bold-lead lists. Apply the
59
+ corpus-applicability heuristic before rewriting overlay terms. Teaching
60
+ antithesis is allowed only when categories differ, never as
61
+ synonym-escalation. One concrete landing chant is a named exception,
62
+ not a free pass for every triad.
63
+
64
+ ### Rhetorical extras (cluster here; not a second copy of core)
65
+
66
+ - **"Not X, but Y" antithesis (broader than escalation).** One careful
67
+ teaching contrast per piece can be spice. More than two is a pattern,
68
+ and patterns smell generated.
69
+ - **Triadic chants.** "No fluff. No jargon. No BS." / "Faster. Smarter.
70
+ Better." Groups of three parallel fragments, especially negations.
71
+ Budget: one per piece, max, and only if core's protected-maxim
72
+ exception or a genre overlay (landing: one concrete chant) permits it.
73
+ - **Symmetrical parallel constructions.** "We speak your language and the
74
+ machine's." Clever-sounding mirror phrases that a million landing pages
75
+ already used.
76
+ - **The rule of three in lists everywhere.** When every sentence
77
+ enumerates exactly three items, a model wrote it.
78
+ - **Rhetorical questions as transitions.** "So what does this mean for
79
+ you?" / "The result?" / "The best part?"
80
+ - **The hedge-flourish.** Winking qualifiers like "(yet)" or "at least
81
+ for now" that perform humility instead of having it.
82
+ - **False momentum closers.** "The future is here." / "And this is just
83
+ the beginning." / "The only question is whether you'll be ready."
84
+ - **Setup-payoff formula on every heading.** Colon constructions: "The
85
+ problem: you're drowning in tools." Once is fine. Every heading is a
86
+ template.
87
+ - **Outline-first filler.** An H2 with a sentence of nothing under it,
88
+ then the next H2. The outline shipped; the prose did not.
89
+ - **Engagement bait.** "Agree?", "a thread 🧵", "I'm humbled to
90
+ announce."
91
+
92
+ ### Vocabulary tells
93
+
94
+ Suspects, not automatic flags. Apply the corpus-applicability heuristic
95
+ first. Flag empty marketing use and close variants. Leave terms of art,
96
+ product names, and words that would get less precise if swapped for
97
+ "important."
98
+
99
+ - delve, dive deep, deep dive, unpack, explore (as a section-verb with
100
+ no object worth exploring)
101
+ - unlock, unleash, harness, empower, supercharge, turbocharge
102
+ - leverage (as empty marketing verb: "leverage your workflow"), utilize
103
+ (instead of use). Domain projects may carve out doctrinal "leverage"
104
+ (force / fulcrum sense) in an overlay.
105
+ - seamless, seamlessly, effortless, frictionless, streamline
106
+ - game-changer, game-changing, revolutionary, cutting-edge, next-level
107
+ - cut through the noise, separate signal from noise, rise above the noise
108
+ - landscape (as in "the AI landscape"), ecosystem-as-hype, "in this
109
+ space" as market-speak (not state space / design space as terms of art)
110
+ - journey (as in "your AI journey"), transformation-as-hype (not
111
+ org-change when that is the subject)
112
+ - robust, comprehensive, holistic, tailored, bespoke: filler adjectives
113
+ only, not a named requirement ("robust to partition")
114
+ - "In today's fast-paced world" and any "In today's X" opener
115
+ - "Whether you're a X or a Y" audience straddles
116
+ - "at the end of the day," "when it comes to," "it's worth noting"
117
+ - crucial, vital, essential when stacked or used as filler more than
118
+ once
119
+ - "real" as an intensifier used more than twice (real results, real
120
+ value, real impact)
121
+ - boost, take it to the next level, elevate-as-hype
122
+ - "the power of" anything
123
+
124
+ ### Structural extras
125
+
126
+ - **Em dashes.** Core already bans them in publishable prose. Still flag
127
+ density and the clause-then-punchline construction as a smell signal
128
+ (some human writers use them heavily; combined with other tells they
129
+ are a strong signal).
130
+ - **Emoji as content furniture.** Checkmarks, rockets, and lightbulbs
131
+ doing the work that words or design should do, especially in lists and
132
+ result badges.
133
+ - **Title Case On Every Heading** in body copy contexts where sentence
134
+ case would be natural.
135
+ - **Uniform paragraph lengths.** Every paragraph 2-3 sentences, every
136
+ sentence medium-length. Human writing has variance: a one-word
137
+ sentence, then a long one.
138
+ - **Perfectly balanced sections.** Every section the same length, every
139
+ card grid filled to an even number, every argument given exactly equal
140
+ weight.
141
+ - **The wrap-up paragraph that restates everything.** "In short, …"
142
+ conclusions that add nothing.
143
+ - **Markdown tables as a substitute for prose.** A table that should
144
+ have been three sentences.
145
+
146
+ ### Substance tells
147
+
148
+ Use [`claims.md`](./claims.md) when truth or scope is the question. Here,
149
+ flag only the generated-consensus shape.
150
+
151
+ Do not demand a fight from a changelog, API doc, or reference page. Do
152
+ not demand a dinner-table voice from UI chrome, labels, or error
153
+ strings.
154
+
155
+ - **Claims with no evidence.** "Proven results," "trusted by teams
156
+ everywhere," with zero numbers, names, or examples anywhere.
157
+ - **Fake specificity.** Concrete-sounding but unverifiable details: "a
158
+ clear plan by Friday," "10x your output," deadlines and multipliers
159
+ with no mechanism behind them.
160
+ - **Pain lists that pitch.** Sections framed as the reader's problems
161
+ where half the items are actually the vendor selling ("That's where we
162
+ come in...").
163
+ - **Vague benefits stated as outcomes.** "Save time and money" without
164
+ saying whose time, on what, or how.
165
+ - **Metaphor overextension.** A brand metaphor (forge, bridge, compass,
166
+ engine) ridden through every heading. On a **page**, budget two
167
+ references. A long essay whose subject *is* the metaphor may use more;
168
+ riding it through every heading is still the smell.
169
+ - **Interchangeability test.** Could a competitor swap in their logo and
170
+ ship this copy unchanged? If yes, it says nothing. Pages and posts,
171
+ not reference.
172
+ - **No opinion anywhere.** On essays and thought-leadership, copy that
173
+ never takes a side reads as generated consensus. Not for reference
174
+ docs or release notes.
175
+ - **Perfect politeness.** No edge, no specificity of voice, nothing that
176
+ sounds like one particular person on one particular day. Same scope:
177
+ essays and pages that should have a person. Not man pages.
178
+
179
+ ### The final test
180
+
181
+ For prose aimed at a human reader (pages, essays, notes, posts): read
182
+ the copy aloud. Flag any sentence that a smart person would never
183
+ actually say to a friend across a table. That's the sentence to rewrite.
184
+
185
+ Do not apply the dinner-table test to reference docs, changelogs, or UI
186
+ chrome.
187
+
188
+ ## Output format
189
+
190
+ 1. **Score and verdict** (one paragraph)
191
+ 2. **Flagged items** (quote, tell name, why, suggested rewrite). Evidence,
192
+ not a 40-item homework list.
193
+ 3. **What's working** (quotes to protect)
194
+ 4. **Top 5 fixes by impact**
195
+
196
+ ---
197
+
198
+ ## COPY TO AUDIT
199
+
200
+ [paste copy here]