@cratis/pi 3.3.1 → 3.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.
@@ -42,6 +42,38 @@ a trade rather than a free improvement.
42
42
  Check the opening by reading only the first three lines and asking whether they are worth
43
43
  expanding. If the answer depends on the fourth line, the opening is wrong.
44
44
 
45
+ ## Sound like a person talking
46
+
47
+ A post that reads as generated gets scrolled past as generated, however accurate it is. The
48
+ fix is not a smoother sentence. It is writing the way someone who built the thing would
49
+ explain it to a colleague over coffee.
50
+
51
+ - **Open with something that happened.** What shipped, a real number, what you found this
52
+ week. A concrete, checkable event reads as a person reporting. An aphorism about the domain
53
+ ("A skill is just text…") reads as a slogan, however clever it is.
54
+ - **Talk, don't announce.** Contractions, a sentence that starts with "So" or "And", a
55
+ parenthetical aside, a question answered straight away ("Why bother? Because…"). Use them
56
+ the way speech does, now and then, not as a new pattern on every line.
57
+ - **Show the default, then the better way.** Name what the reader, or their coding agent,
58
+ writes today in concrete terms, then the shape you are offering, with real identifiers. A
59
+ before-and-after persuades; adjectives do not.
60
+ - **Sell with specifics.** Enthusiasm is welcome and a list of real capabilities is
61
+ persuasive. What persuades is the command, the count, and the thing the reader can do
62
+ tomorrow, not "powerful", "seamless" or "game-changing".
63
+ - **Say why in the words you would use out loud.** A reason with a stake ("we don't want the
64
+ good version of that to be a paid add-on") beats a principle stated in the abstract.
65
+ - **Put a limit where it applies.** "On macOS and Linux, the installer…" carries the limit
66
+ inside the claim. A closing paragraph labeled "One honest limit:" reads as a disclaimer a
67
+ reviewer bolted on.
68
+ - **Keep the review out of the copy.** Evidence, verification and approval language belongs
69
+ in the review record. A qualifier that protects the writer instead of informing the reader
70
+ makes the post read as noncommittal. Keep every qualification that is true and would
71
+ change what the reader does; drop the rest.
72
+ - **Stop when you are done.** A plain next step ("Links in the comments") ends a post better
73
+ than a tidy closing maxim.
74
+
75
+ The tells to remove in review are listed in the **cratis-writing-voice-and-cadence** skill.
76
+
45
77
  ## Never use Unicode pseudo-formatting
46
78
 
47
79
  Third-party tools offer pseudo-bold and pseudo-italic built from Mathematical Alphanumeric
@@ -66,7 +98,9 @@ said first. A point that needs visual weight belongs in an image with its own al
66
98
 
67
99
  ## Structure that survives a phone
68
100
 
69
- - One idea per post. A feed reader will not assemble two.
101
+ - One thread per post. A feed reader will not assemble two arguments. An announcement may
102
+ still list what shipped as a plain list of short fragments inside that thread, with no
103
+ bolded labels and no slogan per item.
70
104
  - Short paragraphs, one to three sentences, and visibly different from each other in length.
71
105
  A column of identically sized blocks reads as a generated template before it reads as an
72
106
  argument.
@@ -9,6 +9,10 @@
9
9
  { "kind": "skill-contains", "value": "A brief opening sentence is a hook doing its job" },
10
10
  { "kind": "skill-contains", "value": "No external link in the body" },
11
11
  { "kind": "skill-contains", "value": "No engagement bait" },
12
- { "kind": "skill-contains", "value": "unofficial approximations" }
12
+ { "kind": "skill-contains", "value": "unofficial approximations" },
13
+ { "kind": "skill-contains", "value": "Sound like a person talking" },
14
+ { "kind": "skill-contains", "value": "Open with something that happened" },
15
+ { "kind": "skill-contains", "value": "Put a limit where it applies" },
16
+ { "kind": "skill-contains", "value": "Keep the review out of the copy" }
13
17
  ]
14
18
  }
@@ -27,6 +27,11 @@ recurrence.
27
27
  | **"rather than"** | The same correction carried by a different connective |
28
28
  | **Em-dash pivot** | The dash used to swing into a closing clause |
29
29
  | **"That is what X is for"** | A pointer sentence standing in for an explanation |
30
+ | **Punchline fragment** | A two- or three-word sentence landing a slogan: "They run." |
31
+ | **Signpost pair** | "That's the X. Here's the Y." Announcing the structure instead of having one |
32
+ | **Labeled caveat** | "One honest limit:" A limitation parked in its own closing paragraph |
33
+ | **Aphoristic close** | A tidy maxim as the last line, restating what the piece already said |
34
+ | **Reflexive triplet** | Three parallel items where the thought had one or two |
30
35
 
31
36
  To measure rather than guess, count them. Searching for `, not a`, `; ` between two clauses,
32
37
  `rather than`, and an em-dash followed by a short closing clause takes a few minutes across a
@@ -48,9 +53,23 @@ Look at ten pieces together, not one at a time:
48
53
  assertion — "A screen that needs…", "A registration test can…" — is one move. Alternate it
49
54
  with a question, a direct address, a concrete moment, or a number.
50
55
 
56
+ ## Hedging that protects the writer
57
+
58
+ The other common complaint is "wishy-washy": copy so qualified that it never commits to
59
+ anything. It usually comes from review language leaking into the material: evidence,
60
+ verification and approval wording that belongs in the review record, and qualifiers that
61
+ protect the writer without informing the reader.
62
+
63
+ The rule below protects every hedge that is true and would change what the reader does. It
64
+ does not protect review residue. Move the evidence to the review record, state the capability
65
+ plainly, and put a real limit inside the sentence it limits ("on macOS and Linux, …") instead
66
+ of in a separate disclaimer.
67
+
51
68
  ## Address somebody
52
69
 
53
70
  - **Say "you".** Material that tells a reader what to do should address that reader.
71
+ - **A company account is a team talking.** Write "we", the way the people who built it would
72
+ say it, not the company name in the third person.
54
73
  - **Attributed writing should sound attributed.** Prose published under a person's name and
55
74
  written entirely in the impersonal third person reads as documentation wearing a byline.
56
75
  Opinion, judgement and preference belong to the named author and are theirs to give.
@@ -8,6 +8,10 @@
8
8
  { "kind": "skill-contains", "value": "every hedging word" },
9
9
  { "kind": "skill-contains", "value": "First person is not a licence to invent" },
10
10
  { "kind": "skill-contains", "value": "Structural sameness is the more damaging half" },
11
- { "kind": "skill-contains", "value": "Rewrite a tranche, read it, and only then continue" }
11
+ { "kind": "skill-contains", "value": "Rewrite a tranche, read it, and only then continue" },
12
+ { "kind": "skill-contains", "value": "Punchline fragment" },
13
+ { "kind": "skill-contains", "value": "Labeled caveat" },
14
+ { "kind": "skill-contains", "value": "Hedging that protects the writer" },
15
+ { "kind": "skill-contains", "value": "A company account is a team talking" }
12
16
  ]
13
17
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/pi",
3
- "version": "3.3.1",
3
+ "version": "3.4.0",
4
4
  "description": "Configuration-aware Cratis AI integration for Pi",
5
5
  "type": "module",
6
6
  "files": [