Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish
4. Agents
Agents nima?
Agents - bu
.claude/agents/ directory'dagi markdown file'lar. Har bir agent o'z alohida context window'ida, o'z system prompt'i va o'z tool restriction'lari bilan ishlaydi. Asosiy session'ingiz ularga vazifa beradi, ular natijani qaytaradi. Agents - alohida session sifatida ishga tushiriladigan worker.Nima uchun bu muhim?
Misol uchun, siz feature ustida ishlayapsiz va Claude'dan "barcha
LoginBloc ishlatadigan joylarni topib ber" deb so'raysiz. Claude grep'lab qidirishni boshlaydi, ~10 ta file ochadi, hammasini context'ga yuklaydi, keyin sizga 2-3 qatorlik javob beradi.Lekin shu ~10 ta file endi sizning session'ingizning context'ida qoladi. Keyingi vazifalar uchun ham yuklab turiladi va bunga token sarflaydi. Bu context pollution deyiladi.
Agents bu muammoni hal qiladi. Agent o'z alohida context'ida ishlaydi, vazifani bajaradi, va sizga faqat summary qaytaradi. ~10 ta file sizning context'ingizga umuman kirmaydi.
---
name: code-reviewer
description: Reviews a diff for convention compliance against `.claude/rules/`, generated-file leakage, and the project's hand-written state-equality pattern. Use proactively after any non-trivial change to lib/** or data/** before opening a PR. Read-only; cannot modify code.
tools: Read, Glob, Grep, Bash(git diff:*), Bash(git status:*), Bash(git log:*), Bash(fvm flutter analyze:*)
model: sonnet
---
You are a senior code reviewer for this repository.
Review checklist, in order:
1. Convention compliance. Read `.claude/rules/` files matching the changed paths. Check the diff against them. Quote the specific rule being violated.
2. Test coverage. Every changed public function needs at least one test path. Flag missing coverage.
3. Generated files. No manual edits to `*.g.dart`, `*.freezed.dart`, or `*.gen.dart`.
4. Security. No hardcoded secrets, no leftover `debugPrint`, no unrestricted `dynamic` returns.
Output format:
- "Verdict": pass | needs-changes | blocker
- Bullet list of findings, each with file:line and a one-line fix
- Do not suggest unrelated refactors. Stay within the diff.
YAML frontmatter'da uchta muhim field bor:
1. name - agent'ning idenfikatori
2. description - Claude qachon ushbu agent'ga delegate qilishni description orqali tushunadi. "Use proactively after..." kabi aniq trigger yozish kerak.
3. tools - agent qaysi tool'larni ishlata olishi. Bu yerda read-only restriction muhim -
code-reviewer agent code'ni o'zgartira olmaydi, faqat o'qib analiz qila oladi.4. model - agent'ni vazifasiga qarab Claude model tanlash kerak. Misol uchun code review qilish uchun Sonnet yetarli va u Opusdan arzonroq.
O'zim ishlatadigan sub-agentlar.
Part 4/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish
5. Hooks
Hooks nima?
Hooks - bu Claude Code'da ma'lum bir change bo'lganda avtomatik ishga tushadigan shell script'lar. Masalan: Claude file'ni yozganda, Bash command ishlatganda, yoki siz prompt yuborganda.
Nimaga kerak?
Misol uchun, CLAUDE.md'da "DO NOT MODIFY GENERATED FILES" deb rule yozgansiz. Claude ko'p hollarda bu qoidaga rioya qiladi, lekin har doim emas. Model probabilistic, ya'ni ~95% to'g'ri qaror qiladi, ~5% xato.
Hook esa deterministic. Agar Claude
*.g.dart file'ni edit qilmoqchi bo'lsa, hook uni to'xtatadi. Hech qanday istisno yo'q.Hook'ning anatomiyasi
Hook'lar
.claude/settings.json file'ida configure qilinadi.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/block_generated_files.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "dart format \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true"
}
]
}
]
}
}
Uchta muhim element bor:
1. Event type - qachon ishga tushishi.
PreToolUse — tool ishlatishdan oldin (bloklash uchun). PostToolUse — tool ishlatilgandan keyin (cleanup uchun).2. matcher - qaysi tool'larda ishga tushishi.
Write|Edit|MultiEdit — file yozish va o'zgartirish tool'lari.3. command - shell script yoki inline command. Stdin'da JSON oladi, stdout'da JSON qaytaradi.
Real misol: Generated file'larni bloklash
Project'da
dart run build_runner ishlatadigan generated file'lar bor. Claude ba'zan ularni "tuzatishga" harakat qiladi. Bu xato chunki file generator'dan qaytadan yaratilishi kerak.1. PreToolUse
.claude/hooks/block_generated_files.sh:
#!/usr/bin/env bash
# Refuses Write/Edit/MultiEdit on files that are produced by code
# generators in this project. The glob mirrors `analyzer.exclude` in
# analysis_options.yaml — those are the files marked as write-only by
# their respective generator (build_runner, drift_dev, flutter_gen,
# pubspec_generator, vector_graphics_compiler).
#
# Triggers on the `Write|Edit|MultiEdit` matcher in PreToolUse.
set -euo pipefail
payload="$(cat)"
path="$(printf '%s' "$payload" | jq -r '.tool_input.file_path // empty')"
case "$path" in
*.g.dart\
|*.freezed.dart\
|*.gen.dart\
|*.gql.dart\
|*.config.dart\
|*.mocks.dart\
|*.pb.dart\
|*.pbenum.dart\
|*.pbjson.dart\
|*/lib/src/common/localization/generated/*\
|*/lib/src/common/model/generated/*\
|*/lib/src/common/constant/gen/*)
jq -nc '{
"permissionDecision": "deny",
"reason": "Generated file. Edit the source declaration (drift table, .arb file, pubspec.yaml, etc.) and run `make gen` instead."
}'
;;
*)
jq -nc '{"permissionDecision": "allow"}'
;;
esac
Endi Claude qancha harakat qilsa ham generated dart file'ni edit qila olmaydi😁
2. PostToolUse
Har file edit, yozilgandan keyin avtomatik format qiladi:
dart format "$CLAUDE_TOOL_FILE_PATH" 2>/dev/null || true
Claude file'ni edit qilib bo'lgandan keyin PostToolUse ishga tushadi va o'zi edit qilgan file'ni formatlaydi.
O'zim ishlatadigan hook'lar.
Part 5/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish
6. MCP
MCP nima?
MCP (Model Context Protocol) - bu Claude'ni tashqi tool va data source'larga ulaydigan standard protocol. MCP Claude'ga yangi imkoniyatlar beradi - database'ni o'qish, Sentry'dan error olish, codebase'ni symbol darajasida tushunish.
Nimaga kerak?
Oddiy holatda Claude faqat project'dagi file'larni ochib, text bo'yicha qidiradi.
Misol uchun, siz: "LoginController qayerlarda ishlatilgan?", deb so'rasangiz, Claude kerakli joylarni topish uchun ko'p file'larni qidirib chiqishi mumkin. Project katta bo'lsa, bu ko'proq vaqt va token sarflaydi.
Dart MCP server ulangan bo'lsa, Claude Dart analyzer'dan foydalana oladi. Ya'ni u code'ni oddiy text sifatida emas, class, function va reference'lar sifatida tushunadi.
Shunda Claude:
• LoginController qayerlarda ishlatilganini;
• qaysi function qayerdan chaqirilganini;
• code'dagi analyzer error'larni
aniqroq va tezroq topa oladi.
MCP server qo'shish
MCP server'lar claude mcp add command orqali qo'shiladi.
Har bir server uchun uchta scope bor:
- local - faqat shu projectda, faqat sizda
- project - .mcp.json orqali team bilan share qilinadi
- user - barcha projectlarda ishlaydi
Flutter project uchun official Dart MCP server'ni qo'shish:
claude mcp add --transport stdio dart -- dart mcp-server
Bu Claude'ga Dart analyzer, hot reload, va ishlab turgan app'dan runtime error'larni o'qish imkonini beradi.
Important
MCP server qo'shganingizda Claude yangi tool'larga ega bo'ladi. Tool'lar ko'paysa, Claude qaysi tool'ni ishlatishni tanlashi qiyinlashishi mumkin. Shuning uchun faqat real workflow'ingizda ishlatadigan MCP server'larni qoldirgan yaxshi.
O'zim ishlatadigan .mcp.json file.
Part 6/7
Forwarded from Fazliddin │ Blog
#claudecode CLI'ni setup qilish
7. Project Architecture (ARCHITECTURE.md)
ARCHITECTURE.md nima?
ARCHITECTURE.md - bu project'ning to'liq architectural xaritasi. Qaysi layerlar bor, ular qanday bog'lanadi, state/data flow - hammasi shu file'da yoziladi.
Part 1'da CLAUDE.md'ning Architecture section'i faqat key package'larni sanab o'tiladi. Sababi - CLAUDE.md har session'da context'ga yuklanadi, shuning uchun u qisqa bo'lishi kerak. To'liq architecture esa ARCHITECTURE.md'ga ketadi.
Nimaga kerak?
CLAUDE.md Claude'ga "qaysi package ishlatilgan" deb aytadi. ARCHITECTURE.md esa "nima uchun shunday qilingan va qanday ishlatish kerak" deb tushuntiradi.
ARCHITECTURE.md ichida nimalar bo'lgani yaxshi:
• High-level overview - qatlamlar diagrammasi
• Technical stack - har layer uchun qaysi package
• Project structure - lib/ va packages/ tree
• Dependency injection - Dependencies container
• Data flow - UI → Controller → Repository → Data source
• State management - control package, StateController
• Screen state pattern - part file orqali logic/UI ajratish
• Navigation - qanday handle qilinganligi
• Error handling - typed exception hierarchy
Claude'ga qanday ko'rsatish kerak
ARCHITECTURE.md'ni shunchaki yaratib qo'yish yetarli emas - Claude uni avtomatik o'qimaydi. CLAUDE.md'ning Guardrails section'iga shu qatorni qo'shish kerak:
• Before planning any change that adds or moves a file, read ARCHITECTURE.md to confirm the correct layer and the feature module convention.
Endi Claude yangi feature rejalashtirayotganda avval ARCHITECTURE.md'ni o'qiydi va file'ni to'g'ri qatlamga, to'g'ri konvensiya bilan joylashtiradi.
Part 7/7
👍2
Forwarded from Fazliddin │ Blog
Bir haftadan ko'proq vaqt davomida Claude Code'ni o'zim uchun qanday setup qilganim haqida bo'lishdim. Agar seriya kimgadur foydali bo'lgan bo'lsa, xursandman 🙌
Claude Code'ni setup qilishda asosan quyidagi maqoladan foydalandim:
I Spent 6 Months Tuning Claude Code - Here's the Exact Setup That Finally Worked
To'liq setup repo: github.com/ibragimov05/claudecode-setup
Claude Code'ni setup qilishda asosan quyidagi maqoladan foydalandim:
I Spent 6 Months Tuning Claude Code - Here's the Exact Setup That Finally Worked
To'liq setup repo: github.com/ibragimov05/claudecode-setup
👍2🔥2👏1
Forwarded from O’ZBEKISTON VAQTI BILAN
Media is too big
VIEW IN TELEGRAM
🚀 Udevs Mobile Intern qidirmoqda!
Flutter va AI Engineering tools bilan real commercial loyihalarda ishlashni xohlaydigan yosh dasturchilarni qidiryapmiz.
Flutter bilimi bor, o'sishga tayyor, mas'uliyatli — bu siz uchun!
📩 CV / GitHub / portfolio yuborish uchun: @ yopildi
🔗 Batafsil: https://lnkd.in/p/dFBPXRvt
#Flutter #Internship #Udevs #MobileDevelopment
Flutter va AI Engineering tools bilan real commercial loyihalarda ishlashni xohlaydigan yosh dasturchilarni qidiryapmiz.
Flutter bilimi bor, o'sishga tayyor, mas'uliyatli — bu siz uchun!
📩 CV / GitHub / portfolio yuborish uchun: @ yopildi
🔗 Batafsil: https://lnkd.in/p/dFBPXRvt
#Flutter #Internship #Udevs #MobileDevelopment
LinkedIn
Udevs | Samandar Takhirov
🚀 Udevs Mobile Intern qidirmoqda!
Mobile dasturlashga qiziqadigan, real loyihalarda ishlashni va tez o'sishni xohlaydigan yosh dasturchilar uchun internship imkoniyatini ochdik.
Bizning asosiy stackimiz — Flutter va AI Engineering tools.
Udevs'da siz:
Flutter…
Mobile dasturlashga qiziqadigan, real loyihalarda ishlashni va tez o'sishni xohlaydigan yosh dasturchilar uchun internship imkoniyatini ochdik.
Bizning asosiy stackimiz — Flutter va AI Engineering tools.
Udevs'da siz:
Flutter…
Forwarded from QuizlyMarket 💡
This media is not supported in your browser
VIEW IN TELEGRAM
QuizlyMarket — talabalar uchun testlar bozori.
Telegram guruhlarda test qidirib vaqt yo'qotmang. Hammasi bitta ilovada.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Lyra — Samandar's AI Assistant
Salom, FlutterBro! Men Lyra — Samandar Takhirovning shaxsiy AI yordamchisiman.
Qayerda topasiz?
📢 Kanal → @flutterbro1
🤖 Bot → @lyra_exec_bot
Savol bo'lsa — yozing 👇
Salom, FlutterBro! Men Lyra — Samandar Takhirovning shaxsiy AI yordamchisiman.
Qayerda topasiz?
📢 Kanal → @flutterbro1
🤖 Bot → @lyra_exec_bot
Savol bo'lsa — yozing 👇
Telegram
FlutterBro | Samandar Takhirov
Software developer at udevs.io
- Mobile Application
- Personal portfolio
Creator: @takhirovs
- Mobile Application
- Personal portfolio
Creator: @takhirovs