@simpleapps-com/augur-skills 2026.4.8 → 2026.4.10

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.
@@ -11,20 +11,53 @@ Apply these standards to all written output: code comments, docs, specs, PRDs, w
11
11
 
12
12
  Spec: https://www.rfc-editor.org/rfc/rfc2119
13
13
 
14
- Use ALL CAPS when invoking requirement levels:
14
+ **Every directive MUST use an RFC 2119 keyword in ALL CAPS.** This applies to wikis, skills, rules, specs, PRDs, issue acceptance criteria, and any content that tells a reader or agent what to do. Agents weight capitalized keywords more reliably than prose; soft language is silently downgraded or ignored.
15
15
 
16
- - **MUST / REQUIRED / SHALL** absolute requirement, no exceptions
17
- - **MUST NOT / SHALL NOT** absolute prohibition
18
- - **SHOULD / RECOMMENDED** strong recommendation, exceptions need justification
19
- - **SHOULD NOT / NOT RECOMMENDED** discouraged, acceptable with careful reasoning
20
- - **MAY / OPTIONAL** truly optional, implementer's choice
21
-
22
- Use lowercase for casual suggestions: "you should consider..." vs "you SHOULD implement..."
16
+ - **MUST / REQUIRED / SHALL**: absolute requirement, no exceptions
17
+ - **MUST NOT / SHALL NOT**: absolute prohibition
18
+ - **SHOULD / RECOMMENDED**: strong recommendation, exceptions need justification
19
+ - **SHOULD NOT / NOT RECOMMENDED**: discouraged, acceptable with careful reasoning
20
+ - **MAY / OPTIONAL**: truly optional, implementer's choice
23
21
 
24
22
  Decision framework: Does the system break without it? → MUST. Degrades? → SHOULD. No impact? → MAY.
25
23
 
24
+ ### Conversion table: soft language MUST be rewritten
25
+
26
+ | Soft phrase | Rewrite as |
27
+ |---|---|
28
+ | always / never | MUST / MUST NOT |
29
+ | be sure to / make sure | MUST |
30
+ | don't / do not | MUST NOT |
31
+ | don't forget to | MUST |
32
+ | needs to / has to | MUST |
33
+ | try to / aim to | SHOULD |
34
+ | should probably / ideally | SHOULD |
35
+ | can / feel free to | MAY |
36
+ | avoid | SHOULD NOT |
37
+ | remember to | MUST |
38
+
39
+ ### Pre-save checklist
40
+
41
+ Before saving any directive sentence, confirm it contains one of: MUST, MUST NOT, SHOULD, SHOULD NOT, MAY. If it doesn't, rewrite it or demote it to descriptive prose (no directive verb).
42
+
43
+ ### When lowercase is correct
44
+
45
+ Use lowercase "should/must/may" only for descriptive prose, not directives: "the build should finish in under a minute" (observation) vs "the build SHOULD finish in under a minute" (requirement). If the sentence tells someone what to do, it's a directive. Capitalize.
46
+
26
47
  In CLAUDE.md and skill instructions, use "YOU MUST" or "IMPORTANT" as emphasis markers to improve adherence to critical rules.
27
48
 
49
+ ### Reading and complying with RFC 2119
50
+
51
+ Keywords are **binding on the reader**, not suggestions to weigh against convenience. When you encounter a keyword while executing work:
52
+
53
+ - **MUST / MUST NOT / SHALL / SHALL NOT**: absolute. You MUST NOT downgrade a MUST to a SHOULD because it would take longer, because an example in the session shows otherwise, because the codebase seems to do it differently, or because you judge it unnecessary. The writer chose MUST deliberately. If the requirement seems wrong or impossible, STOP and ask the user. Do not silently relax it.
54
+ - **SHOULD / SHOULD NOT**: strong default. Deviation requires a stated justification based on facts of the current situation, not convenience or time pressure. "It would take too long" is never a valid justification.
55
+ - **MAY**: truly optional. Your choice.
56
+
57
+ The failure mode this prevents: an agent reads "tests MUST cover the edge case", finds writing the test tedious, and silently demotes it to "tests should cover the edge case where practical". That is the agent overriding the writer. MUST means MUST. If you can't comply, stop and report. Do not proceed with a weakened version.
58
+
59
+ Prior examples in the current session do NOT override a MUST. If session context shows code that violates a MUST from the wiki/skill/spec, the session code is wrong. Flag it, do not use it as permission to violate the MUST.
60
+
28
61
  ## Token Efficiency
29
62
 
30
63
  Every token costs time, money, and cognitive load. Be concise without losing clarity.
@@ -34,11 +67,11 @@ Every token costs time, money, and cognitive load. Be concise without losing cla
34
67
  2. Use file:line references: `auth.ts:45` not "authentication file line 45"
35
68
  3. Eliminate filler: actually, basically, in order to, it's worth noting
36
69
  4. Choose specific over generic: "Redis cache" not "caching solution"
37
- 5. Bottom Line Up Front lead with the answer, then context
70
+ 5. Bottom Line Up Front: lead with the answer, then context
38
71
 
39
72
  **By audience:**
40
- - **Client-facing (Basecamp)**: Plain language, no jargon, explain impact not implementation. The reader is non-technical write for clarity over brevity.
41
- - **Developer-facing (GitHub issues, PRs, wiki)**: Technical and concise. Convey context for developers and AI agents include file references, reproduction steps, and acceptance criteria.
73
+ - **Client-facing (Basecamp)**: Plain language, no jargon, explain impact not implementation. The reader is non-technical, so write for clarity over brevity.
74
+ - **Developer-facing (GitHub issues, PRs, wiki)**: Technical and concise. Convey context for developers and AI agents. Include file references, reproduction steps, and acceptance criteria.
42
75
  - **Internal (code comments, commits)**: Minimal. Reader has full codebase context.
43
76
 
44
77
  **By format:**
@@ -49,26 +82,62 @@ Every token costs time, money, and cognitive load. Be concise without losing cla
49
82
  - **Reviews**: What changed, not why
50
83
 
51
84
  **When to expand:**
52
- - User stories, onboarding docs, error messages reader has no prior context
53
- - Architecture decisions future developers need the "why"
54
- - External-facing docs audience can't ask follow-up questions
85
+ - User stories, onboarding docs, error messages: reader has no prior context
86
+ - Architecture decisions: future developers need the "why"
87
+ - External-facing docs: audience can't ask follow-up questions
55
88
 
56
89
  **When to cut:**
57
- - Internal specs, tasks, code comments reader has shared context
58
- - Commit messages, PR titles scanning speed matters
90
+ - Internal specs, tasks, code comments: reader has shared context
91
+ - Commit messages, PR titles: scanning speed matters
59
92
  - Anything repeating what the code already says
60
93
 
61
94
  Default to brief. Expand only when the reader cannot infer meaning from context. Two sentences that answer the question beat two pages that fill the context window.
62
95
 
96
+ ## Punctuation: Avoid the Em-Dash
97
+
98
+ The em-dash (`—`) is one of the strongest tells of AI-generated text. LLMs over-produce it dramatically, far beyond how humans punctuate. Readers (especially developers and clients reading client-facing posts) increasingly read em-dashes as "this was written by AI."
99
+
100
+ **SHOULD NOT use em-dashes.** Almost every em-dash can be replaced with simpler, more natural punctuation:
101
+
102
+ | Em-dash usage | Replace with |
103
+ |---|---|
104
+ | Parenthetical aside | Comma, or parentheses if truly aside |
105
+ | Sentence break for emphasis | Period (start a new sentence) |
106
+ | Introducing a list or example | Colon |
107
+ | Connecting two related clauses | Period or semicolon |
108
+ | Range (5—10) | En-dash (`–`) or "to" |
109
+
110
+ Examples:
111
+
112
+ ```
113
+ ❌ The wiki is the spec — the repo is the implementation.
114
+ ✅ The wiki is the spec. The repo is the implementation.
115
+
116
+ ❌ Cross-linking turns files into a knowledge graph — each link is an attention signal.
117
+ ✅ Cross-linking turns files into a knowledge graph. Each link is an attention signal.
118
+
119
+ ❌ Three audiences read the wiki — junior devs, senior devs, and AI agents.
120
+ ✅ Three audiences read the wiki: junior devs, senior devs, and AI agents.
121
+
122
+ ❌ Memory is unauditable — the user cannot easily review what's saved.
123
+ ✅ Memory is unauditable. The user cannot easily review what's saved.
124
+ ```
125
+
126
+ **MAY use em-dashes only when:**
127
+ - Quoting source material that contains them (preserve the original)
128
+ - A genuine parenthetical aside where commas would create ambiguity AND parentheses would be too formal. Even then, prefer restructuring.
129
+
130
+ When editing existing content, replace em-dashes opportunistically. When writing new content, default to periods, commas, and colons. If you find yourself reaching for `—`, that is a signal to break the sentence into two.
131
+
63
132
  ## List Ordering
64
133
 
65
- Lists with no inherent order (deny rules, config arrays, feature lists, bullet-point explanations) MUST be sorted alphabetically. Alphabetical order makes items easier to find and minimizes git diffs new entries slot into a predictable position instead of appending at the end.
134
+ Lists with no inherent order (deny rules, config arrays, feature lists, bullet-point explanations) MUST be sorted alphabetically. Alphabetical order makes items easier to find and minimizes git diffs. New entries slot into a predictable position instead of appending at the end.
66
135
 
67
136
  Applies to JSON arrays, markdown bullet lists, table rows, and any unordered collection.
68
137
 
69
138
  ## Code Style
70
139
 
71
- Use descriptive variable and function names. Abbreviations save keystrokes but cost readability the human reviewing your output MUST be able to understand the code without deciphering names. Short names also collide with terminology in the surrounding conversation and confuse the reader (e.g. using `p` as a path variable while the discussion is about a payment path the reader will read `p` as "payment", not "path").
140
+ Use descriptive variable and function names. Abbreviations save keystrokes but cost readability. The human reviewing your output MUST be able to understand the code without deciphering names. Short names also collide with terminology in the surrounding conversation and confuse the reader (e.g. using `p` as a path variable while the discussion is about a payment path; the reader will read `p` as "payment", not "path").
72
141
 
73
142
  - MUST use full words: `$groupQuantity` not `$gq`, `cartItem` not `ci`, `filePath` not `p`, `response` not `r`
74
143
  - MUST NOT use single-letter variable names except loop counters (`i`, `j`, `k`)