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 +21 -0
- package/README.md +149 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +81 -0
- package/package.json +56 -0
- package/rules/audit.md +200 -0
- package/rules/claims.md +212 -0
- package/rules/core.md +269 -0
- package/rules/cursor.mdc +83 -0
- package/rules/essays.md +78 -0
- package/rules/landing.md +142 -0
- package/rules/launch.md +93 -0
- package/rules/outreach.md +83 -0
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.
|
package/dist/index.d.ts
ADDED
|
@@ -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]
|