Prompt kutubxonasi
"Dasturchilar uchun AI va Avtomatlashtirish" kursining bonus fayli. 30 ta darsdagi barcha tayyor prompt, shablon va buyruq iborasi — bitta joyda, nusxalab olishga tayyor.
Qanday ishlatish
- Ishlayotganda shu faylni yoningizda ochiq qo‘ying. Kerakli bo‘limni toping, promptni nusxalang,
[kvadrat qavs]ichidagini o‘zingiznikiga almashtiring. - Har promptning tagida
Dars N.Nturadi — nega shundayligini bilmoqchi bo‘lsangiz, o‘sha darsga qayting. - Bular qotib qolgan qolip emas. O‘zingizga moslang, ishlaganini saqlab boring — vaqti kelib ular sizning Skill'ingizga aylanadi (7-bo‘lim).
- Tez topish uchun
Ctrl+F: "test", "commit", "migratsiya", "review", "MCP", "Ollama".
Mundarija
- CRAFT — asosiy shablon
- Rejalashtirish va arxitektura
- Kod yozdirish
- Review va test qildirish
- Claude Code / CLI
- CLAUDE.md — loyiha qoidalari
- Skills — takrorlanadigan retseptlar
- MCP — agentni tizimlaringizga ulash
- Lokal AI (Ollama)
- Maxfiylik — promptni tozalash
- Maxsus buyruq iboralar
1. CRAFT — asosiy shablon
Har jiddiy promptdan oldin shu 5 katakni ko‘zdan kechiring. Beshtadan uchtasi yo‘q bo‘lsa — yomon natijaga hayron bo‘lmang.
| Harf | Element | Savol |
|---|---|---|
| C | Context | AI mening loyihamni biladimi? |
| R | Role | Kim bo‘lib javob bersin? |
| A | Action | Aniq nima qilsin? |
| F | Format | Javob qanday ko‘rinishda kelsin? |
| T | Tone | Qanday uslubda gapirsin? |
1.1 To‘ldiriladigan shablon
Qachon: vazifa aniq bo‘lganda — endpoint, funksiya, skript. Bitta puxta prompt yozasiz, kontekst toza qoladi.
Kontekst: [loyiha, stack, versiyalar, cheklovlar]
Rol: Sen [daraja + soha] dasturchisan.
Harakat: [aniq vazifa — nimani, qayerda, qanday shartlar bilan]
Format: [faqat kod / JSON / jadval / qadamlar ro'yxati]
Ohang: [qisqa/batafsil, izoh tili, nimani qilmasin]
Dars 2.1
1.2 To‘ldirilgan misol
Qachon: shablon qanday to‘ldirilishini ko‘rmoqchi bo‘lsangiz. Bu — Telegram bot loyihasining birinchi prompti.
Kontekst: Node.js 20 + TypeScript (strict), grammY kutubxonasi. Ariza qabul
qiluvchi Telegram bot. Ma'lumotlar hozircha JSON faylda.
Rol: Sen senior Node.js dasturchisan, toza arxitektura tarafdorisan.
Harakat: KOD YOZMA. Avval LLD tuz: papka strukturasi, har fayl vazifasi,
qatlamlar orasidagi qoidalar. Buyruqlar: /start, /help, /ariza <matn>.
Format: daraxt ko'rinishida struktura + har faylga 1 qator izoh.
Ohang: qisqa, faqat shu loyiha uchun.
Dars 2.4
1.3 Javobni JSON qilib olish
Qachon: javobni dastur bilan o‘qimoqchi bo‘lsangiz.
Javobni faqat quyidagi JSON formatda qaytar, boshqa hech qanday matn yozma:
{ "[maydon]": "[tip]", "[maydon]": "[tip]" }
Dars 2.1
1.4 Javobni jadval qilib olish
Qachon: taqqoslash so‘rayapsiz — jadval matndan 3 baravar tez o‘qiladi.
Natijani jadval ko'rinishida ber.
Dars 2.1
1.5 Faqat kod
Qachon: copy-paste tezligi kerak, tushuntirish shart emas.
Tushuntirishsiz, faqat kodni qaytar. Har fayl alohida code block,
fayl nomi sarlavhada.
Dars 2.1
1.6 Suhbatni to‘g‘ri olib borish (4 qoida)
- Vazifa aniq → bitta puxta CRAFT prompt. Qidiryapsiz yoki muhokama qilyapsiz → iterativ dialog.
- 10–15 xabardan keyin xulosalarni yig‘ib, yangi suhbat oching: "Mana kontekst: ... Endi davom etamiz". Kontekst ifloslanadi, narx oshadi.
- Yangi vazifa — yangi suhbat.
- Ishlagan promptlaringizni saqlab boring.
Dars 2.1 · 1.4
2. Rejalashtirish va arxitektura
Formula: avval HLD — "kod yozma". Keyin LLD — yana "kod yozma". Keyin har promptga strukturani havola qilasiz.
2.1 HLD — umumiy chizma
Qachon: yangi loyiha yoki katta feature boshlayapsiz.
Kod yozma. [loyiha yoki feature tavsifi] uchun HLD tuz: komponentlar,
mas'uliyatlar, ma'lumot oqimi. Jadval formatida.
Dars 2.2
2.2 LLD — ichki tuzilish
Qachon: HLD tayyor, endi fayllar darajasiga tushasiz.
Endi shu HLD asosida LLD tuz: papka strukturasi, har fayl vazifasi,
asosiy interfeyslar ([TypeScript / Swift / Kotlin]). Kod hali yozma.
Dars 2.2
2.3 Arxitekturani "shartnoma" qilib berish
Qachon: LLD tasdiqlangan. Endi har bir kod promptiga shu blokni qo‘shasiz — AI har safar bir xil uslubda, to‘g‘ri faylga yozadi.
Mana loyiha strukturasi:
[LLD daraxtini shu yerga qo'ying]
[nima kerakligi] ni shu strukturaga mos yoz.
Dars 2.2
2.4 Standart skelet (kontekstga qo‘yish uchun)
Qachon: ko‘p faylli Node/TypeScript loyiha boshlayapsiz va tayyor qatlamlar kerak.
loyiha/
├── src/
│ ├── index.ts <- faqat yig'ish va ishga tushirish
│ ├── config.ts <- muhit o'zgaruvchilari YAGONA shu yerda
│ ├── handlers/ <- tashqi dunyo bilan gaplashish (HTTP/Telegram)
│ └── services/ <- biznes-mantiq (tashqi dunyoni bilmaydi)
├── .env / .env.example <- sirlar
└── .gitignore <- birinchi commitdan OLDIN
Sinov savoli: "botni web-API'ga almashtirsam, services o‘zgaradimi?" O‘zgarsa — qatlamlar aralashgan.
Dars 2.2
2.5 Spec'ni AI bilan birga o‘qish
Qachon: qo‘lingizda TZ yoki spetsifikatsiya bor, ishni boshlashdan oldin noaniq joylarni topmoqchisiz.
Mana loyiha spetsifikatsiyasi:
[spec matni yoki fayl yo'li]
O'qib chiq. Kod yozma. Savollaringni ber.
Agent savol berdimi — demak prompt yaxshi yozilgan. Javoblarni o‘zingiz bering, noaniq joyni birga aniqlang.
Dars 7.1
2.6 Noaniq vazifada
Qachon: vazifani o‘zingiz ham to‘liq bilmasangiz — AI taxmin qilib yozib yubormasin.
Savollaring bo'lsa, kod yozishdan oldin so'ra.
Dars 2.1
3. Kod yozdirish
3.1 Config fayl
Qachon: loyihaning muhit o‘zgaruvchilari bitta joyda turishini xohlaysiz.
Shu strukturaga mos `config.ts` yoz: [ENV_NOMI] ni o'qiydi, yo'q bo'lsa
aniq xabar bilan yiqiladi. Xato xabari foydalanuvchiga tushunarli va
o'zbekcha bo'lsin. `process.env` faqat shu faylda ishlatilsin.
Dars 2.4
3.2 Endpoint
Qachon: backend'ga yangi endpoint kerak.
Kontekst: [Express + TypeScript (strict), PostgreSQL, Node 20]
Rol: Sen senior backend dasturchisan.
Harakat: `[/users/:id]` [GET] endpoint yoz: validatsiya, 404 holati,
service qatlami orqali.
Format: faqat kod, har fayl alohida code block, fayl nomi sarlavhada.
Ohang: izohlar qisqa, o'zbekcha. Muqobil yechimlarni sanama.
Dars 2.1
3.3 Handler + service (qatlamlarni ajratib)
Qachon: yangi buyruq yoki route qo‘shyapsiz va biznes-mantiq handler'ga yopishib qolmasin desangiz.
Mana loyiha strukturasi:
[LLD daraxti]
`[ariza]` uchun handler va service yoz.
Handler faqat qabul qiladi, tekshiradi va javob qaytaradi.
Saqlash mantig'i service'da bo'lsin; service [grammY / Express] ni
umuman import qilmasin.
Dars 2.4
3.4 To‘liq frontend loyiha (Plan Mode topshirig‘i)
Qachon: noldan sayt yoki bir sahifali ilova qurdirayapsiz. Topshiriqni mayda-chuydasigacha aniq yozing — "hammasi zo‘r bo‘lsin" degan TZ bo‘lmaydi.
[Kitob ko'rgazmasi] sayti yarat. Talablar:
- Sof HTML/CSS/JS, framework yo'q, build ham yo'q — fayllarni ochsam ishlasin
- Sahifalar: bitta sahifa (SPA emas, oddiy)
- Bloklar: header (nom + qidiruv), [kategoriya] filtrlari, [kitoblar] grid,
ustiga bosilganda batafsil modal oyna
- Ma'lumot alohida JS faylda massiv bo'lsin ([12 ta kitob], o'zbekcha)
- Responsive: telefon, planshet, desktop
- Dizayn: zamonaviy, toza, [mavzuga] mos ranglar
Dars 4.4
3.5 Iteratsiya — aniq feedback berish
Qachon: birinchi natija chiqdi, endi yaxshilaysiz. Har safar bitta aniq narsa so‘rang.
"Chiroyliroq qil" · "Qidiruv ishlamayapti"
Mana bunday:
Kartochkalarga hover effekti qo'sh: yengil ko'tarilish va soya.
Qidiruv katta-kichik harfni farqlamasin va muallif bo'yicha ham qidirsin.
Qidiruv natija bermasa, chiroyli bo'sh holat xabari chiqsin.
375px kenglikda kartochkalar juda kichrayib ketdi — mobil ko'rinishda
bitta ustun bo'lsin.
Tekshirish nuqtalari: 375px (telefon) / 768px (planshet) / 1280px+ (desktop).
Dars 4.4
3.6 Notanish stack'da klient
Qachon: o‘zingiz bilmaydigan tilda (Swift, Kotlin) kod kerak. Yozdirish oson — tekshirishni 4.6 bo‘limdan qarang.
Spec asosida [SwiftUI] ilova: [kitoblar] ro'yxati, qidiruv, batafsil ekran.
API klient [URLSession] bilan.
Dars 6.5
3.7 O‘rganish rejimi
Qachon: kod emas, tushuncha kerak.
Kodni yozma, avval yondashuvni tushuntir.
Dars 2.1
4. Review va test qildirish
Cheklist — ko‘z uchun. Testlar — mashina uchun. Ikkalasi birga — professional himoya.
4.1 6 nuqtali review — o‘zingiz uchun cheklist
AI yozgan har bir kod uchun:
- 1. Ishlaydimi? — happy path'ni rostdan ishga tushirib ko‘rdim (ko‘z bilan emas!)
- 2. Edge case'lar — bo‘sh string,
null/undefined, 0, manfiy son, katta hajm, unicode/emoji, parallel so‘rov - 3. Xavfsizlik — foydalanuvchi inputi SQL/shell/eval'ga qo‘shilmagan; sirlar kodda emas,
.envda - 4. Hallucination — har import
package.jsonda bor; har metod hujjatda bor - 5. Uslubga moslik — naming, qatlamlar, xato ushlash loyiha uslubida
- 6. Ortiqchalik — ishlatilmaydigan funksiya, keraksiz abstraktsiya, "kelajak uchun" kod o‘chirilgan
Dars 2.3
4.2 Xuddi shu cheklistni AI'ga topshirish
Qachon: katta o‘zgarishni birinchi filtrdan o‘tkazmoqchisiz. Bu — sizning reviewingiz o‘rniga emas, undan oldin.
Quyidagi kodni 6 nuqta bo'yicha review qil. Har topilmaga fayl:qator ko'rsat.
1. Ishlaydimi (happy path)
2. Edge case'lar: bo'sh string, null/undefined, 0, manfiy son, katta hajm,
unicode, parallel so'rov
3. Xavfsizlik: user input SQL/shell/eval'ga qo'shilganmi, sirlar kodda qolganmi
4. Hallucination: har import package.json da bormi, har metod hujjatda bormi
5. Loyiha uslubiga moslik: naming, qatlamlar, xato ushlash
6. Ortiqchalik: ishlatilmaydigan funksiya, keraksiz abstraktsiya
Kod yozma — avval hisobot.
Dars 2.3 · 4.5
4.3 Test-first workflow — 5 qadam
1-qadam. Talabni so‘z bilan yozing (CRAFT: Context + Action).
2-qadam. Avval testlarni yozdiring:
Hali kod yozma. Shu talab uchun [vitest] testlarini yoz:
happy path + kamida 4 edge case.
Talab: [talab matni]
3-qadam. Testlarni siz review qilasiz va kamida bitta o‘z "yovuz" case'ingizni qo‘shasiz. ← eng muhim qadam.
4-qadam. Endi kodni yozdiring:
Shu testlarni o'tadigan minimal kodni yoz.
5-qadam. Testlar yiqilsa:
Testlar qat'iy — kodni tuzat, testni emas.
Dars 2.3
4.4 "O‘ziga o‘zi imtihon" muammosidan qochish
Qachon: kod allaqachon yozilgan, endi testlar kerak. Testni alohida suhbatda yozdiring — "test yozuvchi" kod muallifining niyatini bilmasin.
Kod tayyor, lekin testlar talabdan kelib chiqsin — koddan emas.
Talab: [talab matni]
Dars 2.3
4.5 Hallucination tekshiruvi
Qachon: notanish paket yoki metod ko‘zga tashlandi.
Shu fayldagi har importni package.json bilan solishtir va ishlatilgan
har metod rasmiy hujjatda borligini tekshir. Yo'qlarini ro'yxat qilib ber.
Dars 2.3
4.6 Notanish tildagi kodni tekshirish — 5 usul
| # | Usul | Amalda |
|---|---|---|
| 1 | Kompilyator — birinchi hakam | Build o‘tmasa, gap tugadi |
| 2 | Strukturani tekshir | Qatlamlar (View / ViewModel / API klient) ajratilganmi — buni tilni bilmasangiz ham ko‘rasiz |
| 3 | Agentdan izoh so‘ra | Tushuntira olmasa — qizil bayroq |
| 4 | Kontraktga solishtir | Yo‘llar va maydon nomlari spec bilan aynan bir xilmi |
| 5 | Ishga tushirib ko‘r | Simulyator/emulyatorda real backend bilan — oxirgi hakam |
3-usul uchun promptlar:
Har faylni bir jumlada tushuntir.
Bu yerda xato ushlash qayerda?
Nega bu yerda [force unwrap] ishlatilmagan?
Dars 6.5
4.7 Pul bilan ishlaydigan kod — testlar koddan oldin
Qachon: to‘lov, hisob-kitob, webhook. Bu yerda xato qilsangiz mijozning puli yo‘qoladi yoki ikki marta yechiladi.
Kod yozma. [To'lov] webhook handler uchun testlarni yoz:
1. muvaffaqiyatli to'lov
2. bekor qilingan to'lov
3. takroriy webhook (idempotentlik — bitta to'lov ikki marta yozilmasin)
4. noto'g'ri imzo
Testlarni siz review qilasiz, o‘z case'ingizni qo‘shasiz — keyin kod.
Dars 7.2
4.8 Qizil bayroqlar (darhol to‘xtang)
- Kod birinchi urinishda ishlamadi, AI "tuzatdim" dedi — qaytadan to‘liq review qiling (yamoq ustiga yamoq bo‘lyapti).
- AI siz so‘ramagan katta refactoring qilib yubordi.
- Notanish paket import qilingan.
catchbloki bo‘sh yoki faqatconsole.log— xato "yutilib" ketyapti.
Dars 2.3
5. Claude Code / CLI
5.1 Boshlash
npm install -g @anthropic-ai/claude-code # o'rnatish
cd loyiha-papkasi
claude # interaktiv sessiya
Dars 4.2
5.2 Asosiy slash-buyruqlar
| Buyruq | Vazifasi |
|---|---|
/init | Loyihani tahlil qilib CLAUDE.md yaratadi — har yangi loyihadagi birinchi qadam |
/compact | Suhbatni siqadi: muhim xulosalar qoladi, kontekst bo‘shaydi |
/clear | Kontekstni butunlay tozalaydi — yangi mustaqil vazifa oldidan |
/mcp | Ulangan MCP serverlar holati |
/help | Barcha buyruqlar ro‘yxati |
Dars 4.2 · 4.3 · 6.2
5.3 Birinchi tanishuv prompti
Qachon: notanish loyihaga kirdingiz. Agent fayllarni o‘zi qidiradi, o‘zi o‘qiydi.
Bu loyiha nima haqida? Qisqacha tushuntir.
Dars 4.2
5.4 Plan Mode
Qoida: "Ikki fayldan ko‘p o‘zgaradimi? — Plan Mode."
| Vaziyat | Rejim |
|---|---|
| Ko‘p faylli yangi funksiya | Plan Mode |
| Arxitektura o‘zgarishi / refactoring | Plan Mode |
| Notanish kodbazada ish | Plan Mode |
| Bitta kichik tuzatish (typo, rang, matn) | to‘g‘ridan-to‘g‘ri |
Plan Mode'da topshiriq:
[Botga /stat buyrug'ini qo'sh: jami arizalar soni va oxirgi ariza vaqtini
ko'rsatsin.]
Rejani review qiling: to‘g‘ri fayllarga tegyaptimi? Ortiqcha ish qo‘shilib qolmadimi? Qatlamlar joyidami?
Rejani to‘g‘rilash iboralari:
Service qatlamini unutma.
Testlarni ham qo'sh.
Dars 4.3
5.5 Kontekstni boshqarish
/compact— uzun sessiya o‘rtasida "nafas olish"./clear— yangi mustaqil vazifaga o‘tayotganda.- Katta kodbazada: vazifani kichik bo‘laklarga bo‘ling, har biriga alohida sessiya.
- Sessiya oxirida keyingisiga ko‘prik qo‘ying:
Qilingan ishlar xulosasini CHANGELOG'ga yoz.
Dars 4.3
5.6 Ruxsatlar — imzo chekish daqiqasi
- O‘qish — deyarli har doim xavfsiz
- Tahrir — diff'ni o‘qing, keyin ruxsat bering
- Terminal buyrug‘i — buyruqni o‘qing:
npm test·rm -rf,git push --forceto‘xtab o‘ylang - "Hammaga avtomatik ruxsat" rejimlari — faqat izolyatsiyalangan tajriba muhitida
Dars 4.2
5.7 Sub-agent — code-reviewer
Qachon: "yozuvchi" va "tekshiruvchi" rollarini ajratmoqchisiz. Fayl: .claude/agents/code-reviewer.md
---
name: code-reviewer
description: Yozilgan kodni mustaqil review qiladi. Faqat o'qish huquqi.
---
Sen qattiqqo'l reviewer'san. Quyidagi cheklist bo'yicha tekshir:
edge case, xavfsizlik, hallucination, loyiha uslubiga moslik, ortiqchalik.
Har topilmaga fayl:qator ko'rsat.
Kod yozma — faqat hisobot ber.
Chaqirish:
[Vazifa matni]. Bajarganingdan keyin code-reviewer agentiga tekshirtir.
Dars 4.5
5.8 Hooks — uxlamaydigan nazoratchi
Hook — agentning ma’lum amalidan oldin yoki keyin avtomatik ishlaydigan buyruq. Agent unutishi mumkin, hook — hech qachon.
| Hook payti | Vazifa | Misol |
|---|---|---|
| Tahrirdan keyin | Sifat nazorati | Har .ts fayl o‘zgarganda npm run typecheck |
| Buyruqdan oldin | Xavfsizlik | rm -rf, --force kabi buyruqlarni bloklash |
| Sessiya yakunida | Intizom | Test o‘tmagan bo‘lsa ogohlantirish |
Dars 4.5
5.9 Parallel ishlash — git worktree
Qachon: agent bitta vazifada ishlayapti, siz kutib o‘tirmoqchi emassiz.
git worktree add ../loyiha-feature-b feature-b
# 1-terminal: asosiy papkada agent 1-vazifada
# 2-terminal: worktree'da agent 2-vazifada — parallel
Ogohlantirish: 2–3 tadan oshirmang — har birini review qilishga ulgurishingiz kerak.
Dars 4.5
5.10 Git: branch, commit, PR
Yangi branch och: feature/[qisqa-nom]
O'zgarishlarni ko'rib chiqib, professional commit xabari bilan commit qil.
GitHub'ga push qilib, PR och: tavsifda o'zgarishlar xulosasi va qanday
test qilish yozilsin.
Diff'ni AI o‘qiydi, lekin PR'ni merge qilishdan oldin siz o‘qiysiz.
Dars 4.6
5.11 Headless rejim (skript va CI uchun)
claude -p "src papkasidagi TODO izohlarni top va ro'yxat qil"
claude -p "Bu diff'ni tahlil qilib, qisqa xulosa yoz" < diff.txt > xulosa.md
Dars 4.6
5.12 CI'da avtomatik PR review
# .github/workflows/ai-review.yml (kontseptual namuna)
# Har PR ochilganda:
# 1. Kod diff'ini olish
# 2. claude -p ga review promptini berish (4.2 bo'limdagi cheklist bilan)
# 3. Natijani PR'ga izoh qilib yozish
API kalit faqat repository secrets'da tursin — hech qachon kodda emas. AI review — birinchi filtr, inson reviewer o‘rnini bosmaydi.
Dars 4.6 · 1.3
6. CLAUDE.md — loyiha qoidalari
Qoida — buzilganini aniq aytib bera oladigan jumla. "Yaxshi kod yoz" — bu qoida emas, bu orzu.
6.1 5 bo‘limli shablon
# Loyiha qoidalari — <Loyiha nomi>
## Texnologiyalar
- <til/framework va versiya; ruxsat etilgan kutubxonalar>
- <taqiqlangan muqobillar — aniq nom bilan>
## Buyruqlar
- Test: `npm run test`
- Typecheck: `npm run typecheck`
- Ishga tushirish: `npm run dev`
## Kod uslubi
- <naming: klasslar/metodlar/fayllar>
- <izohlar tili va qachon yozilishi>
- <tip qoidalari: masalan "any taqiqlanadi">
## Arxitektura
- <qatlamlar va ularning chegaralari>
- <config/env qoidasi>
## Taqiqlar
- <hech qachon qilinmaydigan narsalar — eng qat'iy ro'yxat>
Dars 5.1
6.2 Yaxshi qoida vs yomon qoida
| Aniq (tekshirsa bo‘ladi) | Umumiy (o‘lchab bo‘lmaydi) |
|---|---|
| "Faqat App Router. Pages Router taqiqlanadi." | "Zamonaviy Next.js yoz" |
"any taqiqlanadi" | "Tiplarni to‘g‘ri ishlat" |
| "Izohlar o‘zbek tilida (lotin)" | "Kodni izohla" |
"Har o‘zgarishdan keyin npm run typecheck" | "Xatolarni tekshir" |
Sinov: qoida buzilganini bir qarashda ayta olasizmi? Yo‘q bo‘lsa — qayta yozing.
Dars 5.1
6.3 Tayyor misol — kichik loyiha (Telegram bot)
# Loyiha qoidalari — Ariza Telegram Bot
## Texnologiyalar
- Til: TypeScript (strict rejim), Node.js
- Bot kutubxonasi: faqat grammY. node-telegram-bot-api ishlatish taqiqlanadi.
- Ma'lumotlar: hozircha JSON fayl (`data/arizalar.json`). Baza qo'shish taklif qilinmasin.
## Kod uslubi
- Papka, fayl, o'zgaruvchi, funksiya va tip nomlari — FAQAT ingliz tilida.
- Foydalanuvchi ko'radigan matnlar (bot xabarlari) — o'zbekcha.
- Izohlar o'zbek tilida (lotin) va faqat koddan ko'rinmaydigan sababni tushuntirish uchun.
- `any` tipi taqiqlanadi.
- Har handler alohida faylda (`src/handlers/`), biznes-mantiq `src/services/` da.
## Arxitektura
- `src/config.ts` — muhit o'zgaruvchilari faqat shu yerdan o'qiladi;
`process.env` boshqa hech qayerda ishlatilmasin.
- Handler'lar service'larni chaqiradi; service'lar grammY haqida hech narsa bilmaydi.
## Xavfsizlik
- Token faqat `.env` da turadi. Kodda, misollarda va testlarda real token yozilmasin.
- Foydalanuvchi kiritgan matn hech qachon shell buyrug'iga qo'shilmasin.
Dars 5.1 · practice/telegram-bot/CLAUDE.md
6.4 Tayyor misol — katta loyiha (monorepo, to‘lov bilan)
# Loyiha qoidalari — Ariza Tizimi
## Til qoidasi (eng muhim!)
- Papka/fayl/o'zgaruvchi/funksiya/klass nomlari, enum qiymatlari — FAQAT INGLIZCHA.
- Izohlar — o'zbekcha (lotin), faqat sabab yoki cheklovni tushuntirish uchun.
- Foydalanuvchi ko'radigan matnlar (bot xabarlari, UI yorliqlari, xatolar) — o'zbekcha.
- Enum'larda: qiymat inglizcha (PAID), UI yorlig'i o'zbekcha (APPLICATION_STATUS_LABELS).
## Texnologiyalar
- Monorepo: npm workspaces. Yangi paket qo'shish — faqat kelishib olgandan keyin.
- API: NestJS + class-validator. Bot: faqat grammY. Admin: Next.js App Router.
- Umumiy tiplar faqat `packages/shared` da turadi — nusxa ko'chirish taqiqlanadi.
## Arxitektura
- Bot va admin bazaga TO'G'RIDAN-TO'G'RI ulanmaydi — faqat API orqali.
- Controller yupqa: so'rovni oladi, validatsiya qiladi, service'ni chaqiradi, javob qaytaradi.
- Ariza holatlari faqat `status-machine.ts` orqali o'zgaradi.
## To'lov (eng qat'iy bo'lim)
- To'lov mantig'ida TESTSIZ KOD TAQIQLANADI — avval test, keyin kod.
- Webhook: imzosi tekshirilmagan so'rov qabul qilinmaydi; har event idempotent qayta ishlanadi.
- Provayder kalitlari faqat .env da; sandbox'dan boshqa muhitda mashq qilinmaydi.
## Kod uslubi
- `any` taqiqlanadi. Baza ustunlari snake_case, kod camelCase —
mapping faqat repository qatlamida.
- Har o'zgarishdan keyin: `npm run typecheck`; to'lov moduliga tegilgan bo'lsa: `npm test`.
Dars 7.1 · project/CLAUDE.md
6.5 Nomlash standartlari bloki (nusxalab qo‘ying)
## Nomlash standartlari
- Klasslar/tiplar/interfeyslar: PascalCase (KitobIjarasi)
- Metodlar/funksiyalar/o'zgaruvchilar: camelCase (ijaraniYakunla)
- Baza jadvallari/ustunlari: snake_case, jadvallar ko'plikda (kitob_ijaralari)
- Fayllar va URL yo'llari: kebab-case (kitob-ijara.service.ts, /kitob-ijaralari)
- Baza <-> kod mapping faqat repository qatlamida (azo_id <-> azoId)
- Boolean nomlari savol shaklida: isActive, hasOverdue
Yana kelishib olsa yaxshi: konstantalar SCREAMING_SNAKE_CASE, git branch feature/qisqa-tavsif, migratsiya V00N__qisqa_tavsif.sql.
Dars 6.4
6.6 Fayl qancha uzun bo‘lsin
CLAUDE.mdhar sessiyada o‘qiladi → har ortiqcha qator doimiy xarajat.- Mo‘ljal: 30–60 qator. 100+ bo‘lsa — retseptlarni Skill'ga ko‘chiring.
- Formula: qoida → CLAUDE.md · retsept → Skill.
- Ierarxiya:
~/.claude/CLAUDE.md— shaxsiy odatlaringiz;<loyiha>/CLAUDE.md— jamoa standartlari (git'da).
Dars 5.1 · 5.2
6.7 Qoida ishlayaptimi — sinash
Qachon: yangi qoida yozdingiz. Ataylab teskari vazifa bering va agent sizni to‘g‘rilashini ko‘ring.
[Botga node-telegram-bot-api bilan yangi handler qo'sh.]
Agent qoidani eslatib, to‘g‘ri yo‘lni taklif qildimi — konstitutsiya ishlayapti.
Dars 5.1
7. Skills — takrorlanadigan retseptlar
CLAUDE.md — doim yoningizda yuradigan qoidalar kitobchasi (qisqa bo‘lishi shart). Skill — javondagi qo‘llanma: kerak bo‘lganda olasiz, ichi istagancha batafsil bo‘laveradi.
CLAUDE.md | Skill | |
|---|---|---|
| Mazmuni | Doimiy qoidalar | Bitta vazifaning retsepti |
| Yuklanishi | Har sessiyada | Faqat kerak bo‘lganda |
| Token narxi | Har sessiyada to‘laysiz | Faqat ishlatganda |
Qayerda turadi: .claude/skills/<skill-nomi>/SKILL.md (loyiha ichida) yoki ~/.claude/skills/ (hamma loyihada).
Dars 5.2
7.1 SKILL.md shabloni
---
name: [skill-nomi]
description: [nima qilishi]. "[trigger so'z]", "[trigger so'z]" so'ralganda ishlatiladi.
---
# [Skill sarlavhasi]
## Qadamlar
1. [birinchi qadam]
2. [ikkinchi qadam]
3. [uchinchi qadam]
## Korxona standartlari (loyihangizga moslang)
- [naming, format, til qoidalari]
## Chiqish formati
[javob qanday ko'rinishda kelsin]
description— skill'ning vizitkasi: agent qachon ishlatishni shundan biladi. Trigger so‘zlarni albatta yozing.
Dars 5.2
7.2 Tayyor misol — unit-test skill
---
name: unit-test
description: TypeScript funksiya uchun vitest testlarini yozish.
"test yoz", "unit test" so'ralganda ishlatiladi.
---
# Unit test yozish qoidalari
1. Avval funksiya imzosi va talabni o'qi — kodni emas, TALABNI testla.
2. Struktura: describe > it, nomlar o'zbek tilida, "nima bo'lishi kerak" shaklida.
3. Har funksiya uchun: 1 happy path + kamida 3 edge case
(bo'sh qiymat, chegara, noto'g'ri tip).
4. Mock faqat tashqi resurslar uchun (baza, tarmoq).
5. Yakunda `npm run test` ishga tushirib, natijani ko'rsat.
Chaqirish: /unit-test — yoki shunchaki "shu funksiyaga test yoz" desangiz, agent o‘zi topadi.
Dars 5.2
7.3 Full-stack konveyer — 3 ta skill
Tayyor skill'lar repoda: modules/module-5-custom-skills/practice/skills/
| Buyruq | Kirish | Chiqish |
|---|---|---|
/swagger-api <resurs tavsifi> | Resurs va munosabatlar tavsifi | OpenAPI 3.0 YAML |
/nestjs-backend | OpenAPI spec (kontekstda) | NestJS modul (controller/service/DTO/test) |
/pg-migration <entity yoki vazifa> | Entity tavsifi yoki sxema | Flyway-uslub V00N__*.sql |
To‘liq zanjir:
/swagger-api [Kutubxona a'zolari va kitob ijarasi]
-> spec review!
/nestjs-backend
-> kod review + typecheck!
/pg-migration spec asosida boshlang'ich sxema
-> SQL review + bazada sinash!
Konveyer tez yurgani bilan nazorat bekor bo‘lmaydi: har bosqich orasida review turadi.
Dars 5.3
7.4 Yagona xato formati (API skill uchun standart)
Qachon: barcha endpoint'lar bitta xato formatida javob bersin desangiz.
ErrorResponse:
type: object
properties:
error:
type: object
properties:
code: { type: string, example: "NOT_FOUND" }
message: { type: string, example: "A'zo topilmadi" }
Majburiy xato holatlari: 400 (validatsiya), 404 (topilmadi), 409 (konflikt), 500. Sahifalash: ?page=1&limit=20; javobda { data: [...], meta: { total, page, limit } }.
Dars 5.3
7.5 Migratsiya standarti (nusxalab oling)
Har jadvalga majburiy ustunlar:
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
updated_at trigger'i (funksiya bir marta yaratiladi):
CREATE OR REPLACE FUNCTION yangilash_vaqtini_belgila()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_<jadval>_updated_at
BEFORE UPDATE ON <jadval>
FOR EACH ROW EXECUTE FUNCTION yangilash_vaqtini_belgila();
Qoidalar: pul qiymatlari NUMERIC(14, 2) (hech qachon FLOAT emas), VARCHAR(n) o‘rniga TEXT + CHECK, har FOREIGN KEY ga indeks, fayl boshida ROLLBACK izohi.
Dars 5.3
7.6 Sxemani optimizatsiya qildirish
Qachon: baza allaqachon bor, yetishmayotgan indeks va triggerlarni topmoqchisiz.
Mavjud sxemani tahlil qilib, yetishmayotgan indeks va triggerlar uchun
V00N optimizatsiya skriptini yoz. Har taklifga 1 qator asos yoz:
qaysi so'rov tezlashadi yoki qaysi xatoning oldi olinadi.
Dars 5.3
8. MCP — agentni tizimlaringizga ulash
MCP — AI uchun USB-C: bitta protokol, istalgan ma’lumot manbai. Paket nomlari va formatlar o‘zgarib turadi — ishlamasa rasmiy hujjatni oching.
8.1 Ulanishning ikki yo‘li
# CLI orqali (shu ma'qul — tez va xatosiz):
claude mcp add <nom> -- <ishga tushirish buyrug'i>
# Yoki loyiha root'ida .mcp.json fayli (jamoa bilan git orqali bo'lishasiz)
Dars 6.2
8.2 Filesystem server
{
"mcpServers": {
"docs": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"C:/Users/siz/Hujjatlar/spetsifikatsiyalar"
]
}
}
}
Butun diskni emas — faqat kerakli papkani oching.
Dars 6.2
8.3 PostgreSQL server
{
"mcpServers": {
"kutubxona-db": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DB_URL}"
}
}
}
}
Production uchun read-only foydalanuvchi:
CREATE USER ai_readonly WITH PASSWORD '...';
GRANT CONNECT ON DATABASE kutubxona TO ai_readonly;
GRANT USAGE ON SCHEMA public TO ai_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ai_readonly;
Dars 6.2 · 6.3
8.4 SQLite server
{
"mcpServers": {
"lokal-db": {
"command": "npx",
"args": ["-y", "mcp-server-sqlite", "--db-path", "./data/loyiha.db"]
}
}
}
Dars 6.2
8.5 SaaS xizmatlar (Slack, Drive, Figma, Notion)
Qolip hamma joyda bir xil:
{
"mcpServers": {
"xizmat-nomi": {
"command": "npx",
"args": ["-y", "<xizmat-mcp-paketi>"],
"env": {
"API_TOKEN": "${XIZMAT_TOKEN}"
}
}
}
}
Ulashdan oldin: minimal huquq (o‘qish yetsa — yozish bermang), qamrovni toraytiring (bitta papka / bitta kanal / bitta workspace).
Dars 6.2
8.6 Ulanganini tekshirish
/mcp
Yoki oddiygina so‘rang:
MCP orqali qaysi serverlarga ulangansiz? Har biridan bitta ma'lumot
o'qib ko'rsat.
Dars 6.2
8.7 Baza bilan ishlash promptlari
Sxemani o‘qish:
Bazadagi jadvallarni va ularning ustunlarini ko'rsat.
Tahliliy so‘rov (SQL'ni agent o‘zi yozadi va bajaradi):
[kitob_ijaralari] jadvalida eng ko'p [ijara olgan] 5 ta [a'zoni] top.
Sxemadan kod (qo‘lda ko‘chirish tarixda qoldi):
[ijara] jadvaliga mos TypeScript interfeys va repository metod yoz.
Dars 6.2
8.8 Migratsiya va sxema auditi
Migratsiyalar tarixi:
V001 dan V00[N] gacha nima o'zgargan? Xronologik xulosa ber.
Drift tekshiruvi:
Joriy baza sxemasi migratsiyalarga mosmi? Farq bormi?
Nomlash auditi:
Baza sxemasini va src papkasini CLAUDE.md dagi nomlash standartlariga
solishtirib tekshir. Har buzilish uchun: joyi, hozirgi nom, to'g'ri nom.
Kod yozma — avval hisobot.
Dars 6.4
8.9 Server ulashdan oldingi cheklist
- Kim yozgan? Rasmiy vendormi yoki taniqli ochiq kodli jamoami?
- Kodi ochiqmi? Repozitoriy faolmi, yulduz va izohlar qanday?
- Qanday ruxsat so‘rayapti? Faqat o‘qish kerak bo‘lsa-yu, yozish/o‘chirish so‘rasa — ehtiyot bo‘ling.
- Qayerga ulanadi? Faqat aytilgan xizmatgami?
- Korporativ muhitda: faqat tasdiqlangan serverlar ro‘yxati (
.mcp.jsongit'da tursa, o‘zi hujjat bo‘lib qoladi).
Prompt injection — ma’lumot ichiga yashirib qo‘yilgan buyruq. Endi xavf faqat siz yozgan promptda emas: agent o‘qigan har qanday matnda. Himoya: read-only ulanishlar, ruxsat dialoglarini o‘qish, ishonchsiz manbadan kelgan matndan keyingi amallarni avtomatik tasdiqlamaslik.
Dars 6.3
9. Lokal AI (Ollama)
9.1 Asosiy buyruqlar
ollama --version # o'rnatilganini tekshirish
ollama pull <model> # modelni yuklab olish
ollama run <model> # jonli suhbat boshlash
ollama list # o'rnatilgan modellar ro'yxati
ollama ps # hozir xotirada turgan modellar
ollama stop <model> # modelni xotiradan tushirish
ollama rm <model> # modelni diskdan o'chirish
ollama show <model> # parametrlar, kvantizatsiya, kontekst
Dars 3.2
9.2 Suhbat ichidagi buyruqlar
| Buyruq | Vazifasi |
|---|---|
/bye | Suhbatdan chiqadi |
/clear | Suhbat kontekstini tozalaydi |
/show info | Joriy model haqida ma’lumot |
/set system <matn> | Tizim promptini o‘rnatadi |
Dars 3.2
9.3 API server — localhost:11434
curl http://localhost:11434/api/generate -d '{
"model": "<model>",
"prompt": "Salom!",
"stream": false
}'
curl http://localhost:11434/api/tags # modellar ro'yxati
IDE plaginlari (Continue va boshqalar) aynan shu portga ulanadi: VS Code → Continue → provayder Ollama → model, masalan Qwen Coder. Natija — tekin, internetsiz ishlaydigan copilot.
Dars 3.2 · 4.1
9.4 Qaysi modelni olasiz
Formula: model fayli hajmi + 2–4GB (kontekst va tizim) < bo‘sh xotirangiz.
| Xotira (RAM / birlashgan) | Tavsiya model hajmi (Q4) |
|---|---|
| 8 GB | 3–4B |
| 16 GB | 7–8B |
| 32 GB | 14B (ehtiyotkorlik bilan 32B) |
| 64 GB | 32B bemalol, 70B Q4 chegarada |
| 96–128 GB | 70B+ |
Kvantizatsiya: Q4_K_M dan boshlang — hajm bilan sifatning oltin o‘rtaligi. Ikkilansangiz: kichikroq model + Q8 ko‘pincha kattaroq model + Q3 dan yaxshi ishlaydi.
Kimga qaysi ish: mantiq/tahlil → reasoning modeli (DeepSeek R1), kod → Qwen Coder, umumiy matn → Llama.
Dars 3.3 · 3.4
10. Maxfiylik — promptni tozalash
AI'ga struktura kerak, real qiymat emas.
Noto‘g‘ri:
Mana bizning users jadvalimiz: mijoz Alisher Usmonov, tel +998901234567,
karta 8600 1234 5678 9012. Shu ma'lumotlarni tekshiradigan funksiya yoz.
To‘g‘ri:
users jadvalida: full_name (string), phone (string, +998 format),
card_number (string, 16 raqam). Shu maydonlarni validatsiya qiladigan
funksiya yoz.
Har suhbatdan oldin: paste qilayotgan matnda real ism/telefon/karta yo‘qmi; log yoki xato matnida token, parol, session ID qolmaganmi.
Har loyihada: kalitlar .env da → .env .gitignore da (birinchi commitdan oldin!) → kodda process.env.X orqali → jamoa uchun .env.example.
Kalit commit bo‘lib ketdimi: darhol revoke qiling va yangisini oling. .gitignore ga qo‘shish uni tarixdan o‘chirmaydi.
Dars 1.3
11. Maxsus buyruq iboralar
Eng ko‘p ishlatiladigan "sehrli" iboralar — bittasini o‘z joyida ishlatsangiz, javob butunlay boshqacha chiqadi.
| Ibora | Qachon ishlatasiz | Dars |
|---|---|---|
| "Kod yozma" | Rejalashtirish bosqichida — HLD/LLD, muhokama | 2.2 |
| "Kodni yozma, avval yondashuvni tushuntir" | O‘rganish rejimida | 2.1 |
| "Tushuntirishsiz, faqat kodni qaytar" | Tez copy-paste kerak bo‘lganda | 2.1 |
| "Javobni faqat quyidagi JSON formatda qaytar: {...}" | Natijani dastur bilan o‘qiganda | 2.1 |
| "Natijani jadval ko‘rinishida ber" | Taqqoslash so‘raganda | 2.1 |
| "Hali kod yozma. Avval testlarni yoz" | Test-first tsiklning boshi | 2.3 |
| "Testlar qat’iy — kodni tuzat, testni emas" | Testlar yiqilganda | 2.3 |
| "Testlar talabdan kelib chiqsin — koddan emas" | Kod tayyor bo‘lgan holatda test yozdirganda | 2.3 |
| "Savollaring bo‘lsa, kod yozishdan oldin so‘ra" | Murakkab yoki noaniq vazifada | 2.1 · 7.1 |
| "Kod yozma — avval hisobot" | Audit va review so‘raganda | 6.4 |
| "Har faylni bir jumlada tushuntir" | Notanish tildagi kodni tekshirganda | 6.5 |
| "Shu strukturaga mos yoz" | Arxitektura tasdiqlangandan keyin har promptda | 2.2 |
Oltin qoidalar
CRAFT prompt yozish — 2 daqiqa. Yomon prompt natijasini tuzatish — 30 daqiqa.
Avval reja — keyin kod. Rejani o‘qish 1 daqiqa, noto‘g‘ri kodni orqaga qaytarish 20 daqiqa.
Testni talab yozadi, kod emas.
Yangi vazifa — yangi suhbat.
Qoida → CLAUDE.md · retsept → Skill.
Ruxsat dialogi — imzo chekish daqiqasi. O‘qimasdan imzo qo‘ymang.
AI yozadi — siz javob berasiz.