# AGENT.md ## Scope Applies to the full repository unless overridden by a deeper `AGENT.md`. Stack: - Angular 20 - Standalone components - pnpm - Docker - RTK --- # RTK RULES (MANDATORY) Always prefer RTK commands. Use: - `rtk ls` - `rtk grep` - `rtk smart` - `rtk read` - `rtk git diff` - `rtk git status` Avoid raw: - `cat` - `grep` - `rg` - `tree` - `git diff` - recursive `find` Use raw shell only for: - builds - runtime/debugging - Docker - pnpm - commands RTK cannot perform --- # FILE READING POLICY Preferred order: 1. `rtk grep` 2. `rtk smart` 3. `rtk read` Rules: - Search before reading. - Read only required files. - Do not read TS/HTML/SCSS together unless required. - Stop exploring once edit location is clear. - Avoid rereading unchanged files. Large files: - `rtk read -l aggressive` --- # ANGULAR WORKFLOW For components: 1. `rtk grep ""` 2. `rtk smart component.ts` 3. Read template only if UI changes are required 4. Read styles only if styling changes are required Avoid broad module inspection. --- # TOKEN RULES Do not: - dump large files - scan unrelated folders - inspect generated directories - perform repeated searches - over-explain edits Avoid: - `dist/` - `.angular/` - `coverage/` - `node_modules/` - `.git/` --- # CHANGE POLICY - Keep changes minimal and scoped. - Reuse existing patterns. - Avoid unrelated refactors. - Preserve tenant separation. - Prefer root-cause fixes. --- # PROJECT RULES ## Tenant Builds - `default` → `dist/production` - `tis` → `dist/tis` Keep Docker `DIST_DIR` aligned with Angular output. Do not use Angular `fileReplacements` for static assets. --- ## Input Component File: - `src/app/shared/components/input/input.component.ts` For: - `type="number"` - `type="price"` Requirements: - normalize Persian/Arabic digits - allow only digits and `.` - support fixed precision - keep identifier fields string-safe --- ## Shared Field Rules When creating fields: - use shared field wrappers - reuse `app-input` - register exports in shared indexes - keep control names consistent --- # VALIDATION TypeScript: - `pnpm -s exec tsc -p tsconfig.app.json --noEmit` Docker: - `docker compose build app_default` - `docker compose build app_tis` Validate only impacted areas when possible. --- # FINAL RESPONSE RULES Keep final responses under 10 lines unless: - validation failed - architecture changed - user requested explanation Prefer: Updated: - file1 - file2 Validation: - tsc passed # TARGETED READ RULES Do not read files larger than 300 lines unless required. For changes at a known location: - read the surrounding symbol only - avoid full-file reads Prefer: - rtk grep - rtk smart - targeted read Avoid: - opening 400+ line files for small edits # REASONING OUTPUT RULES Do not expose internal reasoning. Never output: - "I think..." - "I'm considering..." - "I wonder..." - "Maybe..." - implementation deliberation - "It sounds..." Never explain alternative approaches unless requested. Use: Inspecting confirmation dialog. Updating async accept support. Validation passed. # INVESTIGATION LIMITS For localized fixes: - maximum 3 file reads before first edit - maximum 1 related-file read unless required Stop searching once the edit target is identified. # REVIEW MODE During reviews: - inspect changed files only - avoid loading unrelated dependencies - avoid architecture exploration - avoid repository-wide searches Review only code directly affected by the diff. # HARD TOKEN LIMITS For localized fixes: - Never read files larger than 300 lines unless the target symbol cannot be isolated. - Never read an entire file when a symbol-level read is possible. - Never read more than 5 total files before the first edit. - Never open a file already summarized by `rtk smart` unless implementation details are required. When a file exceeds 300 lines: 1. rtk grep 2. rtk smart 3. read only the relevant symbol/section Avoid full-file reads.