* feat(i18n): add multilingual wiki scaffolding, language switcher, and translation QA pipeline * docs(readme): adopt picoclaw-style multilingual link bar * fix(i18n): repair localized index links and tighten partial-pair QA * ci(i18n): fail on broken markdown links in README/wiki * ci(i18n): add changed-files mode for markdown link checks * i18n(de): use local Argos MT to fill untranslated German sections * i18n(es,fr): fill untranslated sections via local Argos workflow * i18n(ja): fill untranslated sections with scoped local Argos pass * i18n(ko): fill untranslated sections with scoped local Argos pass * fix(i18n): address review feedback --------- Co-authored-by: David Abutbul <David.a@prompt.security>
6.8 KiB
Sinopsis
Propósito
- ClawSec es un repositorio orientado a seguridad que combina un catálogo web público con habilidades de seguridad instalables para entornos OpenClaw, NanoClaw, Hermes y Picoclaw.
- El codebase soporta tres rutas de entrega en paralelo: publicación de sitio estático, distribución de advisories firmados y empaquetado de releases por skill en GitHub.
- Los usuarios principales son operadores de agentes, desarrolladores de skills y maintainers que ejecutan automatización de seguridad basada en CI.
Layout del repositorio
| Ruta | Rol | Notas |
Silencio.
| pages/, components/, App.tsx, index.tsx | UI Vite + React | Catálogo de skills, feed de advisories y páginas de detalle. |
| skills/ | Paquetes de skills de seguridad | Cada skill contiene skill.json, SKILL.md y opcionalmente scripts/tests/docs. |
| advisories/ | Canal de advisories del repositorio | feed.json firmado + feed.json.sig y material de claves. |
| scripts/ | Automatización local | Poblar feed/skills, checks pre-push y helpers de release. |
| .github/workflows/ | Pipelines CI/CD | CI, releases, polling NVD, ingesta de advisory comunitario y deploy de pages. |
| utils/ | Utilidades Python | Validación de skills y helpers de empaquetado/checksums. |
| public/ | Assets estáticos publicados | Media del sitio, advisories espejados y artefactos generados de skills. |
| wiki/ | Hub de documentación | Arquitectura, runbooks operativos, compatibilidad y guías de verificación. |
Puntos de entrada
| Entrada | Tipo | Propósito |
Silencio.
| index.tsx | Bootstrap frontend | Monta la app React en #root. |
| App.tsx | Router frontend | Define rutas para home, skills, feed y wiki. |
| scripts/prepare-to-push.sh | Flujo dev | Ejecuta checks de lint/type/build/security antes de push. |
| scripts/populate-local-feed.sh | Bootstrap de datos | Obtiene CVEs del NVD y actualiza feeds locales de advisories. |
| scripts/populate-local-skills.sh | Bootstrap de datos | Construye public/skills/index.json y checksums por skill. |
| scripts/generate-wiki-llms.mjs | Export de docs | Genera public/wiki/llms.txt y exportes wiki por página. |
| .github/workflows/skill-release.yml | Entrada de release | Maneja checks PR (paridad de versión/dry-run) y empaquetado/firmado/release basado en tags. |
| .github/workflows/poll-nvd-cves.yml | Feed programado | Consulta NVD y actualiza advisories. |
Artefactos clave
| Artefacto | Producido por | Consumido por |
Silencio.
| advisories/feed.json | Poll NVD + workflows comunitarios | UI web, hook de clawsec-suite, instaladores. |
| advisories/feed.json.sig | Pasos de firmado en workflow | Verificación de firma en tooling de suite/nanoclaw. |
| public/skills/index.json | Workflow de deploy / script local | pages/SkillsCatalog.tsx y pages/SkillDetail.tsx. |
| public/wiki/llms.txt + public/wiki/**/llms.txt | Script generador wiki + hooks de build | Exportes wiki para LLM enlazados desde la UI del wiki. |
| public/checksums.json + public/checksums.sig | Workflow de deploy | Artefactos de integridad publicados para operadores y clientes runtime. |
| release-assets/checksums.json | Workflow de release de skill | Consumidores de release que verifican integridad de zips. |
| skills/*/skill.json | Autores de skills | Generación de catálogo del sitio, validadores y pipelines de release. |
Flujos clave
- Desarrollo web local:
npm instally luegonpm run dev. - Preview local de datos de seguridad: ejecuta
./scripts/populate-local-skills.shy./scripts/populate-local-feed.shantes de abrir/skillsy/feed. - Quality gate pre-push: ejecuta
./scripts/prepare-to-push.sh(opcional--fix). - Ciclo de vida de skill: edita
skills/<name>/, valida conpython utils/validate_skill.py, y etiqueta<skill>-vX.Y.Zpara disparar workflow de release. - Ciclo de advisories: el polling programado de NVD y la ingesta comunitaria por labels convergen en el mismo feed firmado.
Snippets de ejemplo
# UI local + datos locales poblados
npm install
./scripts/populate-local-skills.sh
./scripts/populate-local-feed.sh --days 120
npm run dev
# checks canónicos de TypeScript usados por CI
npx eslint . --ext .ts,.tsx,.js,.jsx,.mjs --max-warnings 0
npx tsc --noEmit
npm run build
Dónde empezar
- Lee
README.mdpara posicionamiento del producto y rutas de instalación. - Abre
App.tsxypages/para entender el comportamiento de cara al usuario. - Abre
skills/clawsec-suite/skill.jsonpara entender el contrato de la suite y sus componentes embebidos. - Revisa
.github/workflows/ci.yml,.github/workflows/pages-verify.yml,.github/workflows/skill-release.yml,.github/workflows/deploy-pages.ymly.github/workflows/wiki-sync.ymlpara el comportamiento productivo.
Cómo navegar
- El comportamiento de UI está centrado en
pages/; los wrappers visuales están encomponents/. - La lógica específica de cada skill está aislada por carpeta bajo
skills/; cada carpeta incluye sus propios scripts/tests/docs. - El manejo de feeds aparece en tres capas: archivos feed del repositorio, updates de workflows y consumidores runtime (
clawsec-suite/clawsec-nanoclaw). - Los quality gates operativos viven en
scripts/y en YAMLs de workflows. - Para trazas de generación y baseline de actualizaciones, empieza por
wiki/GENERATION.mdy luego ramifica hacia páginas de módulo.
Errores comunes
- Usar tokens home literales (por ejemplo
\$HOME) en variables de ruta puede disparar fallas de validación. - Solicitar JSON desde rutas SPA puede devolver HTML con status 200; las páginas lo tratan como estado vacío.
- El modo bypass de feed no firmado (
CLAWSEC_ALLOW_UNSIGNED_FEED=1) existe solo por compatibilidad de migración y no debe usarse en estado estable. - La automatización de release espera paridad de versión entre
skill.jsony frontmatter deSKILL.md. - Algunos scripts son POSIX-oriented; en Windows conviene PowerShell o WSL.
Notas de actualización
- 2026-04-27: Traducción inicial al español en
wiki/es/como fase 1. - 2026-02-26: Layout actualizado para apuntar documentación operativa a
wiki/en lugar del directorio raízdocs/(eliminado).
Referencias de código
README.mdREADME.es.mdpackage.jsonApp.tsxindex.tsxpages/Home.tsxpages/SkillsCatalog.tsxpages/SkillDetail.tsxpages/FeedSetup.tsxscripts/prepare-to-push.shscripts/populate-local-feed.shscripts/populate-local-skills.shskills/clawsec-suite/skill.json.github/workflows/ci.yml.github/workflows/pages-verify.yml.github/workflows/skill-release.yml.github/workflows/deploy-pages.yml.github/workflows/wiki-sync.yml

