3.9 KiB
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 lsrtk greprtk smartrtk readrtk git diffrtk git status
Avoid raw:
catgreprgtreegit diff- recursive
find
Use raw shell only for:
- builds
- runtime/debugging
- Docker
- pnpm
- commands RTK cannot perform
FILE READING POLICY
Preferred order:
rtk greprtk smartrtk 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 <file> -l aggressive
ANGULAR WORKFLOW
For components:
rtk grep "<component-name>"rtk smart component.ts- Read template only if UI changes are required
- 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/productiontis→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_defaultdocker 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 smartunless implementation details are required.
When a file exceeds 300 lines:
- rtk grep
- rtk smart
- read only the relevant symbol/section
Avoid full-file reads.