Keep documentation and code in sync using LLMs
Project description
Speclink
Speclink mantiene la documentación y el código sincronizados mediante LLMs. Mapea automáticamente las secciones de documentación con el código relevante y las reescribe cuando detecta cambios.
Arquitectura
speclink/
├── core/ # Núcleo del pipeline
│ ├── models.py # Modelos Pydantic (secciones, mapeos, config)
│ ├── config.py # Configuración del proyecto
│ ├── paths.py # Resolución de rutas
│ └── store.py # Persistencia del mapa de trazabilidad
├── preprocessing/ # Parseo de entrada
│ ├── markdown.py # Extracción de secciones desde Markdown
│ ├── code_extraction.py # Extracción de símbolos con tree-sitter (Python, TS)
│ ├── diff.py # Detección de cambios entre commits
│ └── incremental.py # Actualización incremental del mapa
├── retrieval/ # Recuperación y clasificación
│ ├── classifier.py # Clasificación LLM (sección, archivo) → TRUE/FALSE
│ ├── reranker.py # Reranking de candidatos
│ └── batch.py # Procesamiento por lotes
├── rewrite/ # Reescritura de documentación
│ ├── analyzer.py # Análisis de impacto de cambios
│ └── rewriter.py # Reescritura con LLM
├── _prompts/ # Plantillas de prompt para LiteLLM
├── _templates/ # Plantillas de GitHub Actions
├── cli.py # Interfaz CLI (Typer)
└── wizard.py # Asistente interactivo
Pipeline
scope → analyze → sync
│ │ │
│ │ └── Reescribe secciones afectadas usando LLM
│ └── Mapea secciones de docs a código con clasificador + reranker
└── Selecciona archivos de documentación a monitorizar
Características principales
- Mapeo automático: Analiza el repositorio para vincular secciones de documentación con los símbolos de código que describen.
- Sincronización incremental: Solo actualiza las secciones de documentación afectadas por cambios recientes en el código.
- Integración con GitHub Actions: Automatiza la sincronización en el pipeline CI/CD.
- Basado en IA: Utiliza LLMs (OpenAI, Anthropic, etc.) y rerankers para recuperación de contexto de alta precisión.
Instalación
pip install speclink
Inicio rápido
1. Inicializar Speclink
Ejecutar el asistente para seleccionar los archivos de documentación a monitorizar.
speclink scope
Esto crea:
- Un directorio de configuración
.speclink/. - Un workflow
.github/workflows/speclink-sync.ymlpara la sincronización automática.
2. Configurar entorno
Crear un archivo .env o definir variables de entorno. Speclink utiliza LiteLLM, compatible con más de 100 proveedores (OpenAI, Anthropic, Mistral, Ollama, etc.).
LLM_API_KEY=tu_clave
LLM_MODEL=openai/gpt-4o # o anthropic/claude-3-5-sonnet, mistral/mistral-large, etc.
RERANK_API_KEY=tu_clave
RERANK_MODEL=cohere/rerank-v3.5
Para ver las instrucciones completas de configuración:
speclink guide
Consultar proveedores soportados por LiteLLM para la lista completa de identificadores de modelo.
3. Análisis inicial y commit
Generar el mapeo inicial y subirlo al repositorio para habilitar la automatización.
speclink analyze
git add .speclink/ .github/
git commit -m "chore: inicializar speclink"
git push
4. Sincronización continua (automatización)
Una vez configurado, la GitHub Action se ejecuta automáticamente en cada Pull Request:
- Detecta cambios en el código.
- Re-analiza el repositorio para actualizar el mapa de trazabilidad (incremental).
- Sincroniza las secciones de documentación afectadas.
- Commitea los cambios directamente en la rama.
Funcionamiento
- Scope: Se definen qué archivos
.mdson la fuente de verdad. - Analyze: Speclink parsea el código con
tree-sittery utiliza un reranker para identificar qué archivos/funciones están relacionados con cada sección de documentación. - Sync: Cuando el código cambia, Speclink identifica las secciones afectadas, proporciona el nuevo contexto al LLM y reescribe la documentación.
Desarrollo
Requiere Python 3.12+.
git clone https://github.com/lacatu5/speclink.git
cd speclink
uv sync --group dev
Tests
uv run pytest
Evaluación
Los resultados de evaluación con 12 modelos LLM, 5 rerankers y análisis de ablation están en speclink-benchmark.
Licencia
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file speclink-0.1.2.tar.gz.
File metadata
- Download URL: speclink-0.1.2.tar.gz
- Upload date:
- Size: 46.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7395273f27655bfca5a038ea3b98ee70fd70ed9039eecd977c75077950482885
|
|
| MD5 |
3568eab07af84098eca5d0f39672b534
|
|
| BLAKE2b-256 |
7b891c5f282ab852dda4f0d7ceec35d8cd2438aceffbcb5b2196c557772f2be0
|
File details
Details for the file speclink-0.1.2-py3-none-any.whl.
File metadata
- Download URL: speclink-0.1.2-py3-none-any.whl
- Upload date:
- Size: 43.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3b4965c687622c6a366d4a9eda3b4b052b00c178012da7c002d89265f21088d
|
|
| MD5 |
815d2824666950a84846277e3bb22747
|
|
| BLAKE2b-256 |
c3fd875cb1c382ea35b8d70c98c08278e244209f263fee5a336a42051e309df3
|