notes to self

Grep like an LLM · part 2 of 6

Make a map, don't read

On this page

You have a ticket about loyalty stamps and a codebase you don't know. The slow move is opening files until something looks relevant. The fast move costs one command.

The heat map

$ git grep -ci 'loyalty'
repositories/LoyaltyRepository.ts:11
services/loyalty/LoyaltyService.ts:23
apps/sundae.shop/app/account/page.tsx:4

-c counts the matches in each file instead of printing them. -i ignores case, so Loyalty and loyalty both land. Read the counts like a map. The service is the centre of gravity. The page is a consumer. You know the shape of the feature and you haven't opened anything yet.

Don't pipe it through sort. At a dozen lines your eyes are faster than a pipeline.

The file list

Sometimes you don't need counts, just the territory:

$ git grep -li 'loyalty'
repositories/LoyaltyRepository.ts
services/loyalty/LoyaltyService.ts
apps/sundae.shop/app/account/page.tsx

-l prints filenames only. Same map, less ink. Reach for it when you already plan to open files and want the shortlist.

Search the noun

Features live under their nouns. Try loyalty, stamp, refund. Verbs like update and handle match half the codebase. If a search floods, the fix is usually swapping a verb for the domain word.

At your desk

On the next ticket you pick up, run the heat map before you open a single file. Name the two files with the highest counts. That's the whole exercise. If the map surprised you, it earned its keep.