{"name":"Faro Design System API","description":"Solo lectura. Sirve releases inmutables generados desde specs/. Siempre versión exacta X.Y.Z, nunca latest.","agentRules":["Empezar por catalog: lista cada spec (accesibilidad, composición, content patterns, tokens…) y cada layout con su url lista, del release más nuevo. Si el repo ya fija una versión (.faro.json), navegar /releases/{version}/docs y /releases/{version}/layouts de esa versión. Usar las URLs tal cual, no armarlas a mano.","No inventar valores ni CSS de layout: espacio, columnas y wrappers salen de /layouts (clases .far-* o mixins @include far-*), y todo valor de un token --far-* de /shared/tokens. En SCSS: $far-* y far-space(paso), nunca un px suelto.","CSS: cargar en este orden shared/tokens, shared/layouts, products/{product}/tokens. SCSS: bajar el paquete al repo con curl -s {api}/faro-pull.js | node - {version} src/styles/faro y seguir su usage (global una vez, @use \"faro/products/{product}\" as * en cada componente).","Un prop required de un layout no tiene default en el contrato: elegir de sus tokens recomendados; si la lista está vacía, usar un primitivo de spacing y marcarlo [PROPUESTO].","Componentes concretos (card, botón) no existen en shared: se arman con layouts + tokens. Si falta algo, no completarlo en silencio — ver docs/AGENTS.md."],"routes":[{"path":"/releases","returns":"Versiones publicadas y productos de cada una.","example":"/releases"},{"path":"/releases/{version}","returns":"manifest.json: commit de origen, cantidad de tokens, overrides y extensiones por producto.","example":"/releases/1.0.0"},{"path":"/releases/{version}/shared","returns":"contract.json de shared: tokens con sus ramas when, clase y archivo de spec de origen; breakpoints como literales.","example":"/releases/1.0.0/shared"},{"path":"/releases/{version}/shared/tokens","returns":"tokens.css: custom properties --far-* de shared — spacing, radius, elevation, motion (duración, easing, transiciones), z-index y breakpoints.","example":"/releases/1.0.0/shared/tokens"},{"path":"/releases/{version}/shared/layouts","returns":"layouts.css: clases .far-stack, .far-box, .far-center, .far-cluster, .far-grid.","example":"/releases/1.0.0/shared/layouts"},{"path":"/releases/{version}/shared/scss","returns":"faro.scss: una variable $far-* por token, breakpoints como literales + far-up(), far-space(paso) para la escala de spacing (un paso fuera de la escala no compila) y un mixin por layout.","example":"/releases/1.0.0/shared/scss"},{"path":"/releases/{version}/scss","returns":"Paquete SCSS para copiar a un proyecto (carpeta faro/): herramientas ($far-*, far-space(), far-up(), mixins) + parciales que emiten tokens, layouts y el theme del producto. Trae cada archivo con su url, cómo cargarlo global y en cada componente.","example":"/releases/1.0.0/scss"},{"path":"/releases/{version}/scss/{path}","returns":"Un archivo del paquete SCSS, con el path del índice.","example":"/releases/1.0.0/scss/_index.scss"},{"path":"/faro-pull.js","returns":"Script sin dependencias que baja el paquete SCSS de un release a una carpeta de tu repo: curl -s {api}/faro-pull.js | node - {version} src/styles/faro","example":"/faro-pull.js"},{"path":"/faro-skill.js","returns":"Script sin dependencias que instala la skill de agentes de un release en un proyecto (.claude/skills/faro/SKILL.md): curl -s {api}/faro-skill.js | node - {version} [carpeta]","example":"/faro-skill.js"},{"path":"/mcp","method":"POST","returns":"Servidor MCP (Streamable HTTP, sin sesión, solo lectura) sobre los mismos releases: tools faro_get_workflow, faro_search_docs, faro_get_doc, faro_list_layouts, faro_get_layout, faro_get_tokens (valores literales, para Figma), faro_get_scss_usage, faro_list_releases. Claude Code: claude mcp add --transport http faro {api}/mcp · Codex: codex mcp add faro --url {api}/mcp","example":"/mcp"},{"path":"/releases/{version}/skill","returns":"SKILL.md de agentes de ese release: cuándo consultar Faro, cómo descomponer un pedido de UI en layouts + tokens, qué hacer cuando el contrato no alcanza y el checklist de cierre. Se instala con /faro-skill.js.","example":"/releases/1.0.0/skill"},{"path":"/releases/{version}/layouts","returns":"Índice de layouts: id, url, primitivo, para qué sirve y qué props son obligatorios.","example":"/releases/1.0.0/layouts"},{"path":"/releases/{version}/layouts/{id}","returns":"Receta de un layout: markup, props (tokens recomendados, defaults), CSS generado, uso en SCSS y reglas de uso de la spec.","example":"/releases/1.0.0/layouts/far-stack"},{"path":"/releases/{version}/products/{product}","returns":"contract.json compuesto (shared + overrides + extensiones del producto). Es el contrato a usar al implementar un producto.","example":"/releases/1.0.0/products/solido"},{"path":"/releases/{version}/products/{product}/tokens","returns":"theme.css: solo overrides y extensiones del producto; se carga después de shared/tokens.css.","example":"/releases/1.0.0/products/solido/tokens"},{"path":"/releases/{version}/docs","returns":"Índice de TODAS las specs (foundations, composición, content patterns, tokens, layouts, criterios, AGENTS.md). Cada entrada trae url (JSON) y markdown listas para usar, título, resumen, estado e ids de sección; urls trae las plantillas de sección. Leer esto antes de pedir un doc.","example":"/releases/1.0.0/docs"},{"path":"/releases/{version}/docs/{path}","returns":"Una spec como JSON: secciones (Markdown por sección), tokens que menciona ya resueltos (valor + var()), specs relacionadas y layouts que la aplican. ?section={id} devuelve solo esa sección; ?format=md, el Markdown crudo.","example":"/releases/1.0.0/docs/shared/foundations/composition/card-and-panel-inner-spacing.md?section=regla"},{"path":"/releases/{version}/llms.txt","returns":"El índice de docs en formato llms.txt (llmstxt.org).","example":"/releases/1.0.0/llms.txt"},{"path":"/llms.txt","returns":"Versiones publicadas, cada una con su llms.txt.","example":"/llms.txt"}],"errors":"JSON { error: { code, message } }. 400 invalid-version | invalid-product | invalid-layout | invalid-format | invalid-path | invalid-host; 404 release-not-found | product-not-found | layout-not-found | artifact-not-found | doc-not-found | scss-not-found | section-not-found | not-found; 405 method-not-allowed.","versions":["1.0.0"],"releases":[{"version":"1.0.0","complete":true,"manifest":"/releases/1.0.0","docs":"/releases/1.0.0/docs","llms":"/releases/1.0.0/llms.txt","layouts":"/releases/1.0.0/layouts","skill":"/releases/1.0.0/skill"}],"catalog":{"version":"1.0.0","css":{"tokens":"/releases/1.0.0/shared/tokens","layouts":"/releases/1.0.0/shared/layouts"},"scss":"/releases/1.0.0/scss","skill":"/releases/1.0.0/skill","layouts":[{"id":"far-box","summary":"Padding uniforme alrededor de un contenido (interior de card o panel).","url":"/releases/1.0.0/layouts/far-box"},{"id":"far-center","summary":"Wrapper de página: centra el contenido y aplica el gutter lateral.","url":"/releases/1.0.0/layouts/far-center"},{"id":"far-cluster","summary":"Fila de elementos que wrappea: ícono + texto, tags, acciones.","url":"/releases/1.0.0/layouts/far-cluster"},{"id":"far-grid","summary":"Columnas iguales; 1 columna por debajo de bp-md, N desde bp-md.","url":"/releases/1.0.0/layouts/far-grid"},{"id":"far-stack","summary":"Apilado vertical con espacio uniforme entre hijos.","url":"/releases/1.0.0/layouts/far-stack"}],"docs":{"protocolo":[{"title":"Cómo trabajar en este repo (humanos y agentes de IA)","url":"/releases/1.0.0/docs/AGENTS.md"},{"title":"Specs","url":"/releases/1.0.0/docs/README.md"}],"products":[{"title":"Productos","url":"/releases/1.0.0/docs/products/README.md"},{"title":"Sólido","url":"/releases/1.0.0/docs/products/solido/README.md"}],"formato-del-contrato":[{"title":"Faro — Schema de specs (capa `shared/`)","url":"/releases/1.0.0/docs/shared/_schema.md"}],"criterios-de-componentes":[{"title":"Atoms — Faro","url":"/releases/1.0.0/docs/shared/atoms/README.md"},{"title":"Molecules — Faro","url":"/releases/1.0.0/docs/shared/molecules/README.md"},{"title":"Organisms — Faro","url":"/releases/1.0.0/docs/shared/organisms/README.md"},{"title":"Templates — Faro","url":"/releases/1.0.0/docs/shared/templates/README.md"}],"foundations":[{"title":"Foundations — Faro","url":"/releases/1.0.0/docs/shared/foundations/README.md"},{"title":"Accessibility","url":"/releases/1.0.0/docs/shared/foundations/accessibility.md"},{"title":"Breakpoints","url":"/releases/1.0.0/docs/shared/foundations/breakpoints.md"},{"title":"Color","url":"/releases/1.0.0/docs/shared/foundations/color.md"},{"title":"Content","url":"/releases/1.0.0/docs/shared/foundations/content.md"},{"title":"Elevation","url":"/releases/1.0.0/docs/shared/foundations/elevation.md"},{"title":"Iconography","url":"/releases/1.0.0/docs/shared/foundations/iconography.md"},{"title":"Illustration System","url":"/releases/1.0.0/docs/shared/foundations/illustration-system.md"},{"title":"Motion","url":"/releases/1.0.0/docs/shared/foundations/motion.md"},{"title":"Radius","url":"/releases/1.0.0/docs/shared/foundations/radius.md"},{"title":"Spacing","url":"/releases/1.0.0/docs/shared/foundations/spacing.md"},{"title":"Typography","url":"/releases/1.0.0/docs/shared/foundations/typography.md"},{"title":"Z-Index","url":"/releases/1.0.0/docs/shared/foundations/z-index.md"}],"composition":[{"title":"Foundations / Composition — Faro","url":"/releases/1.0.0/docs/shared/foundations/composition/README.md"},{"title":"Button Group Spacing","url":"/releases/1.0.0/docs/shared/foundations/composition/button-group-spacing.md"},{"title":"Card And Panel Inner Spacing","url":"/releases/1.0.0/docs/shared/foundations/composition/card-and-panel-inner-spacing.md"},{"title":"CTA Placement Patterns","url":"/releases/1.0.0/docs/shared/foundations/composition/cta-placement-patterns.md"},{"title":"Form Field And Input Spacing","url":"/releases/1.0.0/docs/shared/foundations/composition/form-field-and-input-spacing.md"},{"title":"Grid Collapse Pattern","url":"/releases/1.0.0/docs/shared/foundations/composition/grid-collapse-pattern.md"},{"title":"Icon Label Internal Gap","url":"/releases/1.0.0/docs/shared/foundations/composition/icon-label-internal-gap.md"},{"title":"Label Helper Error Stack","url":"/releases/1.0.0/docs/shared/foundations/composition/label-helper-error-stack.md"},{"title":"List And Table Density Rules","url":"/releases/1.0.0/docs/shared/foundations/composition/list-and-table-density-rules.md"},{"title":"Mobile Content Reorder Pattern","url":"/releases/1.0.0/docs/shared/foundations/composition/mobile-content-reorder-pattern.md"},{"title":"Mobile Wrapper Rules","url":"/releases/1.0.0/docs/shared/foundations/composition/mobile-wrapper-rules.md"},{"title":"Section Spacing And Vertical Rhythm","url":"/releases/1.0.0/docs/shared/foundations/composition/section-spacing-and-vertical-rhythm.md"}],"content-patterns":[{"title":"Content Patterns — Faro","url":"/releases/1.0.0/docs/shared/foundations/content-patterns/README.md"},{"title":"Destructive Action Confirmation","url":"/releases/1.0.0/docs/shared/foundations/content-patterns/destructive-action-confirmation.md"},{"title":"Empty States","url":"/releases/1.0.0/docs/shared/foundations/content-patterns/empty-states.md"},{"title":"Error States","url":"/releases/1.0.0/docs/shared/foundations/content-patterns/error-states.md"},{"title":"Loading States","url":"/releases/1.0.0/docs/shared/foundations/content-patterns/loading-states.md"}],"layouts":[{"title":"Layouts — Faro","url":"/releases/1.0.0/docs/shared/layouts/README.md"},{"title":"Box","url":"/releases/1.0.0/docs/shared/layouts/faro-box.md"},{"title":"Center","url":"/releases/1.0.0/docs/shared/layouts/faro-center.md"},{"title":"Cluster","url":"/releases/1.0.0/docs/shared/layouts/faro-cluster.md"},{"title":"Grid","url":"/releases/1.0.0/docs/shared/layouts/faro-grid.md"},{"title":"Stack","url":"/releases/1.0.0/docs/shared/layouts/faro-stack.md"}],"tokens":[{"title":"Tokens — Faro","url":"/releases/1.0.0/docs/shared/tokens/README.md"},{"title":"Breakpoint Tokens","url":"/releases/1.0.0/docs/shared/tokens/breakpoints.md"},{"title":"Color Tokens","url":"/releases/1.0.0/docs/shared/tokens/color.md"},{"title":"Elevation Tokens","url":"/releases/1.0.0/docs/shared/tokens/elevation.md"},{"title":"Motion Tokens","url":"/releases/1.0.0/docs/shared/tokens/motion.md"},{"title":"Radius Tokens","url":"/releases/1.0.0/docs/shared/tokens/radius.md"},{"title":"Spacing Tokens","url":"/releases/1.0.0/docs/shared/tokens/spacing.md"},{"title":"Token Reference","url":"/releases/1.0.0/docs/shared/tokens/token-reference.md"},{"title":"Typography Tokens","url":"/releases/1.0.0/docs/shared/tokens/typography.md"},{"title":"Z-Index Tokens","url":"/releases/1.0.0/docs/shared/tokens/z-index.md"}]}}}