Agent skill

access-module-encoding

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/devops/access-module-encoding

SKILL.md

SKILL.md — Skill para workflow Access/VBA (Export → Trabajo → Sync → Compilar → ERD → Cierre)

Objetivo

Definir un skill (implementación a realizar por otra IA) que automatice el workflow de desarrollo y documentación en un proyecto Microsoft Access/VBA:

  1. Al inicio de una nueva feature/fix: Exportar TODOS los módulos del proyecto VBA a disco (snapshot base).
  2. Se trabaja sobre la mejora editando los archivos exportados (normalmente con IA).
  3. Todo módulo modificado por la IA debe sincronizarse (Import) hacia el VBA real de la BD.
  4. Tras cada sincronización, el skill debe proponer al usuario compilar el proyecto en el VBE.
  5. Generación de documentación: Extraer estructura de tablas (ERD/Diccionario) a Markdown para contexto de la IA.
  6. Al cerrar la tarea (fin de sesión): export final opcional (snapshot consistente) + resumen.

El skill debe ser autocontenido: incluir dentro VBAManager.ps1 y todo lo necesario para ejecutarse.


Alcance y supuestos

  • Entorno: Windows con Microsoft Access instalado (automatización COM y DAO).
  • El repositorio contiene una BD Access (.accdb/.accde/.mdb/.mde) en la raíz del proyecto, o el usuario la pasa por parámetro.
  • La exportación se guarda bajo una carpeta configurable src/.
  • La documentación se genera en docs/ o ruta configurable.
  • Se asume que VBAManager.ps1 soporta:
    • -Action Export|Import|Fix-Encoding|Generate-ERD
    • -AccessPath <ruta> (Frontend)
    • -BackendPath <ruta> (Backend para ERD)
    • -DestinationRoot <carpeta>
    • -ErdPath <ruta archivo>
    • -ModuleName <string[]> (múltiples).
      Si NO soporta array, el skill debe iterar e invocar Import 1×módulo.

Requisitos funcionales (MUST)

R1. Inicio de sesión (start)

  • Detectar AccessPath:
    • Si el usuario lo pasa: usarlo (aceptar rutas relativas a project root).
    • Si no: autodetectar en project root: .accdb/.accde/.mdb/.mde.
      Si hay varias, elegir determinista (alfabético) y avisar.
  • Ejecutar: VBAManager.ps1 -Action Export -AccessPath ... -DestinationRoot ...
  • Persistir estado de sesión en disco (para que sync/end/status funcionen sin mantener proceso vivo):
    • accessPath, destinationRoot, modulesPath, startedAt, changedModules.

R2. Ruta real de módulos exportados

El skill exporta e importa directamente en la carpeta destino:

<DestinationRoot>/*.bas|*.cls|*.frm

Ejemplo: src/Utilidades.bas

R3. Sincronización (sync/import)

  • Dado un conjunto de módulos (por nombre), ejecutar Import solo de esos:
    • VBAManager.ps1 -Action Import -AccessPath ... -DestinationRoot ... -ModuleName A B C
  • Registrar en el estado: changedModules += módulos.
  • Tras importar: mostrar instrucción explícita al usuario:
    • “Abre Access → VBE → Debug → Compile”.

R4. Auto-sync durante el trabajo (watch)

  • Vigilar modulesPath (que coincide con DestinationRoot) y detectar cambios en:
    • .bas, .cls (y opcional .frm si tu proyecto lo usa).
  • Al cambiar un archivo:
    • Derivar ModuleName = basename sin extensión.
    • Hacer debounce/batching (ej. 500–1000 ms) y luego Import de todos los módulos tocados en esa ventana.
  • En unlink (borrado): avisar (no se puede borrar módulo en VBA automáticamente de forma segura).

R5. Generación de ERD (generate-erd)

  • Permitir extraer la estructura de tablas (Frontend o Backend) a formato Markdown.
  • Parámetros:
    • --backend <ruta>: Ruta al archivo Access con las tablas (puede ser el mismo Frontend o un Backend separado).
    • --erd_path <ruta>: Ruta de salida del archivo Markdown (ej. docs/structure.md).
  • Ejecutar: VBAManager.ps1 -Action Generate-ERD -BackendPath ... -ErdPath ...
  • Autodetectar backend si no se especifica (buscar en root).

R6. Fin de sesión (end)

  • Parar watcher si está activo.
  • Si hay cambios pendientes: hacer sync final.
  • Export final opcional (configurable): -Action Export.
  • Imprimir resumen: nº módulos sincronizados + lista.

R7. Comandos mínimos del skill

El skill debe exponer al menos:

  • start (export inicial + estado)
  • watch (start si no hay sesión + auto-sync)
  • sync/import <Mod...> (import manual por lista)
  • generate-erd (documentación de tablas)
  • end (cierre + export final opcional)
  • status (estado de sesión)

Requisitos no funcionales (SHOULD)

  • No bloquear el hilo principal: ejecutar PowerShell como proceso hijo (capturar stdout/stderr).
  • Log claro y accionable (qué módulo se importó y por qué).
  • Fallos: si Import falla, mostrar el error + stdout/stderr del PS1.
  • Configurable por fichero (ej. skill.config.json) o flags:
    • destinationRoot (default src)
    • debounceMs
    • autoExportOnStart / autoExportOnEnd
  • No depender de servicios externos; todo local.

Estructura propuesta del paquete del skill

<projectRoot>/ access-vba-sync/ VBAManager.ps1 handler.(js|py|ps1) # lógica principal cli.(js|py|ps1) # comandos start/watch/sync/end/status README.md SKILL.md # este documento

Importante: el skill vive en su carpeta, pero se ejecuta con projectRoot = cwd (la raíz del repo), para que src/ quede en el proyecto y no dentro del skill.


Flujo de trabajo esperado (integración)

Nueva feature/fix

  1. start → Export total a src/
  2. generate-erd → Generar contexto de datos en docs/structure.md (opcional).
  3. IA modifica archivos en src/ basándose en código y estructura de datos.
  4. watch (o sync al terminar) → Import de módulos modificados.
  5. Usuario compila en VBE cuando el skill lo recuerde.
  6. end → sync final + export final opcional.

Casos límite que el skill debe cubrir

  • Varias BDs en root → elección determinista + warning.
  • Ruta relativa de AccessPath (como el resto de comandos del proyecto).
  • Módulos con mismo nombre en diferentes extensiones (preferir el archivo cambiado; importar por nombre).
  • Cambios masivos (muchos guardados) → batching.
  • Access abierto/bloqueado → error claro (no loops infinitos).

Pruebas mínimas

  • Start con BD única y sin BD.
  • Export crea src/<BD.ext>/Modules.
  • Watch: editar un .bas y confirmar Import.
  • Import manual con 2 módulos (array).
  • End: export final + resumen.

Didn't find tool you were looking for?

Be as detailed as possible for better results