Skip to content
This repository was archived by the owner on Jun 16, 2026. It is now read-only.

Commit f0027ed

Browse files
mcp-tool-shopclaude
andcommitted
Add landing page, Starlight handbook, and 7 translated READMEs
- Landing page with site-theme: features, quick start, priority tiers, API reference - Starlight handbook: 4 pages (getting started, concepts, API reference, security) - GitHub Pages deployment workflow (pages.yml) - Translated READMEs: es, fr, hi, it, ja, pt-BR, zh - Blue accent (#3b82f6) for brand identity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 248eb69 commit f0027ed

28 files changed

Lines changed: 10457 additions & 0 deletions

.github/workflows/pages.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Deploy site to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- 'site/**'
8+
- '.github/workflows/pages.yml'
9+
workflow_dispatch:
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
15+
permissions:
16+
contents: read
17+
pages: write
18+
id-token: write
19+
20+
jobs:
21+
build:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- uses: actions/setup-node@v4
27+
with:
28+
node-version: 22
29+
30+
- name: Install site dependencies
31+
working-directory: site
32+
run: npm ci
33+
34+
- name: Build site
35+
working-directory: site
36+
run: npm run build
37+
38+
- uses: actions/upload-pages-artifact@v3
39+
with:
40+
path: site/dist
41+
42+
deploy:
43+
needs: build
44+
runs-on: ubuntu-latest
45+
environment:
46+
name: github-pages
47+
url: ${{ steps.deployment.outputs.page_url }}
48+
steps:
49+
- id: deployment
50+
uses: actions/deploy-pages@v4

README.es.md

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
<p align="center">
2+
<a href="README.md">English</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a> | <a href="README.ja.md">日本語</a>
3+
</p>
4+
5+
<p align="center">
6+
<img src="logo.png" width="400" alt="ai-loadout">
7+
</p>
8+
9+
<p align="center">
10+
<a href="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/ai-loadout/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
11+
<a href="https://www.npmjs.com/package/@mcptoolshop/ai-loadout"><img src="https://img.shields.io/npm/v/@mcptoolshop/ai-loadout" alt="npm"></a>
12+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="Licencia MIT"></a>
13+
</p>
14+
15+
Enrutador de conocimiento contextual para agentes de IA.
16+
17+
`ai-loadout` es el formato de tabla de despacho y motor de coincidencia que permite a los agentes de IA cargar el conocimiento adecuado para la tarea en cuestión. En lugar de volcar todo en el contexto, mantienes un índice pequeño y cargas los contenidos bajo demanda.
18+
19+
Piensa en ello como un equipamiento de videojuego — equipas al agente con exactamente el conocimiento que necesita antes de cada misión.
20+
21+
## Instalación
22+
23+
```bash
24+
npm install @mcptoolshop/ai-loadout
25+
```
26+
27+
## Conceptos Fundamentales
28+
29+
### La Tabla de Despacho
30+
31+
Un `LoadoutIndex` es un índice estructurado de contenidos de conocimiento:
32+
33+
```json
34+
{
35+
"version": "1.0.0",
36+
"generated": "2026-03-06T12:00:00Z",
37+
"entries": [
38+
{
39+
"id": "github-actions",
40+
"path": ".rules/github-actions.md",
41+
"keywords": ["ci", "workflow", "runner"],
42+
"patterns": ["ci_pipeline"],
43+
"priority": "domain",
44+
"summary": "CI triggers, path gating, runner cost control",
45+
"triggers": { "task": true, "plan": true, "edit": false },
46+
"tokens_est": 680,
47+
"lines": 56
48+
}
49+
],
50+
"budget": {
51+
"always_loaded_est": 320,
52+
"on_demand_total_est": 8100,
53+
"avg_task_load_est": 520,
54+
"avg_task_load_observed": null
55+
}
56+
}
57+
```
58+
59+
### Niveles de Prioridad
60+
61+
| Nivel | Comportamiento | Ejemplo |
62+
|-------|---------------|---------|
63+
| `core` | Siempre cargado | "nunca omitas tests para que CI pase" |
64+
| `domain` | Cargado cuando las palabras clave de la tarea coinciden | Reglas de CI al editar workflows |
65+
| `manual` | Nunca se carga automáticamente, solo búsqueda explícita | Problemas oscuros de plataforma |
66+
67+
### Frontmatter del Contenido
68+
69+
Cada archivo de contenido lleva sus propios metadatos de enrutamiento:
70+
71+
```markdown
72+
---
73+
id: github-actions
74+
keywords: [ci, workflow, runner, dependabot]
75+
patterns: [ci_pipeline]
76+
priority: domain
77+
triggers:
78+
task: true
79+
plan: true
80+
edit: false
81+
---
82+
83+
# GitHub Actions Rules
84+
CI minutes are finite...
85+
```
86+
87+
El frontmatter es la fuente de verdad. El índice se deriva de él.
88+
89+
## API
90+
91+
### `matchLoadout(task, index)`
92+
93+
Compara una descripción de tarea contra un índice de loadout. Devuelve las entradas que deben cargarse, ordenadas por fuerza de coincidencia.
94+
95+
```typescript
96+
import { matchLoadout } from "@mcptoolshop/ai-loadout";
97+
98+
const results = matchLoadout("fix the CI workflow", index);
99+
// [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
100+
```
101+
102+
- Las entradas core siempre se incluyen (puntuación 1.0)
103+
- Las entradas manual nunca se incluyen automáticamente
104+
- Las entradas domain se puntúan por coincidencia de palabras clave + bonificación de patrón
105+
- Los resultados se ordenan por puntuación descendente
106+
107+
### `lookupEntry(id, index)`
108+
109+
Busca una entrada específica por ID. Para entradas manuales o acceso explícito.
110+
111+
```typescript
112+
import { lookupEntry } from "@mcptoolshop/ai-loadout";
113+
114+
const entry = lookupEntry("github-actions", index);
115+
```
116+
117+
### `parseFrontmatter(content)`
118+
119+
Analiza el frontmatter tipo YAML de un archivo de contenido.
120+
121+
```typescript
122+
import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
123+
124+
const { frontmatter, body } = parseFrontmatter(fileContent);
125+
if (frontmatter) {
126+
console.log(frontmatter.id, frontmatter.keywords);
127+
}
128+
```
129+
130+
### `serializeFrontmatter(fm)`
131+
132+
Serializa un objeto `Frontmatter` de vuelta a cadena de texto.
133+
134+
### `validateIndex(index)`
135+
136+
Valida la integridad estructural de un `LoadoutIndex`. Devuelve un arreglo de problemas.
137+
138+
```typescript
139+
import { validateIndex } from "@mcptoolshop/ai-loadout";
140+
141+
const issues = validateIndex(index);
142+
const errors = issues.filter(i => i.severity === "error");
143+
if (errors.length > 0) {
144+
console.error("Index has errors:", errors);
145+
}
146+
```
147+
148+
Verifica: campos requeridos, IDs únicos, formato kebab-case, límites de resumen, presencia de palabras clave para entradas domain, prioridades válidas, presupuestos no negativos.
149+
150+
### `estimateTokens(text)`
151+
152+
Estima el conteo de tokens de un texto. Usa la heurística de caracteres/4.
153+
154+
```typescript
155+
import { estimateTokens } from "@mcptoolshop/ai-loadout";
156+
157+
const tokens = estimateTokens(fileContent); // ~250
158+
```
159+
160+
## Tipos
161+
162+
```typescript
163+
import type {
164+
LoadoutEntry,
165+
LoadoutIndex,
166+
Frontmatter,
167+
MatchResult,
168+
ValidationIssue,
169+
Priority, // "core" | "domain" | "manual"
170+
Triggers, // { task, plan, edit }
171+
Budget,
172+
} from "@mcptoolshop/ai-loadout";
173+
```
174+
175+
## Consumidores
176+
177+
- **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Optimizador de CLAUDE.md para Claude Code. Usa ai-loadout para la tabla de despacho y el motor de coincidencia.
178+
179+
## Seguridad
180+
181+
Este paquete es una biblioteca de datos pura. No accede al sistema de archivos, no realiza solicitudes de red ni recopila telemetría. Todo el I/O es responsabilidad del consumidor.
182+
183+
### Modelo de Amenazas
184+
185+
| Amenaza | Mitigación |
186+
|---------|------------|
187+
| Entrada de frontmatter malformado | `parseFrontmatter()` devuelve `null` ante entrada inválida — sin excepciones, sin eval |
188+
| Contaminación de prototipo | El parser manual usa literales de objeto planos, sin `JSON.parse` de estructuras anidadas no confiables |
189+
| Índice con datos incorrectos | `validateIndex()` detecta problemas estructurales antes de que se propaguen |
190+
| DoS por Regex | Sin regex proporcionado por el usuario — los patrones se comparan como búsquedas de texto plano |
191+
192+
Consulta [SECURITY.md](SECURITY.md) para la política de seguridad completa.
193+
194+
---
195+
196+
Creado por [MCP Tool Shop](https://mcp-tool-shop.github.io/)

0 commit comments

Comments
 (0)