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

Commit 3537b7c

Browse files
mcp-tool-shopclaude
andcommitted
v1.0.3: Full Treatment — brand logo, coverage, proper translations
- Logo URL from mcp-tool-shop-org/brand (not local file) - Codecov badge + c8 coverage in CI (Node 22 matrix entry) - Translations re-done via polyglot-mcp (TranslateGemma 12B) - .gitignore: site/.astro/, site/dist/, .polyglot-cache.json - package-lock.json in CI paths filter Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 0a52015 commit 3537b7c

13 files changed

Lines changed: 1023 additions & 276 deletions

.github/workflows/ci.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ on:
66
paths:
77
- "src/**"
88
- "package.json"
9+
- "package-lock.json"
910
- "tsconfig.json"
1011
- ".github/workflows/**"
1112
pull_request:
1213
paths:
1314
- "src/**"
1415
- "package.json"
16+
- "package-lock.json"
1517
- "tsconfig.json"
1618
- ".github/workflows/**"
1719
workflow_dispatch:
@@ -36,3 +38,12 @@ jobs:
3638
- run: npm test
3739
- run: npm audit --audit-level=moderate
3840
- run: npm pack --dry-run
41+
- name: Coverage
42+
if: matrix.node-version == 22
43+
run: npm run test:coverage
44+
- name: Upload coverage
45+
if: matrix.node-version == 22
46+
uses: codecov/codecov-action@v4
47+
with:
48+
files: coverage/lcov.info
49+
fail_ci_if_error: false

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
node_modules/
22
dist/
33
*.tsbuildinfo
4+
site/.astro/
5+
site/dist/
6+
site/node_modules/
7+
.polyglot-cache.json

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## 1.0.3 — 2026-03-06
4+
5+
- Brand logo URL (mcp-tool-shop-org/brand)
6+
- Code coverage via c8 + Codecov badge
7+
- Translations re-done via polyglot-mcp (TranslateGemma 12B)
8+
- SHIP_GATE.md and SCORECARD.md (shipcheck audit: 100% pass)
9+
- dependabot.yml (monthly, grouped)
10+
- .gitignore: site/.astro/, site/dist/, .polyglot-cache.json
11+
12+
## 1.0.2 — 2026-03-06
13+
14+
- Shipcheck gates added (SHIP_GATE.md, SCORECARD.md)
15+
- dependabot.yml
16+
317
## 1.0.1 — 2026-03-06
418

519
- Add `hint` field to `ValidationIssue` (Tier 1 error shape compliance)

README.es.md

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,36 @@
11
<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>
2+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</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>
33
</p>
44

55
<p align="center">
6-
<img src="logo.png" width="400" alt="ai-loadout">
6+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ai-loadout/readme.png" width="400" alt="ai-loadout">
77
</p>
88

99
<p align="center">
1010
<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://codecov.io/gh/mcp-tool-shop-org/ai-loadout"><img src="https://codecov.io/gh/mcp-tool-shop-org/ai-loadout/graph/badge.svg" alt="Coverage"></a>
1112
<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+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
14+
<a href="https://mcp-tool-shop-org.github.io/ai-loadout/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
1315
</p>
1416

1517
Enrutador de conocimiento contextual para agentes de IA.
1618

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.
19+
`ai-loadout` es el formato de la tabla de distribución y el motor de coincidencia que permite a los agentes de IA cargar el conocimiento adecuado para la tarea en cuestión. En lugar de incluir todo en el contexto, se mantiene un índice pequeño y se cargan los datos según sea necesario.
1820

19-
Piensa en ello como un equipamiento de videojuego — equipas al agente con exactamente el conocimiento que necesita antes de cada misión.
21+
Piénselo como la configuración de un juego: se equipa al agente con exactamente el conocimiento que necesita antes de cada misión.
2022

2123
## Instalación
2224

2325
```bash
2426
npm install @mcptoolshop/ai-loadout
2527
```
2628

27-
## Conceptos Fundamentales
29+
## Conceptos básicos
2830

29-
### La Tabla de Despacho
31+
### La tabla de distribución
3032

31-
Un `LoadoutIndex` es un índice estructurado de contenidos de conocimiento:
33+
Un `LoadoutIndex` es un índice estructurado de datos de conocimiento:
3234

3335
```json
3436
{
@@ -56,17 +58,17 @@ Un `LoadoutIndex` es un índice estructurado de contenidos de conocimiento:
5658
}
5759
```
5860

59-
### Niveles de Prioridad
61+
### Niveles de prioridad
6062

6163
| 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 |
64+
|------|----------|---------|
65+
| `core` | Cargado siempre | "nunca omitir pruebas para que la integración continua sea exitosa" |
66+
| `domain` | Cargado cuando las palabras clave de la tarea coinciden | Reglas de integración continua al editar flujos de trabajo |
67+
| `manual` | Nunca se carga automáticamente, solo búsqueda explícita | Aspectos técnicos de la plataforma que pueden ser difíciles de entender |
6668

67-
### Frontmatter del Contenido
69+
### Metadatos del archivo de datos
6870

69-
Cada archivo de contenido lleva sus propios metadatos de enrutamiento:
71+
Cada archivo de datos contiene sus propios metadatos de enrutamiento:
7072

7173
```markdown
7274
---
@@ -84,13 +86,13 @@ triggers:
8486
CI minutes are finite...
8587
```
8688

87-
El frontmatter es la fuente de verdad. El índice se deriva de él.
89+
El metadato es la fuente de la verdad. El índice se deriva de él.
8890

8991
## API
9092

91-
### `matchLoadout(task, index)`
93+
### `matchLoadout(tarea, índice)`
9294

93-
Compara una descripción de tarea contra un índice de loadout. Devuelve las entradas que deben cargarse, ordenadas por fuerza de coincidencia.
95+
Compara una descripción de la tarea con un índice de configuración. Devuelve las entradas que deben cargarse, clasificadas por la fuerza de la coincidencia.
9496

9597
```typescript
9698
import { matchLoadout } from "@mcptoolshop/ai-loadout";
@@ -99,12 +101,12 @@ const results = matchLoadout("fix the CI workflow", index);
99101
// [{ entry: { id: "github-actions", ... }, score: 0.67, matchedKeywords: ["ci", "workflow"] }]
100102
```
101103

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
104+
- Las entradas principales siempre se incluyen (puntuación 1.0)
105+
- Las entradas manuales nunca se incluyen automáticamente
106+
- Las entradas de dominio se puntúan según la superposición de palabras clave + bonificación de patrones
105107
- Los resultados se ordenan por puntuación descendente
106108

107-
### `lookupEntry(id, index)`
109+
### `lookupEntry(id, índice)`
108110

109111
Busca una entrada específica por ID. Para entradas manuales o acceso explícito.
110112

@@ -114,9 +116,9 @@ import { lookupEntry } from "@mcptoolshop/ai-loadout";
114116
const entry = lookupEntry("github-actions", index);
115117
```
116118

117-
### `parseFrontmatter(content)`
119+
### `parseFrontmatter(contenido)`
118120

119-
Analiza el frontmatter tipo YAML de un archivo de contenido.
121+
Analiza el metadato en formato YAML de un archivo de datos.
120122

121123
```typescript
122124
import { parseFrontmatter } from "@mcptoolshop/ai-loadout";
@@ -129,11 +131,11 @@ if (frontmatter) {
129131

130132
### `serializeFrontmatter(fm)`
131133

132-
Serializa un objeto `Frontmatter` de vuelta a cadena de texto.
134+
Serializa un objeto `Frontmatter` de nuevo a una cadena.
133135

134-
### `validateIndex(index)`
136+
### `validateIndex(índice)`
135137

136-
Valida la integridad estructural de un `LoadoutIndex`. Devuelve un arreglo de problemas.
138+
Valida la integridad estructural de un `LoadoutIndex`. Devuelve un array de problemas.
137139

138140
```typescript
139141
import { validateIndex } from "@mcptoolshop/ai-loadout";
@@ -145,11 +147,11 @@ if (errors.length > 0) {
145147
}
146148
```
147149

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.
150+
Comprobaciones: campos obligatorios, IDs únicos, formato kebab-case, límites del resumen, presencia de palabras clave para entradas de dominio, prioridades válidas, presupuestos no negativos.
149151

150-
### `estimateTokens(text)`
152+
### `estimateTokens(texto)`
151153

152-
Estima el conteo de tokens de un texto. Usa la heurística de caracteres/4.
154+
Estima el número de tokens a partir de un texto. Utiliza la heurística de chars/4.
153155

154156
```typescript
155157
import { estimateTokens } from "@mcptoolshop/ai-loadout";
@@ -174,22 +176,22 @@ import type {
174176

175177
## Consumidores
176178

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.
179+
- **[@mcptoolshop/claude-rules](https://github.com/mcp-tool-shop-org/claude-rules)** — Optimizador de CLAUDE.md para Claude Code. Utiliza ai-loadout para la tabla de distribución y la coincidencia.
178180

179181
## Seguridad
180182

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.
183+
Este paquete es una biblioteca de datos pura. No accede al sistema de archivos, realiza solicitudes de red ni recopila datos de telemetría. Toda la entrada/salida es responsabilidad del consumidor.
182184

183-
### Modelo de Amenazas
185+
### Modelo de amenazas
184186

185187
| 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 usuariolos patrones se comparan como búsquedas de texto plano |
188+
|--------|------------|
189+
| Metadato de entrada con formato incorrecto | `parseFrontmatter()` devuelve `null` en caso de entrada no válida; no se generan excepciones ni se utiliza `eval` |
190+
| Contaminación de prototipos | El analizador personalizado utiliza literales de objetos simples, no `JSON.parse` de estructuras anidadas no confiables. |
191+
| Índice con datos incorrectos | `validateIndex()` detecta problemas estructurales antes de que se propaguen. |
192+
| Ataque de denegación de servicio con expresiones regulares | No se utilizan expresiones regulares proporcionadas por el usuario; los patrones se comparan como búsquedas de cadenas simples. |
191193

192-
Consulta [SECURITY.md](SECURITY.md) para la política de seguridad completa.
194+
Consulte [SECURITY.md](SECURITY.md) para obtener la política de seguridad completa.
193195

194196
---
195197

0 commit comments

Comments
 (0)