Communitygithub.com

Generación Autónoma de Esquemáticos KiCad

Habilidad de Agente para la generación y revisión autónoma de esquemáticos KiCad: dibujo automático con estándares de diseño legibles, análisis estructurado de esquemáticos/PCB/Gerber y verificación obligatoria mediante ERC/Netlist/renderizado.

¿Qué es Generación Autónoma de Esquemáticos KiCad?

Esta habilidad permite a un agente de IA (como Claude Code, Cursor o Codex) analizar, generar y revisar de forma autónoma proyectos KiCad. Incluye scripts Python que extraen JSON estructurado de archivos KiCad (esquemáticos, PCB y gerbers) en una sola pasada, detectando circuitos como reguladores de potencia, filtros RC, osciladores de cristal, puentes H, interfaces de depuración y más. La habilidad también gestiona la creación de esquemáticos siguiendo un estándar de trazado legible (bus de potencia continuo, bus GND inferior, etiquetas en nodos compartidos) y verifica el resultado mediante ERC, exportación de netlist y análisis geométrico. Es compatible con flujos de diseño que incluyen simulación SPICE, análisis de compatibilidad electromagnética (EMC), revisión térmica y de ciclo de vida. Además, se integra con otras habilidades para extracción de BOM, búsqueda de componentes en distribuidores (DigiKey, Mouser, LCSC) y fabricación en JLCPCB/PCBWay. El contrato de revisión de diseño es estricto: no se limita a ejecutar analizadores, sino que exige verificación cruzada con hojas de datos, detección de falsos positivos y generación de un informe completo con veredicto, tabla de bloqueos y análisis omitidos.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add wenqiiizwq-creator/Autonomous-Schematic-Generation

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Habilidad de Análisis de Proyectos KiCad y Creación de Esquemáticos

Habilidades Relacionadas

HabilidadPropósito
bomExtracción, enriquecimiento, pedido y exportación de BOM
digikeyBúsqueda de componentes en DigiKey (aprovisionamiento de prototipos)
mouserBúsqueda de componentes en Mouser (fuente secundaria para prototipos)
lcscBúsqueda de componentes en LCSC (aprovisionamiento para producción, JLCPCB)
element14Búsqueda en Newark/Farnell/element14 (aprovisionamiento internacional, hojas de datos fiables)
jlcpcbPedido de fabricación y montaje de PCB
pcbwayFabricación y montaje de PCB alternativo
spiceVerificación mediante simulación SPICE de los subcircuitos detectados
emcAnálisis de riesgos de precumplimiento EMC: consume la salida del analizador de esquemáticos + PCB

Orientación para transferencia: Utilice esta habilidad para analizar esquemáticos/PCB y extraer datos estructurados. Transfiera a bom para enriquecimiento de BOM, precios y pedidos. Transfiera a digikey/mouser/lcsc/element14 para búsquedas de componentes y obtención de hojas de datos. Transfiera a jlcpcb/pcbway para pedidos de fabricación y validación de reglas DFM. Ejecute siempre spice para verificación mediante simulación durante las revisiones de diseño si hay algún simulador SPICE instalado (compruébelo con which ngspice ltspice xyce). Ejecute siempre emc para el análisis de riesgos de precumplimiento EMC durante las revisiones de diseño si están disponibles tanto el análisis del esquemático como el de la PCB. No son opcionales: omitirlos deja errores de valoración y riesgos EMC sin detectar.

Antes del análisis: Cuando el usuario solicite analizar o revisar un proyecto KiCad, verifique si existe un directorio datasheets/ en el proyecto. Si no existe y hay claves API de DigiKey disponibles (DIGIKEY_CLIENT_ID), ofrezca sincronizar las hojas de datos primero: "Puedo descargar las hojas de datos de sus componentes antes del análisis; esto permite la verificación a nivel de pin y la validación del desacoplo según las especificaciones del fabricante. ¿Quiere que las sincronice?" Si el usuario declina o no hay claves API configuradas, proceda sin hojas de datos; el análisis funciona sin ellas, pero no estarán disponibles las conclusiones de verificación basadas en hojas de datos.

Si ve un hallazgo DS-001 en la salida del analizador (gravedad alta, detector audit_datasheet_coverage), la revisión no puede hacer ninguna afirmación verificada. Deténgase y (a) ejecute la sincronización de hojas de datos mediante digikey/mouser/lcsc/element14 (el que tenga credenciales/existencias), (b) complete los MPN en los componentes de la BOM, o (c) indique explícitamente en el informe que todos los hallazgos a nivel de pin, eléctricos y de reguladores son solo de coherencia; no utilice las palabras "verificado", "confirmado" o "según hoja de datos" en ninguna parte. DS-002 (faltan hojas de datos pero los MPN están configurados) y DS-003 (cobertura parcial de MPN) son variantes más suaves con la misma implicación para las piezas que citan.

Creación de Esquemáticos (Dibujo y Redibujado)

Utilice este flujo de trabajo cuando el usuario solicite crear, añadir, redibujar o cambiar el estilo de un esquemático, por ejemplo: "añade un circuito TPS54560 de 5V/5A", "把原理图画成可读风格", "genera un esquemático buck", "重画这块电源".

  1. Lea el estándar primero. references/schematic-drawing-standards.md es obligatorio antes de crear o editar cualquier esquemático. Define el diseño de bus de potencia estilo LM5013, bus GND, política de etiquetas, restricciones de cableado de KiCad 9 (dividir cables en puntos de conexión; sin cables sueltos pin a pin; etiquetas en nodos compartidos) y la puerta de verificación.
  2. Diseñe a partir de la hoja de datos. Obtenga/lea la hoja de datos del CI; extraiga la distribución de pines, Vref, clasificaciones máximas absolutas y la aplicación típica. Calcule los valores (divisor de realimentación, RT/frecuencia, inductor, condensadores, compensación) con las ecuaciones de la hoja de datos y presente los números antes de dibujar.
  3. Planifique el bloque en la cuadrícula de 1.27 mm, reflejando la estructura canónica LM5013: un bus de potencia continuo ENTRADA → CI → SW → L → SALIDA, un bus GND inferior y componentes de control en una banda ordenada debajo del CI (una columna por función). Verifique las posiciones de los pines del símbolo y la semántica de rotación antes de escribir los cables.
  4. Genere. Edite el .kicad_sch S-expr directamente o utilice un script generador. Cada cable debe terminar en un pin, unión, etiqueta o símbolo de alimentación; los rieles se dividen en segmentos en cada punto de conexión. Para EasyEDA Pro, transfiera a la habilidad easyeda-schematic-draw con el mismo estándar.
  5. Verifique con el propio KiCad; esta puerta es obligatoria antes de informar del éxito:
    • kicad-cli sch erc → 0 errores / 0 advertencias
    • kicad-cli sch export netlist → coincidencia pin por pin con la intención de diseño
    • ejecución del analizador de esquemáticos, con estimaciones heurísticas de Vout corregidas a la Vref de la hoja de datos
    • comprobación de geometría: sin superposiciones de cuerpos de símbolos, sin etiquetas dentro del cuerpo de un CI
    • renderizado PDF/PNG + revisión visual: un bus de potencia continuo, banda de control legible, sin apilamiento de componentes
  6. Informe de los valores de diseño con ecuaciones, la evidencia de verificación y cualquier limitación del analizador que haya corregido.

Los flujos de trabajo de análisis y revisión de diseño a continuación también se aplican a lo que se haya generado.

Contrato de Revisión de Diseño

Cuando el usuario solicite una revisión de diseño, informe completo, evaluación lista para fabricar o cualquier equivalente, no se detenga después de ejecutar uno o dos analizadores y resumir sus hallazgos. Una revisión de diseño en esta habilidad tiene un contrato más estricto:

  1. Lea el flujo de trabajo completo en este SKILL.md, no solo las secciones de comandos del analizador.
  2. Lea references/report-generation.md antes de redactar el informe.
  3. Ejecute todos los analizadores aplicables para los archivos presentes en el proyecto, luego indique explícitamente cuáles se ejecutaron y cuáles no.
  4. Realice una verificación cruzada de archivos sin procesar y hojas de datos antes de afirmar que algo está "verificado".
  5. Evalúe los posibles falsos positivos del analizador antes de elevarlos a bloqueos.
  6. Si no se pudo realizar un paso requerido, indíquelo como una brecha de revisión, no como una omisión silenciosa.

Considere esto como el mínimo exigible. El JSON del analizador por sí solo no es la revisión final.

Lista de Verificación Mínima de Revisión

Para una revisión de diseño completa, incluya explícitamente cada elemento a continuación en el informe:

  • Directorio datasheets/ presente, sincronizado o brecha de verificación indicada
  • analyze_schematic.py
  • analyze_pcb.py --full
  • cross_analysis.py
  • analyze_emc.py
  • Simulación SPICE si hay algún simulador instalado
  • analyze_thermal.py si existen tanto el JSON del esquemático como el de la PCB
  • analyze_gerbers.py si existen salidas de fabricación
  • Auditoría de ciclo de vida si se permite el acceso a la red y la cobertura de MPN lo permite
  • Revisión previa / comprobación de delta con ejecución anterior
  • Verificación puntual de esquemático/PCB sin procesar elevada a verificación completa para partes críticas
  • Secciones explícitas del informe para bloqueos, base de verificación, falsos positivos y análisis omitidos

Si un elemento no es aplicable, indique por qué. Si se omitió, indique por qué. Si falló, indique cómo limita la confianza.

Modos Comunes de Fracaso en la Revisión

Estos son los modos de fracaso que este contrato pretende prevenir:

  • Detenerse después de la salida del esquemático + PCB + EMC y llamarlo revisión completa
  • Informar los hallazgos del analizador sin verificar si son artefactos de diseño esperados
  • Afirmar "verificado" sin evidencia directa de la hoja de datos o evidencia de extracción estructurada
  • Omitir comprobaciones térmicas, de ciclo de vida, de delta con revisión anterior o de gerbers sin revelarlo
  • Redactar un informe que carezca de veredicto, tabla de bloqueos, base de verificación o notas de análisis omitidos
  • Leer solo la primera parte de esta habilidad y perderse el flujo de trabajo de revisión de diseño más adelante en el archivo

Análisis de Esquemáticos PDF

Esta habilidad también maneja esquemáticos PDF: diseños de referencia, esquemáticos de placas de desarrollo, documentos de placas de evaluación, notas de aplicación y circuitos de aplicación típica de hojas de datos. Casos de uso comunes:

  • Analizar un diseño de referencia de un fabricante para comprender el circuito
  • Extraer un subcircuito (fuente de alimentación, interfaz USB, frontal de sensor) para incorporarlo a su propio diseño de KiCad
  • Comparar un diseño de referencia en PDF con su propio esquemático
  • Extraer una BOM completa de un esquemático PDF
  • Validar los valores de los componentes en un PDF con las hojas de datos actuales

Flujo de trabajo: Lea las páginas PDF visualmente → identifique componentes y conexiones → extraiga datos estructurados → traduzca a símbolos y nets de KiCad → valide contra hojas de datos.

Para la metodología completa (extracción de componentes, convenciones de notación, mapeo de nets, extracción de subcircuitos, traducción a KiCad y validación), lea references/pdf-schematic-extraction.md.

Para la validación profunda de circuitos extraídos contra hojas de datos (verificación de valores, comprobación de patrones, detección de errores), utilice la metodología en references/schematic-analysis.md.

Scripts de Análisis

Esta habilidad incluye scripts Python que extraen JSON estructurado completo de archivos KiCad en una sola pasada. Ejecútelos primero y luego razone sobre la salida.

Lea la salida JSON del analizador directamente en lugar de escribir scripts de extracción ad-hoc. El esquema JSON tiene nombres de campo específicos (documentados a continuación y en references/output-schema.md) que son fáciles de equivocar en código personalizado. Para extraer una sección específica: python3 -c "import json; d=json.load(open('file.json')); print(json.dumps(d['key'], indent=2))".

Cuando el JSON le sorprenda (un AttributeError, forma inesperada, campo que devuelve None cuando "debería" tener un valor), deténgase y ejecute --schema antes de escribir un segundo intento de extracción. Muestra los nombres de campo y tipos exactos para cada clave de nivel superior:

python3 <ruta-de-habilidad>/scripts/analyze_schematic.py --schema
python3 <ruta-de-habilidad>/scripts/analyze_pcb.py --schema
python3 <ruta-de-habilidad>/scripts/analyze_gerbers.py --schema

Hoja de referencia de campos JSON: los errores más comunes al leer la salida del analizador manualmente:

Lo que deseaRuta y campo correctosError común
Pines en una netnets[<nombre>].pins[].component / .pin_number / .pin_name / .pin_typeref, pin, type, number
Visualización bonita de net sin nombrenets[<nombre>].display_name: cuando está configurado, una pista Ref.PinName para una net __unnamed_N cuyo único pin de CI con nombre cuenta la historia (por ejemplo, __unnamed_36 → U1.VBOOT). Ausente significa que el analizador no pudo desambiguar.Ignorar display_name y pegar __unnamed_36 sin procesar en el informe
Mapa de pines de CIic_pin_analysis[] es una lista de entradas de CI; cada una tiene .reference y .pins[] con .pin_number / .pin_name / .pin_type / .net / .connected_to[]Tratarlo como {ref: {...}} o pins[].number
Circuitos detectadosCada circuito con coincidencia de patrones (reguladores de potencia, filtros RC, osciladores de cristal, puentes, …) vive en findings[]; filtre con finding_schema.get_findings(data, Det.POWER_REGULATORS), etc. No lea de subcircuits[]: es una agrupación de vecindarios de CI ({center_ic, ic_value, neighbor_components, …}), no un índice de detección categorizadoBuscar subcircuits.power_regulators, subcircuits.rc_filters o cualquier clave subcircuits[type]; nunca existieron en la salida v1.3
Net de zonapcb.zones[].net es un ID de net entero, no una cadena. Use f"{net!r}" o convierta primerof"{net:20s}" — falla con ValueError: Unknown format code 's' for object of type 'int'
Posición de footprintpcb.footprints[].x / .y en el nivel superior (sin envoltorio .position)footprints[].position.x
HallazgosLista plana findings[]: cada uno tiene rule_id, detector, severity, summary, report_context. Filtre con finding_schema.get_findings(data, Det.*) o group_findings(data)Buscar dicts con clave como signal_analysis.power_regulators[] (formato anterior a v1.3, eliminado)

Esto evita errores de formato de cadena y nombres de campo incorrectos. Use f-strings o json.dumps() para formatear la salida; nunca utilice %s con tipos que no sean cadenas. Consulte references/output-schema.md para el esquema completo con patrones de extracción comunes.

En todos los comandos a continuación, <ruta-de-habilidad> se refiere al directorio base de esta habilidad (mostrado en la parte superior de este archivo cuando se carga).

Analizador de Esquemáticos

python3 <ruta-de-habilidad>/scripts/analyze_schematic.py <archivo.kicad_sch> --analysis-dir analysis/
python3 <ruta-de-habilidad>/scripts/analyze_schematic.py <archivo.kicad_sch> --analysis-dir analysis/ --compact
python3 <ruta-de-habilidad>/scripts/analyze_schematic.py <archivo.kicad_sch> --output analysis.json  # único, sin caché

Genera JSON estructurado (~60-220KB dependiendo de la complejidad de la placa) con:

  • Componentes y BOM: inventario con referencia, valor, footprint, lib_id, clasificación de tipo, MPN, hoja de datos; BOM deduplicada con cantidades
  • Nets: mapa de conectividad completo con mapeo pin a net, recuento de cables, sin conexiones
  • Subcircuitos detectados (circuitos con coincidencia de patrones; todos se emiten como entradas findings[] con detectores Det.* correspondientes; use get_findings(data, Det.POWER_REGULATORS), etc. para obtenerlos):
    • Reguladores de potencia: topología LDO/conmutación/inversora, estimación de Vout mediante búsqueda de Vref verificada por hoja de datos (~60 familias) con respaldo heurístico y análisis de sufijo de salida fija, campos vref_source (lookup/heuristic/fixed_suffix) y vout_net_mismatch
    • Divisores de tensión, filtros RC/LC (frecuencia de corte), redes de realimentación, circuitos de cristal (análisis de condensadores de carga, detección basada en pines de CI)
    • Circuitos de amplificador operacional (configuración, ganancia, integrador/compensador), circuitos de transistores (clasificación de carga según nombre de net: motor/calentador/ventilador/solenoide/válvula/bomba/relé/altavoz/zumbador/lámpara; topología de desplazamiento de nivel FET)
    • Circuitos de puente (puente H, trifásico, detección entre hojas), dispositivos de protección (ESD/TVS), detección de corriente, análisis de desacoplo
    • Específicos de dominio: cadenas de RF, redes de adaptación de RF, BMS, Ethernet (trazado BFS PHY a conector), interfaces HDMI/DVI, interfaces de memoria, matrices de teclas (basadas en nombre de net y topología), barreras de aislamiento, cadenas de LED direccionables (WS2812/SK6812/APA102), cargadores de batería (TP4056/MCP73831/BQ2404x), controladores de motor (A4988/TMC2209/DRV8301), auditoría de cobertura de protección ESD, interfaces de depuración (SWD/JTAG con trazado de MCU), ruta de alimentación (interruptores de carga/diodos ideales/controladores USB PD), acondicionamiento de señal ADC (ADC externos + referencias de tensión con referencia cruzada de antialiasing), circuitos de reset/supervisor (supervisores de tensión/perros guardianes/redes RC de reset), distribución de reloj (generadores de reloj/PLL/salida de oscilador...

... [truncado para traducción]

Analizador de PCB

python3 <ruta-de-habilidad>/scripts/analyze_pcb.py --full <archivo.kicad_pcb> --analysis-dir analysis/
python3 <ruta-de-habilidad>/scripts/analyze_pcb.py --quick <archivo.kicad_pcb> --analysis-dir analysis/

El modo --full genera JSON estructurado (~400KB-2MB) con:

  • Footprints: posición, rotación, capa, library_id, valor, footprint, atributos de montaje (THT/SMD)
  • Capas y apilamiento: espesor de cobre, material del núcleo, constante dieléctrica, conteo de capas, secuencia de apilamiento
  • Pistas y vías: puntos finales, ancho, capa, net, matriz de impedancia calculada
  • Zonas: nets, vértices, prioridad, tipo de relleno (sólido/relleno/enrejado)
  • Vértices de contorno de placa: análisis de forma de placa
  • Coordenadas de taladro: taladros pasantes y VTF
  • Metadatos: versión de KiCad, fecha del archivo, tamaño de la placa, conteo de componentes

Analizador Cruzado Esquemático+PCB

python3 <ruta-de-habilidad>/scripts/cross_analysis.py <archivo_esquematico> <archivo_pcb> --analysis-dir analysis/

Requiere que ambos archivos de análisis se hayan ejecutado primero. Proporciona:

  • Matriz de coincidencia de nets y advertencias de nets huérfanas o adicionales
  • Emparejamiento de footprint a símbolo y comprobaciones de consistencia
  • Validación de valor de componente entre esquemático y PCB
  • Anomalías de diseño: pines de fuente de alimentación sin desacoplo, rastreo de net sensible a ruido

Analizador de Revisión de Diseño

python3 <ruta-de-habilidad>/scripts/analyze_design.py <archivo_esquematico> <archivo_pcb> --output analysis/detailed_review.json

Analizador EMC

python3 <ruta-de-habilidad>/scripts/analyze_emc.py <analysis.json> <analysis_pcb.json> <analysis_cross.json> --output analysis/emc_report.json

Evalúa riesgos EMC: integridad del plano de tierra, longitudes de trazas de alta velocidad, bucles de retorno, ubicación de desacoplo, agujeros de blindaje.

Analizador Térmico

python3 <ruta-de-habilidad>/scripts/analyze_thermal.py <analysis.json> <analysis_pcb.json> --output analysis/thermal_report.json

Detecta componentes de alta potencia, evaluaciones de densidad de potencia, áreas de concentración térmica en la PCB.

Analizador de Gerbers

python3 <ruta-de-habilidad>/scripts/analyze_gerbers.py <directorio_gerber/> --output analysis/gerber_report.json

Valida la capacidad de fabricación: espacios libres de cobre, anillos anulares, restricciones de máscara de soldadura, reglas de serigrafía.

Flujo de Trabajo de Ejecución de Análisis Único

Para obtener toda la salida del análisis de una sola vez:

# 1. Analizar esquemático
python3 <ruta-de-habilidad>/scripts/analyze_schematic.py esquematico.kicad_sch --output analysis/esquematico.json

# 2. Analizar PCB
python3 <ruta-de-habilidad>/scripts/analyze_pcb.py --full placa.kicad_pcb --output analysis/pcb.json

# 3. Análisis cruzado
python3 <ruta-de-habilidad>/scripts/cross_analysis.py esquematico.kicad_sch placa.kicad_pcb --output analysis/cross.json

# 4. Análisis EMC (requiere esquemático + PCB + análisis cruzado)
python3 <ruta-de-habilidad>/scripts/analyze_emc.py analysis/esquematico.json analysis/pcb.json analysis/cross.json --output analysis/emc.json

Referencias de Salida

  • references/output-schema.md — Esquema JSON completo para todos los scripts del analizador, con patrones de extracción comunes
  • references/schematic-analysis.md — Guía de análisis de esquemáticos (cómo validar circuitos extraídos, verificar valores, detectar errores)
  • references/pdf-schematic-extraction.md — Metodología para extraer esquemáticos de PDF y traducirlos a KiCad
  • references/report-generation.md — Guía de generación de informes de revisión de diseño (secciones requeridas, formato, criterios de veredicto)
  • references/schematic-drawing-standards.md — Estándares para dibujar esquemáticos (bus de potencia, bus GND, política de etiquetas, verificación de ERC/netlist/geometría)

Resolución de Problemas

Errores Comunes

ErrorCausaSolución
AttributeError: 'NoneType' object has no attribute 'get'Archivo de análisis faltante o corruptoVuelva a ejecutar la extracción JSON; verifique que el archivo de entrada exista
ValueError: Unknown format code 's' for object of type 'int'Uso de %s o formato de ancho de campo en un tipo que no es cadena (por ejemplo, ID de net entero)Use f-strings o json.dumps(); no utilice %s ni format() con códigos 's' en campos numéricos
KeyError: 'power_regulators'Búsqueda de claves de formato anterior a v1.3Use finding_schema.get_findings(data, Det.POWER_REGULATORS) en su lugar. Consulte la sección de detección de circuitos arriba.
Hallazgo DS-001 en la salidaSin hojas de datos sincronizadas; no se puede verificar ninguna afirmaciónEjecute la sincronización de hojas de datos a través de la habilidad digikey/mouser/lcsc/element14, o marque el informe como "solo de coherencia"

Depuración de Salida del Analizador

Si un campo JSON parece tener el valor incorrecto o falta:

# Imprimir esquema para la salida del analizador
python3 <ruta-de-habilidad>/scripts/analyze_schematic.py --schema

# Extraer sección específica
python3 -c "import json; d=json.load(open('analysis.json')); print(json.dumps(d.get('nets', {}), indent=2))"

# Verificar detectores de hallazgos disponibles
python3 -c "from finding_schema import Det; print([x for x in dir(Det) if not x.startswith('_')])"

Notas de Integración

  • Compatibilidad con herramientas de IA: probado con Claude Code, Cursor y Codex; debe funcionar con cualquier agente que admita habilidades personalizadas
  • Preparación del proyecto: Asegúrese de que los archivos de proyecto KiCad (.kicad_sch, .kicad_pcb) estén presentes y tengan el formato correcto para su versión de KiCad
  • Dependencias: Python 3.8+, bibliotecas estándar (json, csv, re, math); no se requieren bibliotecas externas para scripts de análisis centrales
  • Tamaño de salida: la salida JSON típica para una placa de complejidad media es de 200-600KB combinada para todos los analizadores
  • Almacenamiento en caché: use la opción --analysis-dir para almacenar en caché los resultados y evitar volver a analizar archivos sin cambios

Skills relacionados