# What Anti-Patterns Are Explicitly Forbidden in Diagram Creation: The Complete Ruleset

> Discover forbidden diagram creation anti-patterns like flowchart diamonds with many exits or Venn diagrams with four circles. Learn the complete ruleset for clear, honest, and consistent diagrams.

- Repository: [Cathryn Lavery/diagram-design](https://github.com/cathrynlavery/diagram-design)
- Tags: best-practices
- Published: 2026-08-15

---

**The Diagram Design skill explicitly forbids specific anti-patterns for each visual type—including flowchart diamonds with four or more exits, Venn diagrams with four circles, and scatter plots with forced trend lines—to enforce readability, honesty, and consistency.**

The cathrynlavery/diagram-design repository maintains strict visual grammar rules that prohibit common design mistakes across seven diagram categories. Understanding what anti-patterns are explicitly forbidden in diagram creation ensures your visualizations adhere to the repository's semantic standards and communicate data without misleading the audience.

## Forbidden Anti-Patterns by Diagram Type

The repository defines prohibited constructions in dedicated reference files under `skills/diagram-design/references/`. Each file contains an "## Anti-patterns" section listing rules that must never be violated.

### Flowchart Anti-Patterns

According to [`skills/diagram-design/references/type-flowchart.md`](https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/type-flowchart.md) (lines 15-19), the following are explicitly forbidden:

- Using **fill colour** to indicate node type (shape already conveys type)
- Decision diamonds with **four or more** exits—these must be refactored into nested diamonds
- **Unlabelled decision branches**

### Venn and Set Overlap Anti-Patterns

The [`type-venn.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-venn.md) file (lines 15-22) prohibits:

- Unlabelled regions
- Circles that do **not** overlap when overlap is the point of interest
- Equal-sized circles for sets clearly of different sizes (dishonest representation)
- Applying **coral accent** to multiple overlap regions
- Labels sitting on top of circle strokes (illegible)
- Using **four or more** circles when two-three suffice

### Tree and Hierarchy Anti-Patterns

Per [`type-tree.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-tree.md) (lines 14-20):

- Trees deeper than **five** levels on a single page (illegible)
- Nodes with wildly varying widths (more than two distinct widths)
- **Diagonal** connector lines (must be orthogonal)
- Skipped levels (connecting a parent directly to a grand-child)
- Using **coral** on both the root and a leaf

### Timeline Anti-Patterns

From [`type-timeline.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-timeline.md) (lines 12-16):

- Displaying events with **equal visual spacing** when underlying temporal intervals are unequal
- Omitting axis labels (e.g., "what unit is this?")
- Crowded labels without vertical offset, making them unreadable

### Scatter Plot Anti-Patterns

The [`type-scatter.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-scatter.md) reference (lines 27-34) forbids:

- Plotting **more than 30** points without clustering (creates "jitter" or "mush")
- Adding a **forced trend line** when data is genuinely scattered (dishonest)
- Labelling **every** point (only focal/outlier points may be labelled)
- Using **bubble-size encoding** (area perception is unreliable)
- Omitting a zero baseline when absolute position matters, or including it when the range is tiny and far from zero

### Gantt Chart Anti-Patterns

According to [`type-gantt.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-gantt.md) (lines 33-40):

- More than **12 tasks** in a single view (must split into sub-plans)
- More than **5 parallel tracks** per phase (causes illegible overlap)
- Adding dependency arrows between tasks in version 1 (only when essential)
- Placing start/end dates inside the bar label (must belong on axis or tooltip)
- Giving **all** bars equal visual weight (focal task must stand out)

### Semantic Pattern Anti-Patterns

For behaviour-first diagrams, [`semantic-patterns.md`](https://github.com/cathrynlavery/diagram-design/blob/main/semantic-patterns.md) (lines 27-30) prohibits:

- "Equal-width pipeline" that hides contention
- Merged arrows that cannot be traced individually
- Conveying capacity **only** by box size
- Decorative pile-up of items
- Animations that reorder items
- Using **red colour alone** to indicate overload

## Code Examples of Violations

The repository includes SVG examples demonstrating forbidden constructions. Below are violations of the anti-pattern rules:

Flowchart violation (four exits):

```svg
<!-- Flowchart anti‑pattern: decision diamond with 4 exits -->
<svg width="200" height="150">
  <polygon points="100,20 140,60 100,100 60,60" stroke="black" fill="none"/>
  <line x1="100" y1="100" x2="100" y2="130" stroke="black"/>
  <line x1="100" y1="20" x2="80" y2="0" stroke="black"/>
  <line x1="100" y1="20" x2="120" y2="0" stroke="black"/>
  <line x1="100" y1="20" x2="140" y2="-20" stroke="black"/>
  <line x1="100" y1="20" x2="60" y2="-20" stroke="black"/>
</svg>

```

Venn violation (four circles):

```svg
<!-- Venn anti‑pattern: four circles (too many) -->
<svg width="200" height="200">
  <circle cx="60" cy="100" r="50" fill="rgba(45,49,66,0.04)"/>
  <circle cx="100" cy="100" r="50" fill="rgba(45,49,66,0.04)"/>
  <circle cx="140" cy="100" r="50" fill="rgba(45,49,66,0.04)"/>
  <circle cx="180" cy="100" r="50" fill="rgba(45,49,66,0.04)"/>
</svg>

```

Scatter plot violation (forced trend line):

```svg
<!-- Scatter anti‑pattern: forced trend line on scattered data -->
<svg width="300" height="200">
  <circle cx="50" cy="150" r="5" fill="#f5f5f5"/>
  <circle cx="100" cy="80" r="5" fill="#f5f5f5"/>
  <circle cx="150" cy="130" r="5" fill="#f5f5f5"/>
  <circle cx="200" cy="60" r="5" fill="#f5f5f5"/>
  <circle cx="250" cy="140" r="5" fill="#f5f5f5"/>
  <!-- Forced linear trend line -->
  <line x1="40" y1="160" x2="260" y2="50" stroke="#eb6c36" stroke-dasharray="4,3"/>
</svg>

```

## Why These Anti-Patterns Are Forbidden

The Diagram Design skill enforces these prohibitions to maintain three core principles:

**Readability.** Unlabelled elements, overly dense layouts, or ambiguous colour usage make diagrams hard to scan. Rules like the five-level tree limit and the twelve-task Gantt maximum prevent visual overload.

**Honesty.** Misrepresenting quantitative information—such as equal spacing for unequal intervals or forced trend lines on scattered data—misleads the audience. The repository explicitly forbids four-circle Venn diagrams and bubble-size encoding when they distort underlying data relationships.

**Consistency.** The visual grammar—where shape conveys meaning, connectors remain orthogonal, and **coral** accent indicates a single focal point—provides a shared visual language. Violating these rules breaks the contract between the diagram and the viewer.

## Summary

- The cathrynlavery/diagram-design repository defines specific anti-patterns for seven diagram categories in individual reference files under `skills/diagram-design/references/`
- **Flowcharts** must not use fill colour for types or diamonds with four exits
- **Venn diagrams** cannot exceed three circles or use coral on multiple overlaps
- **Trees** must remain under five levels with orthogonal connectors only
- **Timelines** require proportional spacing and labeled axes
- **Scatter plots** must not exceed 30 unclustered points or use forced trend lines
- **Gantt charts** are limited to 12 tasks and 5 parallel tracks per phase
- **Semantic patterns** must avoid equal-width pipelines and red-only overload indicators
- Additional diagram types (Radar, Quadrant, Architecture, etc.) follow the same structure in their respective reference files

## Frequently Asked Questions

### Where are the anti-pattern rules defined in the source code?

Each diagram type's forbidden constructions are documented in dedicated markdown files within the `skills/diagram-design/references/` directory. For example, flowchart rules reside in [`type-flowchart.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-flowchart.md) (lines 15-19), while scatter plot restrictions appear in [`type-scatter.md`](https://github.com/cathrynlavery/diagram-design/blob/main/type-scatter.md) (lines 27-34). Each file contains a "## Anti-patterns" section listing the prohibited constructions.

### What happens if I use a forbidden anti-pattern in my diagram?

Using explicitly forbidden anti-patterns degrades readability, misleads your audience, or breaks the visual grammar contract. The Diagram Design skill expects authors to avoid these constructions to maintain consistency across all generated diagrams. Violations such as unlabelled decision branches or dishonest trend lines directly contradict the repository's semantic standards.

### Can I override these restrictions for special visualization needs?

The repository structure indicates these rules are mandatory rather than configurable. Each reference file lists absolute prohibitions using definitive language like "must never" and "explicitly forbidden," indicating no override mechanism exists within the standard specification. Authors must refactor diagrams to comply with the limits (e.g., splitting a deep tree into multiple pages).

### How do the anti-pattern rules differ between timeline and Gantt chart diagrams?

While both visualize temporal data, timelines focus on **proportional accuracy**—forbidding equal visual spacing for unequal intervals and requiring axis labels. Gantt charts enforce **density limits**—prohibiting more than 12 tasks per view and restricting parallel tracks to 5 per phase to prevent overlap. Timelines prioritize honest time representation, while Gantt charts prioritize manageable visual complexity.