Werbe-Flyer A5 für Menschen, Vorhang und Coding Agents: Flyer-Seiten, PDFs, Teaser auf Buchseiten und Hub

This commit is contained in:
grok-bot committed 2026-11-01 22:14:14 +01:00
1 parent 1fcc4af63e
commit ff271882a5
20 files changed
+678 -3

No files matched your search

+7
View File
@@ -7,6 +7,13 @@
## Letzte Arbeit (committed)
### 8. Werbe-Flyer A5 (01.11., Branch `flyer-2026-11-01` ab `main` `1fcc4af`, nicht gepusht)
- Je Buch `projects/<slug>/flyer/index.html` (A5 hoch, `@page`, ein Blatt), Stil `css/flyer.css`; Teaser auf den drei Übersichtsseiten, Cover + „Flyer“-Button in den Hub-Karten (Teaser-/Karten-CSS am Ende von `styles.css`).
- Cover: Web-Kopien 600 px unter `assets/covers/<slug>.jpg` aus den Buch-Repos (Menschen/Vorhang `assets/cover/cover.jpg`, Coding Agents `assets/cover/cover-front.jpg`). QR-Codes offline (segno) unter `assets/flyer/qr-<slug>.svg` → Buchseite.
- Texte nur aus Buchquellen: Vorwort/Klappentext (`scripts/build_kdp_cover_wrap.py`) Menschen, `marketing/kdp-produkttexte.md` Vorhang, README + `assets/cover/cover-wrap.tex` Coding Agents, Kapitel-Kernsätze und bestehende Site-Texte. Keine Preise, Rezensionen, Zahlen außer Kapitelzahl.
- PDFs `downloads/<slug>/flyer-<slug>.pdf` per `scripts/build-flyer-pdfs.sh` (Headless Chrome, prüft „1 Seite“). Nach Textänderung am Flyer neu bauen. Nicht im MANIFEST (kein Material-Paket).
- Kein Companion-Bump (kein Inhaltsstand), `sync --check` ok, 23 Tests grün, lokaler Linkcheck ok.
### 7. Menschen companion-0.1.2 (01.11., Branch `was-bleibt-update-2026-11-01` ab `main` `988b34b`)
- Buch-Repo `was-bleibt-vom-menschen` `main` `7bcc129` (31.10., seit Site-Stand `922b100`): Fälle-Einbau (reale Fälle/Studien in Prolog, Kap. 3, 5, 8, 10, 11, 15, 18, 19, 21), Kap. 12 Fakten, Kürzungen Prolog/15/18, Literatur. `dist/was-bleibt-vom-menschen.pdf` 164 S. (gebaut 31.10. 17:08), Print 266 S.
- Kap. 1, 26, Glossar unverändert; Kap. 10 nur Obermeyer-Absatz → vier Spiegel/ZIP unverändert, kein Repack (`material-2026-10-31`, Paket-Companion 0.1.1). Hilfe H-01–H-09 passt weiter.
Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" shape-rendering="crispEdges" class="segno"><title>QR-Code: books.maatini.space/projects/coding-agents-praxis/</title><path class="qrline" stroke="#1a1f2e" d="M0 0.5h7m2 0h1m1 0h1m2 0h1m1 0h1m1 0h2m1 0h1m1 0h2m1 0h7m-33 1h1m5 0h1m4 0h1m3 0h1m1 0h2m1 0h2m4 0h1m5 0h1m-33 1h1m1 0h3m1 0h1m1 0h2m1 0h1m2 0h2m2 0h1m2 0h4m1 0h1m1 0h3m1 0h1m-33 1h1m1 0h3m1 0h1m1 0h4m3 0h1m1 0h1m1 0h2m1 0h1m1 0h1m1 0h1m1 0h3m1 0h1m-33 1h1m1 0h3m1 0h1m1 0h3m1 0h1m1 0h7m2 0h1m2 0h1m1 0h3m1 0h1m-33 1h1m5 0h1m1 0h3m1 0h2m3 0h1m4 0h1m3 0h1m5 0h1m-33 1h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7m-25 1h1m1 0h1m5 0h1m1 0h1m2 0h1m-22 1h1m1 0h5m6 0h2m1 0h2m4 0h2m2 0h5m-31 1h4m1 0h1m3 0h5m2 0h1m2 0h3m1 0h1m2 0h2m1 0h2m1 0h1m-33 1h3m2 0h2m4 0h1m1 0h4m1 0h1m3 0h1m2 0h2m1 0h1m1 0h2m-32 1h1m1 0h1m2 0h1m4 0h2m1 0h1m2 0h1m2 0h8m1 0h4m-30 1h1m1 0h1m1 0h1m2 0h2m3 0h1m2 0h1m1 0h2m1 0h4m1 0h3m1 0h1m-30 1h1m4 0h2m1 0h4m1 0h1m3 0h2m2 0h2m1 0h1m3 0h3m-32 1h2m1 0h1m1 0h3m1 0h1m3 0h2m1 0h2m1 0h3m2 0h2m1 0h2m1 0h1m-32 1h2m7 0h1m1 0h1m1 0h3m4 0h4m1 0h3m1 0h2m-28 1h2m1 0h1m1 0h1m1 0h2m2 0h2m1 0h1m1 0h1m2 0h1m1 0h2m1 0h3m2 0h1m-33 1h3m4 0h1m3 0h3m3 0h1m1 0h3m1 0h1m2 0h2m1 0h2m1 0h1m-33 1h1m3 0h1m1 0h2m1 0h3m1 0h4m1 0h1m1 0h3m2 0h1m1 0h2m1 0h2m-32 1h2m1 0h2m3 0h1m1 0h4m1 0h2m1 0h1m2 0h3m3 0h4m1 0h1m-33 1h1m1 0h2m1 0h4m1 0h1m4 0h1m1 0h1m1 0h1m2 0h4m1 0h3m2 0h1m-33 1h1m3 0h1m3 0h1m1 0h6m2 0h2m1 0h1m1 0h1m2 0h1m2 0h2m1 0h1m-33 1h1m3 0h1m1 0h1m4 0h1m3 0h2m1 0h1m1 0h2m2 0h1m3 0h1m1 0h2m-32 1h1m1 0h1m1 0h2m3 0h3m1 0h2m1 0h1m1 0h2m1 0h3m2 0h1m1 0h3m1 0h1m-33 1h1m1 0h1m1 0h4m1 0h1m1 0h1m2 0h1m2 0h1m4 0h8m2 0h1m-25 1h2m4 0h1m1 0h5m3 0h1m3 0h1m1 0h1m1 0h1m-33 1h7m2 0h1m1 0h2m2 0h2m1 0h1m3 0h3m1 0h1m1 0h1m1 0h2m-32 1h1m5 0h1m1 0h3m1 0h2m6 0h2m1 0h2m3 0h5m-33 1h1m1 0h3m1 0h1m1 0h3m4 0h1m1 0h1m2 0h1m1 0h1m1 0h6m1 0h2m-33 1h1m1 0h3m1 0h1m1 0h1m1 0h1m1 0h1m6 0h5m1 0h1m2 0h1m1 0h3m-33 1h1m1 0h3m1 0h1m1 0h1m1 0h1m1 0h5m1 0h1m2 0h1m1 0h1m2 0h2m1 0h1m-30 1h1m5 0h1m2 0h1m2 0h1m7 0h3m3 0h1m1 0h1m1 0h1m-31 1h7m1 0h1m1 0h1m1 0h1m1 0h2m1 0h1m2 0h1m1 0h4m1 0h1m3 0h1"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" shape-rendering="crispEdges" class="segno"><title>QR-Code: books.maatini.space/projects/ki-hinterm-vorhang/</title><path class="qrline" stroke="#1a1f2e" d="M0 0.5h7m2 0h2m1 0h1m2 0h1m2 0h3m1 0h3m1 0h7m-33 1h1m5 0h1m1 0h1m1 0h1m1 0h2m1 0h1m1 0h1m1 0h6m1 0h1m5 0h1m-33 1h1m1 0h3m1 0h1m2 0h3m4 0h1m3 0h1m2 0h2m1 0h1m1 0h3m1 0h1m-33 1h1m1 0h3m1 0h1m2 0h1m3 0h1m1 0h1m2 0h1m3 0h2m2 0h1m1 0h3m1 0h1m-33 1h1m1 0h3m1 0h1m1 0h4m5 0h3m1 0h1m1 0h1m2 0h1m1 0h3m1 0h1m-33 1h1m5 0h1m2 0h1m8 0h2m2 0h2m2 0h1m5 0h1m-33 1h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7m-22 1h3m2 0h2m1 0h1m1 0h1m1 0h2m-25 1h1m1 0h1m1 0h1m1 0h1m2 0h3m1 0h1m1 0h1m1 0h1m1 0h3m6 0h1m2 0h1m-30 1h1m1 0h2m2 0h2m2 0h1m3 0h1m1 0h1m1 0h2m2 0h4m3 0h2m-33 1h2m3 0h2m1 0h2m1 0h3m3 0h1m2 0h3m4 0h1m2 0h3m-33 1h3m1 0h2m3 0h1m2 0h1m3 0h2m2 0h2m6 0h1m-28 1h3m1 0h8m2 0h1m1 0h1m1 0h3m1 0h1m2 0h1m2 0h1m1 0h2m-33 1h1m1 0h2m5 0h1m3 0h1m1 0h1m1 0h1m2 0h1m3 0h3m2 0h1m2 0h1m-33 1h1m1 0h5m2 0h1m2 0h1m1 0h1m2 0h2m1 0h1m3 0h2m1 0h1m1 0h1m1 0h2m-33 1h3m2 0h1m1 0h1m2 0h2m3 0h1m1 0h2m2 0h2m1 0h1m1 0h3m2 0h1m-31 1h4m1 0h2m1 0h1m3 0h2m1 0h2m2 0h2m1 0h4m2 0h1m-30 1h1m2 0h2m3 0h1m1 0h1m1 0h3m2 0h2m1 0h1m3 0h4m3 0h2m-31 1h3m1 0h2m1 0h1m1 0h3m3 0h1m7 0h1m4 0h3m-32 1h2m8 0h2m1 0h6m1 0h2m1 0h1m2 0h2m2 0h2m-33 1h1m1 0h2m1 0h2m3 0h1m3 0h1m1 0h4m1 0h6m2 0h1m-27 1h1m1 0h1m3 0h1m1 0h1m3 0h3m2 0h2m2 0h3m4 0h2m-33 1h1m2 0h1m2 0h2m1 0h2m3 0h3m1 0h1m3 0h1m3 0h2m2 0h3m-32 1h1m1 0h1m4 0h3m1 0h1m3 0h2m2 0h4m1 0h2m1 0h1m2 0h1m-32 1h1m3 0h4m1 0h1m1 0h3m1 0h3m1 0h3m1 0h7m-22 1h2m4 0h1m1 0h1m3 0h1m2 0h2m3 0h2m1 0h2m-33 1h7m3 0h4m3 0h1m2 0h1m2 0h2m1 0h1m1 0h1m1 0h3m-33 1h1m5 0h1m3 0h1m2 0h2m2 0h6m1 0h1m3 0h1m3 0h1m-33 1h1m1 0h3m1 0h1m1 0h1m3 0h3m1 0h1m1 0h1m1 0h2m2 0h6m1 0h1m-32 1h1m1 0h3m1 0h1m2 0h2m1 0h1m2 0h1m1 0h1m2 0h3m1 0h1m3 0h2m2 0h1m-33 1h1m1 0h3m1 0h1m1 0h1m1 0h1m5 0h1m1 0h1m1 0h1m1 0h2m4 0h2m2 0h1m-33 1h1m5 0h1m5 0h4m1 0h2m1 0h7m1 0h2m1 0h1m-32 1h7m1 0h1m1 0h2m4 0h2m3 0h1m1 0h2m1 0h1m1 0h1m2 0h2"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" shape-rendering="crispEdges" class="segno"><title>QR-Code: books.maatini.space/projects/was-bleibt-vom-menschen/</title><path class="qrline" stroke="#1a1f2e" d="M0 0.5h7m2 0h3m1 0h2m1 0h4m3 0h2m1 0h7m-33 1h1m5 0h1m6 0h3m4 0h2m4 0h1m5 0h1m-33 1h1m1 0h3m1 0h1m1 0h2m1 0h1m2 0h2m5 0h4m1 0h1m1 0h3m1 0h1m-33 1h1m1 0h3m1 0h1m1 0h1m1 0h2m3 0h1m1 0h1m1 0h1m2 0h1m1 0h1m1 0h1m1 0h3m1 0h1m-33 1h1m1 0h3m1 0h1m1 0h1m3 0h1m4 0h4m2 0h1m2 0h1m1 0h3m1 0h1m-33 1h1m5 0h1m1 0h6m1 0h1m1 0h1m2 0h1m1 0h1m3 0h1m5 0h1m-33 1h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7m-25 1h4m4 0h1m1 0h1m1 0h2m-22 1h1m1 0h5m5 0h3m1 0h2m1 0h1m2 0h1m3 0h5m-31 1h1m2 0h1m5 0h2m1 0h1m3 0h1m2 0h3m1 0h1m2 0h2m1 0h2m1 0h1m-33 1h1m5 0h2m1 0h1m5 0h2m11 0h1m1 0h2m-32 1h2m1 0h3m1 0h1m4 0h1m3 0h1m2 0h3m1 0h3m2 0h4m-32 1h1m4 0h2m2 0h1m1 0h1m5 0h1m1 0h1m2 0h4m1 0h3m1 0h1m-32 1h1m4 0h1m4 0h2m4 0h1m1 0h2m2 0h2m1 0h2m3 0h3m-33 1h2m1 0h2m1 0h1m1 0h2m4 0h5m1 0h3m1 0h3m1 0h2m1 0h1m-30 1h1m1 0h2m1 0h4m2 0h4m3 0h3m2 0h2m2 0h2m-31 1h1m5 0h1m4 0h1m2 0h2m1 0h1m1 0h1m2 0h4m1 0h3m2 0h1m-32 1h2m11 0h1m2 0h1m1 0h3m1 0h1m2 0h2m1 0h2m1 0h1m-32 1h2m3 0h1m1 0h1m1 0h2m2 0h4m2 0h3m4 0h2m1 0h2m-28 1h1m2 0h1m1 0h2m1 0h1m2 0h2m1 0h1m2 0h1m1 0h1m1 0h6m1 0h1m-32 1h1m1 0h1m2 0h4m1 0h1m1 0h3m1 0h1m1 0h1m3 0h2m3 0h2m2 0h1m-33 1h1m2 0h3m1 0h4m1 0h3m1 0h1m2 0h3m1 0h1m2 0h1m2 0h2m1 0h1m-33 1h1m2 0h4m1 0h1m1 0h1m2 0h1m1 0h1m2 0h1m1 0h2m2 0h1m3 0h1m1 0h2m-32 1h1m1 0h1m2 0h1m1 0h1m1 0h1m1 0h2m2 0h1m2 0h7m1 0h1m1 0h4m-32 1h1m2 0h1m1 0h6m2 0h1m3 0h1m1 0h1m2 0h1m1 0h6m1 0h2m-25 1h2m2 0h2m2 0h1m1 0h3m3 0h1m3 0h1m1 0h1m1 0h1m-33 1h7m2 0h3m3 0h4m2 0h4m1 0h1m1 0h1m1 0h2m-32 1h1m5 0h1m1 0h1m2 0h1m1 0h1m6 0h5m3 0h5m-33 1h1m1 0h3m1 0h1m1 0h4m2 0h2m1 0h1m4 0h1m1 0h6m1 0h2m-33 1h1m1 0h3m1 0h1m1 0h2m1 0h2m3 0h1m1 0h6m1 0h1m2 0h1m1 0h3m-33 1h1m1 0h3m1 0h1m1 0h1m2 0h6m1 0h1m2 0h1m1 0h1m2 0h2m1 0h1m-30 1h1m5 0h1m2 0h3m1 0h2m4 0h4m2 0h2m1 0h1m1 0h1m-31 1h7m1 0h1m3 0h1m1 0h2m1 0h1m2 0h1m1 0h4m1 0h1m3 0h1"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

+329
View File
@@ -0,0 +1,329 @@
/* Werbe-Flyer A5 — Bildschirm und Druck. Baut auf styles.css auf. */
.flyer-page {
--fl-hero-bg: var(--navy);
--fl-hero-bg2: #2a4d78;
--fl-hero-text: #ffffff;
--fl-hero-muted: rgba(255, 255, 255, 0.78);
--fl-accent: var(--teal);
--fl-accent-soft: var(--teal-soft);
--fl-ink: var(--text);
--fl-paper: #ffffff;
--fl-sans: "Avenir Next", "Helvetica Neue", "Segoe UI", Arial, sans-serif;
background: #e9e7e1;
}
.flyer-page--menschen {
--fl-hero-bg: #efe8d8;
--fl-hero-bg2: #e4dac4;
--fl-hero-text: #1e3a5f;
--fl-hero-muted: #6b5a3a;
--fl-accent: #a0742a;
--fl-accent-soft: #f5eedf;
--fl-paper: #fffdf8;
}
.flyer-page--vorhang {
--fl-hero-bg: #0f1730;
--fl-hero-bg2: #23305a;
--fl-hero-text: #ffffff;
--fl-hero-muted: #b9c6e6;
--fl-accent: #2f8fa6;
--fl-accent-soft: #e8f3f6;
}
.flyer-page--coding {
--fl-hero-bg: #1e3a5f;
--fl-hero-bg2: #2c5378;
--fl-hero-text: #ffffff;
--fl-hero-muted: #c9d9e6;
--fl-accent: #0d6b6b;
--fl-accent-soft: #e6f3f3;
}
/* Werkzeugleiste (nur Bildschirm) */
.flyer-toolbar {
width: min(100% - 2rem, 148mm);
margin: 1.5rem auto 1rem;
display: flex;
flex-wrap: wrap;
gap: 0.5rem 0.75rem;
align-items: center;
justify-content: space-between;
font-size: 0.9rem;
}
.flyer-toolbar__links {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.flyer-toolbar .btn {
font-size: 0.85rem;
padding: 0.45rem 0.85rem;
}
/* Das Blatt */
.flyer {
width: min(100% - 2rem, 148mm);
min-height: 210mm;
margin: 0 auto 2.5rem;
background: var(--fl-paper);
color: var(--fl-ink);
box-shadow: 0 2px 4px rgba(26, 31, 46, 0.08), 0 18px 48px rgba(26, 31, 46, 0.16);
display: flex;
flex-direction: column;
overflow: hidden;
font-size: 9pt;
line-height: 1.4;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.flyer__hero {
display: grid;
grid-template-columns: 33mm 1fr;
gap: 6.5mm;
align-items: center;
padding: 6.5mm 10mm 6mm;
background: linear-gradient(135deg, var(--fl-hero-bg) 0%, var(--fl-hero-bg2) 100%);
color: var(--fl-hero-text);
}
.flyer__cover {
display: block;
width: 100%;
height: auto;
aspect-ratio: 2 / 3;
object-fit: cover;
border-radius: 2px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 8px 22px rgba(0, 0, 0, 0.32);
transform: rotate(-1.5deg);
}
.flyer__kicker {
margin: 0 0 2.5mm;
font-family: var(--fl-sans);
font-size: 7pt;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--fl-hero-muted);
}
.flyer__title {
margin: 0 0 2mm;
font-size: 20pt;
line-height: 1.08;
letter-spacing: -0.015em;
color: var(--fl-hero-text);
}
.flyer__subtitle {
margin: 0 0 3mm;
font-size: 9.2pt;
line-height: 1.35;
font-style: italic;
color: var(--fl-hero-muted);
}
.flyer__author {
margin: 0;
font-family: var(--fl-sans);
font-size: 8.5pt;
font-weight: 600;
color: var(--fl-hero-text);
}
.flyer__author span {
display: block;
font-weight: 400;
font-size: 7pt;
color: var(--fl-hero-muted);
}
.flyer__body {
flex: 1;
padding: 5mm 10mm 0;
display: flex;
flex-direction: column;
}
.flyer__hook {
margin: 0 0 4mm;
padding-left: 3.5mm;
border-left: 1.1mm solid var(--fl-accent);
font-size: 10.8pt;
line-height: 1.38;
color: var(--navy);
}
.flyer__label {
margin: 0 0 2mm;
font-family: var(--fl-sans);
font-size: 7pt;
font-weight: 700;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--fl-accent);
}
.flyer__list {
list-style: none;
margin: 0 0 4mm;
padding: 0;
counter-reset: fl;
display: grid;
gap: 1.8mm;
}
.flyer__list li {
counter-increment: fl;
display: grid;
grid-template-columns: 5.6mm 1fr;
gap: 2.5mm;
align-items: start;
}
.flyer__list li::before {
content: counter(fl);
display: grid;
place-items: center;
width: 5.6mm;
height: 5.6mm;
border-radius: 50%;
background: var(--fl-accent-soft);
color: var(--fl-accent);
font-family: var(--fl-sans);
font-size: 7.5pt;
font-weight: 700;
}
.flyer__list strong {
color: var(--navy);
}
.flyer__for {
margin: 0 0 1.5mm;
font-size: 8.4pt;
font-style: italic;
color: var(--muted);
}
.flyer__audience {
margin: 0 0 4mm;
font-family: var(--fl-sans);
font-size: 8pt;
font-weight: 600;
color: var(--fl-accent);
}
.flyer__cta {
margin-top: auto;
display: grid;
grid-template-columns: 1fr 24mm;
gap: 5mm;
align-items: center;
padding: 4mm 10mm 5mm;
background: var(--fl-accent-soft);
border-top: 0.4mm solid var(--fl-accent);
}
.flyer__cta-title {
margin: 0 0 1.2mm;
font-size: 11pt;
font-weight: 700;
color: var(--navy);
}
.flyer__cta p {
margin: 0 0 0.8mm;
font-size: 8.2pt;
}
.flyer__cta a {
color: var(--navy);
font-weight: 600;
}
.flyer__url {
font-family: var(--fl-sans);
font-size: 7.6pt;
color: var(--muted);
}
.flyer__qr {
display: block;
width: 24mm;
height: 24mm;
padding: 1.6mm;
background: #fff;
border-radius: 1.5mm;
}
.flyer__qr img {
display: block;
width: 100%;
height: 100%;
}
/* Schmale Bildschirme */
@media screen and (max-width: 34rem) {
.flyer {
min-height: 0;
font-size: 10pt;
}
.flyer__hero {
grid-template-columns: 1fr;
justify-items: start;
padding: 1.5rem 1.25rem;
}
.flyer__cover {
width: 9rem;
}
.flyer__body {
padding: 1.25rem 1.25rem 0;
}
.flyer__cta {
grid-template-columns: 1fr;
padding: 1.25rem;
}
}
/* Druck: genau ein A5-Blatt */
@page {
size: A5 portrait;
margin: 0;
}
@media print {
html {
font-size: 100%;
}
body.flyer-page {
background: #fff;
display: block;
min-height: 0;
}
.flyer-toolbar {
display: none;
}
.flyer {
width: 148mm;
height: 210mm;
min-height: 0;
margin: 0;
box-shadow: none;
page-break-after: avoid;
break-after: avoid;
}
.flyer a {
text-decoration: none;
}
}
+75
View File
@@ -715,3 +715,78 @@ table.data code {
.callout--ok strong {
color: var(--teal);
}
/* Flyer-Teaser (Buchseiten) und Cover in Hub-Karten */
.flyer-teaser {
display: grid;
grid-template-columns: 6.5rem 1fr;
gap: 1.25rem;
align-items: center;
margin: 0 0 2rem;
padding: 1.25rem 1.35rem;
background: linear-gradient(135deg, var(--surface) 0%, var(--teal-soft) 100%);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: var(--shadow);
}
.flyer-teaser__cover img,
.card__cover img {
display: block;
width: 100%;
height: auto;
border-radius: 3px;
box-shadow: 0 1px 2px rgba(26, 31, 46, 0.18), 0 6px 16px rgba(26, 31, 46, 0.18);
transition: transform 0.15s ease;
}
.flyer-teaser__cover:hover img,
.card__cover:hover img {
transform: translateY(-2px) rotate(-1deg);
}
.flyer-teaser__kicker {
margin: 0 0 0.3rem;
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--teal);
}
.flyer-teaser__hook {
margin: 0 0 0.85rem;
font-size: 1.05rem;
line-height: 1.45;
color: var(--navy);
}
.flyer-teaser__actions {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin: 0;
}
.card--book {
display: grid;
grid-template-columns: 5rem 1fr;
gap: 1.1rem;
align-items: start;
}
@media (max-width: 30rem) {
.flyer-teaser {
grid-template-columns: 4.5rem 1fr;
gap: 0.9rem;
padding: 1rem;
}
.flyer-teaser__hook {
font-size: 0.98rem;
}
.card--book {
grid-template-columns: 3.75rem 1fr;
gap: 0.85rem;
}
}
+21 -3
View File
@@ -38,7 +38,11 @@
<p class="section-label">Projekte</p>
<ul class="card-grid">
<li class="card">
<li class="card card--book">
<a class="card__cover" href="/projects/was-bleibt-vom-menschen/flyer/" aria-label="Flyer: Was bleibt vom Menschen?">
<img src="/assets/covers/was-bleibt-vom-menschen.jpg" width="600" height="900" alt="" loading="lazy">
</a>
<div class="card__body">
<h2><a href="/projects/was-bleibt-vom-menschen/">Was bleibt vom Menschen?</a></h2>
<p>
Begleit-Service: Stand &amp; Drift, Errata, drei Fragen / Prüfbedingungen /
@@ -48,9 +52,15 @@
<span class="tag">was-bleibt-vom-menschen</span>
<span class="tag tag--ok">companion-0.1.2</span>
<a class="btn btn--primary" href="/projects/was-bleibt-vom-menschen/">Zum Begleit-Service →</a>
<a class="btn btn--secondary" href="/projects/was-bleibt-vom-menschen/flyer/">Flyer</a>
</div>
</div>
</li>
<li class="card">
<li class="card card--book">
<a class="card__cover" href="/projects/ki-hinterm-vorhang/flyer/" aria-label="Flyer: Die KI hinter dem Vorhang">
<img src="/assets/covers/ki-hinterm-vorhang.jpg" width="600" height="900" alt="" loading="lazy">
</a>
<div class="card__body">
<h2><a href="/projects/ki-hinterm-vorhang/">Die KI hinter dem Vorhang</a></h2>
<p>
Begleit-Service: Stand &amp; Drift, Errata, Lese-/Denk-Checkliste,
@@ -60,9 +70,15 @@
<span class="tag">ki-hinterm-vorhang</span>
<span class="tag tag--ok">companion-0.1.12</span>
<a class="btn btn--primary" href="/projects/ki-hinterm-vorhang/">Zum Begleit-Service →</a>
<a class="btn btn--secondary" href="/projects/ki-hinterm-vorhang/flyer/">Flyer</a>
</div>
</div>
</li>
<li class="card">
<li class="card card--book">
<a class="card__cover" href="/projects/coding-agents-praxis/flyer/" aria-label="Flyer: Coding Agents in der Praxis">
<img src="/assets/covers/coding-agents-praxis.jpg" width="600" height="900" alt="" loading="lazy">
</a>
<div class="card__body">
<h2><a href="/projects/coding-agents-praxis/">Coding Agents in der Praxis</a></h2>
<p>
Begleit-Service: Stand &amp; Drift, Errata, Vorlagen/Checklisten (ZIP),
@@ -73,6 +89,8 @@
<span class="tag">coding-agents-praxis</span>
<span class="tag tag--ok">companion-0.1.4</span>
<a class="btn btn--primary" href="/projects/coding-agents-praxis/">Zum Begleit-Service →</a>
<a class="btn btn--secondary" href="/projects/coding-agents-praxis/flyer/">Flyer</a>
</div>
</div>
</li>
</ul>
@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Flyer: Coding Agents in der Praxis | KI-Buch-Archive</title>
<meta name="description" content="Flyer (A5) zum Buch Coding Agents in der Praxis von Martin Richardt: Pragmatischer Leitfaden für den produktiven Einsatz von Coding-Agents.">
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/flyer.css">
</head>
<body class="flyer-page flyer-page--coding">
<nav class="flyer-toolbar" aria-label="Flyer">
<a href="/projects/coding-agents-praxis/">← Zur Buchseite</a>
<span class="flyer-toolbar__links">
<a class="btn btn--primary" href="/downloads/coding-agents-praxis/flyer-coding-agents-praxis.pdf" download>Flyer als PDF (A5)</a>
<a class="btn btn--secondary" href="/beziehen.html">Buch beziehen</a>
</span>
</nav>
<article class="flyer" aria-label="Flyer Coding Agents in der Praxis">
<header class="flyer__hero">
<img class="flyer__cover" src="/assets/covers/coding-agents-praxis.jpg" width="600" height="900" alt="Cover: Coding Agents in der Praxis">
<div>
<p class="flyer__kicker">Praxisbuch · 1.&nbsp;Auflage 2026</p>
<h1 class="flyer__title">Coding Agents in der Praxis</h1>
<p class="flyer__subtitle">Pragmatischer Leitfaden für den produktiven Einsatz von Coding-Agents</p>
<p class="flyer__author">Martin Richardt
<span>Mathematik/Informatik · seit rund 35&nbsp;Jahren Softwareentwicklung</span></p>
</div>
</header>
<div class="flyer__body">
<p class="flyer__hook">Ein Coding-Agent ist nicht „die KI, die programmieren kann“, sondern LLM + Harness. Dieses Buch zeigt, wie Entwickler und Teams ihn zuverlässig einsetzen: mit engem Context, prüfbarer Definition of Done und klaren Grenzen.</p>
<p class="flyer__label">Was Sie erwartet</p>
<ol class="flyer__list">
<li><span><strong>Context is King:</strong> warum mehr Kontext nicht automatisch besser ist – und wie Write, Select, Compress, Isolate den Kontext schlank halten.</span></li>
<li><span><strong>DoD, Orakel und autonome Loops ohne Theater:</strong> Fertig ist, was der Agent selbst prüfen kann.</span></li>
<li><span><strong>Ein Workflow, der trägt:</strong> Explore → Plan → Execute → Verify → Commit, vertikale Slices und Multi-Agent-Verträge.</span></li>
<li><span><strong>Skills, MCP und Security:</strong> wiederverwendbare Expertise, Zugang zur Außenwelt, Secrets und Isolation.</span></li>
<li><span><strong>Auch für unreife Codebases:</strong> Legacy und Greenfield – plus Kern-Templates, Checklisten und Stack-Orientierung im Anhang.</span></li>
</ol>
<p class="flyer__for">Vendor-agnostisch. Den Schnellstart-Lesepfad schaffen Sie in etwa einem Tag.</p>
<p class="flyer__audience">Für Entwicklerinnen, Tech-Leads und Engineering-Manager, die ohne Hype produktiv werden wollen.</p>
</div>
<footer class="flyer__cta">
<div>
<p class="flyer__cta-title">Neugierig geworden?</p>
<p>Buch-PDF per E-Mail anfordern: <a href="https://books.maatini.space/beziehen.html">Buch beziehen</a></p>
<p>Vorlagen, Checklisten und Stack-Orientierung (Anhang&nbsp;B) – frei auf der <a href="https://books.maatini.space/projects/coding-agents-praxis/">Begleitseite</a>.</p>
<p class="flyer__url">books.maatini.space/projects/coding-agents-praxis/<br>Martin Richardt · Selbstverlag · 1.&nbsp;Auflage 2026</p>
</div>
<a class="flyer__qr" href="https://books.maatini.space/projects/coding-agents-praxis/"><img src="/assets/flyer/qr-coding-agents-praxis.svg" width="33" height="33" alt="QR-Code zur Buchseite"></a>
</footer>
</article>
</body>
</html>
+14
View File
@@ -80,6 +80,20 @@
</p>
</div>
<aside class="flyer-teaser" aria-label="Flyer zum Buch">
<a class="flyer-teaser__cover" href="/projects/coding-agents-praxis/flyer/">
<img src="/assets/covers/coding-agents-praxis.jpg" width="600" height="900" alt="Cover: Coding Agents in der Praxis" loading="lazy">
</a>
<div class="flyer-teaser__body">
<p class="flyer-teaser__kicker">Das Buch auf einen Blick</p>
<p class="flyer-teaser__hook">Ein Coding-Agent ist nicht „die KI, die programmieren kann“, sondern LLM + Harness. Das Buch zeigt, wie Entwickler und Teams ihn zuverlässig einsetzen.</p>
<p class="flyer-teaser__actions">
<a class="btn btn--primary" href="/projects/coding-agents-praxis/flyer/">Flyer ansehen →</a>
<a class="btn btn--secondary" href="/downloads/coding-agents-praxis/flyer-coding-agents-praxis.pdf" download>PDF (A5)</a>
</p>
</div>
</aside>
<p class="section-label">31. Oktober</p>
<article class="entry">
<h3>Companion 0.1.4 aus release-prep</h3>
@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Flyer: Die KI hinter dem Vorhang | KI-Buch-Archive</title>
<meta name="description" content="Flyer (A5) zum Buch Die KI hinter dem Vorhang von Martin Richardt: Was LLMs, Agenten und AGI wirklich können – und was nicht.">
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/flyer.css">
</head>
<body class="flyer-page flyer-page--vorhang">
<nav class="flyer-toolbar" aria-label="Flyer">
<a href="/projects/ki-hinterm-vorhang/">← Zur Buchseite</a>
<span class="flyer-toolbar__links">
<a class="btn btn--primary" href="/downloads/ki-hinterm-vorhang/flyer-ki-hinterm-vorhang.pdf" download>Flyer als PDF (A5)</a>
<a class="btn btn--secondary" href="/beziehen.html">Buch beziehen</a>
</span>
</nav>
<article class="flyer" aria-label="Flyer Die KI hinter dem Vorhang">
<header class="flyer__hero">
<img class="flyer__cover" src="/assets/covers/ki-hinterm-vorhang.jpg" width="600" height="900" alt="Cover: Die KI hinter dem Vorhang">
<div>
<p class="flyer__kicker">Sachbuch · 1.&nbsp;Auflage 2026</p>
<h1 class="flyer__title">Die KI hinter dem Vorhang</h1>
<p class="flyer__subtitle">Was LLMs, Agenten und AGI wirklich können – und was nicht</p>
<p class="flyer__author">Martin Richardt
<span>Mathematik/Informatik · seit rund 35&nbsp;Jahren Softwareentwicklung</span></p>
</div>
</header>
<div class="flyer__body">
<p class="flyer__hook">Hinter dem Chatfenster steckt selten eine denkende Maschine – und doch wirkt die Antwort oft erstaunlich klug. Dieses Buch erklärt, warum beides stimmen kann.</p>
<p class="flyer__label">Was Sie erwartet</p>
<ol class="flyer__list">
<li><span><strong>Was ein Sprachmodell tatsächlich tut:</strong> das nächste Textstück schätzen – und was es deshalb nicht „weiß“.</span></li>
<li><span><strong>Warum die schlichte Idee so weit trägt:</strong> vom Prediktor zum nützlichen Werkzeug, von AlexNet bis ChatGPT.</span></li>
<li><span><strong>Modell vs. System:</strong> wie aus einem Textvervollständiger Assistenten und Agenten werden – und was der „Harness“ dazu beiträgt.</span></li>
<li><span><strong>Wo die Luft dünn wird:</strong> was heute extrem gut funktioniert, was nicht – sortiert nach Prüfbarkeit in einer Ampel.</span></li>
<li><span><strong>Die Show vor dem Vorhang:</strong> Produktversprechen, Demos und AGI-Debatten nüchtern lesen.</span></li>
</ol>
<p class="flyer__for">Ohne Mathematik, ohne Heilsversprechen und ohne Untergangsromantik – mit Kriterien, die auch dann noch greifen, wenn die nächsten Modelle die Schlagzeilen ablösen.</p>
<p class="flyer__audience">Für alle, die KI im Beruf oder Alltag nutzen – und verstehen wollen, was hinter dem Vorhang wirklich passiert.</p>
</div>
<footer class="flyer__cta">
<div>
<p class="flyer__cta-title">Neugierig geworden?</p>
<p>Buch-PDF per E-Mail anfordern: <a href="https://books.maatini.space/beziehen.html">Buch beziehen</a></p>
<p>Lese- und Denk-Checkliste, Ampel-Matrix und Kernbegriffe – frei auf der <a href="https://books.maatini.space/projects/ki-hinterm-vorhang/">Begleitseite</a>.</p>
<p class="flyer__url">books.maatini.space/projects/ki-hinterm-vorhang/<br>Martin Richardt · Selbstverlag · 1.&nbsp;Auflage 2026</p>
</div>
<a class="flyer__qr" href="https://books.maatini.space/projects/ki-hinterm-vorhang/"><img src="/assets/flyer/qr-ki-hinterm-vorhang.svg" width="33" height="33" alt="QR-Code zur Buchseite"></a>
</footer>
</article>
</body>
</html>
+14
View File
@@ -74,6 +74,20 @@
</p>
</div>
<aside class="flyer-teaser" aria-label="Flyer zum Buch">
<a class="flyer-teaser__cover" href="/projects/ki-hinterm-vorhang/flyer/">
<img src="/assets/covers/ki-hinterm-vorhang.jpg" width="600" height="900" alt="Cover: Die KI hinter dem Vorhang" loading="lazy">
</a>
<div class="flyer-teaser__body">
<p class="flyer-teaser__kicker">Das Buch auf einen Blick</p>
<p class="flyer-teaser__hook">Hinter dem Chatfenster steckt selten eine denkende Maschine – und doch wirkt die Antwort oft erstaunlich klug. Das Buch erklärt, warum beides stimmen kann.</p>
<p class="flyer-teaser__actions">
<a class="btn btn--primary" href="/projects/ki-hinterm-vorhang/flyer/">Flyer ansehen →</a>
<a class="btn btn--secondary" href="/downloads/ki-hinterm-vorhang/flyer-ki-hinterm-vorhang.pdf" download>PDF (A5)</a>
</p>
</div>
</aside>
<p class="section-label">1. November</p>
<article class="entry">
<h3>Material am Buchtext nachgezogen</h3>
@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Flyer: Was bleibt vom Menschen? | KI-Buch-Archive</title>
<meta name="description" content="Flyer (A5) zum Buch Was bleibt vom Menschen? von Martin Richardt: KI, Wert und die Grenzen der Automatisierung.">
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/flyer.css">
</head>
<body class="flyer-page flyer-page--menschen">
<nav class="flyer-toolbar" aria-label="Flyer">
<a href="/projects/was-bleibt-vom-menschen/">← Zur Buchseite</a>
<span class="flyer-toolbar__links">
<a class="btn btn--primary" href="/downloads/was-bleibt-vom-menschen/flyer-was-bleibt-vom-menschen.pdf" download>Flyer als PDF (A5)</a>
<a class="btn btn--secondary" href="/beziehen.html">Buch beziehen</a>
</span>
</nav>
<article class="flyer" aria-label="Flyer Was bleibt vom Menschen?">
<header class="flyer__hero">
<img class="flyer__cover" src="/assets/covers/was-bleibt-vom-menschen.jpg" width="600" height="900" alt="Cover: Was bleibt vom Menschen?">
<div>
<p class="flyer__kicker">Sachbuch · 1.&nbsp;Auflage 2026 · Vorabexemplar</p>
<h1 class="flyer__title">Was bleibt vom Menschen?</h1>
<p class="flyer__subtitle">KI, Wert und die Grenzen der Automatisierung</p>
<p class="flyer__author">Martin Richardt
<span>Mathematik/Informatik · seit rund 35&nbsp;Jahren Softwareentwicklung</span></p>
</div>
</header>
<div class="flyer__body">
<p class="flyer__hook">Das Schreiben wird billig, das Prüfen wird zum Engpass. Was gewinnt an Wert, wenn kognitive Routinearbeit billig wird? Dieses Buch gibt keine Prognose, sondern eine begründete Position.</p>
<p class="flyer__label">Was Sie erwartet</p>
<ol class="flyer__list">
<li><span><strong>Was KI heute wirklich ist:</strong> Sprachmodelle in einer Hülle aus Software – leistungsfähig, schmal und stark von dieser Hülle abhängig.</span></li>
<li><span><strong>Reale Fälle statt Schlagzeilen:</strong> von Air Canada über EuGH SCHUFA bis Thaler v.&nbsp;Perlmutter, METR und GSM-Symbolic.</span></li>
<li><span><strong>Wann Aufsicht zur Zeremonie wird:</strong> Zeit, Fachkenntnis, Befugnis, Folge – fehlt eine der vier Prüfbedingungen, prüft niemand mehr wirklich.</span></li>
<li><span><strong>Was vorerst menschlich bleibt:</strong> Urteilskraft, Verantwortung, Beziehung – und warum Entscheidungen eine Adresse brauchen.</span></li>
<li><span><strong>Sechs Hebel zum Gestalten:</strong> Organisation, Person, Gesellschaft – in einer Reihenfolge, die mit der Prüfung beginnt.</span></li>
</ol>
<p class="flyer__for">26 Kapitel in sechs Teilen, jedes mit „Kern in einem Satz“ und „Häufigem Missverständnis“. Vorkenntnisse braucht es nicht.</p>
<p class="flyer__audience">Für alle, die KI nutzen und wissen wollen, was sie Menschen wert ist.</p>
</div>
<footer class="flyer__cta">
<div>
<p class="flyer__cta-title">Neugierig geworden?</p>
<p>Buch-PDF per E-Mail anfordern: <a href="https://books.maatini.space/beziehen.html">Buch beziehen</a></p>
<p>Drei Fragen, Prüfbedingungen, sechs Hebel und Kernbegriffe – frei auf der <a href="https://books.maatini.space/projects/was-bleibt-vom-menschen/">Begleitseite</a>.</p>
<p class="flyer__url">books.maatini.space/projects/was-bleibt-vom-menschen/<br>Martin Richardt · Selbstverlag · 1.&nbsp;Auflage 2026</p>
</div>
<a class="flyer__qr" href="https://books.maatini.space/projects/was-bleibt-vom-menschen/"><img src="/assets/flyer/qr-was-bleibt-vom-menschen.svg" width="33" height="33" alt="QR-Code zur Buchseite"></a>
</footer>
</article>
</body>
</html>
@@ -74,6 +74,20 @@
</p>
</div>
<aside class="flyer-teaser" aria-label="Flyer zum Buch">
<a class="flyer-teaser__cover" href="/projects/was-bleibt-vom-menschen/flyer/">
<img src="/assets/covers/was-bleibt-vom-menschen.jpg" width="600" height="900" alt="Cover: Was bleibt vom Menschen?" loading="lazy">
</a>
<div class="flyer-teaser__body">
<p class="flyer-teaser__kicker">Das Buch auf einen Blick</p>
<p class="flyer-teaser__hook">Das Schreiben wird billig, das Prüfen wird zum Engpass. Was gewinnt an Wert, wenn kognitive Routinearbeit billig wird?</p>
<p class="flyer-teaser__actions">
<a class="btn btn--primary" href="/projects/was-bleibt-vom-menschen/flyer/">Flyer ansehen →</a>
<a class="btn btn--secondary" href="/downloads/was-bleibt-vom-menschen/flyer-was-bleibt-vom-menschen.pdf" download>PDF (A5)</a>
</p>
</div>
</aside>
<p class="section-label">1. November</p>
<article class="entry">
<h3>Reale Fälle im Buch, neue Seitenzahlen</h3>
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Baut die A5-Flyer-PDFs aus projects/<slug>/flyer/index.html neu (Headless Chrome, lokal).
# Ausgabe: downloads/<slug>/flyer-<slug>.pdf. Optional PNG-Vorschau mit PREVIEW_DIR=/pfad.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
CHROME="${CHROME:-/Applications/Google Chrome.app/Contents/MacOS/Google Chrome}"
PORT="${PORT:-8765}"
SLUGS=(was-bleibt-vom-menschen ki-hinterm-vorhang coding-agents-praxis)
PROFILE="$(mktemp -d)"
cd "$ROOT"
python3 -m http.server "$PORT" --bind 127.0.0.1 >/dev/null 2>&1 &
SERVER=$!
trap 'kill "$SERVER" 2>/dev/null || true; rm -rf "$PROFILE"' EXIT
sleep 1
for slug in "${SLUGS[@]}"; do
out="downloads/${slug}/flyer-${slug}.pdf"
"$CHROME" --headless=new --disable-gpu --no-first-run --user-data-dir="$PROFILE" \
--no-pdf-header-footer --print-to-pdf="$ROOT/$out" \
"http://127.0.0.1:${PORT}/projects/${slug}/flyer/" >/dev/null 2>&1
pages="$(pdfinfo "$out" 2>/dev/null | awk '/^Pages:/{print $2}')"
echo "${out} Seiten: ${pages:-?}"
[ "${pages:-1}" = "1" ] || { echo "FEHLER: ${slug} ist nicht einseitig" >&2; exit 1; }
if [ -n "${PREVIEW_DIR:-}" ]; then
mkdir -p "$PREVIEW_DIR"
pdftoppm -png -r 150 -singlefile "$out" "$PREVIEW_DIR/$slug"
fi
done