# ๐ Analyzer - Escaneo del CI/CD Actual
## Misiรณn
Escanear el proyecto completo para detectar toda la infraestructura de CI/CD existente.
Generar un inventario exhaustivo de lo que el proyecto posee.
---
## Paso 1: Escaneo de Archivos CI/CD
**Buscar en el proyecto** los siguientes elementos usando las herramientas Glob y Read:
### 1.1 GitHub Actions Workflows
```
Buscar: .github/workflows/*.yml, .github/workflows/*.yaml
```
Para cada workflow encontrado, extraer:
- **Nombre** del workflow (`name:`)
- **Triggers** (`on:`) - push, pull_request, schedule, workflow_dispatch, etc.
- **Jobs** - nombre de cada job y sus steps
- **Runners** (`runs-on:`)
- **Servicios** (`services:`)
- **Matrices** (`strategy.matrix`)
- **Secrets** referenciados (`secrets.*`)
- **Variables** de entorno (`env:`)
- **Caching** (`actions/cache`, `actions/setup-*` con cache)
- **Artifacts** (`actions/upload-artifact`, `actions/download-artifact`)
- **Concurrency** groups
- **Permissions** (`permissions:`)
- **Reusable workflows** (`uses: ./.github/workflows/...` o externos)
### 1.2 Configuraciรณn de Branch Protection
```
Buscar: .github/branch-protection.yml, .github/settings.yml (probot settings)
```
**Nota**: Branch protection rules normalmente se configuran en la UI de GitHub o via API.
Informar al usuario que para ver las reglas activas necesita acceso admin al repo.
### 1.3 Otros archivos CI/CD relacionados
```
Buscar:
- .github/dependabot.yml โ Dependabot config
- .github/renovate.json โ Renovate config
- .github/CODEOWNERS โ Code owners
- .github/pull_request_template.md โ PR template
- .github/ISSUE_TEMPLATE/ โ Issue templates
- .releaserc, .releaserc.json, .releaserc.yml โ Semantic release
- release.config.js, release.config.cjs โ Semantic release
- .changeset/ โ Changesets config
- Makefile โ Make targets (pueden tener CI tasks)
- Dockerfile, docker-compose.yml โ Docker (relevante para CI)
- .dockerignore โ Docker ignore
- .env.example, .env.ci โ Env configs para CI
- .nvmrc, .node-version, .tool-versions โ Version pinning
- .editorconfig โ Editor config
- .pre-commit-config.yaml โ Pre-commit hooks
- .husky/ โ Husky git hooks
- .lintstagedrc, lint-staged.config.* โ Lint staged
- commitlint.config.* โ Commit lint
- .eslintrc*, eslint.config.* โ ESLint
- .prettierrc* โ Prettier
- tsconfig.json โ TypeScript
- jest.config.*, vitest.config.* โ Tests
- playwright.config.* โ E2E tests
- cypress.config.* โ E2E tests
- phpunit.xml* โ PHP tests
- phpstan.neon*, psalm.xml โ PHP static analysis
- composer.json โ PHP dependencies (scripts section)
- package.json โ Node scripts section
```
### 1.4 Archivos de CI/CD de otras plataformas (detecciรณn informativa)
```
Buscar:
- .gitlab-ci.yml โ GitLab CI
- .circleci/config.yml โ CircleCI
- Jenkinsfile โ Jenkins
- .travis.yml โ Travis CI
- azure-pipelines.yml โ Azure DevOps
- bitbucket-pipelines.yml โ Bitbucket
```
Si se encuentran, informar al usuario pero el foco de los Ents es GitHub Actions.
---
## Paso 2: Anรกlisis de Scripts del Proyecto
### 2.1 package.json scripts (si existe)
Leer `package.json` y extraer la secciรณn `scripts`:
- Identificar scripts de: test, lint, build, format, type-check, start, dev
- Detectar si hay scripts de CI especรญficos (ci:*, test:ci, etc.)
### 2.2 composer.json scripts (si existe)
Leer `composer.json` y extraer la secciรณn `scripts`:
- Identificar scripts de: test, lint, analyse, format, phpstan, psalm
### 2.3 Makefile targets (si existe)
Leer `Makefile` y extraer targets principales.
---
## Paso 3: Generar Inventario
**Formato de salida** - Mostrar al usuario:
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Anรกlisis CI/CD - Resultados del Escaneo
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Proyecto: [nombre del directorio]
๐
Fecha de anรกlisis: [fecha actual]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Resumen Rรกpido
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Workflows GitHub Actions: [N encontrados / 0 si ninguno]
Jobs totales: [N]
Triggers configurados: [lista]
Secrets referenciados: [N]
Caching: [Sรญ/No]
Matrix strategy: [Sรญ/No]
Reusable workflows: [Sรญ/No]
Docker: [Sรญ/No]
Linting: [herramientas encontradas]
Testing: [frameworks encontrados]
Type checking: [Sรญ/No]
Dependabot/Renovate: [Sรญ/No]
Semantic Release: [Sรญ/No]
Git Hooks (Husky/etc): [Sรญ/No]
Pre-commit: [Sรญ/No]
Branch Protection: [Detectado/No detectado/Solo via API]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Detalle por Workflow
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[Para cada workflow encontrado:]
๐ [nombre-archivo.yml]
Nombre: [name del workflow]
Triggers: [on: push, pull_request, etc.]
Jobs:
- [job_name]: [breve descripciรณn]
Runner: [ubuntu-latest, etc.]
Steps: [N steps]
[Si tiene cache]: Cache: โ
[Si tiene matrix]: Matrix: โ
[dimensiones]
[Si tiene services]: Services: [lista]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ง Herramientas del Proyecto
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[Lista de herramientas detectadas con sus configuraciones]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
---
## Paso 4: Guardar Estado Interno
Mantener en memoria el resultado del anรกlisis para que los mรณdulos siguientes
(04-diagram-renderer, 05-improvement-engine, 06-modifier) puedan utilizarlo
sin repetir el escaneo.
**NO guardar en archivos**. Solo mantener en el contexto de la conversaciรณn.
---
## Reglas del Analyzer
1. **Ser exhaustivo**: No dejar archivos sin escanear
2. **No modificar nada**: Solo lectura, cero escritura
3. **Informar de ausencias**: Si no hay CI/CD, decirlo claramente
4. **Detectar el tipo de proyecto**: Para contextualizar las sugerencias posteriores
5. **No inventar**: Solo reportar lo que realmente existe
---
*Mรณdulo 02 โ Analyzer de CI/CD*