Borrowing it
Nothing to install: this file belongs to NLACE-COM/mcp-supermercados-cl. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/NLACE-COM/mcp-supermercados-cl/main/CLAUDE.mdgit clone --depth 1 https://github.com/NLACE-COM/mcp-supermercados-clWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/nlace-com/mcp-supermercados-cl/claude-md)<a href="https://agentmods.dev/instructions/nlace-com/mcp-supermercados-cl/claude-md"><img src="https://agentmods.dev/badge/instructions/nlace-com/mcp-supermercados-cl/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/nlace-com/mcp-supermercados-cl/claude-md"><img src="https://agentmods.dev/badge/instructions/nlace-com/mcp-supermercados-cl/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.06113 | $0.06113 |
| Opus 5 | $0.03057 | $0.03057 |
| Sonnet 5 | $0.01223 | $0.01223 |
| Haiku 4.5 | $0.00611 | $0.00611 |
Grade A, and why
mcp-supermercados-cl CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 74 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md — mcp-supermercados-cl
Servidor MCP en TypeScript para armar la mejor lista de compra en supermercados chilenos. Foco: profundidad en UNA cadena con la sesión y beneficios por RUT del usuario (Jumbo primero), no comparación entre cadenas.
Documentos fuente
docs/PLAN-arquitectura.md— plan vigente (arquitectura, roadmap por fases, tools). Fuente de verdad.docs/PLAN-referencia-endpoints.md— plan anterior orientado a comparación; útil solo como referencia de endpoints.docs/captura-cencosud-2026-07-06.md— captura verificada del request de Constructor.io, scoping por sucursal (variations_map), y dónde vive el precio Prime (estado deshidratado del SSR de la PDP).
Estado (actualizar al avanzar)
- Fase 1 completa (2026-07-06): tools
search_products,get_productyget_offersfuncionando contra Jumbo con tests de contrato (fixtures reales) y smoke live.get_productes la fuente del precio Prime (memberPrice). - Fase 3 parcial (2026-07-07):
build_listysuggest_swapspúblicos (ranking por precio por unidad + ofertas, lógica ensrc/core/listBuilder.ts),adapter_status, cache TTL 15 min en el adaptador (src/core/cache.ts). Falta: priorizar frecuentes (depende de fase 2) y carro. - Fase 2 (frecuentes + precio Prime) completa (2026-07-07):
get_frequent_purchasesyget_member_priceimplementadas. Captura clave: el token de Jumbo vive en localStorage (no solo cookies), así que la sesión se opera desde el navegador del usuario.build_listahora prioriza frecuentes (matchFrequenten listBuilder). Parser ensrc/adapters/cencosudSession.ts, puente ensrc/adapters/session.ts, fixture real entests/fixtures/frequent-products-2026-07-07.json. Pendiente fase 2: listas guardadas. - Modelo de sesión: el servidor nunca ve credenciales. El cliente (junto al navegador logueado) entrega las cards del DOM de /productos-frecuentes vía el parámetro
cards/frequentCards. Vía de producción para automatizarlo: Playwright con perfil de Chrome (BrowserBridge.fetchAuthedHtml). - Fase 3 (carro) completa (2026-07-07):
add_to_cartyget_cart. Endpoints del BFF verificados con la sesión del usuario:GET /cart?store={branchId}&simulationTotals=trueyPATCH /cart/items(body con skuId+quantity+banderas). Parser ensrc/adapters/cencosudCart.ts, tools ensrc/tools/cart.ts, fixture real entests/fixtures/cart-2026-07-07.json. ElCartnormalizado exponetotal,savingsyprimeSavings(el ahorro socio sale detotals.itemDiscounts.details/simulation.*.discountDetails, clave PRIME_USER). Las tools no ejecutan la llamada (el server no ve el token): arman el request y normalizan el JSON que devuelve el navegador.add_to_cartes reversible; no es compra. - Fases 5-7 completas (2026-07-07): las cinco cadenas del plan y
compare_stores.- Unimarc (
src/adapters/unimarc.ts):POST bff-unimarc-ecommerce.unimarc.cl/catalog/product/search. Precio socio "Club Unimarc" enpriceDetail.promotionalTag. - Tottus (
src/adapters/tottus.ts): SSR__NEXT_DATA__de/tottus-cl/buscar?Ntt=. Precios string;internetPrice/normalPrice/pum. - Lider (
src/adapters/lider.ts): SSR__NEXT_DATA__de/search?query=(nodos__typename:Product). Bloqueo actualizado 2026-07-08 (issue #2): el sitio bloquea todo cliente HTTP plano —incluso IP residencial— por fingerprint del cliente (TLS/JA3 + PerimeterX + F5 BIG-IP), respondiendo307 → /blocked; la vía confiable es el puente de navegador (browserHtmlensearch_products, leyendo__NEXT_DATA__del DOM, no fetch same-origin). compare_stores(src/core/compare.ts+src/tools/compareStores.ts): total de la lista por cadena, marca la más barata; resultados parciales si una cadena falla.- HttpClient ganó
postJson(Unimarc). HelpersparseClpString/parseUnitPriceString/normalizeUniten normalize.ts. - Unimarc/Tottus/Lider requieren IP residencial (datacenter bloquea); documentado en
docs/captura-otras-cadenas-2026-07-07.md. Fixtures reales en tests/fixtures. - Publicación: LICENSE MIT, README de lanzamiento con aviso legal. Server v1.0.0, 10 tools, 72 tests de contrato.
- Unimarc (
- Tres mejoras completas (2026-07-07):
- Listas guardadas de Jumbo:
get_saved_lists+adapters/cencosudLists.ts. Endpoints/lists,/lists/{scope}/{idList}. Items con misma forma que carro (precio socio en promotions PRIME_USER). Fixturejumbo-list-2026-07-07.json. - Profundidad no-Jumbo: Santa Isabel ganó
get_productcon precio socio; su carro usa eladdToCart/getCartgenérico del CencosudAdapter (mismo BFF). Unimarc/Tottus/Lider: carro con login propio, fase futura. - Detalle de Santa Isabel:
pdpStyle:"bff-pdp"→POST bff.santaisabel.cl/catalog/pdpcon{slug, store}+ headers (apiKey públicabe-reg-groceries-sisa-catalog-wdhhq5a2fken, x-client-version 2.3.17). Misma forma de item que Jumbo;mapPdpDatacompartido.store= sucursal (default "pedrofontova", override con branchId). Fixturesantaisabel-pdp.json.
- Listas guardadas de Jumbo:
- 12 tools, 80 tests de contrato. Detalle en docs/captura-cencosud-2026-07-06.md §4d.
- Alcance de precios y bloqueo de Líder (2026-07-07):
search_products,build_listycompare_storesincluyenpriceScope/priceScopeNoteen la respuesta (priceScopeInfoensrc/core/format.ts): sinbranchIdlos precios son de catálogo nacional y el modelo debe advertir que la sucursal del usuario puede mostrar otro precio (caso real: pisco a $10.913 nacional vs $13.190 en la sucursal del usuario). Líder: PerimeterX a veces no responde 403 sino 307 a/blocked("Robot or human", sin__NEXT_DATA__), que se confundía con 0 resultados;isLiderBlockedHtml(src/adapters/lider.ts) lo detecta y lanza errorblockedaccionable. 136 tests. - Fase 4 (Santa Isabel) — búsqueda habilitada (2026-07-07): registrada con
SANTA_ISABEL_CONFIG(hostac.cnstrc.com, keykey_c73M3GMIWJ8AcNnd).search_products,build_listysuggest_swapsfuncionan parasantaisabelcon precios y ofertas reales. ElCencosudBannerConfigahora lleva capacidades por banner (offersCollectionId,pdpStyle):get_productyget_offersde Santa Isabel lanzan error claro (su PDPwindow.__renderData/VTEX y ofertas requieren comuna seleccionada; precios en 0 sin ella). URLs de producto en www.sisa.cl. Fixture:tests/fixtures/santaisabel-search-arroz.json. Pendiente para profundidad completa en SI: parser VTEX con selección de comuna → precio socio y carro. - Contribución externa: puente de navegador + canasta repartida (2026-07-09, PR #3 de @dmnavalon, cierra #2): (1)
search_productsaceptabrowserHtmlpara Líder y Tottus —el HTML/JSON de__NEXT_DATA__que el usuario trae de un navegador real que ya pasó el antibot— víawrapLiderHtml/wrapTottusHtml+ mapaBROWSER_BRIDGE(src/tools/searchProducts.ts); sin él y bloqueado, la tool devuelve respuesta accionable (openUrl+browserSnippet+retryWith) en vez de error seco.TottusAdapter.searchProductsahora soporta el puente igual que Líder. (2) Nueva toolbuild_cheapest_basket(src/core/cheapestBasket.tsfunción purachooseCheapestBasket+src/tools/cheapestBasket.ts): a diferencia decompare_stores(elige UNA cadena para toda la lista), asigna CADA ítem a la cadena más barata (cherry-pick) y agrupa por cadena; exponepicks,plan,basketTotal,singleStore,splitSaving,mixedFormatItems,missing. Prompt guiadosuper_eficiente. 13 tools, 145 tests. - Puente de navegador automático para Líder/Tottus (2026-07-09): antes el
PlaywrightBridgeexistía pero el server nunca lo instanciaba (puente solo manual, víabrowserHtml). Ahorasrc/adapters/browserBridge.tslo activa por entorno:getConfiguredBrowserBridge()leeSUPERMERCADOS_PLAYWRIGHT_PROFILE(userDataDir, requerida),SUPERMERCADOS_PLAYWRIGHT_CHANNEL(chrome/msedge) ySUPERMERCADOS_PLAYWRIGHT_HEADLESS; devuelveundefinedsin configurar (→ flujo manual intacto).bridgeSession(store, bridge, branchId)antepone el host de la cadena (SSR_HOSTS: lider=super.lider.cl, tottus=www.tottus.cl) al path del adaptador.search_productslo usa como fallback automático cuando bloquea y no vinobrowserHtml;compareStoresacepta el bridge como 5º parámetro (default =getConfiguredBrowserBridge()), asícompare_storesybuild_cheapest_basketincluyen Líder/Tottus automáticamente si está configurado.PlaywrightBridge.fetchSsrHtml(url)navega connetworkidle+ esperascript[id="__NEXT_DATA__"](App Router hace streamingself.__next_f; leer antes daría documento sin__NEXT_DATA__= falso "0 resultados"). Playwright sigue siendo dependencia opcional (import dinámico). Tests con bridge fake inyectado porsetBrowserBridgeForTestsentests/adapters/browserBridge.test.ts. Límite conocido: cada búsqueda por Playwright es lenta; con muchos ítemscompareStorespuede tocar su budget de 25 s/cadena y devolver parcial. - Fix del puente (v1.4.1, 2026-07-09): al validar el puente contra los sitios reales con Playwright aparecieron tres bugs que lo hacían fallar SIEMPRE (invisibles a los tests con fixtures): (1) el HTML del navegador real trae
<script nonce="" id="__NEXT_DATA__" …>con elnonceantes delid, que el marcador literal no matcheaba → Líder se reportaba "bloqueado" con datos presentes. Nuevo helper compartidosrc/adapters/nextData.ts(extractNextDataJson/hasNextData, regex tolerante a orden de atributos) que usan Líder y Tottus. (2)fetchSsrHtmlusabawaitUntil:"networkidle", que nunca se cumple en sitios con analytics/polling → timeout; ahoradomcontentloaded. (3)waitForSelectoresperabastate:"visible"pero un<script>es invisible → timeout; ahorastate:"attached". Verificado real: Líder ~46 productos, Tottus ~48 (Chrome real,channel:"chrome"). 13 tools, 157 tests. - Carga de Playwright con
npx(v1.4.2, 2026-07-09): cuando el server corre pornpx(caso Claude Desktop), sunode_modulesefímero no tiene Playwright aunque esté instalado global.NODE_PATHNO ayuda porque el bridge carga conimport()(ESM) y NODE_PATH solo aplica arequire()(CommonJS) — verificado empíricamente.loadPlaywright()ahora, si elimport("playwright")normal falla, usacreateRequire(import.meta.url)(process.env.SUPERMERCADOS_PLAYWRIGHT_PATH)para resolver el paquete global desde su carpeta (npm root -g+/playwright). Config de Claude Desktop verificada (npx +SUPERMERCADOS_PLAYWRIGHT_PATH→ Líder 46 productos). Dato del entorno: Claude Desktop lanza el MCP con elnpxde nvm (~/.nvm/versions/node/vXX/bin/npx), así que el node global es el de nvm. - Smoke live sin falsos positivos (v1.4.4, 2026-07-13, cierra #9): el workflow semanal
smoke-live.ymlcorría las 5 cadenas y Tottus/Líder bloquean siempre desde IP de datacenter (GitHub Actions), abriendo un issue de falso positivo cada lunes que enterraba las alertas reales. Ahora el smoke (tests/live/otras-cadenas.live.test.ts) distingue bloqueo antibot (HttpStatusError401/403/307/429 oErrorcon mensaje de antibot: PerimeterX/BIG-IP/"blocked") de cambio de formato (fetch 200 peroProductSchema.parse/aserción falla): el bloqueo se tolera con warning, el cambio de formato rompe el smoke. Jumbo/Santa Isabel/Unimarc (sin bloqueo por IP) se validan de verdad. NuevoSMOKE_STRICT=1para runner con IP residencial (reendurece el bloqueo a fallo). Verificado en vivo: normal 7/7 (Tottus/Líder tolerados), estricto 2 failed.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 74 lines · 6,113 tokens per session scan A 4e57eada1c4d
mcp-supermercados-cl CLAUDE.md is an instructions file published in the GitHub repository NLACE-COM/mcp-supermercados-cl (66 stars, last pushed 1mo ago), licensed MIT. It adds 6,113 tokens to every session, about $0.0306 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
spec-kit AGENTS.md
AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.