Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
57fdc84
added ai.nette.org
dg Jan 8, 2026
870b312
added ai.nette.org
dg Sep 24, 2026
c47116c
latte 3.1.2
dg Jan 23, 2026
a1401e7
latte: info about whitespace
dg Mar 17, 2026
97eabb4
latte 3.1.3
dg Dec 23, 2025
2661673
typo
dg Feb 23, 2026
c2da990
latte: changed user template
dg Apr 13, 2026
b7aaa50
php-generator: v4.2.2
dg Feb 23, 2026
b7dce0f
di: documented @Type as service key for modifications
dg Mar 5, 2026
5bf058e
nette/mail 4.1.0
dg Mar 27, 2026
bd54cfa
updated links to PhpStorm plugins
dg Apr 12, 2026
fd08f77
tracy: open-files-in-ide updated Chrome policy to AutoLaunchProtocols…
dg Apr 12, 2026
db4300a
coding standard: added enums.php convention
dg Apr 6, 2026
ac6f04d
latte 3.1.4
dg Dec 23, 2025
9b11cac
latte: develop.texy adds 'Ways to Extend Latte' overview
dg Apr 25, 2026
7e98c0c
nette: add emoji icons to documentation home links
dg Apr 25, 2026
4355b2d
nette/utils 4.1.4
dg May 11, 2026
e2844ba
nette/database 3.2.9
dg May 17, 2026
df57c10
database: renamed mapping.texy to type-conversion.texy
dg May 17, 2026
3b7e179
nette/mail 4.1.2
dg May 19, 2026
e8b54a2
best-practices: add 'Pretty URLs with Slugs' guide
dg May 20, 2026
deaa84b
latte: improve and clarify the grouping cookbook
dg May 22, 2026
c94582a
nette/security 3.2.4
dg May 23, 2026
d41db6b
added tools
dg Jun 6, 2026
08779c7
moved code-checker to tools
dg Jun 6, 2026
020bab7
moved editor-and-tools to tools:ide
dg Jun 6, 2026
3d0267e
improved code-checker
dg Jun 6, 2026
a106e26
improved IDE
dg Jun 6, 2026
af94b88
added Coding Standard page
dg Jun 6, 2026
7a00270
added Nette PHPStan Rules page
dg May 25, 2026
d7cab04
added X-ray page
dg Jun 6, 2026
eb928b4
tracy 2.12.0
dg May 25, 2026
5eaa38f
nette/http 3.3.4
dg May 26, 2026
91ea3fe
nette/http 3.4.0
dg Jun 2, 2026
8a12965
improved homepages
dg Jun 14, 2026
0a9108a
nette/forms 3.3.0
dg Jun 24, 2026
e9f357b
nette/forms - custom controls guide
dg Jul 2, 2026
9b815f8
nette/application 3.3.0
dg Jun 24, 2026
c216a1d
latte: added headers
dg Jun 28, 2026
d2e107f
latte sandbox: document implicit __toString() coercion is not policed
dg Jun 28, 2026
8ee3fb8
added nette/command-line
dg Jul 5, 2026
cdc489d
typos
dg Jul 4, 2026
89fe006
application: fixes based on documentation audit against the code
dg Jul 4, 2026
ee219c2
assets: fixes based on documentation audit against the code
dg Jul 4, 2026
52565c8
caching: fixes based on documentation audit against the code
dg Jul 5, 2026
5048450
component-model: fixes based on documentation audit against the code
dg Jul 4, 2026
3364e59
database: fixes based on documentation audit against the code
dg Jul 4, 2026
f39ee1e
dependency-injection: fixes based on documentation audit against the …
dg Jul 5, 2026
3a3c794
forms: fixes based on documentation audit against the code
dg Jul 5, 2026
612d3fb
http: fixes based on documentation audit against the code
dg Jul 5, 2026
9428e4b
neon: fixes based on documentation audit against the code
dg Jul 5, 2026
31395b2
mail: fixes based on documentation audit against the code
dg Jul 5, 2026
cf36426
latte: fixes based on documentation audit against the code
dg Jul 5, 2026
bb15099
php-generator: fixes based on documentation audit against the code
dg Jul 5, 2026
919844e
robot-loader: fixes based on documentation audit against the code
dg Jul 5, 2026
adcb319
safe-stream: fixes based on documentation audit against the code
dg Jul 5, 2026
252619b
security: fixes based on documentation audit against the code
dg Jul 5, 2026
d2bf941
schema: fixes based on documentation audit against the code
dg Jul 5, 2026
8c238ca
tester: fixes based on documentation audit against the code
dg Jul 5, 2026
038869f
tokenizer: fixes based on documentation audit against the code
dg Jul 5, 2026
e02baa3
tracy: fixes based on documentation audit against the code
dg Jul 5, 2026
15e5f6c
utils: fixes based on documentation audit against the code
dg Jul 5, 2026
8ecd216
contributing: proofread and fixed texts
dg Aug 10, 2026
dbff643
www: proofread and fixed texts
dg Aug 11, 2026
74d8b07
best-practices: proofread and fixed texts
dg Aug 10, 2026
e198e2f
quickstart: proofread and fixed texts
dg Aug 10, 2026
64969cd
nette: fixed English grammar
dg Aug 10, 2026
f81cdaf
www: added photo of the early development environment to history
dg Aug 1, 2026
b7a7c95
nette/component-model 4.0.0
dg Jul 4, 2026
6c64d91
meta: loosen versions to whole major (3.x, 4.x)
dg Jul 4, 2026
1e9f442
assets: document Docker development and the Vite plugin host option (…
jeremy-step Jul 5, 2026
4b9e3e2
troubleshooting: cannot sent header
dg Jul 11, 2026
38d544f
migrations: split global upgrade guides into per-package Upgrading pages
dg Jul 11, 2026
393340b
nette: added links to Nette AI, Bootstrap, Component Model, OOP intro…
dg Jul 31, 2026
9aaaa90
reworked left menus across the documentation
dg Jul 30, 2026
c11cd73
disabled the left menu on landing pages via {{leftbar: no}}
dg Jul 31, 2026
e76e2d6
nette/utils 4.1.5
dg Jul 17, 2026
ba27f2e
nette/security v3.2.6
dg Jul 24, 2026
92ef6ed
nette/mail 4.2.0
dg Jul 27, 2026
f3b19ee
latte v3.1.5
dg Jul 25, 2026
43b1004
latte v3.1.6
dg Jul 27, 2026
c1ba7d5
synced all language mutations with the cs/en baseline
dg Sep 23, 2026
ce02c09
added links to the "by example" courses
dg Aug 4, 2026
457c546
assets: document new @nette/vite-plugin options (refresh, appUrl, hos…
dg Jul 11, 2026
400f324
meta.json: added explicit api URL to books with API docs
dg Aug 25, 2026
a7e613b
routing and AI pages declare their own repo and api next to composer
dg Sep 24, 2026
743d2e2
contributions: changed texy homepage
dg Sep 18, 2026
3ad9776
added CLAUDE.md
dg Dec 28, 2025
2b062f4
nette/di v3.2.7
dg Aug 27, 2026
b641509
WIP
dg Sep 23, 2026
d396a6d
ai: claude-code page renamed to agent-plugins, documented Codex
dg Sep 23, 2026
4442db6
latte: documented escaping of srcdoc attribute
vrana Sep 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 9 additions & 3 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
.gitattributes export-ignore
.gitignore export-ignore
*.texy linguist-language=Text
.gitattributes export-ignore
.github/ export-ignore
.gitignore export-ignore
AGENTS.md export-ignore
docs/ export-ignore
tests/ export-ignore

*.php* diff=php
*.sh text eol=lf
347 changes: 347 additions & 0 deletions AGENTS.md

Large diffs are not rendered by default.

97 changes: 97 additions & 0 deletions ai/cs/@home.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Vibe coding s Nette
*******************

<div class=perex>

AI agent vám za pár sekund napíše sto řádků PHP. Jestli budou opravdu fungovat, o tom rozhoduje něco, co si agent sám obstarat nedokáže: základ, který si umí přečíst a ověřit a na kterém může stavět.

Nette ho buduje léta, už v době, kdy to vypadalo jako detail pro fajnšmekry.

- **Otypované do morku kostí** - agent typy čte, místo aby je hádal
- **Jasné konvence** - ví, kam která třída patří
- **Uzavřená smyčka** - vidí vaši skutečnou aplikaci a kontroluje si vlastní práci

</div>


IDE bylo pro člověka, analýza je pro stroj
==========================================

Roky jsme nástroje milovali za našeptávač, za typ, který vyskočí při najetí myší, za skok na definici. To všechno je ale pomoc pro lidské oko a ruku. Agent obrazovku nečte. Potřebuje informaci, kterou si přečte jako text a hlavně si ji umí ověřit sám.

V tom je celý rozdíl mezi IDE a statickou analýzou. PhpStorm vám decentně podtrhne místo, kde možná předáváte `null`. PHPStan tutéž věc napíše do konzole jako chybu, kterou agent přečte, pochopí a opraví, aniž byste u toho museli sedět.

Otázka proto už nezní "jak hezky mi editor popíše tohle API?", ale "kolik toho o sobě říká sám kód?"


Nette toho říká hodně
=====================

Když PHP 7.1 doplnilo typový systém o nullable typy, bylo Nette vůbec prvním full-stack frameworkem, který si otypoval celé své API, včetně `declare(strict_types=1)` v každém souboru. Jakmile PHP 7.4 přidalo typované property, Nette je převzalo. Co uměl jazyk vyjádřit nativně, to Nette používalo, většinou dřív než ostatní.

A tam, kde nativní typy nestačí, nastupují anotace. PHP neumí zapsat "neprázdný seznam řetězců" ani "návratová hodnota závisí na argumentu". Nette obojí zapíše, přesně tam, kde na tom záleží:

```php
$data = $form->getValues(RegistrationData::class);
echo $data->email; // $data je RegistrationData, plně otypované
```

Žádný nativní typ PHP tohle nezvládne: "když ti předám jméno třídy, vrátíš mi instanci té třídy". Podmíněný návratový typ to zvládne a přečte si ho statická analýza, vaše IDE i agent. Napíšete `$data->emial` a chybu máte ještě před spuštěním.

Stejná péče prostupuje celým frameworkem: array shapes, `class-string<T>`, `positive-int`, `non-empty-string`. **Všechny balíčky Nette procházejí PHPStanem na plný level 8**, ne jen části, ne s hromadou výjimek. Stavíte na základu otypovaném tak důsledně, jak to jen jde. A na dobře otypovaném základu se snadno staví dobře otypovaná aplikace.

.[note]
Celý příběh najdete v článku [AI agent je tak dobrý, jak dobré jsou vaše typy |https://blog.nette.org/cs/agenti-a-typova-kontrola].


Celé je to o smyčce
===================

Agent je přesně tak dobrý, jak dobrá je zpětná vazba, kterou dostává. A ta nejlepší je smyčka. Něco napíše, spustí statickou analýzu a testy, přečte si výsledek, opraví chybu a zkusí to znovu. Napiš, ověř, oprav, opakuj. Tomuhle cyklu se říká agentní smyčka a je to okamžik, kdy se z generátoru textu stane něco, co kód opravdu doladí do funkčního stavu.

Nette mu dá do ruky všechno, co k tomu potřebuje:

- **PHPStan** s [rozšířením pro Nette |tools:phpstan-rules], které analyzátor naučí specifika frameworku: ví, že `$this['menu']` je vaše `MenuControl`, odvodí typ prvku z `addText()`, rozumí `#[Inject]`
- **[Nette Tester |tester:]** na testy. Zatím žádné nemáte? Nechte si je od agenta vygenerovat jako úplně první věc, protože bez nich nemá jak poznat, že něco rozbil.
- **Automatický lint** PHP, Latte, NEON, JSON a JavaScriptu po každé jednotlivé úpravě, takže rozbitá šablona se nikdy nedostane až do prohlížeče


Vaše aplikace, ne odhad
=======================

Požádejte libovolnou AI, ať "vygeneruje entitu pro tabulku product", a bude vaše sloupce hádat podle vzorů, které pochytila při trénování. Jenže sloupec s cenou se u vás jmenuje `unit_price` a je tam `currency_id`, o kterém jste se nezmínili.

**[MCP Inspector |mcp-inspector]** hádání odstraní. Je to server, díky kterému se agent podívá přímo do vaší běžící aplikace: na služby v DI kontejneru, na skutečné schéma databáze, na routy, na logy Tracy. Všechno je výhradně pro čtení a funguje to v každém editoru, který podporuje Model Context Protocol: Claude Code, Cursor, VS Code a další.

Mění se i ladění. Místo kopírování stack trace do chatu řeknete "koukni do logu a zjisti, co se rozbilo", a agent si výjimku přečte sám.


Agent, který zná Nette
======================

**[Pluginy pro Claude Code a Codex |agent-plugins]** dodají to, co ve vašem kódu nikde nenajde: jak se věci v Nette dělají. Celá rodina skills pokrývá architekturu, formuláře, databázi, komponenty, bezpečnost, Latte, NEON a další. Každý se zapne sám, jakmile na jeho téma přijde řeč. Zeptáte se na validaci formuláře a naskočí skill pro formuláře. Zeptáte se na BlueScreen a naskočí ten pro Tracy.

Výsledek vypadá, jako by ho psal někdo, kdo Nette dělá roky, ne jako obecné PHP poslepované z útržků.


Jak začít
=========

Celé nastavení zabere zhruba deset minut:

1. [Nainstalujte si AI nástroj |getting-started], doporučujeme Claude Code
2. [Přidejte pluginy pro Nette |agent-plugins], aby agent znal framework
3. [Nastavte MCP Inspector |mcp-inspector], aby znal *vaši* aplikaci

Pak už jen popište, co chcete, zavřete agenta do smyčky a nechte ho pracovat. Až budete chtít z agenta vytěžit víc, přečtěte si [Vibe coding v praxi |vibe-coding].


Když má s AI pracovat i vaše aplikace
=====================================

Celá tahle stránka je o AI, která pomáhá psát kód. Uvnitř vaší aplikace ale může AI dělat docela jinou práci: shrnout článek, roztřídit příchozí dotazy, vytáhnout z faktury údaje do databáze.

Na to je [AI Access |https://ai-access.deegee.dev], PHP knihovna s jedním rozhraním pro OpenAI, Claude, Gemini, DeepSeek i Grok. Přepnutí mezi nimi je změna jediného řádku. A protože nemá žádné závislosti, nepřitáhne vám do projektu SDK od výrobce ani konflikty verzí.

{{maintitle: Vibe coding s Nette – PHP framework, kterému AI agent rozumí}}
{{description: AI agenti hádají přesně tolik, kolik jim váš kód dovolí. Nette je otypované do morku kostí, prochází PHPStanem na level 8 a dává agentovi ověřitelnou smyčku.}}
5 changes: 5 additions & 0 deletions ai/cs/@left-menu.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- [Úvod |@home]
- [Začínáme |getting-started]
- [Pluginy pro agenty |agent-plugins]
- [MCP Inspector |mcp-inspector]
- [Vibe coding v praxi |vibe-coding]
1 change: 1 addition & 0 deletions ai/cs/@meta.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{sitename: Nette AI}}
1 change: 1 addition & 0 deletions ai/cs/guide.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{redirect: @home}}
Loading
Loading