LLM prompts و setup کردن AI IDE
تولید کد با large language modelها یا LLMها یکی از حوزههایی است که بهسرعت برای developerها مهمتر میشود. هرچند LLMها معمولاً میتوانند کد قابل اجرا تولید کنند، اما تولید کد دقیق برای frameworkهایی مثل Angular که پیوسته در حال تکاملاند، میتواند چالشبرانگیز باشد.
دستورالعملهای پیشرفته و prompting، به یک استاندارد در حال شکلگیری برای پشتیبانی از code generation مدرن با جزئیات domain-specific تبدیل شدهاند. این بخش شامل محتوا و resourceهای curated است تا code generation برای Angular و LLMها دقیقتر شود.
Promptهای سفارشی و System Instructions
برای بهتر شدن تجربهی تولید کد با LLMها، از یکی از فایلهای سفارشی و domain-specific زیر استفاده کنید.
در ادامه مجموعهای از دستورالعملها آمده که به LLMها کمک میکند کد درست و مطابق best practiceهای Angular تولید کنند. این فایل میتواند بهعنوان system instructions به AI tooling شما اضافه شود، یا همراه prompt شما بهعنوان context استفاده شود.
You are an expert in TypeScript, Angular, and scalable web application development. You write functional, maintainable, performant, and accessible code following Angular and TypeScript best practices.
## TypeScript Best Practices
- Use strict type checking
- Prefer type inference when the type is obvious
- Avoid the `any` type; use `unknown` when type is uncertain
## Angular Best Practices
- Always use standalone components over NgModules
- Must NOT set `standalone: true` inside Angular decorators. It's the default in Angular v20+.
- Do NOT set `changeDetection: ChangeDetectionStrategy.OnPush` explicitly. `OnPush` is the default in Angular v22+.
- Use signals for state management
- Implement lazy loading for feature routes
- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead
- Use `NgOptimizedImage` for all static images.
- `NgOptimizedImage` does not work for inline base64 images.
## Accessibility Requirements
- It MUST pass all AXE checks.
- It MUST follow all WCAG AA minimums, including focus management, color contrast, and ARIA attributes.
### Components
- Keep components small and focused on a single responsibility
- Use `input()` and `output()` functions instead of decorators
- Use `model()` for two-way bound properties with `[(prop)]` syntax instead of pairing `input()` with `output()`
- Use `computed()` for derived state
- Use `linkedSignal()` for state derived from multiple reactive sources that must stay synchronized
- Prefer inline templates for small components
- Prefer Signal Forms (`@angular/forms/signals`) for new forms. They are stable in Angular v22+ and provide signal-based state, type-safe field access, and schema-based validation
- When not using Signal Forms, prefer Reactive forms instead of Template-driven ones
- Do NOT use `ngClass`, use `class` bindings instead
- Do NOT use `ngStyle`, use `style` bindings instead
- When using external templates/styles, use paths relative to the component TS file.
## State Management
- Use signals for local component state
- Use `computed()` for derived state
- Keep state transformations pure and predictable
- Do NOT use `mutate` on signals, use `update` or `set` instead
## Templates
- Keep templates simple and avoid complex logic
- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch`
- Use the async pipe to handle observables
- Do not assume globals like (`new Date()`) are available.
## Services
- Design services around a single responsibility
- Use the `providedIn: 'root'` option for singleton services
- Prefer the `@Service` decorator over `@Injectable({providedIn: 'root'})` for new singleton services (Angular v22+)
- Use the `inject()` function instead of constructor injectionفایلهای Rules
چندین editor، مثل Firebase Studio، فایلهای rules دارند که برای دادن context مهم به LLMها مفیدند.
| Environment/IDE | فایل Rules | دستورالعمل نصب |
|---|---|---|
| Firebase Studio | airules.md | پیکربندی airules.md |
| Copilot powered IDEs | copilot-instructions.md | پیکربندی .github/copilot-instructions.md |
| Cursor | cursor.md | پیکربندی cursorrules.md |
| JetBrains IDEs | guidelines.md | پیکربندی guidelines.md |
| VS Code | .instructions.md | پیکربندی .instructions.md |
| Windsurf | guidelines.md | پیکربندی guidelines.md |
راهاندازی Angular CLI MCP Server
Angular CLI شامل یک Model Context Protocol (MCP) server آزمایشی است که به AI assistantها در محیط توسعهی شما اجازه میدهد با Angular CLI تعامل داشته باشند.
یاد بگیرید چطور Angular CLI MCP Server را راهاندازی کنید
دادن Context با llms.txt
llms.txt یک استاندارد پیشنهادی برای وبسایتهاست که کمک میکند LLMها محتوای آنها را بهتر بفهمند و پردازش کنند. تیم Angular دو نسخه از این فایل را توسعه داده تا LLMها و ابزارهایی که از LLMها برای code generation استفاده میکنند، بتوانند کد مدرن Angular بهتری بسازند.
- llms.txt - یک فایل index که به فایلها و resourceهای کلیدی لینک میدهد.
- llms-full.txt - مجموعهای کاملتر و compile شده از resourceها که توضیح میدهد Angular چطور کار میکند و چطور باید Angular application ساخت.
برای اطلاعات بیشتر دربارهی ادغام AI در Angular applicationها، حتماً صفحه overview را ببینید.
Web Codegen Scorer
تیم Angular ابزار Web Codegen Scorer را توسعه داده و open-source کرده است؛ ابزاری برای ارزیابی و امتیازدهی کیفیت web code تولیدشده با AI. میتوانید از این ابزار برای تصمیمگیری مبتنی بر شواهد دربارهی کد تولیدشده با AI استفاده کنید؛ مثلاً fine-tune کردن promptها برای افزایش دقت کد Angular تولیدشده توسط LLM. این promptها میتوانند بهعنوان system instructions در AI tooling شما قرار بگیرند یا همراه prompt شما بهعنوان context استفاده شوند. همچنین میتوانید با این ابزار کیفیت کد تولیدشده توسط modelهای مختلف را مقایسه کنید و با تکامل modelها و agentها، کیفیت را در طول زمان پایش کنید.