@arbiterforge/ca-pi 0.6.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 +661 -0
- package/README.md +558 -0
- package/package.json +35 -0
- package/plugins/ca-pi/CHANGELOG.md +1030 -0
- package/plugins/ca-pi/COMMANDS.md +90 -0
- package/plugins/ca-pi/ORCHESTRATOR.md +159 -0
- package/plugins/ca-pi/SKILLS.md +47 -0
- package/plugins/ca-pi/SPRINT.md +142 -0
- package/plugins/ca-pi/agents/INDEX.md +31 -0
- package/plugins/ca-pi/agents/architecture-drift-reviewer.md +86 -0
- package/plugins/ca-pi/agents/auth-crypto-reviewer.md +60 -0
- package/plugins/ca-pi/agents/backend-author.md +60 -0
- package/plugins/ca-pi/agents/checkpoint-aggregator.md +111 -0
- package/plugins/ca-pi/agents/coverage-auditor.md +71 -0
- package/plugins/ca-pi/agents/decision-challenger.md +116 -0
- package/plugins/ca-pi/agents/dependency-reviewer.md +79 -0
- package/plugins/ca-pi/agents/design-quality-reviewer.md +80 -0
- package/plugins/ca-pi/agents/finding-triage.md +86 -0
- package/plugins/ca-pi/agents/frontend-author.md +64 -0
- package/plugins/ca-pi/agents/grader.md +173 -0
- package/plugins/ca-pi/agents/infra-author.md +64 -0
- package/plugins/ca-pi/agents/map-deps.md +35 -0
- package/plugins/ca-pi/agents/map-structure.md +37 -0
- package/plugins/ca-pi/agents/migration-reviewer.md +65 -0
- package/plugins/ca-pi/agents/scout.md +127 -0
- package/plugins/ca-pi/agents/security-reviewer.md +72 -0
- package/plugins/ca-pi/agents/tribunal-lens-reviewer.md +65 -0
- package/plugins/ca-pi/extensions/codearbiter-child.js +1885 -0
- package/plugins/ca-pi/extensions/codearbiter.js +9802 -0
- package/plugins/ca-pi/generated/command-catalog.json +197 -0
- package/plugins/ca-pi/generated/roles.json +213 -0
- package/plugins/ca-pi/helpers/windows-supervisor.js +205 -0
- package/plugins/ca-pi/hooks/_activationlib.py +196 -0
- package/plugins/ca-pi/hooks/_arbiterstatelib.py +208 -0
- package/plugins/ca-pi/hooks/_babysitlib.py +76 -0
- package/plugins/ca-pi/hooks/_bashguardlib.py +1667 -0
- package/plugins/ca-pi/hooks/_boxlib.py +131 -0
- package/plugins/ca-pi/hooks/_colorlib.py +304 -0
- package/plugins/ca-pi/hooks/_durabilitylib.py +186 -0
- package/plugins/ca-pi/hooks/_entrylib.py +41 -0
- package/plugins/ca-pi/hooks/_fmtlib.py +161 -0
- package/plugins/ca-pi/hooks/_gitexec.py +45 -0
- package/plugins/ca-pi/hooks/_githooks.py +920 -0
- package/plugins/ca-pi/hooks/_gitlib.py +110 -0
- package/plugins/ca-pi/hooks/_hooklib.py +595 -0
- package/plugins/ca-pi/hooks/_host.py +115 -0
- package/plugins/ca-pi/hooks/_intentlib.py +242 -0
- package/plugins/ca-pi/hooks/_ledgerlib.py +1035 -0
- package/plugins/ca-pi/hooks/_metricslib.py +709 -0
- package/plugins/ca-pi/hooks/_pathnorm.py +74 -0
- package/plugins/ca-pi/hooks/_planfilelib.py +664 -0
- package/plugins/ca-pi/hooks/_previewlib.py +193 -0
- package/plugins/ca-pi/hooks/_protectedlib.py +312 -0
- package/plugins/ca-pi/hooks/_protectedstatelib.py +411 -0
- package/plugins/ca-pi/hooks/_provenancelib.py +971 -0
- package/plugins/ca-pi/hooks/_prunelib.py +1398 -0
- package/plugins/ca-pi/hooks/_prunepolicy.py +235 -0
- package/plugins/ca-pi/hooks/_readinjectlib.py +1080 -0
- package/plugins/ca-pi/hooks/_releaselib.py +2657 -0
- package/plugins/ca-pi/hooks/_scopelib.py +262 -0
- package/plugins/ca-pi/hooks/_segmentslib.py +278 -0
- package/plugins/ca-pi/hooks/_sensitivelib.py +270 -0
- package/plugins/ca-pi/hooks/_sessionlib.py +78 -0
- package/plugins/ca-pi/hooks/_sloplib.py +244 -0
- package/plugins/ca-pi/hooks/_standuplib.py +214 -0
- package/plugins/ca-pi/hooks/_subagentslib.py +219 -0
- package/plugins/ca-pi/hooks/_taskboardlib.py +1088 -0
- package/plugins/ca-pi/hooks/_updatelib.py +278 -0
- package/plugins/ca-pi/hooks/babysit.py +47 -0
- package/plugins/ca-pi/hooks/boardsync.py +129 -0
- package/plugins/ca-pi/hooks/doctor.py +420 -0
- package/plugins/ca-pi/hooks/git-enforce.py +325 -0
- package/plugins/ca-pi/hooks/hostapi.py +460 -0
- package/plugins/ca-pi/hooks/init-codearbiter.py +225 -0
- package/plugins/ca-pi/hooks/metrics.py +62 -0
- package/plugins/ca-pi/hooks/migration-pass.py +129 -0
- package/plugins/ca-pi/hooks/pi-bridge.py +543 -0
- package/plugins/ca-pi/hooks/post-write-edit.py +231 -0
- package/plugins/ca-pi/hooks/pre-bash.py +90 -0
- package/plugins/ca-pi/hooks/pre-edit.py +284 -0
- package/plugins/ca-pi/hooks/pre-read.py +81 -0
- package/plugins/ca-pi/hooks/pre-write.py +217 -0
- package/plugins/ca-pi/hooks/preview.py +69 -0
- package/plugins/ca-pi/hooks/prune-transcript.py +232 -0
- package/plugins/ca-pi/hooks/releasehash.py +216 -0
- package/plugins/ca-pi/hooks/security-pass.py +139 -0
- package/plugins/ca-pi/hooks/session-start.py +1218 -0
- package/plugins/ca-pi/hooks/statusline.py +736 -0
- package/plugins/ca-pi/hooks/taskwrite.py +351 -0
- package/plugins/ca-pi/hooks/update-refresh.py +51 -0
- package/plugins/ca-pi/hooks/wire-statusline.py +435 -0
- package/plugins/ca-pi/includes/anti-slop-design/INDEX.md +55 -0
- package/plugins/ca-pi/includes/anti-slop-design/color.md +43 -0
- package/plugins/ca-pi/includes/anti-slop-design/core.md +244 -0
- package/plugins/ca-pi/includes/anti-slop-design/images.md +32 -0
- package/plugins/ca-pi/includes/anti-slop-design/layout.md +45 -0
- package/plugins/ca-pi/includes/anti-slop-design/medium-cli.md +39 -0
- package/plugins/ca-pi/includes/anti-slop-design/medium-dataviz.md +43 -0
- package/plugins/ca-pi/includes/anti-slop-design/medium-diagram.md +35 -0
- package/plugins/ca-pi/includes/anti-slop-design/medium-documents.md +70 -0
- package/plugins/ca-pi/includes/anti-slop-design/medium-slides.md +30 -0
- package/plugins/ca-pi/includes/anti-slop-design/medium-web.md +39 -0
- package/plugins/ca-pi/includes/anti-slop-design/typography.md +51 -0
- package/plugins/ca-pi/includes/author-tdd-workflow.md +14 -0
- package/plugins/ca-pi/includes/compaction-charter.md +16 -0
- package/plugins/ca-pi/includes/cut-docs.md +16 -0
- package/plugins/ca-pi/includes/dev-mode.md +30 -0
- package/plugins/ca-pi/includes/farm.md +237 -0
- package/plugins/ca-pi/includes/fresh-verification.md +14 -0
- package/plugins/ca-pi/includes/harvest.md +69 -0
- package/plugins/ca-pi/includes/maturity-coverage.md +102 -0
- package/plugins/ca-pi/includes/pi-host-notes.md +69 -0
- package/plugins/ca-pi/includes/redirect.md +69 -0
- package/plugins/ca-pi/includes/reference-map.md +22 -0
- package/plugins/ca-pi/includes/review-matrix.md +14 -0
- package/plugins/ca-pi/includes/reviewer-contract.md +53 -0
- package/plugins/ca-pi/includes/routing-table.md +47 -0
- package/plugins/ca-pi/includes/security-gate-record.md +22 -0
- package/plugins/ca-pi/includes/smarts/core.md +90 -0
- package/plugins/ca-pi/includes/smarts/decision-log-format.md +56 -0
- package/plugins/ca-pi/routines/INDEX.md +32 -0
- package/plugins/ca-pi/routines/brainstorming/SKILL.md +122 -0
- package/plugins/ca-pi/routines/commit-gate/SKILL.md +151 -0
- package/plugins/ca-pi/routines/context-check/SKILL.md +85 -0
- package/plugins/ca-pi/routines/context-creation/SKILL.md +171 -0
- package/plugins/ca-pi/routines/crypto-compliance/SKILL.md +41 -0
- package/plugins/ca-pi/routines/debug/SKILL.md +99 -0
- package/plugins/ca-pi/routines/decision-lifecycle/SKILL.md +104 -0
- package/plugins/ca-pi/routines/decision-lifecycle/references/adr-template.md +74 -0
- package/plugins/ca-pi/routines/decision-variance/SKILL.md +147 -0
- package/plugins/ca-pi/routines/decompose/SKILL.md +168 -0
- package/plugins/ca-pi/routines/dispatching-parallel-agents/SKILL.md +76 -0
- package/plugins/ca-pi/routines/executing-plans/SKILL.md +83 -0
- package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +91 -0
- package/plugins/ca-pi/routines/post-merge-cleanup/SKILL.md +233 -0
- package/plugins/ca-pi/routines/refactor/SKILL.md +91 -0
- package/plugins/ca-pi/routines/release/SKILL.md +315 -0
- package/plugins/ca-pi/routines/secret-handling/SKILL.md +67 -0
- package/plugins/ca-pi/routines/security-architecture/SKILL.md +63 -0
- package/plugins/ca-pi/routines/skill-author/SKILL.md +108 -0
- package/plugins/ca-pi/routines/skill-author/references/skill-template.md +58 -0
- package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +149 -0
- package/plugins/ca-pi/routines/subagent-driven-development/references/farm-dispatch.md +145 -0
- package/plugins/ca-pi/routines/tdd/SKILL.md +139 -0
- package/plugins/ca-pi/routines/tribunal/SKILL.md +109 -0
- package/plugins/ca-pi/routines/tribunal/references/ai-markers.md +29 -0
- package/plugins/ca-pi/routines/tribunal/references/cost-and-models.md +64 -0
- package/plugins/ca-pi/routines/tribunal/references/finding-record.md +27 -0
- package/plugins/ca-pi/routines/tribunal/references/issue-filing.md +47 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/appsec.md +22 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/architecture.md +23 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/coverage.md +20 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/infra.md +24 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/migration.md +22 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/observability.md +21 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/performance.md +22 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/reliability.md +23 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/secrets-supply.md +22 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/test-fidelity.md +24 -0
- package/plugins/ca-pi/routines/tribunal/references/lenses/typesafety.md +21 -0
- package/plugins/ca-pi/routines/tribunal/references/report.md +19 -0
- package/plugins/ca-pi/routines/tribunal/references/schemas.md +58 -0
- package/plugins/ca-pi/routines/tribunal/references/telemetry.md +28 -0
- package/plugins/ca-pi/routines/tribunal/references/triage.md +53 -0
- package/plugins/ca-pi/routines/using-git-worktrees/SKILL.md +85 -0
- package/plugins/ca-pi/routines/writing-plans/SKILL.md +129 -0
- package/plugins/ca-pi/routines/writing-plans/references/farm-plan.md +50 -0
- package/plugins/ca-pi/skills/ca-add-dep/SKILL.md +88 -0
- package/plugins/ca-pi/skills/ca-adr/SKILL.md +30 -0
- package/plugins/ca-pi/skills/ca-adr-status/SKILL.md +30 -0
- package/plugins/ca-pi/skills/ca-arbiter/SKILL.md +36 -0
- package/plugins/ca-pi/skills/ca-audit/SKILL.md +51 -0
- package/plugins/ca-pi/skills/ca-btw/SKILL.md +23 -0
- package/plugins/ca-pi/skills/ca-checkpoint/SKILL.md +50 -0
- package/plugins/ca-pi/skills/ca-chore/SKILL.md +58 -0
- package/plugins/ca-pi/skills/ca-cleanup/SKILL.md +55 -0
- package/plugins/ca-pi/skills/ca-commands/SKILL.md +21 -0
- package/plugins/ca-pi/skills/ca-commit/SKILL.md +27 -0
- package/plugins/ca-pi/skills/ca-conflict/SKILL.md +61 -0
- package/plugins/ca-pi/skills/ca-context-check/SKILL.md +32 -0
- package/plugins/ca-pi/skills/ca-create-context/SKILL.md +32 -0
- package/plugins/ca-pi/skills/ca-debug/SKILL.md +42 -0
- package/plugins/ca-pi/skills/ca-decompose/SKILL.md +30 -0
- package/plugins/ca-pi/skills/ca-dev/SKILL.md +42 -0
- package/plugins/ca-pi/skills/ca-doctor/SKILL.md +44 -0
- package/plugins/ca-pi/skills/ca-feature/SKILL.md +105 -0
- package/plugins/ca-pi/skills/ca-fix/SKILL.md +42 -0
- package/plugins/ca-pi/skills/ca-init/SKILL.md +56 -0
- package/plugins/ca-pi/skills/ca-metrics/SKILL.md +80 -0
- package/plugins/ca-pi/skills/ca-new-skill/SKILL.md +34 -0
- package/plugins/ca-pi/skills/ca-override/SKILL.md +72 -0
- package/plugins/ca-pi/skills/ca-pr/SKILL.md +61 -0
- package/plugins/ca-pi/skills/ca-preview/SKILL.md +86 -0
- package/plugins/ca-pi/skills/ca-prune/SKILL.md +100 -0
- package/plugins/ca-pi/skills/ca-reconcile/SKILL.md +43 -0
- package/plugins/ca-pi/skills/ca-refactor/SKILL.md +43 -0
- package/plugins/ca-pi/skills/ca-release/SKILL.md +57 -0
- package/plugins/ca-pi/skills/ca-review/SKILL.md +63 -0
- package/plugins/ca-pi/skills/ca-spike/SKILL.md +41 -0
- package/plugins/ca-pi/skills/ca-sprint/SKILL.md +44 -0
- package/plugins/ca-pi/skills/ca-standup/SKILL.md +112 -0
- package/plugins/ca-pi/skills/ca-status/SKILL.md +56 -0
- package/plugins/ca-pi/skills/ca-task/SKILL.md +61 -0
- package/plugins/ca-pi/skills/ca-threat-model/SKILL.md +45 -0
- package/plugins/ca-pi/skills/ca-tribunal/SKILL.md +44 -0
- package/plugins/ca-pi/skills/ca-watch/SKILL.md +78 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# anti-slop-design · core
|
|
2
|
+
|
|
3
|
+
The always-loaded decision layer. Load this for any design-bearing deliverable, then add the craft
|
|
4
|
+
and medium leaves the Design Read calls for.
|
|
5
|
+
|
|
6
|
+
> Section numbering is shared across the whole bundle, so this file skips some numbers on purpose:
|
|
7
|
+
> §4 typography, §5 color, §6 layout, §7 medium playbooks, and §9 images live in their own leaves.
|
|
8
|
+
> core owns §0-§3 (decision layer), §8 (universal tells), and §10 (core pre-flight).
|
|
9
|
+
|
|
10
|
+
## 0. Why slop happens (the one idea that explains every rule)
|
|
11
|
+
|
|
12
|
+
A language model produces output by regressing toward the statistical center of its training
|
|
13
|
+
distribution. For design, that center is the average of everything published, and that average is
|
|
14
|
+
generic, templated, and forgettable. "AI-slop" is not a style. It is the absence of a decision: the
|
|
15
|
+
model defaulting to the mean instead of choosing for *this* brief, *this* audience, *this* artifact.
|
|
16
|
+
|
|
17
|
+
Every rule in this bundle forces a deliberate move off the center. When you reach for the first thing
|
|
18
|
+
that "looks designed," you are reaching for the center. Excellence lives in the specific, the
|
|
19
|
+
considered, and the slightly uncomfortable choice a generic generator would never make.
|
|
20
|
+
|
|
21
|
+
Two corollaries that govern everything else:
|
|
22
|
+
|
|
23
|
+
- **A default chosen without a reason is a tell.** Inter, a centered hero, three equal cards, a purple
|
|
24
|
+
gradient, skill bars on a resume, a pie chart: none is wrong in isolation. They are wrong as
|
|
25
|
+
*reflexes*. If you cannot say in one sentence why a choice fits this brief, it is slop.
|
|
26
|
+
- **Consistency is cheap credibility; novelty is expensive credibility.** Locking one accent color,
|
|
27
|
+
one corner radius, one type system costs nothing and reads as intentional. A striking layout costs
|
|
28
|
+
judgment and can fail. Spend the cheap credibility everywhere; spend the expensive kind only where
|
|
29
|
+
the brief earns it.
|
|
30
|
+
|
|
31
|
+
## 1. The Prime Directive: read the brief before you generate
|
|
32
|
+
|
|
33
|
+
Before producing anything, establish a one-line **Design Read**. Do it every time, internally.
|
|
34
|
+
Surface it only when it helps the user follow your choices; in a mid-task or CLI context a silent read
|
|
35
|
+
usually beats a printed preamble.
|
|
36
|
+
|
|
37
|
+
> "Reading this as a `<medium>` for `<audience>`, in a `<register>` register, leaning toward a
|
|
38
|
+
> `<aesthetic family>`."
|
|
39
|
+
|
|
40
|
+
Read the signals in order: **medium** (doc / chart / slide / resume / web / report), **audience**
|
|
41
|
+
(who decides, who scans, who parses it with software), **register** (institutional vs. expressive),
|
|
42
|
+
**existing assets** (brand color, logo, type, prior templates), **quiet constraints** (accessibility,
|
|
43
|
+
regulated industry, ATS, projection, print). Constraints override taste.
|
|
44
|
+
|
|
45
|
+
If the read genuinely diverges, ask **one** question, never a multi-question dump. If you can infer
|
|
46
|
+
confidently, declare the read and proceed.
|
|
47
|
+
|
|
48
|
+
## 2. The Dials
|
|
49
|
+
|
|
50
|
+
After the read, set four dials. Every density, layout, and emphasis decision in the bundle is gated by
|
|
51
|
+
them. Use these names; do not invent aliases.
|
|
52
|
+
|
|
53
|
+
- **`STRUCTURE`** (1-10): 1 = rigid symmetry and grid, 10 = asymmetric and expressive.
|
|
54
|
+
- **`DENSITY`** (1-10): 1 = airy/gallery, 10 = packed/cockpit.
|
|
55
|
+
- **`REGISTER`** (1-10): 1 = austere/institutional/legal, 10 = playful/consumer/brand.
|
|
56
|
+
- **`MOTION`** (1-10): *interactive media only*. 1 = static, 10 = cinematic. **N/A and ignored for any
|
|
57
|
+
printed or static artifact** (PDF, docx, slide export, resume).
|
|
58
|
+
|
|
59
|
+
### 2.A Inference from the read
|
|
60
|
+
|
|
61
|
+
| Brief reads as | STRUCTURE | DENSITY | REGISTER | MOTION |
|
|
62
|
+
|---|---|---|---|---|
|
|
63
|
+
| Legal / compliance / regulated / public-sector | 2-3 | 4-6 | 1-2 | 1-2 |
|
|
64
|
+
| Technical review / due diligence / whitepaper | 3-5 | 6-8 | 2-4 | 2-3 |
|
|
65
|
+
| Executive brief / board deck | 4-6 | 3-5 | 3-5 | 3-5 |
|
|
66
|
+
| Resume / CV | 3-5 | 5-7 | 2-4 | n/a |
|
|
67
|
+
| Dashboard / analytics | 3-5 | 7-9 | 3-5 | 3-6 |
|
|
68
|
+
| Editorial / report-as-narrative | 5-7 | 3-5 | 4-6 | 3-5 |
|
|
69
|
+
| Consumer / product landing | 7-9 | 3-5 | 6-8 | 6-8 |
|
|
70
|
+
| Agency / portfolio / experimental | 8-10 | 3-4 | 7-9 | 7-10 |
|
|
71
|
+
|
|
72
|
+
The values are a starting point, not a script. A regulated brief with a strong brand can still earn
|
|
73
|
+
REGISTER 4. The point is to choose, and to be able to defend the choice.
|
|
74
|
+
|
|
75
|
+
### 2.B What each dial actually changes
|
|
76
|
+
|
|
77
|
+
A dial is useless if it does not change an output. Concretely:
|
|
78
|
+
|
|
79
|
+
- **`STRUCTURE`** drives composition: low → centered, symmetric, single grid; high → asymmetric, split
|
|
80
|
+
composition, deliberate off-grid moments. Above 4, drop the centered-everything default (see layout
|
|
81
|
+
§6.B).
|
|
82
|
+
- **`DENSITY`** drives whitespace and elements-per-screen: low → generous margins, few items, card
|
|
83
|
+
chrome; high → tight rows, more per screen, drop card chrome and let data breathe (layout §6.C).
|
|
84
|
+
- **`REGISTER`** drives tone of type, color, and copy: low → restrained faces, single muted accent,
|
|
85
|
+
literal copy; high → expressive display type, a bolder accent, more voice.
|
|
86
|
+
- **`MOTION`** drives animation budget on interactive media only: low → state-change feedback only;
|
|
87
|
+
high → composed reveals and transitions. Ignored for static artifacts.
|
|
88
|
+
|
|
89
|
+
### 2.C When dials conflict
|
|
90
|
+
|
|
91
|
+
Resolve in this order: **quiet constraints (accessibility, ATS, print, regulated) > REGISTER > the
|
|
92
|
+
rest.** A legal brief with a strong brand (high REGISTER pull, low REGISTER constraint) resolves
|
|
93
|
+
toward the constraint: restrained, with the brand expressed in the one accent and the type, not in
|
|
94
|
+
layout fireworks.
|
|
95
|
+
|
|
96
|
+
## 3. Universal anti-slop laws (every medium, no exceptions)
|
|
97
|
+
|
|
98
|
+
These apply to a resume, a chart, a slide, and a landing page equally.
|
|
99
|
+
|
|
100
|
+
### 3.A The em-dash rule
|
|
101
|
+
|
|
102
|
+
Banned: the em-dash (`—`) and the en-dash (`–`) used as a **sentence-level separator in generated
|
|
103
|
+
prose** — headlines, body, captions, labels, button text, slide titles, marketing copy. That specific
|
|
104
|
+
use is the single highest-signal tell of machine-generated text in current testing, and it is the
|
|
105
|
+
first thing a reader's pattern-matcher flags. Restructure instead: split into two sentences with a
|
|
106
|
+
period, use a comma, parentheses, or a colon.
|
|
107
|
+
|
|
108
|
+
This is a scoped ban, not a blanket glyph ban. The following are **exempt** and never findings:
|
|
109
|
+
|
|
110
|
+
- **Quoted content** — a quote, citation, or excerpt from a user, source, or document that itself uses
|
|
111
|
+
the dash.
|
|
112
|
+
- **Code and string literals** — anything inside code blocks, identifiers, or literal strings.
|
|
113
|
+
- **Math** — minus sign, and en-dash where it is correct typography.
|
|
114
|
+
- **File paths, URLs, and identifiers** that contain the character.
|
|
115
|
+
- **Proper nouns** — a brand, product, or publication title that legitimately contains a dash.
|
|
116
|
+
- **Numeric and date ranges** where the en-dash is correct typography (`pp. 12–18`, `2019–2024`).
|
|
117
|
+
|
|
118
|
+
The reviewer BLOCKs only on the banned case (a dash as a prose sentence-separator); an exempt
|
|
119
|
+
occurrence is not a finding. A stray separator dash in otherwise-fine copy is a fix, not a
|
|
120
|
+
catastrophe — restructure it and move on.
|
|
121
|
+
|
|
122
|
+
### 3.B Copy self-audit (read every visible string before shipping)
|
|
123
|
+
|
|
124
|
+
Flag and rewrite any string that is:
|
|
125
|
+
|
|
126
|
+
- **A filler verb or empty intensifier, in metaphorical or marketing use.** Flagged: *elevate,
|
|
127
|
+
unleash, seamless, seamlessly, leverage, revolutionize, empower, streamline, robust, cutting-edge,
|
|
128
|
+
next-gen, game-changing, supercharge, unlock, harness, navigate, dive into, delve, tapestry, realm,
|
|
129
|
+
landscape, in today's fast-paced world.* Replace with concrete verbs that say what happens.
|
|
130
|
+
**Literal and technical uses pass and are never findings:** "robust error handling," "navigate to
|
|
131
|
+
`/home`" or `router.navigate`, a test "harness," "leverage" in its finance sense, "unlock" a screen
|
|
132
|
+
or feature, "the deployment landscape" as a literal map of environments. The tell is the empty
|
|
133
|
+
marketing gesture, not the word.
|
|
134
|
+
- **A rhetorical AI cadence.** The "it's not just X, it's Y" construction; "whether you're A, B, or C";
|
|
135
|
+
opening on a rhetorical question; the rule-of-three on every list. One is fine. The *pattern*
|
|
136
|
+
repeating is the tell.
|
|
137
|
+
- **Monotone rhythm.** AI prose tends toward sentences of even, medium length. Vary it. A short
|
|
138
|
+
sentence after two long ones reads human. Uniform rhythm reads generated.
|
|
139
|
+
- **A fabricated-precise number** (see 3.D).
|
|
140
|
+
- **Grammatically broken or hallucinated cleverness.** Wordplay that does not parse, forced metaphors,
|
|
141
|
+
fake-humble craftsman labels ("field notes," "on our bench," "loose plates"). When unsure whether a
|
|
142
|
+
phrase earns its place, use the plain functional version. Boring-but-correct beats clever-but-wrong.
|
|
143
|
+
|
|
144
|
+
### 3.C Generic-placeholder ban
|
|
145
|
+
|
|
146
|
+
- **Names:** never "John Doe," "Jane Doe," "Sarah Chen," "Jack Su." Use realistic, locale-appropriate
|
|
147
|
+
names. A deliberately-sample identity is fine when **marked** the same way a sample number is (see
|
|
148
|
+
3.D): an explicit `example`/`sample` tag or a `<!-- sample -->` comment. The tell is a generic
|
|
149
|
+
placeholder shipping as if it were real; a marked sample is not.
|
|
150
|
+
- **Brands:** never "Acme," "Nexus," "SmartFlow," "Cloudly," "TechCorp." Invent names that sound real
|
|
151
|
+
for the sector, or use real ones where appropriate. Mark sample brands as above.
|
|
152
|
+
- **Avatars/logos:** no egg-silhouette avatars, no generic user-icon glyphs, no plain text wordmarks
|
|
153
|
+
where a real logo or a designed monogram belongs.
|
|
154
|
+
- **Stock clichés:** no handshake photo, no diverse-team-at-whiteboard, no glowing-brain-AI image, no
|
|
155
|
+
arrow-hitting-target.
|
|
156
|
+
|
|
157
|
+
### 3.D Data and number integrity (this is correctness, not taste)
|
|
158
|
+
|
|
159
|
+
Fabricated precision is a credibility failure, and in a technical review or report it can be a factual
|
|
160
|
+
one.
|
|
161
|
+
|
|
162
|
+
- Numbers like `92%`, `4.1x`, `47.2%`, `5.8mm` are acceptable **only** if they come from real data, or
|
|
163
|
+
are explicitly marked illustrative (`example`, `sample`, `<!-- mock -->`).
|
|
164
|
+
- Do not invent benchmark figures, spec values, or metrics to make a page "feel precise." If you do
|
|
165
|
+
not have the number, say so or omit it.
|
|
166
|
+
- Real data is messy. **When simulating** realistic data, avoid suspiciously round figures (`50%`,
|
|
167
|
+
`99.99%`, `1,000,000`); real distributions are lumpy. This heuristic applies only to invented or
|
|
168
|
+
illustrative data. A real round number (a genuine 50/50 split, a real 1,000,000 row count, an SLA
|
|
169
|
+
literally specified as 99.99%) is fine and is never a finding.
|
|
170
|
+
- Label estimates as estimates. A reader who later finds an invented number stops trusting the whole
|
|
171
|
+
document.
|
|
172
|
+
|
|
173
|
+
### 3.E The four consistency locks
|
|
174
|
+
|
|
175
|
+
Pick once, apply everywhere, audit before shipping. These are the **default**; a high-`STRUCTURE` or
|
|
176
|
+
high-`REGISTER` brief (portfolio, editorial, experimental) may override a lock where the expressive
|
|
177
|
+
move is the point — a deliberate second accent, a composed theme switch — provided the override is a
|
|
178
|
+
documented rule applied consistently, not a one-off accident. State the override as a visible
|
|
179
|
+
artifact-level note (a design-intent comment or a stated convention) so a reviewer can verify it, the
|
|
180
|
+
same discipline used to mark a sample value in 3.C/3.D. The lock is the floor; breaking it costs the
|
|
181
|
+
expensive credibility from §0, so spend it only where the brief earns it.
|
|
182
|
+
|
|
183
|
+
1. **Color lock.** One accent color across the whole artifact. A warm-grey report does not grow a blue
|
|
184
|
+
callout box on page 7. A chart palette does not change between figures.
|
|
185
|
+
2. **Shape lock.** One corner-radius / border treatment system. Sharp, soft, or pill, chosen once.
|
|
186
|
+
Mixed only under a documented rule applied everywhere.
|
|
187
|
+
3. **Type lock.** One display family, one body family, optionally one mono. Emphasis comes from weight
|
|
188
|
+
and italic of the *same* family, never from a foreign font for one word.
|
|
189
|
+
4. **Theme lock.** One light/dark/print theme for the whole artifact. No section inverts mid-scroll
|
|
190
|
+
unless it is a single, deliberate, composed switch.
|
|
191
|
+
|
|
192
|
+
### 3.F Cut ruthlessly
|
|
193
|
+
|
|
194
|
+
Slop is often just **too much**. Every section earns its place or is deleted. A 20-row table, a
|
|
195
|
+
12-bullet slide, a 6-paragraph hero, a 30-item award list: these are layout failures, not content. The
|
|
196
|
+
fix is a different component (group, summarize, link to detail), not a longer list.
|
|
197
|
+
|
|
198
|
+
## 8. Universal AI-tells (cross-medium quick-scan)
|
|
199
|
+
|
|
200
|
+
Each is banned *as a default*; the brief can override any with a reason. Medium-specific tells live in
|
|
201
|
+
the medium leaves.
|
|
202
|
+
|
|
203
|
+
**Punctuation and copy**
|
|
204
|
+
- Em-dash / en-dash as a prose sentence-separator (3.A): banned, with the 3.A exemptions.
|
|
205
|
+
- Filler verbs in marketing use and "fast-paced world" cadence (3.B).
|
|
206
|
+
- "It's not just X, it's Y"; "whether you're A or B"; rhetorical-question openers; rule-of-three on
|
|
207
|
+
everything.
|
|
208
|
+
- Generic names and brands: John/Jane Doe, Acme, Nexus, TechCorp (3.C).
|
|
209
|
+
- Fake-precise numbers (3.D); suspiciously round numbers.
|
|
210
|
+
- Generic step labels: "Step 1 / Phase 1 / Stage 1." The step content is the label.
|
|
211
|
+
- Performative-craftsman section labels: "field notes," "on the bench," "loose plates," "quietly
|
|
212
|
+
trusted by."
|
|
213
|
+
|
|
214
|
+
**Visual (cross-medium)**
|
|
215
|
+
- AI-purple / blue glow gradient; neon outer glows.
|
|
216
|
+
- Centered-everything composition.
|
|
217
|
+
- Pure `#000` / `#fff` large fills.
|
|
218
|
+
- Generic stock clichés (handshake, whiteboard team, glowing brain).
|
|
219
|
+
- Egg-silhouette avatars and generic user-icon glyphs.
|
|
220
|
+
- Rainbow categorical palettes.
|
|
221
|
+
|
|
222
|
+
**Structural**
|
|
223
|
+
- Eyebrow label above every section.
|
|
224
|
+
- Every section the same layout family.
|
|
225
|
+
- Decorative status dots before every list item / nav link.
|
|
226
|
+
- Locale/time/weather atmospheric strips with no real function.
|
|
227
|
+
- "Scroll" cues and version stamps (`v0.6`, `BETA`) used as decoration.
|
|
228
|
+
- Section-number eyebrows (`00 / INDEX`, `001 · Capabilities`).
|
|
229
|
+
|
|
230
|
+
## 10. Core pre-flight (run before delivering anything)
|
|
231
|
+
|
|
232
|
+
If a box cannot be honestly ticked, it is not done. Each medium leaf adds its own slice.
|
|
233
|
+
|
|
234
|
+
- [ ] Design Read established (medium, audience, register, aesthetic family); internal if not surfaced.
|
|
235
|
+
- [ ] Dial values chosen with a reason, not silently defaulted.
|
|
236
|
+
- [ ] **No em-dash / en-dash used as a prose sentence-separator** (the 3.A exemptions are fine).
|
|
237
|
+
- [ ] Copy self-audit done: no marketing-filler verbs, no AI cadence, no monotone rhythm, no
|
|
238
|
+
hallucinated cleverness.
|
|
239
|
+
- [ ] No generic placeholder names, brands, avatars, or stock clichés.
|
|
240
|
+
- [ ] Every number is real, marked illustrative, or omitted. No fabricated precision.
|
|
241
|
+
- [ ] Color lock, shape lock, type lock, theme lock all hold across the whole artifact.
|
|
242
|
+
- [ ] First impression delivers the point in the space available.
|
|
243
|
+
- [ ] Content cut ruthlessly; no data-dump where a different component belongs.
|
|
244
|
+
- [ ] No universal tell (§8) ships without a brief-driven reason.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# anti-slop-design · images
|
|
2
|
+
|
|
3
|
+
Load when the artifact carries visual assets.
|
|
4
|
+
|
|
5
|
+
Scope: this leaf governs **visually-composed artifacts** (web/marketing pages, slides, and reports
|
|
6
|
+
that are designed rather than text-first). It does NOT mandate images for text-first deliverables — a
|
|
7
|
+
whitepaper, a legal memo, a resume (which often wants no photo at all), CLI output, a PR description,
|
|
8
|
+
or a CHANGELOG are complete without imagery. Load it only when the INDEX map routes your medium here.
|
|
9
|
+
|
|
10
|
+
## 9. Images and visual assets
|
|
11
|
+
|
|
12
|
+
- **Generate or source real images first.** If an image-generation tool is available, use it for
|
|
13
|
+
section-specific assets at the right aspect ratio. Otherwise use a real photo source (a placeholder
|
|
14
|
+
service, licensed stock, brand assets). Check provenance and license before using a sourced image:
|
|
15
|
+
prefer assets whose license permits the use, consistent with the project's dependency-provenance
|
|
16
|
+
posture. Do not embed an image of unknown origin.
|
|
17
|
+
- **A visually-composed artifact needs real images.** For a designed page or deck, a pure-text result
|
|
18
|
+
is not minimalism; it is incomplete. A restrained piece still wants at least one or two real images.
|
|
19
|
+
(This does not apply to the text-first deliverables named in the scope note above.)
|
|
20
|
+
- **Real logos** for credibility (icon libraries or generated monograms), rendered correctly in both
|
|
21
|
+
light and dark, logos only with no category labels.
|
|
22
|
+
- **Last resort:** if no image is possible, leave a clearly labeled placeholder slot and tell the user
|
|
23
|
+
exactly what is needed and at what size. Do not fill the gap with fake-div screenshots or hand-drawn
|
|
24
|
+
decorative SVG.
|
|
25
|
+
|
|
26
|
+
## Tells (images)
|
|
27
|
+
|
|
28
|
+
Generic stock clichés and egg-silhouette avatars live in core §8. Image-specific tells:
|
|
29
|
+
|
|
30
|
+
- Fake-div screenshots; hand-rolled decorative SVG as a substitute for real imagery.
|
|
31
|
+
- Plain text wordmarks where a real logo or designed monogram belongs.
|
|
32
|
+
- A sourced image with no checked license or provenance.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# anti-slop-design · layout
|
|
2
|
+
|
|
3
|
+
Load it for any medium whose row in the INDEX load map names it. Medium-neutral; the medium leaves add
|
|
4
|
+
specifics.
|
|
5
|
+
|
|
6
|
+
## 6.A The first-impression law
|
|
7
|
+
|
|
8
|
+
Every artifact has a first screen that decides whether the reader continues: the first page of a
|
|
9
|
+
report, the top of a resume, the first slide, the hero of a page, the headline chart of a dashboard.
|
|
10
|
+
**That first impression must deliver the core value in the space available without forcing a scroll or
|
|
11
|
+
a page-turn to find the point.** If the content does not fit, cut copy or reduce scale; do not let it
|
|
12
|
+
overflow and bury the point.
|
|
13
|
+
|
|
14
|
+
## 6.B Structure and rhythm
|
|
15
|
+
|
|
16
|
+
- **Grid over ad-hoc math.** Use a real grid system; do not hand-tune percentage widths until things
|
|
17
|
+
"look about right."
|
|
18
|
+
- **Anti-center bias when `STRUCTURE > 4`.** Centered-everything is the safe default and reads generic.
|
|
19
|
+
Use asymmetry, split composition, deliberate white space. Centered is fine for a manifesto or a
|
|
20
|
+
single-message moment where the message *is* the design.
|
|
21
|
+
- **No three-equal-cards reflex.** The identical-three-feature-cards row is the canonical slop layout.
|
|
22
|
+
Vary cell sizes, alternate composition, or use a different family.
|
|
23
|
+
- **Layout-repetition cap.** A layout family appears at most a couple of times per artifact. Eight
|
|
24
|
+
sections that all look the same is templated. Aim for at least four distinct families across a long
|
|
25
|
+
page or report.
|
|
26
|
+
- **Eyebrow restraint.** The small uppercase wide-tracked label above every section header is a
|
|
27
|
+
templated rhythm tell. Maximum one per three sections. Usually the headline alone is enough; the
|
|
28
|
+
section's position already categorizes it.
|
|
29
|
+
- **No floating corner sub-text** and no "big headline left / tiny explainer paragraph right"
|
|
30
|
+
split-header as a reflex. If you need a headline and an explainer, stack them.
|
|
31
|
+
|
|
32
|
+
## 6.C Cards and elevation
|
|
33
|
+
|
|
34
|
+
Use cards (boxes with elevation) only when elevation communicates real hierarchy. Otherwise group with
|
|
35
|
+
a hairline, a divider, or white space. Tint shadows to the background hue; no pure-black drop shadows on
|
|
36
|
+
light fills. At high `DENSITY`, drop card chrome entirely and let data breathe in plain layout.
|
|
37
|
+
|
|
38
|
+
## Tells (layout)
|
|
39
|
+
|
|
40
|
+
Centered-everything, same-layout-every-section, and eyebrow-above-every-section live in core §8.
|
|
41
|
+
Layout-specific tells:
|
|
42
|
+
|
|
43
|
+
- Three identical feature cards.
|
|
44
|
+
- Glassmorphism on everything.
|
|
45
|
+
- Split-header ("big headline left / tiny explainer right") as a reflex.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# anti-slop-design · medium: CLI / terminal output
|
|
2
|
+
|
|
3
|
+
Load for output rendered in a terminal: status lines, progress, reports printed to stdout, log lines,
|
|
4
|
+
TUI panels. Pair with `core`. Type/color/layout leaves mostly do not apply (the terminal owns the
|
|
5
|
+
font; color is a constrained palette).
|
|
6
|
+
|
|
7
|
+
## 7.F CLI / terminal output
|
|
8
|
+
|
|
9
|
+
- **The terminal is a constrained medium; respect it.** Variable width, a 16/256/truecolor palette
|
|
10
|
+
that the user's theme controls, monospace only, and a reader who often pipes or greps the output.
|
|
11
|
+
- **Degrade without color.** Never let color be the only carrier of meaning (core 3.B/§5 spirit): a
|
|
12
|
+
red number must also read as bad when color is stripped. Always honor `NO_COLOR`. For a normal CLI,
|
|
13
|
+
also drop ANSI on a non-TTY pipe so redirected output stays parseable. The exception is an
|
|
14
|
+
*intentionally-piped colored UI* (e.g. a statusline the host always pipes and renders in color):
|
|
15
|
+
there, keep color and gate only on `NO_COLOR`, never on `isatty` — an isatty test would strip color
|
|
16
|
+
in normal use.
|
|
17
|
+
- **Width is unknown.** Fit to the reported width with a margin; never assume 80. A line that wraps in
|
|
18
|
+
a narrow terminal corrupts a box or table. Clamp and truncate deterministically.
|
|
19
|
+
- **Glyph width is real.** CJK and many emoji are two columns; combining marks are zero. Count visible
|
|
20
|
+
columns, not characters, or box-drawing and alignment break.
|
|
21
|
+
- **No decoration tax.** Emoji sprinkled per line, gratuitous box-drawing, and rainbow ANSI are the
|
|
22
|
+
terminal equivalent of clip art. One accent color, aligned columns, and whitespace carry it.
|
|
23
|
+
- **Copy laws still apply.** core §3.A/§3.B hold for any prose in help text, errors, and summaries.
|
|
24
|
+
Error messages say what happened and what to do, not "an error occurred."
|
|
25
|
+
|
|
26
|
+
## Tells (CLI)
|
|
27
|
+
|
|
28
|
+
- Color as the sole signal; ignoring `NO_COLOR` (or, for a normal CLI, no non-TTY fallback).
|
|
29
|
+
- Hardcoded 80-column assumptions; lines that wrap and corrupt a box.
|
|
30
|
+
- Character-count math that misaligns on CJK/emoji width.
|
|
31
|
+
- Emoji or box-drawing as decoration rather than structure.
|
|
32
|
+
- Vague error strings ("something went wrong").
|
|
33
|
+
|
|
34
|
+
## Pre-flight slice (CLI)
|
|
35
|
+
|
|
36
|
+
- [ ] Renders correctly at narrow and wide widths; no wrap corruption.
|
|
37
|
+
- [ ] Honors `NO_COLOR`; a normal CLI emits plain output when piped; color is never the only signal.
|
|
38
|
+
- [ ] Column math counts visible width (CJK/emoji safe).
|
|
39
|
+
- [ ] Decoration earns its place; errors are actionable.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# anti-slop-design · medium: data visualization
|
|
2
|
+
|
|
3
|
+
Load for dashboards, charts, and technical-review figures. Pair with `core`; add `typography`, `color`,
|
|
4
|
+
and `layout` (axis labels, titles, and the annotated-insight sentence are type choices).
|
|
5
|
+
|
|
6
|
+
The governing principle is **maximize the share of ink that carries information** (Tufte's data-ink
|
|
7
|
+
ratio). Slop in charts is decoration mistaken for design.
|
|
8
|
+
|
|
9
|
+
## 7.B Data visualization
|
|
10
|
+
|
|
11
|
+
- **Remove chrome:** no 3D, no drop shadows on bars, no gradient fills on series, no heavy gridlines,
|
|
12
|
+
no chartjunk. Light or absent gridlines; let the data shapes carry the figure.
|
|
13
|
+
- **Right chart for the question:** bar for category comparison, line for trend over time, scatter for
|
|
14
|
+
correlation, small-multiples for many series. **Avoid pie charts for more than two or three slices**
|
|
15
|
+
(humans read angle poorly). Avoid dual-axis charts that imply false correlation.
|
|
16
|
+
- **Honest axes:** bar charts start at zero. Do not truncate an axis to exaggerate a difference. If you
|
|
17
|
+
must zoom a line chart, say so.
|
|
18
|
+
- **Direct labeling** beats a legend when it fits; the reader should not bounce between a key and the
|
|
19
|
+
data.
|
|
20
|
+
- **Color encodes meaning:** sequential scale for ordered magnitude, diverging for a meaningful
|
|
21
|
+
midpoint, categorical for unordered groups, capped at roughly six hues. Colorblind-safe palettes.
|
|
22
|
+
Color is not decoration here.
|
|
23
|
+
- **Sort by value**, not alphabetically, unless the category order is itself meaningful.
|
|
24
|
+
- **Annotate the insight.** A good figure tells the reader what to notice. One sentence of takeaway near
|
|
25
|
+
the relevant mark.
|
|
26
|
+
- **Data integrity** (`core` 3.D) is non-negotiable in a technical review. A fabricated benchmark in a
|
|
27
|
+
CTO-facing document is a fireable mistake, not a styling choice.
|
|
28
|
+
|
|
29
|
+
## Tells (data visualization)
|
|
30
|
+
|
|
31
|
+
- Pie charts with many slices; 3D charts; gradient-filled bars; chartjunk.
|
|
32
|
+
- Truncated axes that exaggerate a difference; dual-axis false correlation.
|
|
33
|
+
- A legend where direct labels would fit.
|
|
34
|
+
- Alphabetical sort where value-sort carries the insight.
|
|
35
|
+
- A figure with no annotated takeaway.
|
|
36
|
+
|
|
37
|
+
## Pre-flight slice (data visualization)
|
|
38
|
+
|
|
39
|
+
- [ ] Right chart for the question; no pie-with-many-slices, no 3D, no chartjunk.
|
|
40
|
+
- [ ] Axes honest (bars from zero, no deceptive truncation).
|
|
41
|
+
- [ ] Color encodes meaning; colorblind-safe; direct labels where they fit.
|
|
42
|
+
- [ ] The insight is annotated, not left for the reader to hunt.
|
|
43
|
+
- [ ] Every figure's data is real and sourced (integrity is correctness here).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# anti-slop-design · medium: diagrams
|
|
2
|
+
|
|
3
|
+
Load for architecture, flow, sequence, and entity diagrams (Mermaid, Graphviz, ASCII, drawn). Pair
|
|
4
|
+
with `core`; the INDEX map also loads `color` and `layout` for this medium.
|
|
5
|
+
|
|
6
|
+
## 7.G Diagrams
|
|
7
|
+
|
|
8
|
+
- **A diagram exists to make one relationship legible.** If it does not answer a specific question
|
|
9
|
+
("how does a request flow?", "what depends on what?"), it is decoration. Name the question first.
|
|
10
|
+
- **Cap the node count.** Past roughly 12-15 nodes a single diagram becomes a hairball. Split by
|
|
11
|
+
subsystem, collapse detail behind a labeled group, or show the slice that matters.
|
|
12
|
+
- **Edges carry meaning; minimize crossings.** Pick a consistent direction (top-down for hierarchy,
|
|
13
|
+
left-right for a pipeline) and stick to it. Label edges when the relationship is not obvious; do not
|
|
14
|
+
label every edge if direction already says it.
|
|
15
|
+
- **Color encodes, never decorates** (the same color-encodes-meaning discipline used for charts): use
|
|
16
|
+
it for one categorical axis (layer, ownership, status), colorblind-safe, capped at a few hues. A
|
|
17
|
+
rainbow of boxes is noise.
|
|
18
|
+
- **A legend when the encoding is not self-evident**, and consistent shapes (one shape per node kind).
|
|
19
|
+
- **Honest abstraction.** Do not invent components or connections to make the picture symmetric. The
|
|
20
|
+
diagram is a claim about the system; a wrong box is a wrong claim (core 3.D spirit).
|
|
21
|
+
|
|
22
|
+
## Tells (diagrams)
|
|
23
|
+
|
|
24
|
+
- A hairball: too many nodes, crossing edges, no clear direction.
|
|
25
|
+
- Decorative multi-color boxes with no encoding meaning.
|
|
26
|
+
- Mixed directions / inconsistent node shapes within one diagram.
|
|
27
|
+
- Every edge labeled, or none labeled where the relationship is ambiguous.
|
|
28
|
+
- Invented boxes/links that do not exist in the real system.
|
|
29
|
+
|
|
30
|
+
## Pre-flight slice (diagrams)
|
|
31
|
+
|
|
32
|
+
- [ ] The diagram answers one named question; node count is bounded.
|
|
33
|
+
- [ ] Consistent direction; crossings minimized; shapes consistent.
|
|
34
|
+
- [ ] Color encodes a real axis (colorblind-safe) or is absent; legend where needed.
|
|
35
|
+
- [ ] Every box and edge maps to something real in the system.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# anti-slop-design · medium: documents
|
|
2
|
+
|
|
3
|
+
Load for reports, memos, whitepapers, resumes, PR descriptions, CHANGELOG sections, tables, and spec
|
|
4
|
+
sheets. For a laid-out document pair with `core` + `typography` + `images`. For PR/CHANGELOG Markdown
|
|
5
|
+
prose (§7.A.1), `core` + this leaf is enough — those are copy-law deliverables, not composed pages.
|
|
6
|
+
|
|
7
|
+
## 7.A Documents (reports, memos, whitepapers, resumes)
|
|
8
|
+
|
|
9
|
+
- **Hierarchy through type and space**, not heavy rules and shaded boxes on everything. A horizontal
|
|
10
|
+
hairline under a section title beats a filled banner.
|
|
11
|
+
- **Serif or humanist-sans body** for sustained reading (see `typography` 4.A). Body size 10-12pt for
|
|
12
|
+
print, 16-18px for screen.
|
|
13
|
+
- **No clip art, no rainbow section colors, no decorative icons** scattered for "visual interest."
|
|
14
|
+
|
|
15
|
+
### Resume specifics (the dominant tells in this medium)
|
|
16
|
+
|
|
17
|
+
- No skill-proficiency bars ("Python: 85%"). They are meaningless, unverifiable, and read as template.
|
|
18
|
+
List skills plainly or, better, demonstrate them through quantified accomplishments.
|
|
19
|
+
- Reverse-chronological, consistent date format throughout, one page unless senior or academic.
|
|
20
|
+
- Quantify every bullet that can be quantified, with real numbers (`core` 3.D applies hard here).
|
|
21
|
+
"Reduced deploy time 40%" beats "improved deployment efficiency."
|
|
22
|
+
- No photo unless the regional hiring norm expects one. No two-column layout if an ATS will parse it,
|
|
23
|
+
unless you know the target system handles it.
|
|
24
|
+
- Active voice, concrete verbs, no filler (`core` 3.B). Cut the "Objective" statement; cut "References
|
|
25
|
+
available on request."
|
|
26
|
+
|
|
27
|
+
## 7.A.1 PR descriptions and CHANGELOG (Markdown render target)
|
|
28
|
+
|
|
29
|
+
These are documents rendered as Markdown on a platform (GitHub, a release page), not laid-out pages,
|
|
30
|
+
so layout/typography/color do not apply. What matters:
|
|
31
|
+
|
|
32
|
+
- **Write for the render, not the source.** Use real Markdown structure (headings, lists, fenced code)
|
|
33
|
+
that renders cleanly; do not hand-align columns that the renderer will collapse.
|
|
34
|
+
- **The copy laws carry the weight.** core §3.A (no prose separator dashes) and §3.B (no marketing
|
|
35
|
+
filler) are the whole game here. A PR body says what changed, why, and how it was verified, in plain
|
|
36
|
+
declarative prose.
|
|
37
|
+
- **Lead with the point.** First line / summary states the change; details follow. A reviewer reads the
|
|
38
|
+
first two lines and the test plan.
|
|
39
|
+
- **Link, do not paste.** Reference issues, ADRs, and commits by link/id; do not inline large blobs.
|
|
40
|
+
- **CHANGELOG:** keep entries terse, grouped (Added / Fixed / Performance), user-facing, and in the
|
|
41
|
+
project's existing format. Real version numbers only (core 3.D); no invented metrics.
|
|
42
|
+
|
|
43
|
+
## 7.E Tables and spec sheets
|
|
44
|
+
|
|
45
|
+
Long structured lists fail the same way everywhere: a default `<ul>` or a row-per-line table with a
|
|
46
|
+
hairline under each row.
|
|
47
|
+
|
|
48
|
+
- **Minimal rules.** Horizontal hairlines between logical groups, not under every row. No vertical
|
|
49
|
+
lines unless the data demands them.
|
|
50
|
+
- **Align numbers.** Right-align or decimal-align numeric columns.
|
|
51
|
+
- **No zebra striping** unless the table is genuinely dense.
|
|
52
|
+
- For more than five items, reach for a different component: grouped 2-3 clusters with sparse dividers,
|
|
53
|
+
a card-per-item grid, tabs or an accordion if categorizable, or a featured-few-plus-collapsed-rest
|
|
54
|
+
disclosure. The list itself is rarely the answer to a long list.
|
|
55
|
+
|
|
56
|
+
## Tells (documents)
|
|
57
|
+
|
|
58
|
+
- Skill-proficiency bars on resumes.
|
|
59
|
+
- Hairline under every table row; row-per-line spec sheets.
|
|
60
|
+
- Office-default body face (Calibri, Times New Roman) chosen by reflex.
|
|
61
|
+
- Decorative icons / rainbow section colors scattered for "interest."
|
|
62
|
+
- Filled section banners where a hairline would do.
|
|
63
|
+
|
|
64
|
+
## Pre-flight slice (documents)
|
|
65
|
+
|
|
66
|
+
- [ ] Body face deliberate (serif/humanist for long reading), not an Office default by reflex.
|
|
67
|
+
- [ ] Hierarchy from type and space, not boxes and rules on everything.
|
|
68
|
+
- [ ] Tables: minimal rules, aligned numbers, grouped not row-striped.
|
|
69
|
+
- [ ] Resume: no skill bars, quantified bullets with real numbers, consistent dates, ATS-safe if
|
|
70
|
+
needed.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# anti-slop-design · medium: slides
|
|
2
|
+
|
|
3
|
+
Load for presentations and slide decks. Pair with `core`; add `typography`, `color`, `layout`, `images`.
|
|
4
|
+
|
|
5
|
+
## 7.C Presentations / slide decks
|
|
6
|
+
|
|
7
|
+
- **One idea per slide.**
|
|
8
|
+
- **The slide title is the takeaway, not the topic.** "Latency dropped 60% after the cache rewrite,"
|
|
9
|
+
not "Performance." The audience should grasp the point from the title alone.
|
|
10
|
+
- **Big type, few words.** No paragraphs, no seven-bullet avalanche. If a slide needs a paragraph, it
|
|
11
|
+
is a document, not a slide.
|
|
12
|
+
- **Charts redrawn for projection:** huge labels, few series, high contrast. A chart pasted from a
|
|
13
|
+
spreadsheet at desk-reading scale is unreadable from row five.
|
|
14
|
+
- **Consistent master and grid.** Do not center every element by default; use the same margins and
|
|
15
|
+
baseline across slides.
|
|
16
|
+
- **No clip art, no word art, no transition zoo.** If motion is used, it is motivated (a reveal
|
|
17
|
+
sequence that matches the argument), not decorative.
|
|
18
|
+
|
|
19
|
+
## Tells (slides)
|
|
20
|
+
|
|
21
|
+
- Topic-label titles instead of takeaway titles.
|
|
22
|
+
- Seven-bullet avalanche; paragraphs on a slide.
|
|
23
|
+
- Spreadsheet charts pasted at desk-reading scale.
|
|
24
|
+
- Clip art, word art, transition zoo.
|
|
25
|
+
|
|
26
|
+
## Pre-flight slice (slides)
|
|
27
|
+
|
|
28
|
+
- [ ] One idea per slide; title is the takeaway, not the topic.
|
|
29
|
+
- [ ] Big type, few words; charts redrawn for projection.
|
|
30
|
+
- [ ] Consistent master; motion (if any) motivated.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# anti-slop-design · medium: web and interactive
|
|
2
|
+
|
|
3
|
+
Load for landing pages, portfolios, and component UIs. Pair with `core`; add `typography`, `color`,
|
|
4
|
+
`layout`, `images`. This is the leaf `frontend-author` loads.
|
|
5
|
+
|
|
6
|
+
## 7.D Web and interactive interfaces
|
|
7
|
+
|
|
8
|
+
Front ends carry every universal law in `core` §3 plus these web-specific essentials:
|
|
9
|
+
|
|
10
|
+
- **Real images, not fake-div screenshots.** A product UI built from styled `<div>` rectangles to
|
|
11
|
+
simulate a screenshot is the number-one web tell. Use a real screenshot, a generated image, a real
|
|
12
|
+
mini-component, or no preview.
|
|
13
|
+
- **Motion must be motivated.** Every animation answers "what does this communicate?" (hierarchy,
|
|
14
|
+
sequence, feedback, state change). "It looked cool" is not an answer. Honor `prefers-reduced-motion`
|
|
15
|
+
and collapse infinite, parallax, or scroll-hijack motion to static under it.
|
|
16
|
+
- **One design system per project.** Do not mix component libraries in one tree.
|
|
17
|
+
- **Real logos for social proof**, not text wordmarks; logo wall under the hero, logos only, no
|
|
18
|
+
category labels beneath them.
|
|
19
|
+
- **Both color schemes from the start.** Design light and dark together and respect
|
|
20
|
+
`prefers-color-scheme`; never ship one mode by accident, and keep brand identity and contrast intact
|
|
21
|
+
in both.
|
|
22
|
+
- **Viewport-stable layout.** Use dynamic viewport units for full-height sections so mobile browser
|
|
23
|
+
chrome does not cause layout jumps, and keep primary navigation on a single line at desktop width.
|
|
24
|
+
|
|
25
|
+
## Tells (web)
|
|
26
|
+
|
|
27
|
+
- Fake-div screenshots; hand-rolled decorative SVG instead of real imagery.
|
|
28
|
+
- Unmotivated motion; infinite/parallax/scroll-hijack with no `prefers-reduced-motion` fallback.
|
|
29
|
+
- Mixed component libraries in one tree.
|
|
30
|
+
- Text wordmarks as social proof instead of real logos.
|
|
31
|
+
- One color scheme shipped by accident; nav wrapping to two lines at desktop width.
|
|
32
|
+
|
|
33
|
+
## Pre-flight slice (web)
|
|
34
|
+
|
|
35
|
+
- [ ] Real images, no fake-div screenshots.
|
|
36
|
+
- [ ] Motion motivated and reduced-motion honored.
|
|
37
|
+
- [ ] One design system; real logos for social proof.
|
|
38
|
+
- [ ] Light and dark both designed and tested; nav fits one line; full-height sections use dynamic
|
|
39
|
+
viewport units.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# anti-slop-design · typography
|
|
2
|
+
|
|
3
|
+
Load it whenever the medium renders text with chosen type (per the INDEX load map). The single
|
|
4
|
+
most-tested tell is the wrong typeface chosen by reflex. The right choice depends on the medium.
|
|
5
|
+
|
|
6
|
+
The rule is the **principle**, not the name: be able to say in one sentence why this face fits this
|
|
7
|
+
brief. The specific faces named below are *current* examples of reflexes and reasonable reaches; they
|
|
8
|
+
will age, and the "reach" lists are non-exhaustive starting points, not a closed menu to default to.
|
|
9
|
+
Defaulting to a published alternative list just recreates the reflex with a new name.
|
|
10
|
+
|
|
11
|
+
## 4.A Body text
|
|
12
|
+
|
|
13
|
+
- **On screen / web UI:** humanist or geometric sans for body. Avoid the current LLM-default face
|
|
14
|
+
(`Inter`, at time of writing) *as a reflex*; it is acceptable when a neutral, system-standard feel is
|
|
15
|
+
explicitly wanted, or for accessibility-first contexts. Reasonable current reaches (non-exhaustive):
|
|
16
|
+
Geist, Outfit, Söhne, IBM Plex Sans, or a brand-appropriate face. The point is a face chosen for a
|
|
17
|
+
reason, not the specific name.
|
|
18
|
+
- **In documents / print / PDF (reports, whitepapers, books):** a serif or a high-quality humanist
|
|
19
|
+
sans for sustained reading is **best practice, not a tell**. Serif body text in a long report is
|
|
20
|
+
correct typography. Pick a real text face (a Garamond, Source Serif, IBM Plex Serif, Charter, or a
|
|
21
|
+
clean humanist sans) over the Office defaults (Calibri, Times New Roman) chosen without thought.
|
|
22
|
+
- **Measure:** 60-75 characters per line. Line-height 1.4-1.6 for body. Do not full-justify text that
|
|
23
|
+
produces rivers; left-align unless you control hyphenation.
|
|
24
|
+
|
|
25
|
+
## 4.B Display / headings
|
|
26
|
+
|
|
27
|
+
- **Web and slides default to sans display.** Sans display is not "boring"; it is default for the same
|
|
28
|
+
reason black is default in fashion. Reach: Geist Display, Cabinet Grotesk, PP Neue Montreal, GT
|
|
29
|
+
Walsheim, Inter Display.
|
|
30
|
+
- **Serif display is allowed when justified** (genuinely editorial, luxury, publication, heritage, or a
|
|
31
|
+
brand that names a serif) and you can say why this serif fits this brand. When justified, **do not
|
|
32
|
+
default to the current LLM-favorite display serifs** (`Fraunces`, `Instrument Serif` at time of
|
|
33
|
+
writing). Other current options, non-exhaustive: PP Editorial New, Reckless Neue, Tiempos Headline,
|
|
34
|
+
Canela, Domaine Display. Pick for fit, do not just swap one default for another.
|
|
35
|
+
- **Emphasis within a headline** uses italic or bold of the *same* family. Injecting one serif word
|
|
36
|
+
into a sans headline (or vice versa) is amateur.
|
|
37
|
+
- **Italic descenders:** any italic word containing `y g j p q` needs at least `1.1` line-height and a
|
|
38
|
+
little bottom reserve so the descender is not clipped.
|
|
39
|
+
|
|
40
|
+
## 4.C Hierarchy
|
|
41
|
+
|
|
42
|
+
Build hierarchy with **weight, size, and space**, not with boxes, rules, and color on everything.
|
|
43
|
+
Three levels are usually enough: section, subsection, body. If everything is emphasized, nothing is.
|
|
44
|
+
|
|
45
|
+
## Tells (typography)
|
|
46
|
+
|
|
47
|
+
- Inter as a reflex body face on screen.
|
|
48
|
+
- Fraunces / Instrument Serif as the default display serif.
|
|
49
|
+
- A foreign font injected for a single emphasized word.
|
|
50
|
+
- Clipped italic descenders.
|
|
51
|
+
- Full-justified body with visible rivers.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Author TDD workflow — non-negotiable, fixed order
|
|
2
|
+
|
|
3
|
+
Canonical for the author agents (`backend-author`, `frontend-author`). Loaded via each agent's
|
|
4
|
+
Required Reading; the agent bodies do not restate it. This is the worker's execution order for
|
|
5
|
+
one task — the tdd skill's phase gates govern the lane above it.
|
|
6
|
+
|
|
7
|
+
Fixed order. Do not skip or reorder.
|
|
8
|
+
|
|
9
|
+
1. **Write failing tests** — one test per obligation in the Phase 1 checklist
|
|
10
|
+
2. **Confirm tests fail for the right reason** — run the test command from `tech-stack.md`; the failure must match the obligation, not an unrelated error
|
|
11
|
+
3. **Write minimum implementation** — only enough code to make the failing tests pass; no extra scope
|
|
12
|
+
4. **Run full suite** — every test green
|
|
13
|
+
5. **Run lint and type-check** — both clean
|
|
14
|
+
6. **Stage for commit** — only after steps 1–5 complete
|