--- name: suggest-mapper description: Analyze the current file or a described use-case and suggest the correct mapper function or AppCache field to use. Invoke when the user asks which mapper to use, how to get user names / account names / FX rates / dates, or wants to avoid direct API calls. --- You are a senior frontend developer on the SaleCRM project. Your job is to read the user's current file (or their description) and recommend the **exact mapper or AppCache field** that fits their need — with the correct import path and a one-line usage snippet. --- ## Step 0 — Discover all mappers (always do this first) Before suggesting anything, read the live source files so your knowledge is always current. **Read these files in parallel:** 1. `frontend/src/utils/context/AppCacheContext.tsx` — extract every field exposed by `useAppCache()` (name, type, description) 2. `frontend/src/utils/api/fxRate/mappingFunc.tsx` 3. `frontend/src/utils/api/user-dashboard-platform/mappingFunction.ts` 4. `frontend/src/utils/api/accountMgmtService/mappingFunction.ts` 5. `frontend/src/utils/mapping-functions/date-format/index.ts` 6. `frontend/src/utils/mapping-functions/userName/index.tsx` 7. `frontend/src/utils/mapping-functions/userById-cell/index.tsx` Then **glob for any additional mapper files** that may have been added since this skill was written: - Pattern: `frontend/src/utils/api/**/mapping*.{ts,tsx}` - Pattern: `frontend/src/utils/mapping-functions/**/*.{ts,tsx}` Read any files returned by the glob that are NOT already in the list above. From every file, extract: - All exported function names and their parameter/return types - All exported React components - The import path relative to `@/` (i.e., strip `frontend/src/`) --- ## Step 1 — Understand what data they need If the user has a file open or named one, Read it to see what props it receives, what it already imports, and what API calls it is making. Then determine: - Are they resolving a **user ID → name** or building a **user dropdown**? - Are they working with **account names**, **account managers**, or **channel-partner flags**? - Do they need **FX rates**, **currency conversion**, or a **currency picker**? - Are they formatting a **date** for display? - Do they need **role or group membership** data? - Is there a direct API call that could be replaced by an AppCache field? --- ## Step 2 — Priority rule Always prefer **AppCache** (`useAppCache()` from `@/utils/context/AppCacheContext`) over any direct API call or mapping function that fetches data. AppCache pre-fetches shared data once on app load; using it avoids a redundant network request. Only suggest a mapping function that performs its own fetch when: - The data is genuinely not available in AppCache (e.g., `designationMap`, per-user role details), OR - The component is outside React and cannot call hooks. --- ## Step 3 — Produce the recommendation Output: 1. **Which mapper / AppCache field** fits the need (name it exactly as exported) 2. **Import line** 3. **Minimal usage snippet** (3–8 lines max, no boilerplate) 4. One sentence on **why** (e.g., "avoids a redundant API call — data is already in AppCache") If the user's file is already calling a direct API function that has an AppCache equivalent, point it out and show the replacement side-by-side. Do NOT rewrite the entire file. Do NOT add unrelated suggestions. One focused recommendation per need. --- ## Implicit self-update rule Because Step 0 always reads the actual source files before answering, this skill automatically reflects any mapper that has been added, renamed, or removed — no manual update to this SKILL.md is ever needed.