1 / 27
Opole.dev

Living documentation
w całym cyklu życia systemu

Od modeli C4 i ADR-ów po kontrakty API
i changelog przyjazne ludziom i AI

Krzysztof Ochmann  |  Convista
👨‍💻
Krzysztof Ochmann
Architect & Android Dev
Convista
Kim jestem?
📱
Dekada w mobile
Tworzę i rozwijam aplikacje mobilne — mierząc się z niemiecką dokładnością i naturalną opornością na zmiany.
🏗️
Architektura i AI
Ostatnio częściej skupiam się jednak na architekturze i wykorzystaniu LLMów w procesach biznesowych.
🎯
Moja misja
Optymalizowanie developmentu i procesów biznesowych.
🚴
Po pracy
Rozwijanie smart home bazujacego na Home Assistant. Jazda na szosie, marzenie: przejechać trasę Alpe Adria.
Kto lubi pisać
dokumentację? 🙋
Dokumentacja jest bolesna.
Ale jej brak jest jeszcze bardziej bolesny.

Każdy projekt ma dokumentację.
Prawie nikt jej nie czyta.
Prawie nikt jej nie aktualizuje.
I wszyscy wiedzą dlaczego.

Widzę, że piszesz dokumentację...
Może pomogę?
Spinacz
MS Office Clippy (1997–2007)
Dlaczego teraz?
Powody do dokumentowania
zmieniły się fundamentalnie.

Kiedyś pisaliśmy dokumentację dla ludzi. Teraz piszemy ją też dla maszyn — agentów AI, których kontekstem jest właśnie nasza dokumentacja.

❌ Kiedyś

  • dla klienta
  • dla audytu
  • bo trzeba
  • Word / SharePoint / Confluence

✅ Teraz

  • paliwo dla AI
  • context window
  • agenci
  • automatyzacja
Agenda
Plan prezentacji
01

Filozofia Living Documentation

02

Co dokumentować?

03

Dokumentacja w erze AI

04

Jak zacząć?

05

Wnioski i Q&A

Filozofia
Dokumentacja ma sens tylko jeśli jest aktualna.
  • "Documentation" — czyli coś, czego nikt nie lubi pisać
  • "Living" — i to jeszcze ma żyć??? Tak.
  • Dokumentacja, która żyje razem z kodem
  • W tym samym repo, w tym samym PR
  • Walidowana automatycznie, nie aktualizowana raz na rok
 Klasycznie
Microsoft Word / Confluence
Nieaktualne po 2 tygodniach
SharePoint / Google Docs
Brak wersjonowania, brak review
Wiki w Jira
Odcięte od kodu, nikt nie aktualizuje
PDF z diagramami
Brak historii zmian

"Dokumentacja jest aktualna..."
(na dzień publikacji)

 Everything as Code
Markdown w repozytorium
Obok kodu, w tym samym PR
Code review dokumentacji
Pull request, diff, komentarze
CI/CD walidacja
Automatyczne sprawdzanie spójności
Git historia
Kto, kiedy, dlaczego zmienił
# docs/architecture/ADR-001.md
**Status:** Accepted | **Date:** 2026-01-15
**Context:** We need persistence layer...
**Decision:** PostgreSQL + Redis cache
**Consequences:** +reliability, +tooling
Anty-wzorzec
Vibe Coding

Piszesz kod kierując się "wyczuciem" — iterujesz z AI bez planu, bez specyfikacji, bez testów. Prompt zastępuje myślenie.

PĘTLA VIBE CODING
Pomysł
Prompt AI
Kod
Bug
Fix
od nowa
Konsekwencje
Brak specyfikacji — AI generuje bez kontekstu systemu
Brak testów — "działa na moim promptcie"
Architektura przez przypadek — dług techniczny rośnie
Kontekst ginie — AI nie zna historii decyzji
Trudny onboarding — tylko autor rozumie kod
Antidotum →
Im lepsza specyfikacja przed kodem,
tym mniej "vibe", więcej świadomego kodowania.
Antyteza Vibe Codingu
Spec-Driven
Development

Zanim napiszesz pierwszą linię kodu — masz gotową specyfikację. Kod jest implementacją specyfikacji, nie odwrotnie.

CO PRZYGOTOWUJESZ PRZED KODOWANIEM

Wymagania

Kontrakty

Architektura

Cel: Living Documentation — specyfikacja pisana przed kodem to dokumentacja, która nigdy się nie dezaktualizuje.
Efekt
Koniec z vibe codingiem
AI generuje z precyzyjnej specyfikacji — nie z przybliżonego opisu czy domysłu.
Świadome kodowanie
Programista rozumie problem zanim go rozwiąże. Spec wymusza myślenie przed pisaniem.
Living Doc jako efekt uboczny
Specyfikacja pisana przed kodem to dokumentacja, która nigdy się nie dezaktualizuje.
SDLC + Spec-Driven Development
Dokumentacja w całym cyklu życia systemu
Spec-Driven Development towarzyszy każdej fazienie jest "na koniec". Każdy artefakt ma właściciela, format i miejsce w repozytorium.
Spec-Driven Development — Wymagania
PRD: Product Requirements Document
Co to jest?

Dokument opisujący CO system ma robić i DLACZEGO — nie jak. Kontrakt między biznesem, produktem i zespołem inżynierskim, zanim powstanie pierwsza linia kodu.

Dlaczego ważne?
🤝 Alignment

Jeden dokument — jedno rozumienie. Eliminuje „ale myślałem, że..." na etapie demo.

🤖 Paliwo dla AI

Agent AI z pełnym PRD w kontekście generuje precyzyjny kod, nie zgaduje intencji.

🧪 Baseline dla QA

Acceptance Criteria z PRD = gotowe przypadki testowe. Zero domysłów co „przechodzi".

Format: Markdown w repozytorium — wersjonowany, recenzowany w PR, walidowany w CI
Szablon PRD — docs/PRD.md
# PRD: Sklep Online — Moduł Płatności

## Problem Statement
Użytkownicy porzucają koszyk przy płatności
z powodu braku popularnych metod (BLIK, PayPal).

## Business Objective
Zmniejszyć porzucanie koszyka o 25% w Q3.
KPI: conversion rate > 4.5%.

## Personas
- **Klient detaliczny** — kupuje, oczekuje wygody
- **Administrator** — konfiguruje metody płatności

## Features
| Feature        | Priorytet | Notes           |
|----------------|-----------|-----------------|
| BLIK           | MUST      | PL-only         |
| PayPal         | MUST      | INT             |
| Apple Pay      | SHOULD    | iOS 16+         |
| Krypto         | WON'T     | Out of scope    |

## Non-Functional Requirements
- Czas transakcji: < 3s (p95)
- Bezpieczeństwo: PCI DSS Level 1
- Dostępność: 99.9% uptime

## Out of Scope
- Waluta wielowalutowa (faza 2)
- Subskrypcje (osobny PRD)

## Acceptance Criteria
- [ ] Użytkownik płaci BLIKiem w < 3s
- [ ] Nieudana płatność → czytelny komunikat
- [ ] Admin włącza/wyłącza metodę bez deployu
PRD to pierwsza specyfikacja przed pierwszą linią kodu — i najlepszy kontekst, jaki możesz dać AI-agentowi.
Spec-Driven Development — Architektura
C4 Model: ten sam system, cztery perspektywy
L1 Context

System w otoczeniu — aktorzy i zewnętrzne zależności

Klient [Person] Admin [Person_Ext] Sklep Online [System] PayU [Ext] SendGrid [Ext]

👤 Klient, Admin
🏪 Sklep Online
🔌 PayU, SendGrid

L2 Container

Aplikacje, serwisy, bazy wewnątrz systemu

Sklep Online React SPA [Container: JS] API Node.js [Container: JS] Redis [Cache] PostgreSQL [Database]

🌐 React SPA
⚙️ API Node.js
🗄 PostgreSQL, Redis

L3 Component

Moduły i serwisy wewnątrz kontenera

API Node.js OrderService [Component] PaymentSvc [Component] ProductSvc [Component] NotifSvc [Component]

📦 OrderService
💳 PaymentService
🔔 NotificationSvc

L4 Code

Klasy, interfejsy, metody, zależności

<<interface>> IOrderRepository + findById(id): Order + save(order): void <<class>> OrderService + createOrder(cart) + validateCart(items)

🔷 IOrderRepository
🔶 OrderService
⚡ createOrder()

Ten sam Sklep Online — cztery poziomy szczegółowości, cztery grupy odbiorców
Spec-Driven Development — Architektura
Diagram jako kod: PlantUML i Mermaid
PlantUML + C4_Context.puml
@startuml
!include C4_Context.puml

Person(klient, "Klient",
  "Składa zamówienia")
Person_Ext(admin, "Admin",
  "Zarządza katalogiem")

System(sklep, "Sklep Online",
  "Platforma e-commerce")

System_Ext(platnosci, "PayU",
  "Bramka płatności")
System_Ext(email, "SendGrid",
  "Powiadomienia email")

Rel(klient, sklep,
  "Przeglądanie", "HTTPS")
Rel(admin, sklep,
  "Zarządzanie", "HTTPS")
Rel(sklep, platnosci,
  "Płatności", "REST API")
Rel(sklep, email,
  "Potwierdzenia", "SMTP")

@enduml
Mermaid C4Context
C4Context
  title Sklep Online — C1 Context

  Person(
    klient, "Klient",
    "Składa zamówienia")
  Person_Ext(
    admin, "Admin",
    "Zarządza katalogiem")

  System(
    sklep, "Sklep Online",
    "Platforma e-commerce")

  System_Ext(
    platnosci, "PayU",
    "Bramka płatności")
  System_Ext(
    email, "SendGrid",
    "Powiadomienia email")

  Rel(klient, sklep, "HTTPS")
  Rel(admin, sklep, "HTTPS")
  Rel(sklep, platnosci,
    "REST API")
  Rel(sklep, email, "SMTP")
Wynik (C1 Context)
Klient [Person] Składa zamówienia Admin [Person_Ext] Zarządza HTTPS HTTPS Sklep Online [System] e-commerce REST SMTP PayU [Ext] Płatności SendGrid [Ext] Email

① Rendering

PlantUML — wymaga serwera Java lub pluginu
Mermaid — renderuje w przeglądarce; natywny w GitHub, GitLab, Notion

② Wsparcie C4

PlantUML — pełna biblioteka C4 (L1–L4, Deployment)
Mermaid — tylko C4Context / C4Container (brak L3, L4)

Spec-Driven Development — Wizualizacja
Canvas jako kod: Excalidraw do brainstormingu

✏️ Excalidraw — wolny format jako kod

Whiteboard zapisany jako JSON w repozytorium.
Idealny do eksploracji pomysłów, szkiców architektury i wstępnych koncepcji — zanim powstanie formalna specyfikacja.

🧠 Brainstorming 💡 Koncepcje 🏗 Szkice architektury 🗺 User journeys
{
  "type": "excalidraw",
  "version": 2,
  "elements": [
    {
      "type": "rectangle",
      "id": "sklep-online",
      "x": 100, "y": 80,
      "width": 200, "height": 80,
      "label": { "text": "Sklep Online" }
    },
    {
      "type": "arrow",
      "id": "rel-1",
      "startBinding": { "elementId": "klient" },
      "endBinding":   { "elementId": "sklep-online" }
    }
  ],
  "appState": { "theme": "dark" }
}

Miro / Mural — vendor lock-in, dane w chmurze dostawcy, brak wersjonowania w git

Canvas / Board jako kod (Excalidraw)

Wolny format — brak ograniczeń notacji, dowolne kształty i połączenia

JSON w repo — wersjonowany, diff w git, review w PR

AI-readable — LLM rozumie strukturę JSON, może generować i modyfikować

Offline, open-source — brak vendor lock-in, działa bez internetu

Eksploracja przed specyfikacją — szkic koncepcji zanim powstanie PRD

vs

Diagramy jako kod (Mermaid / PlantUML)

Precyzyjny DSL — deterministyczny wynik, formalne notacje (UML, C4, sekwencje)

CI/CD integration — automatyczna walidacja i generowanie diagramów w pipeline

Czytelny diff — zmiany w architekturze widoczne jako diff tekstowy w PR

AI generuje i weryfikuje — LLM pisze Mermaid z opisu, sprawdza spójność z kodem

Natywny w GitHub/GitLab — Mermaid renderuje się w Markdown bez żadnych pluginów

Canvas do eksploracji — diagramy do specyfikacji. Oba jako kod, oba w repozytorium.
Spec-Driven Development — Architektura
ADR: dlaczego podjęliśmy tę decyzję?

Jeden plik Markdown = jedna decyzja architektoniczna.
Wersjonowany w git, review'owany w PR, czytany przez AI.

01

Tytuł

Krótki, jednoznaczny opis decyzji

02

Status

Proposed Accepted Deprecated Superseded
03

Kontekst

Dlaczego stoimy przed tą decyzją?

04

Decyzja

Co zdecydowaliśmy i dlaczego?

05

Konsekwencje

Co zyskujemy? Co tracimy?

Przykład — ADR-001
# ADR-001: Wybór bazy danych

**Status:** Accepted
**Date:** 2026-01-15
**Deciders:** @backend-team

## Kontekst

Potrzebujemy bazy danych dla modułu zamówień.
Wymagania: ACID, 10k TPS, relacje między tabelami.

## Decyzja

Wybieramy **PostgreSQL 16** jako główną bazę.
Redis jako cache dla sesji i koszyka.

## Konsekwencje

✅ Silne gwarancje ACID
✅ Bogaty ekosystem narzędzi
⚠️  Wymaga doświadczenia z SQL
❌ Brak wbudowanego shardingu

Historia decyzji w git — kto, kiedy i dlaczego podjął decyzję

Onboarding — nowy developer rozumie architekturę bez "pytaj starszych"

Paliwo dla AI — LLM zna kontekst decyzji, nie tylko jej wynik

ADR to nie dokumentacja po fakcie — to kontrakt decyzyjny pisany w momencie wyboru
Spec-Driven Development — API
API-First & Contract-Driven: Development

Kontrakt API to umowa — między frontendem a backendem, między mikroserwisami, między Twoim kodem a AI.

OpenAPI / Swagger — REST API — standard branżowy, tooling bogaty

AsyncAPI — Eventy i messaggi — Kafka, RabbitMQ, WebSocket

RAML — Alternatywa dla OpenAPI — mniej popularna

MCP — Model Context Protocol — Kontrakt komunikacji z agentami AI — nowy standard

Walidacja w CI
CI Pipeline
✅ OpenAPI schema valid
✅ Contract tests passed
✅ Breaking changes: none

🤖 MCP = AI kontrakty

Model Context Protocol — nowy sposób definiowania co AI agent może zrobić, jakie ma narzędzia i zasoby.

openapi: "3.1.0"
info:
  title: Orders API
  version: 2.4.1
paths:
  /orders:
    post:
      summary: Create order
      # MUST validate payment
Kontrakt API to umowa — między serwisami, między teamami, między kodem a AI
Spec-Driven Development — Wersjonowanie
Changelog — historia projektu w jednym pliku
keep-a-changelog.org
Standard

Definiuje format pliku CHANGELOG.md i konwencję sekcji — jeden spójny standard dla całego projektu.

Narzędzie CLI
# dodaj wpis do [Unreleased]
changelog add \
  --type added \
  "Eksport zamówień do CSV"

# promuj [Unreleased] → wersja
changelog release 2.4.1

Co stoi na przeszkodzie, żeby rozszerzać changelog przy każdym pull-requeście?

Semantic Versioning
2.4.1

Wersja to kontrakt z użytkownikiem. Bez SemVer changelog traci połowę sensu. semver.org

CHANGELOG.md
CHANGELOG.md
# Changelog
 
## [Unreleased]
### Added
- Eksport zamówień do CSV
 
## [2.4.1] — 2026-03-15
### Fixed
- Błąd walidacji zamówień (#342)
### Security
- CVE-2026-1234
 
## [2.4.0] — 2026-03-01
### Added
- POST /orders/bulk, powiadomienia email
### Changed
- Format daty → ISO 8601
CHANGELOG to historia projektu czytelna dla człowieka, narzędzi i AI
Spec-Driven Development — Podsumowanie
Struktura projektu: wszystkie pliki w jednym miejscu
Przykładowa struktura — Sklep Online
sklep-online/
│
├── AGENTS.md              ← instrukcje dla agentów AI
├── CHANGELOG.md           ← keep-a-changelog + SemVer
├── README.md              ← opis projektu i setup
├── LLMs.txt               ← kontekst dla modeli AI
│
├── docs/
│   ├── prd/
│   │   └── PRD-001-modul-platnosci.md
│   │
│   ├── adr/
│   │   ├── ADR-001-baza-danych.md
│   │   ├── ADR-002-cache-redis.md
│   │   └── ADR-003-api-rest-vs-grpc.md
│   │
│   ├── arc42/
│   │   └── architecture.md
│   │
│   ├── c4/
│   │   ├── context.puml        ← L1 Context
│   │   ├── containers.puml     ← L2 Container
│   │   └── components.puml     ← L3 Component
│   │
│   └── api/
│       └── openapi.yaml        ← API-first contract
│
├── brainstorm/
│   ├── modul-platnosci.excalidraw
│   └── onboarding-flow.excalidraw
│
└── src/
    └── ...

🤖 Dla AI

AGENTS.md— role, umiejętności i instrukcje dla agentów
LLMs.txt— skrócony kontekst projektu ładowany do każdego promptu

📋 Wymagania

docs/prd/PRD-*.md— problem, cele, features, kryteria akceptacji

🏗 Architektura

docs/adr/ADR-*.md— decyzje architektoniczne z kontekstem i konsekwencjami
docs/arc42/— całościowy opis architektury systemu
docs/c4/*.puml— diagramy C4 jako kod (L1–L3)

🔌 API & Release

docs/api/openapi.yaml— kontrakt API-first, źródło prawdy
CHANGELOG.md— keep-a-changelog, wersjonowanie SemVer
README.md— setup, opis, linki do dokumentacji

✏️ Eksploracja

brainstorm/*.excalidraw— canvas jako kod, wersjonowany w git
Każdy plik ma swoje miejsce w repo — dokumentacja to część systemu, nie dodatek do niego
AI w CI/CD
AI jako strażnik dokumentacji w CI/CD
PR
Opened
Checkout
Code
Changed
Files
LLM
Review
Comment
on PR
Docs
OK?
Yes
Pass
No
Block
docs-guardian pozostawił komentarz teraz

Brak dokumentacji dla zmienionych plików

src/orders/ — brak wpisu w README i CHANGELOG. Zaktualizuj dokumentację lub dodaj uzasadnienie w opisie PR.

changelog-bot pozostawił komentarz teraz

CHANGELOG.md nie zawiera wpisu dla tego PR

Wykryto zmiany w src/ bez sekcji [Unreleased]. Dodaj wpis przed mergem.

adr-watcher pozostawił komentarz teraz

Konflikt z ADR-023: Warstwa persystencji

Zmiany w OrderRepository są niezgodne z decyzją. Zweryfikuj kod lub napisz aktualizację ADR-023.

CI/CD nie tylko testuje kod — może też pilnować jakości dokumentacji przy każdym PR
Context Window
Dlaczego dokumentacja musi być zwięzła?
2 648
linii = ~40 000 tokenów = ~50 stron A4

Ładowane do KAŻDEGO promptu. Każdy token kosztuje — czas, pieniądze i uwagę modelu.

Koszt × liczba wywołań dziennie

GPT-4o ~$0.10 / 40k tokenów
Claude Opus 4.6 ~$0.20 / 40k tokenów

Szybkość

Krótsze prompty = szybsze odpowiedzi = szybszy feedback loop

🎯

Dokładność

Mniej szumu = model skupia się na tym co ważne

Uwaga: pozycja ma znaczenie
Context window layout
Linia 1-50: Ważne info 🎯
Linia 51-2500: Treść...
Linia 2600: Ważne info ⚠️

⚠️ AI parsuje sekwencyjnie. Ważna informacja na końcu = zmarnowany budżet tokenów i słabszy wynik.

✅ Zasada: najważniejsze informacje zawsze na początku dokumentu.

Zwięzłość to szacunek dla context window — i dla uwagi modelu
Spec-Driven Development — RFC 2119 i precyzja językowa
Precyzja ważniejsza niż styl

Standard z 1997, używany w HTTP, TLS, OAuth. Eliminuje niejednoznaczność w specyfikacjach technicznych.

MUST Wymaganie bezwzględne — brak = błąd
SHOULD Rekomendacja — można pominąć z uzasadnieniem
MAY Opcjonalne — zależnie od potrzeb

📚 Dużo przykładów kodu = najlepsza dokumentacja dla LLM. Kod jest jednoznaczny — ludzki język nie jest.

⚠️ Niejednoznaczność = halucynacja. LLM wypełnia luki "kreatywnie".

Przykłady
✗ NIEJEDNOZNACZNE
It is recommended to use PostgreSQL
when possible. Redis can be used for
caching if performance is needed.
Consider the team's expertise.
✓ JEDNOZNACZNE (RFC 2119)
Service MUST use PostgreSQL 16 for all
persistent storage.
Service MAY use Redis 7 for session cache.
Service MUST NOT use MySQL or SQLite.
✗ NIEJEDNOZNACZNE
Handle errors appropriately and log
important information for debugging.
✓ JEDNOZNACZNE
Service MUST return HTTP 422 for
validation errors with body:
{"error":"...", "field":"..."}
Service MUST log all 5xx errors to
stdout in JSON format.
LLM to pattern matching machine — jednoznaczny wzorzec = przewidywalny wynik
Spec-Driven Development — AI
RAG, MCP i problem kontekstu

📚 RAG

Retrieval Augmented Generation

Duże bazy dokumentacji + semantic search. AI "szuka" odpowiedzi zanim odpowie.

✅ Działa dla dużych baz wiedzy
⚠️ Wymaga wektorowej bazy danych
❌ "Nie wiem czego nie wiem" problem

🔌 MCP

Model Context Protocol

Nowy sposób dostarczania kontekstu do AI. Zamiast wklejać do prompta — serwer MCP dostarcza dynamicznie.

✅ Strukturyzowany kontekst
✅ Dynamiczne aktualizacje
⚠️ Nowy ekosystem (2024+)

⚠️ Problem

"Nie wiem czego nie wiem"

LLM może nie wiedzieć jakich informacji szukać. Semantic search wymaga dobrego zapytania. Garbage in = garbage out.

RAG i MCP to narzędzia, nie rozwiązania. Dobra dokumentacja u źródła jest niezbędna.

🎯 Żadne z tych rozwiązań nie zastąpi dobrej, zwięzłej dokumentacji u źródła — RAG i MCP to bandaże, leczeniem jest dobra dokumentacja od początku
Spec-Driven Development — Nowy projekt
Nowy projekt — zacznij od specyfikacji
Living Spec Living Code Living Docs

Dokumentacja nie jest ostatnim krokiem. Jest pierwszym. Specyfikacja definiuje co budujesz — zanim to zbudujesz.

💡 Zasada: jeśli nie potrafisz opisać w 3 zdaniach co robi system — nie jesteś gotowy żeby go budować.

MVP Checklist — 4 pliki

README.md — Cel projektu, jak uruchomić lokalnie, jak kontrybuować

docs/adr/ADR-001.md — Pierwsza decyzja architektoniczna — "dlaczego ten stack?"

openapi.yaml / asyncapi.yaml — Kontrakt API — zanim napiszesz pierwszą linię kodu

AGENTS.md — Kontekst dla AI asystentów — co mogą, czego nie mogą

⏱️ Czas: ~2 godziny. Oszczędność: tygodnie nieporozumień.

Specyfikacja przed kodem to nie biurokracja — to fundament na tygodnie do przodu
Spec-Driven Development — Legacy projekt
Legacy — reverse engineering z AI

Masz istniejący projekt bez dokumentacji. AI może pomóc — ale z ważnymi ograniczeniami.

⚠️ AI nie zna historii decyzji.
ADR-y musisz napisać sam — lub odtworzyć z git log i rozmów z zespołem.

AI wygeneruje opis CZEGO kod robi.
Nigdy nie powie DLACZEGO tak jest.

3-krokowy proces
01

🤖 Zdefiniuj agentów i skills

Co AI ma robić w tym projekcie? AGENTS.md jako punkt startowy — definiuje granice autonomii AI w legacy kodzie.

02

📄 Generuj pierwszy draft z AI

Użyj AI do wygenerowania pierwszej wersji README, diagramów C4, opisu API. To punkt startowy — nie finalny dokument.

03

🔄 Iteruj: AI generuje, człowiek weryfikuje

Każdy sprint: AI propozycja → code review dokumentacji → merge. Dokumentacja rośnie wraz z zrozumieniem systemu.

AI generuje CZEGO — ale DLACZEGO musisz napisać sam, to nie da się odtworzyć z kodu
Podsumowanie
Kluczowe wnioski
01

Everything as Code — w narzędziach AI-native

Dokumentacja w repo — wersjonowana, reviewowana, automatycznie walidowana. Mermaid, ADR, OpenAPI, CHANGELOG — to nie pliki, to artefakty projektowe. Narzędzia AI-native (Cursor, GitHub Copilot, Claude) rozumieją to jako kontekst, nie jako tekst.

02

Spec-Driven Development — najpierw specyfikacja

PRD, model C4, ADR, kontrakt API — zanim napiszesz pierwszy wiersz kodu. Specyfikacja to nie biurokracja — to projekt systemu, który AI może czytać, weryfikować i z którego generować kod.

03

AI nie tylko do kodowania — przez cały SDLC

Requirements → Design → Development → Testing → Release → Maintenance. AI może wspierać każdą fazę — pod warunkiem, że dokumentacja jest precyzyjna, zwięzła i w repozytorium. Dobra dokumentacja to paliwo dla AI w całym cyklu życia systemu.

Living documentation to nie praktyka — to fundament pracy z AI w każdej fazie SDLC
Myśl na wynos
A co jeśli za niedługo specyfikacja będzie kodem?
Opole.dev
Q&A
Czas na pytania
linkedin.com/in/krzysztof-ochmann krzysztof.ochmann@gmail.com
Dziękuję! 🙏
OPOLE.DEV 2026  ·  LIVING DOCUMENTATION  ·  #livingdocs