Mundarija (37)
- Bu darsda
- 1. Nega bu kerak?
- 2. Yaxshi so'rovning to'rt qismi
- 2.1 Vazifa, kontekst, cheklov, natija
- 2.2 Aniq vazifa
- 2.3 Misol bering
- 3. Kontekst: nima berish va nima bermaslik
- 3.1 Kerakli kontekst
- 3.2 Bermaslik kerak bo'lgan narsalar
- 3.3 Agentlar kontekstni o'zi yig'adi
- 4. Avval reja, keyin qadamlar
- 4.1 Reja so'rang
- 4.2 Kichik qadamlar
- 4.3 Iterativ tuzatish
- 5. To'liq misol: teglariniOl uchun test
- 5.1 Birinchi urinish — kontekstsiz
- 5.2 Ikkinchi urinish — kontekst bilan
- 5.3 Kim haq: test yoki kod?
- 6. AI'dan review so'rash
- 7. Loyiha qoidalari fayllari
- 7.1 Har safar bir xil gapni yozmaslik uchun
- 7.2 Ichida nima bo'ladi
- 7.3 Qoidalar — tavsiya, kafolat emas
- 8. Ko'p uchraydigan xatolar
- 8.1 Bir qatorli so'rov
- 8.2 "Ishlamadi" deb javob berish
- 8.3 Butun loyihani chatga tashlash
- 8.4 AI'ning kutilgan qiymatiga ishonish
- 8.5 Abadiy suhbat
- 9. Mashqlar
- 1-mashq (oson): So'rovni qayta yozing
- 2-mashq (o'rta): Kontekstda nima yetishmaydi?
- 3-mashq (qiyin): Reja so'rovi
- 4-mashq: Vazifalar qadami — AGENTS.md
- 10. Real ishda
- Xulosa
- Manbalar
AI bilan samarali ishlash: prompting, kontekst va loyiha qoidalari fayllari
Qisqacha: AI yordamchidan yaxshi natija olishning siri — u siz bilgan narsani bilmaydi. Unga to'rt narsani bering: aniq vazifa ("nima va qayerda"), kontekst (kerakli fayl, xato matni, versiyalar), cheklovlar ("yangi kutubxona qo'shma", "mavjud uslubda") va natija shakli. Katta ishni avval reja bilan boshlang, keyin kichik qadamlar bilan; har javobni ishga tushiring va xato matnini qaytarib bering. Loyiha qoidalarini har safar qayta yozmaslik uchun ularni AGENTS.md yoki CLAUDE.md kabi faylga bir marta yozib qo'ying. Holat — 2026-yil oktabr.
Bu darsda
- Yaxshi so'rov (prompt) ning to'rt qismini ajrata olasiz: vazifa, kontekst, cheklov, natija shakli.
- AI'ga qaysi kontekstni berish kerakligini (fayl, xato, versiya, namuna) va nimani bermaslik kerakligini bilasiz.
- Katta ishni "avval reja, keyin qadamlar" usulida bajarasiz va xatoni iterativ tuzatasiz.
vazifalardagiteglariniOluchun AI'ga test yozdirasiz, javobni ishga tushirib tekshirasiz.- AGENTS.md / CLAUDE.md kabi loyiha qoidalari fayli nima ekanini bilasiz va
vazifalaruchun shunday fayl yozasiz.
Oldin bilishingiz kerak: AI dasturlash yordamchilari xaritasi, Birinchi avtomatik test: node:test va assert, Code smell va refactoring, Nozik xatolar.
1. Nega bu kerak?
AI dasturlash yordamchilari xaritasi darsida AI qanday ishlashini ko'rgan edik: u matnning eng ehtimolli davomini yozadi va ishonch bilan xato qiladi. O'shanda asosiy maslahat — o'rganish davrida AI'dan kod emas, tushuntirish so'rash edi.
Endi siz boshqa joydasiz. 12-qismga yetib keldingiz: kodni o'qiysiz, testlar yozasiz, ESLint va JSDoc'ni bilasiz. Endi AI'dan kod so'rash mumkin — chunki uni tekshira olasiz. Savol boshqa: qanday so'rasa, javob yaxshi bo'ladi?
Sardor AI chatiga shunday yozdi:
teglariniOl uchun test yozJavob tez keldi va ishonchli ko'rinardi. Lekin npm test uni ishga tushirgach — qizil. AI vazifalar loyihasini ko'rmagan. U teglariniOl qayerda turganini, eksport qilinadimi, nima qaytarishini, testlar qanday kutubxona bilan yozilishini bilmaydi. U taxmin qildi — va taxmin noto'g'ri chiqdi.
O'xshatish: yangi ishchiga "anavi ishni qilib qo'y" deysiz. U aqlli, lekin birinchi kuni. Qaysi ish, qayerda, qanday asboblar bilan, nimaga tegmaslik kerak — aytmasangiz, u o'zicha qiladi. AI — har suhbatda birinchi kuni ishga kelgan juda tez ishchi.
2. Yaxshi so'rovning to'rt qismi
2.1 Vazifa, kontekst, cheklov, natija
Prompt (so'rov) — AI'ga yozadigan topshiriq matningiz. Yaxshi prompt odatda to'rt qismdan iborat:
| Qism | Savol | Misol |
|---|---|---|
| Vazifa | Nima qilish kerak? | "teglariniOl uchun qo'shimcha test yoz" |
| Kontekst | Nima ustida? | fayl matni, mavjud testdan namuna, Node 24.21, node:test |
| Cheklov | Nimani qilmaslik kerak? | "yangi kutubxona qo'shma", "royxat.js ni o'zgartirma" |
| Natija shakli | Javob qanday ko'rinishda? | "faqat bitta fayl, izohlar o'zbekcha" |
Bular sehrli so'zlar emas. Bu — yaxshi topshiriqning o'zi. Xuddi shu to'rt narsani jamoadoshingizga ham aytardingiz.
2.2 Aniq vazifa
"Kodni yaxshila" — noaniq: tezroqmi, o'qilishi osonroqmi, qisqaroqmi? AI o'zicha tanlaydi va ko'pincha ko'p narsani o'zgartiradi. Aniq vazifa — bitta, tekshirib bo'ladigan natija:
- "Bu funksiyani yaxshila."
- "
render.jsdagihisobniYoz()hisob qatoriga bajarilganlar foizini ham qo'shsin:3 ta vazifa qoldi, 2 ta bajarildi (40%). Boshqa funksiyalarga tegma. Mavjud xulq o'zgarmasin —npm test59/59 qolishi kerak."
Ikkinchi so'rovda tekshiruv mezoni bor: "59/59". Natijani AI'ning so'zi bilan emas, test bilan baholaysiz.
2.3 Misol bering
AI naqshni misoldan juda yaxshi ilg'aydi. Uslubingizni so'z bilan tasvirlash o'rniga — bitta namunani ko'rsating: "mavjud testlar mana shunday yozilgan: …". Bu usul few-shot (bir necha namuna bilan) deb ataladi. Namunasiz AI o'zi ko'proq ko'rgan uslubda yozadi — masalan, siz ishlatmaydigan test kutubxonasida.
Tekshirib ko'ring: "Menyu sahifasi uchun narx formatlovchi funksiya yoz" so'rovida to'rt qismdan qaysilari yo'q?
Javob
Vazifa bor, lekin noaniq. Kontekst yo'q: qaysi fayl, qaysi til va muhit, narx qanday kelib, qanday chiqishi kerak (35000 → 35 000 so'm?). Cheklov yo'q: kutubxona ishlatsa bo'ladimi, Intl.NumberFormat mi? Natija shakli yo'q: funksiya nomi, test kerakmi? AI bularning hammasini o'zi taxmin qiladi.
3. Kontekst: nima berish va nima bermaslik
3.1 Kerakli kontekst
AI dasturlash yordamchilari xaritasi darsidagi kontekst oynasi ni eslang: model faqat suhbatda ko'rgan narsani biladi. Shuning uchun:
- Kerakli fayl yoki uning qismi. Butun loyiha emas — vazifaga tegishli joy. Funksiya boshqa modulga bog'liq bo'lsa — uning imzosi (JSDoc'li qatori) ham.
- Xato matni to'liq. "Ishlamayapti" emas — konsoldagi butun matn va stack trace (Stack trace va JavaScript xato turlari).
- Versiyalar.
node --version,package.jsondagidevDependencies. AI'ning bilimi ma'lum sanada to'xtagan; sizning versiyangiz undan yangi bo'lishi mumkin (JS versiyalari va brauzer mosligi). - Namuna. Mavjud testdan bir bo'lak, loyihadagi o'xshash funksiya.
- Nima qilib ko'rdingiz. "
--test-randomizebilan ham sinadim" — AI bir xil yo'lni qayta taklif qilmaydi.
3.2 Bermaslik kerak bo'lgan narsalar
- Sirlar.
.envdagi qiymatlar, tokenlar, parollar, kalitlar. Bu haqda keyingi darsda batafsil — AI natijasini tekshirish va xavfsizlik. - Keraksiz hajm. 2 000 qatorlik log faylining hammasi emas — xato atrofidagi 20 qator. Ortiqcha matn asosiy narsani "ko'mib" yuboradi.
- Begona shaxsiy ma'lumot. Mijozlar ro'yxati, telefonlar — o'rniga
+998 90 000 00 00kabi namuna.
3.3 Agentlar kontekstni o'zi yig'adi
Chat'da kontekstni siz nusxalab berasiz. Agent esa (AI xaritasi dagi uchinchi tur) loyiha papkasidagi fayllarni o'zi o'qiydi, npm test ni o'zi ishga tushiradi. Bu qulay, lekin ikki narsa o'zgaradi. Birinchidan, agent nimani o'qishini siz nazorat qilishingiz kerak (.env ham papkada!). Ikkinchidan, agentga loyiha qoidalarini oldindan aytib qo'yish kerak — buning uchun «Loyiha qoidalari fayllari» bo'limidagi fayllar bor.
4. Avval reja, keyin qadamlar
4.1 Reja so'rang
Katta vazifada ("vazifalar ga sana bo'yicha saralash qo'sh") AI'dan darhol kod so'ramang. Avval:
Kod yozma. Avval reja ber: qaysi fayllar o'zgaradi, qanday yangi
funksiyalar kerak, qaysi testlar qo'shiladi. Har qadamni bir
gapda yoz. Noaniq joy bo'lsa — menga savol ber.Rejani o'qiysiz va xatoni kod yozilmasdan oldin tuzatasiz: "yo'q, localStorage ga tegma — u faqat saqlash.js da". Bu kod review'dan ancha arzon. Oxirgi qator ham muhim: AI noaniq joyni o'zicha to'ldirgandan ko'ra, so'ragani yaxshi.
4.2 Kichik qadamlar
Rejadagi har qadam — alohida so'rov, alohida tekshiruv, alohida commit. Xuddi Code smell va refactoring darsidagi "kichik qadam — testlar yashil" qoidasi. AI bir javobda 6 faylni o'zgartirsa, xato qayerda ekanini topish qiyin. Bitta faylni o'zgartirsa — oson.
4.3 Iterativ tuzatish
AI javobi ishlamasa, "ishlamadi" deb yozmang. Unga haqiqiy natijani qaytaring:
flowchart LR
A["Aniq so'rov"] --> B["AI javobi"]
B --> C["O'qing va ishga tushiring"]
C --> D{"Test yashilmi?"}
D -- "yo'q" --> E["Xato matnini to'liq qaytaring"]
E --> B
D -- "ha" --> F["Tushunib, commit qiling"]Diagrammadagi "O'qing" qadamini tashlab ketmang: AI'ning yashil testi ham siz tushunmagan kod bo'lishi mumkin. Va bir xil xato 2–3 marta qaytsa — to'xtang. Yangi suhbat oching va kontekstni qaytadan, aniqroq bering: uzun suhbatda model eski, noto'g'ri taxminlariga yopishib qoladi.
Tekshirib ko'ring: AI'ning kodi uchinchi marta xuddi shu
TypeErrorni beryapti. Siz har safar "yana xato" deb yozdingiz. Nima o'zgartirasiz?
Javob
Birinchidan, xato matnini to'liq (stack trace bilan) va qaysi buyruq bilan ishga tushirganingizni yozasiz. Ikkinchidan, kontekst yetarlimi — tekshirasiz: AI xato bergan funksiyaning asl kodini ko'rganmi? Uchinchidan, suhbat uzun bo'lsa, yangisini ochib, vazifani noldan, aniqroq yozasiz. "Yana xato" — AI uchun hech qanday ma'lumot bermaydi.
5. To'liq misol: teglariniOl uchun test
5.1 Birinchi urinish — kontekstsiz
Sardorning "teglariniOl uchun test yoz" so'roviga AI quyidagicha javob berdi. (Bu — namunaviy javob: AI vositasi va kunga qarab sizdagi javob boshqacha bo'ladi. Muhimi — tekshirish usuli.)
import { test } from "node:test";
import assert from "node:assert/strict";
import { teglariniOl } from "../assets/js/royxat.js";
test("teglarni ajratadi", () => {
assert.deepEqual(teglariniOl("Non olish #bozor #uy"), [
"#bozor",
"#uy",
]);
});Ko'rinishi to'g'ri: node:test, assert/strict, test nomi o'zbekcha. Sardor avval alohida tajriba branch'ini ochdi (git switch -c tajriba/ai-test — AI'ning ishi main ga aralashmasin), testni tekshiruv/teglar-ai.test.js ga saqladi va ishga tushirdi. node --test tekshiruv/teglar-ai.test.js ning haqiqiy chiqishi (Node 24.21):
import { teglariniOl } from "../assets/js/royxat.js";
^^^^^^^^^^^
SyntaxError: The requested module '../assets/js/royxat.js' does not provide an export named 'teglariniOl'Tarjimasi: "so'ralgan royxat.js moduli teglariniOl nomli eksportni bermaydi". ESM import darsidagi xato. teglariniOl — royxat.js ning ichki funksiyasi, u eksport qilinmaydi. AI buni bilmagan va taxmin qilgan.
Ikkinchi xato ham bor, lekin u hali ko'rinmadi: teglariniOl massiv emas, Set qaytaradi. Funksiya eksport qilinganida ham deepEqual(Set, massiv) yiqilardi. Bitta qisqa so'rov — ikkita taxmin, ikkalasi noto'g'ri.
5.2 Ikkinchi urinish — kontekst bilan
Sardor so'rovni to'rt qism bilan qayta yozdi:
Vazifa: vazifalar loyihasidagi teg ajratish uchun 3 ta qo'shimcha
test yoz — mavjud testlarda yo'q chegaraviy holatlar.
Kontekst:
- Node 24.21, testlar node:test + node:assert/strict, ESM.
- teglariniOl royxat.js ichida, EKSPORT QILINMAYDI. U Set
qaytaradi (kichik harfda, takrorsiz). Kodi:
[royxat.js dan TEG regex'i va teglariniOl — 12 qator]
- Mavjud testlar uni tegHisobi() orqali sinaydi. Namuna:
[royxat.test.js dan "const teglar = (matn) => ..." yordamchisi
va bitta test — 15 qator]
- Allaqachon bor holatlar: vergul, nuqta, apostrof, emoji, ##,
katta harf.
Cheklov: royxat.js ni o'zgartirma, yangi paket qo'shma.
Natija: bitta fayl, tekshiruv/teglar-ai.test.js.Kvadrat qavs ichidagi joylarga Sardor kodning o'zini qo'ydi. Yangi javob:
import "./xotira.js";
import { describe, test } from "node:test";
import assert from "node:assert/strict";
import { VazifalarRoyxati } from "../assets/js/royxat.js";
// teglariniOl eksport qilinmaydi — tegHisobi orqali sinaymiz
const teglar = (matn) => [
...VazifalarRoyxati.dan([{ id: 1, matn, bajarildi: false }])
.tegHisobi()
.keys(),
];
describe("teglar: qo'shimcha holatlar", () => {
test("yangi qatordan keyingi teg", () => {
assert.deepEqual(teglar("Non olish\n#bozor"), ["#bozor"]);
});
test("raqamli teg", () => {
assert.deepEqual(teglar("#2026 #yil2026"), ["#2026", "#yil2026"]);
});
test("chiziqcha tegning bir qismi", () => {
assert.deepEqual(teglar("#yangi-yil"), ["#yangi-yil"]);
});
});Bu safar AI loyihaning o'z yo'lidan bordi: xotira.js, tegHisobi() orqali sinash, mavjud yordamchining aynan o'zi. Kod nomlari ham o'zbekcha — chunki namunada shunday edi. Ishga tushiramiz:
▶ teglar: qo'shimcha holatlar
✔ yangi qatordan keyingi teg (2.3663ms)
✔ raqamli teg (0.2108ms)
✖ chiziqcha tegning bir qismi (1.4682ms)
✖ teglar: qo'shimcha holatlar (5.9389ms)
ℹ tests 3
ℹ pass 2
ℹ fail 1Yiqilgan testning tafsiloti:
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected
[
+ '#yangi'
- '#yangi-yil'
]Tarjimasi: "qiymatlar qat'iy chuqur teng bo'lishi kutilgan edi: + — haqiqiy, - — kutilgan". Kod #yangi qaytardi, AI esa #yangi-yil ni kutdi.
5.3 Kim haq: test yoki kod?
Qizil test ikki narsani anglatishi mumkin: kodda xato bor yoki testda xato bor. AI yozgan testda bu savol ayniqsa muhim. AI'ning "kutilgan" qiymati — uning taxmini, talab emas.
TEG regex'ini o'qiymiz (Unicode regex darsida yozilgan): tegda harf, raqam, _ va harflar orasidagi apostrof bo'ladi. Chiziqcha (-) ro'yxatda yo'q. Demak, kod o'z talabiga muvofiq ishlayapti. AI talabni bilmagan va "chiroyli ko'rinadigan" javobni kutgan.
Ikki yo'l bor:
- Talab "chiziqcha tegni tugatadi" — testni shunga moslaymiz va xulqni qotiramiz.
- Talab o'zgarishi kerak (
#yangi-yilbitta teg bo'lsin) — bu mahsulot qarori, uni AI emas, jamoa qabul qiladi. Keyin avval test, keyinTEGo'zgaradi.
Sardor birinchisini tanladi — talab o'zgarmaydi:
test("chiziqcha tegni tugatadi", () => {
assert.deepEqual(teglar("#yangi-yil"), ["#yangi"]);
});Natija: ℹ tests 3 · pass 3, butun npm test esa ℹ tests 62 · pass 62 · fail 0 (59 ta eski + 3 ta yangi). Bu — tajriba branch'ida (tajriba/ai-test): Sardor AI bilan ishni main dan alohida boshlagan edi. Uchta test main ga birlashtirilmadi — ular darsdagi tajriba sifatida o'sha branch'da qoladi. vazifalar ning asosiy kodida testlar soni o'zgarmaydi — 59.
Saboqlar:
- Kontekstsiz javob ikkita noto'g'ri taxmin qildi; kontekst bilan — bitta.
- Yangi testlarning ikkitasi foydali chegaraviy holatni qotirdi: yangi qator va raqam. AI bu yerda haqiqatan yordam berdi.
- Uchinchi test — "AI ning talab haqidagi taxmini". Uni siz hal qildingiz.
Tekshirib ko'ring: AI yozgan test yiqildi. AI'ga "testni o'tkaz" deb yozsangiz, u nima qilishi mumkin va bu nega xavfli?
Javob
U kutilgan qiymatni haqiqiy natijaga moslab o'zgartirishi mumkin — yoki, aksincha, kodni testga moslab "tuzatishi". Birinchisi kodda haqiqiy xato bo'lsa, uni testga "qotirib" qo'yadi. Ikkinchisi to'g'ri ishlayotgan kodni buzadi. "Test o'tsin" — maqsad emas; maqsad — talabga mos xulq. Qaysi tomon haqligini talab va kodni o'qib, siz hal qilasiz.
6. AI'dan review so'rash
AI kod yozibgina qolmay, kodni ko'rib chiqishi ham mumkin. Bu — ikkinchi juft ko'z. Lekin so'rov bu yerda ham aniq bo'lishi kerak:
Quyidagi diff'ni ko'rib chiq. Faqat muammolarni yoz, maqtama.
Har muammoga: fayl:qator, nega muammo, qanday tuzatish.
Qara: chegaraviy holatlar (bo'sh ro'yxat, null), race condition,
nomlash qoidalarimiz (fe'l bilan, o'zbekcha domen nomlari),
yo'qolgan testlar.
[git diff natijasi]"Faqat muammolarni yoz, maqtama" — muhim qator. Usiz javobning yarmi "kod juda yaxshi yozilgan" bo'lishi mumkin. Ro'yxat (Nozik xatolar, Toza kod: nomlash) — AI'ga nimaga qarashni aytadi.
AI review'ini ham tekshirasiz: u mavjud bo'lmagan muammoni "topishi" yoki haqiqiy xatoni o'tkazib yuborishi mumkin. AI review — inson review o'rniga emas, unga qo'shimcha.
7. Loyiha qoidalari fayllari
7.1 Har safar bir xil gapni yozmaslik uchun
«Ikkinchi urinish — kontekst bilan» dagi so'rovning yarmi — loyiha haqida: Node versiyasi, test kutubxonasi, nomlash, "royxat.js ga tegma". Buni har so'rovda qayta yozish charchatadi va unutiladi. Shuning uchun AI vositalari loyiha ildizidagi maxsus qoidalar faylini o'qiydi va har suhbat boshida kontekstga qo'shadi:
| Fayl | Kim o'qiydi |
|---|---|
AGENTS.md |
ochiq format: Codex, Cursor, Jules, Gemini CLI, GitHub Copilot agenti, VS Code va boshqa 20 dan ortiq vosita |
CLAUDE.md |
Claude Code |
.github/copilot-instructions.md |
GitHub Copilot |
.cursor/rules/ |
Cursor |
AGENTS.md formati bir nechta kompaniya hamkorligida chiqqan va hozir Linux Foundation qoshidagi Agentic AI Foundation tomonidan yuritiladi (agents.md, 2026-yil oktabr). Ko'p vositalar uni tushunadi, shuning uchun bitta umumiy fayl qulay. Monorepo'da (bitta repozitoriyda bir nechta loyiha yoki paket) har paket o'z AGENTS.md siga ega bo'lishi mumkin — tahrirlanayotgan faylga eng yaqini ustun.
7.2 Ichida nima bo'ladi
Qoidalar fayli — yangi jamoadoshga beriladigan qisqa yo'riqnoma. Odatda:
- loyiha nima va qanday tuzilgan (1–3 gap);
- buyruqlar: o'rnatish, test, lint, format;
- kod uslubi va nomlash;
- taqiqlar: nimaga tegmaslik, nimani qilmaslik;
- tekshiruv: "ish tugadi" deyishdan oldin nima o'tishi kerak;
- commit va PR qoidalari.
Qisqa bo'lsin. Bu fayl har suhbatda kontekst oynasining bir qismini egallaydi. Unga faqat har safar kerak bo'ladigan narsa yoziladi, bir martalik ma'lumot emas.
7.3 Qoidalar — tavsiya, kafolat emas
AI qoidani ko'pincha bajaradi, lekin har doim emas. Shuning uchun muhim qoidani ikki joyda ushlaysiz: qoidalar faylida (AI bilsin) va vositada (buzilsa, to'xtatsin). Masalan, "Prettier formati" — faylda yozilgan, lekin npm run format:check uni baribir tekshiradi. "Testlar yashil bo'lsin" — npm test. Bu ESLint va Prettier darsidagi g'oyaning davomi: kelishuvni mashina tekshirsin.
Tekshirib ko'ring:
AGENTS.mdga "har doim===ishlat" deb yozdingiz. AI baribir bitta joyda==yozib qo'ysa, buni kim ushlaydi?
Javob
Qoidalar faylining o'zi emas — u faqat AI'ga "ma'lum qiladi". Ushlaydigan — vosita: ESLint'ning eqeqeq qoidasi npm run lint da xato beradi, CI esa PR'ni to'xtatadi. Lekin faqat qoida yoqilgan bo'lsa: eqeqeq recommended to'plamida yo'q (JavaScript'ning mashhur tuzoqlari darsida ko'rgandik), vazifalar ning eslint.config.js ida ham hozircha yo'q. Demak, bu qoidani faylga yozish bilan birga, eslint.config.js ga ham qo'shish kerak. Shuning uchun muhim qoida ikki joyda turadi: faylda (AI bilsin) va lint/testda (buzilsa, to'xtatsin).
8. Ko'p uchraydigan xatolar
8.1 Bir qatorli so'rov
"Test yoz", "xatoni tuzat", "yaxshila".
Vazifa + kontekst + cheklov + natija shakli. Uzunroq so'rov — qisqaroq tuzatish yo'li.
8.2 "Ishlamadi" deb javob berish
Xato matnisiz qayta so'rash.
Buyruq, to'liq xato matni, nimani sinab ko'rganingiz.
8.3 Butun loyihani chatga tashlash
30 faylni birdan joylash — asosiy narsa ko'milib ketadi, sir tushib qolishi ham oson.
Vazifaga tegishli fayl va qism. Kerak bo'lsa, AI o'zi so'raydi.
8.4 AI'ning kutilgan qiymatiga ishonish
AI yozgan test qizil — kodni testga moslash.
Talabni o'qing, kim haqligini o'zingiz hal qiling («Kim haq: test yoki kod?»).
8.5 Abadiy suhbat
Bitta suhbatda bir hafta ishlash — model eski taxminlarga yopishadi.
Yangi vazifa — yangi suhbat. Doimiy qoidalar — qoidalar faylida.
9. Mashqlar
1-mashq (oson): So'rovni qayta yozing
Bu so'rovni to'rt qismli qilib qayta yozing: "Menyuni narx bo'yicha saralaydigan funksiya yoz". Ishora: «Vazifa, kontekst, cheklov, natija» jadvali; sort va taqqoslash funksiyasi.
Yechim
Vazifa: menyu massivini narx bo'yicha o'sish tartibida
saralaydigan sortByPrice(menu) funksiyasini yoz.
Kontekst: Node 24, ESM. Element shakli:
{ name: "Osh", price: 35000 }. Narxlar butun son (so'm).
Cheklov: asl massiv o'zgarmasin (toSorted ishlat),
kutubxona qo'shma. Narxi teng bo'lsa — asl tartib saqlansin.
Natija: funksiya va node:test bilan 3 ta test
(oddiy holat, bo'sh massiv, teng narxlar).E'tibor bering: cheklovlarda JavaScript'ning mashhur tuzoqlari dagi ikki tuzoq oldindan yopildi — sort asl massivni o'zgartirishi va funksiyasiz satr bo'yicha saralashi.
2-mashq (o'rta): Kontekstda nima yetishmaydi?
Sardor shunday yozdi: "npm test qizil, api.test.js da xato. Tuzat." Kamida to'rtta yetishmayotgan narsani sanang va to'g'ri so'rovni yozing.
Yechim
Yetishmaydi:
- Xato matni va qaysi test yiqilgani.
api.test.jsdagi o'sha testning kodi va u sinayotganapi.jsfunksiyasi.- Nima o'zgargan — oxirgi commit yoki diff.
- Versiyalar (
node --version). - Cheklov: testni emas, kodni tuzatish kerakmi yoki aksincha — noma'lum.
Vazifa: api.test.js dagi "404 → TOPILMADI" testi yiqildi.
Sababini top va tuzatish taklif qil. Kod yozishdan oldin
sababni bir-ikki gapda tushuntir.
Kontekst: Node 24.21, node:test. Oxirgi commit — api.js dagi
holatKodi() ni o'zgartirdim (diff pastda). Xato matni:
[to'liq AssertionError]
Test kodi: [15 qator] holatKodi(): [12 qator]
Cheklov: test — kanon xulq, uni o'zgartirma.3-mashq (qiyin): Reja so'rovi
vazifalar ga yangi imkoniyat kerak: har vazifa yaratilgan sanasini saqlasin va ro'yxatda "bugun", "kecha" deb ko'rsatsin. AI'ga faqat reja so'raydigan prompt yozing. Unda loyiha qoidalaridan kamida uchtasini cheklov sifatida keltiring. Ishora: Nozik xatolar dagi vaqt zonasi va soxta soat, Intl.RelativeTimeFormat, vazifalar dagi "localStorage faqat saqlash.js da" qoidasi.
Yechim
Kod yozma — faqat reja ber.
Vazifa: vazifalar ilovasida har vazifa yaratilgan vaqtini
saqlasin va ro'yxatda nisbiy ko'rsatsin ("bugun", "kecha").
Kontekst: vazifalar v3.1 — 10 ta ES modul, vanilla JS.
Vazifa maydonlari: id, matn, bajarildi (vazifa.js). Eksport
paketi versiyasi PAKET_VERSIYASI = 1 (paket.js). Testlar —
node:test, npm test 59/59.
Cheklovlar:
- localStorage faqat saqlash.js da, fetch faqat api.js da.
- Eski paketlar (yaratilgan sanasiz) ham o'qilsin — versiya
masalasini rejada alohida yoz.
- Testlarda hozirgi vaqt ishlatilmasin: soat parametr yoki
mock.timers bilan.
- Sanani Intl.RelativeTimeFormat bilan, timeZone aniq.
- Kanon nomlar o'zgarmaydi.
Natija: qaysi fayl o'zgaradi, yangi funksiyalar nomi va
imzosi, qaysi testlar qo'shiladi, qaysi qadamlar ketma-ket.
Noaniq joy bo'lsa — savol ber.Eng muhim cheklov — eski paketlar: aks holda AI paketniOqi ni yangi maydonni majburiy qilib o'zgartiradi va foydalanuvchilarning saqlangan ro'yxatlari "buzuq" bo'lib qoladi.
4-mashq: Vazifalar qadami — AGENTS.md
vazifalar repozitoriysi ildiziga AGENTS.md yozing. Unda: loyiha haqida 2 gap, buyruqlar (npm test, npm run lint, npm run format:check, npm run tip), kod qoidalari va taqiqlar. Ishora: README.md, TEXNIK-QARZ.md, eslint.config.js va .prettierrc dagi kelishuvlar. Branch — chore/agents-md. Kod fayllariga tegmang.
Yechim
# AGENTS.md — vazifalar
Vazifalar ro'yxati ilovasi: vanilla JS, 10 ta ES modul
(assets/js), build yo'q, GitHub Pages'da. Ma'lumot «Bahor»
mashq API'sida, localStorage — kesh.
## Buyruqlar
- npm install
- npm test (node:test, internetsiz, 59 test)
- npm run test:tarmoq (haqiqiy API — faqat so'ralganda)
- npm run lint (ESLint 10, flat config)
- npm run format:check, npm run format (Prettier, faqat JS)
- npm run tip (tsc --noEmit, JSDoc + @ts-check)
## Kod qoidalari
- Domen nomlari o'zbekcha, funksiya — fe'l bilan (qosh,
filtrniOl). Brauzer API nomlari o'zgarmaydi.
- Kanon nomlar (eksportlar) o'zgartirilmaydi — TEXNIK-QARZ.md.
- Izoh — "nega"ni yozadi, "nima"ni emas.
- Import faqat pastga: asosiy -> render/holat/api/... ; aylana yo'q.
## Taqiqlar
- fetch faqat api.js da, localStorage faqat saqlash.js da.
- "vazifalar:v3" kaliti va PAKET_VERSIYASI o'zgarmaydi.
- Yangi npm paket — faqat so'rab, aniq versiya bilan.
- .env, tokenlar, kalit qiymatlari kodga va chatga yozilmaydi.
- git push, force push va fayl o'chirish — faqat so'rab.
## "Tayyor" degani
npm test, lint, format:check va tip — hammasi toza.
Xulq o'zgargan bo'lsa — avval test, keyin kod.
Commit: Conventional Commits (feat:, fix:, refactor:, test:, chore:).Sayt ```md blok tilini bilmagani uchun bu yerda text ko'rinishida; faylning o'zi Markdown. Claude Code ishlatsangiz, CLAUDE.md ga bitta qator yetarli — @AGENTS.md: Claude Code @ bilan boshqa faylni ulay oladi.
Branch main dan ochiladi (tajriba branch'idan emas — AI testlari unda qoladi):
git switch main
git switch -c chore/agents-md
git add AGENTS.md
git commit -m "chore: AI agentlar uchun AGENTS.md"Tekshiruv: npm test — 59/59; lint, format:check, tip — toza (AGENTS.md kodga tegmaydi, Prettier .md fayllarni o'tkazib yuboradi). Keyin — odatdagidek PR va birlashtirish.
10. Real ishda
- 2026-yilda ko'p jamoalarda AI yordamchi — oddiy ish asbobi. Ko'p repozitoriylarda
AGENTS.mdyoki shunga o'xshash fayl bor: uni o'qish — yangi loyihaga kirishning tez yo'li (odamlar uchun ham). - Kompaniya qoidalari. Qaysi AI vositasi ruxsat etilgani, unga qaysi kodni berish mumkinligi — kompaniya siyosati. Ishga kirganda birinchi hafta so'raladigan savollardan biri.
- Intervyu. "AI'dan qanday foydalanasiz?" savoli tobora ko'p so'raladi. Kuchli javob: "aniq vazifa va kontekst beraman, avval reja so'rayman, har natijani test bilan tekshiraman, loyiha qoidalarini faylda saqlayman".
- Keyingi qadam: AI natijasini qanday tekshirish va qaysi xavflardan saqlanish — AI natijasini tekshirish va xavfsizlik.
Xulosa
- AI siz bilgan narsani bilmaydi: har so'rov — vazifa, kontekst, cheklov, natija shakli.
- Kontekst — kerakli fayl, to'liq xato, versiyalar, namuna; sirlar va keraksiz hajm — yo'q.
- Katta ish: avval reja (kodsiz), keyin kichik qadamlar; xato bo'lsa — haqiqiy chiqishni qaytaring.
- AI yozgan test qizil bo'lsa — kim haqligini talab va kodni o'qib siz hal qilasiz.
AGENTS.md,CLAUDE.md— loyiha qoidalari fayllari; muhim qoidani vosita (test, lint) ham tekshirsin.
Keyingi dars: AI natijasini tekshirish va xavfsizlik — AI kodini begona juniorning kodidek tekshirish, mavjud bo'lmagan paketlar, sirlar va agent ruxsatlari.
Manbalar
- AGENTS.md — agents.md (Agentic AI Foundation, Linux Foundation)
- Claude Code hujjatlari: "Manage Claude's memory" (
CLAUDE.md,@import) — docs.claude.com - GitHub Docs: "Adding repository custom instructions for GitHub Copilot" — docs.github.com
- Node.js: "Test runner" — nodejs.org/api/test.html
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!