Files
fn_registry/bash/functions/pipelines/propose_capability_groups.md
T
egutierrez cfdf515228 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

3.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
propose_capability_groups pipeline bash pipelines 1.0.0 impure propose_capability_groups([--min-count N], [--max-domains M], [--json], [--apply tag]) -> report Analiza tags candidatos a capability group (issue 0086). Filtra via blocklist + cap de dominios. Lista candidatos o promociona con --apply (llama generate_capability_doc + actualiza INDEX.md).
capability-groups
doctor
audit
pipeline
generate_capability_doc_bash_pipelines
false error_go_core
name desc
--min-count minimo de funciones con el tag para considerarlo candidato (default 3)
name desc
--max-domains maximo de dominios distintos entre funciones del tag (default 3, filtra tags genericos que cruzan muchos dominios)
name desc
--json salida JSON estructurada en vez de texto (util para agentes)
name desc
--apply promociona el tag dado a capability group: genera doc con generate_capability_doc + actualiza docs/capabilities/INDEX.md (idempotente)
tabla de candidatos a stdout (tag, count, domains, already_group, samples), o efectos en disco si --apply (nuevo .md + fila en INDEX.md) false
bash/functions/pipelines/propose_capability_groups.sh

Ejemplo

# Listar candidatos con al menos 10 funciones
bash bash/functions/pipelines/propose_capability_groups.sh --min-count 10

# Listar con salida JSON (para agentes)
bash bash/functions/pipelines/propose_capability_groups.sh --min-count 5 --json

# Promocionar un tag a capability group
bash bash/functions/pipelines/propose_capability_groups.sh --apply metabase

# Via fn run
./fn run propose_capability_groups --min-count 10

Logica

Modo listar (sin --apply)

  1. Resuelve la raiz del registry (walk-up hasta registry.db).
  2. Filtra tags via blocklist hardcodeada (idiomas, dominios, CRUD generico, verbos super-genericos, primitivas, estados).
  3. Query SQL con json_each(f.tags) + GROUP BY + HAVING cnt >= N AND domains <= M.
  4. Marca cada candidato con already_group: yes/no parseando los links [tag](tag.md) de docs/capabilities/INDEX.md.
  5. Imprime tabla formateada con maximo 3 IDs de muestra por candidato.
  6. Resumen: total candidatos, ya-grupos, nuevos.

Modo --apply

  1. Valida que el tag no esta en blocklist y pasa el filtro de count/domains.
  2. Llama a bash/functions/pipelines/generate_capability_doc.sh <tag>.
  3. Inserta fila en docs/capabilities/INDEX.md (idempotente — no duplica si ya existe).
  4. Imprime checklist de edicion manual para el usuario.

Blocklist

Tags en la blocklist nunca son candidatos (caso exacto):

  • Idioma: go py bash ps ts python cpp
  • Dominio: core infra finance datascience cybersecurity shell tui pipelines browser
  • Kind/purity: function pipeline component pure impure
  • CRUD generico: add create delete list update get set remove insert
  • Verbo super-generico: compose convert combine append empty exists check find format parse render
  • Estructural: generic helper utility wrapper test
  • Primitivas: string number int float array slice map dict value key
  • Estados: pending-usar pendiente-usar

Notas

  • Usa sqlite3 directo para el JOIN custom functions + json_each(tags) (autorizado por la regla registry_calls.md — JOINs custom no expuestos por el MCP).
  • La insercion en INDEX.md usa python3 embebido para manejar la posicion relativa a la cabecera de tabla de forma portable.
  • El flag --max-domains es la heuristica clave: un tag como add aparece en 8 dominios → filtrado; metabase aparece en 2 → candidato valido.