# π 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*