Skip to content

Migración total a pnpm 11.4#176

Open
trbureiyan wants to merge 25 commits into
mainfrom
dev
Open

Migración total a pnpm 11.4#176
trbureiyan wants to merge 25 commits into
mainfrom
dev

Conversation

@trbureiyan

@trbureiyan trbureiyan commented Jun 6, 2026

Copy link
Copy Markdown
Owner

Descripción

Este PR consolida el repositorio en pnpm 11.4.0 como único gestor soportado, elimina los rastros de npm del flujo de trabajo y deja CI, dependencias y documentación alineadas con instalaciones deterministas y revisión de seguridad más estricta.

Adicionalmente, incluye un script de migración (migrate.mjs) diseñado para que el equipo pueda sincronizar su entorno local sin fricción tras hacer git pull.

Commits incluidos

16ffeae chore: uso de npm restringido y seguridad endurecida en pnpm
7b8778e devops: migración a pnpm en CI, hooks y Vercel
07c0dcc chore: script de migración para facilitar cambio de npm a pnpm

Qué cambia

  • Se fija pnpm 11.4.0 como gestor oficial del proyecto (packageManager field + Corepack).
  • Se elimina package-lock.json y se usa pnpm-lock.yaml como fuente de verdad.
  • Se añade guardia anti-npm en preinstall mediante only-allow.
  • GitHub Actions pasa a pnpm/action-setup@v4 y usa pnpm install --frozen-lockfile.
  • Se actualizan vercel.json, pre-commit, pre-push y deploy-db.ts para usar exclusivamente pnpm.
  • Se pinchan versiones exactas de dependencias (sin ^ ni ~).
  • Se resuelven 16 vulnerabilidades de seguridad: next 15.5.15→15.5.19, nodemailer 7.0.13→8.0.10, override de postcss >= 8.5.10.
  • Se crea pnpm-workspace.yaml con allowBuilds para paquetes confiables (Prisma, esbuild, sharp).
  • Se añade migrate.mjs: herramienta TUI interactiva que limpia artefactos legacy, activa Corepack y sincroniza el entorno en un solo paso.
  • Documentación del repo actualizada.

Validación realizada

  • pnpm run lint — 0 errores
  • pnpm run build — compilación exitosa (60 rutas)
  • pnpm exec tsc --noEmit — 0 errores de tipos
  • pnpm audit — 0 vulnerabilidades conocidas

Guía para el equipo

Important

Si ya trabajabas con npm, ejecuta el script de migración inmediatamente después de hacer git pull:

git pull
node scripts/migrate.mjs

El script se encarga de todo: limpiar node_modules y package-lock.json, activar Corepack/pnpm, instalar dependencias y regenerar el cliente Prisma. No necesitan instalar nada adicional.

Reglas de trabajo diario

  1. npm está prohibido en este repo. Usar siempre pnpm (el hook preinstall lo impone).
  2. Instalar dependencias con pnpm install. En CI usar pnpm install --frozen-lockfile.
  3. Comandos del día a día: pnpm run dev, pnpm run build, pnpm run lint, pnpm audit.
  4. Si se agrega o actualiza una dependencia: pnpm add o pnpm remove, luego revisar el diff de pnpm-lock.yaml.
  5. No volver a generar ni commitear package-lock.json.
  6. Mantener versiones exactas, sin prefijos ^ ni ~.
  7. Después de tocar dependencias, validar siempre lint, build y audit antes de abrir PR.

Reglas que conviene respetar de ahora en adelante

  • Tratar pnpm-lock.yaml como archivo obligatorio y versionado.
  • Evitar upgrades ciegos; revisar cada cambio de dependencia por separado.
  • Priorizar reproducibilidad y seguridad por encima de comodidad puntual.
  • Si algún paquete necesita scripts de build, aprobarlo explícitamente en pnpm-workspace.yaml (allowBuilds).

Tip

Si tienes problemas tras el pull, ejecuta pnpm run migrate y reporta el error en el canal del equipo.

Summary by CodeRabbit

Release Notes

  • Documentación

    • Se añadió documentación completa de configuración del proyecto y guías de contribución.
    • Se creó plantilla de Pull Request con opciones completa y compacta.
    • Se añadieron instrucciones para GitHub Copilot y configuración de herramientas.
  • Chores

    • Se migró el gestor de dependencias de npm a pnpm.
    • Se actualizaron configuraciones de CI/CD y despliegue.
    • Se configuraron hooks de Git (pre-commit y pre-push).
    • Se añadió script de migración automática del entorno.

trbureiyan and others added 24 commits March 11, 2026 13:18
Bumps [next](https://github.com/vercel/next.js) from 15.5.12 to 15.5.14.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](vercel/next.js@v15.5.12...v15.5.14)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.14
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Añadimos ignore-scripts=true en el .npmrc para evitar que los paquetes instalados ejecuten código automáticamente. Es una medida simple para que el proyecto sea más seguro.
Borramos definitivamente la carpeta `_deprecated` con componentes, utilidades y constantes que ya no se usaban tras la última auditoría. Así dejamos el proyecto más limpio y sin ruido innecesario.
Plantilla para issues detallados.
Se añade .docs/ a .gitignore para evitar que la documentación interna generada se registre en el repositorio.
Se limpia y reestablece el proposito de la carpeta para integracion real y profesional de documentacion a futuro.
- Agrega `.github/copilot-instructions.md` con reglas del proyecto para GitHub Copilot.
- Configura el entorno de Cline con `AGENTS.md`, estructura en `.cline/` y habilidades específicas en `SKILL.md`.
- Crea `.clineignore` para excluir carpetas innecesarias (`node_modules/`, `.next/`, `backup/`) del contexto de la IA.
- Documenta en los archivos las convenciones de arquitectura (Next.js App Router, Prisma), seguridad (JWT, CSRF), testing nativo (`node:test`) y gestión de dependencias exactas.

Esto asegura que las herramientas de IA tengan el contexto adecuado y respeten los estándares definidos en DevurityWeb al generar código inteligente.
- ci.yml: comentar servicio postgres y steps de BD; agregar tsc --noEmit
- .coderabbit.yaml: perfil chill, auto-review en main y dev, sin tests ni inline comments
- .husky/pre-commit: lint-staged en archivos .ts/.tsx staged
- .husky/pre-push: tsc --noEmit como barrera de tipos
- package.json: agregar prepare script, lint-staged config, husky@9.1.7 y lint-staged@16.4.0 (versiones exactas)
Introduce secciones para el estilo de comunicación, tono y formato: prohíbe emojis, recomienda usar bloques de alerta de GitHub y mantiene un lenguaje técnico y profesional.
Se añaden configuraciones para revisión automatizada avanzada: instrucciones de notas de versión en español, control de walkthrough (resumen de alto nivel, diagramas, archivos cambiados), activación de IA (in_progress_fortune, enable_prompt_for_ai_agents), detección de slop y nuevas métricas de revisión (estimar esfuerzo, issues/PRs relacionados y reviewers sugeridos).
Se añade .github/pull_request_template.md con plantilla detallada (versión completa y abreviada) para guiar descripciones, criterios de aceptación y pruebas.
Añade la directriz de seguir una estructura limpia.
…ransición (#171)

* refactor: CI sin postgres, CodeRabbit yaml, Husky hooks

- ci.yml: comentar servicio postgres y steps de BD; agregar tsc --noEmit
- .coderabbit.yaml: perfil chill, auto-review en main y dev, sin tests ni inline comments
- .husky/pre-commit: lint-staged en archivos .ts/.tsx staged
- .husky/pre-push: tsc --noEmit como barrera de tipos
- package.json: agregar prepare script, lint-staged config, husky@9.1.7 y lint-staged@16.4.0 (versiones exactas)

* chore: pautas de comunicación

Introduce secciones para el estilo de comunicación, tono y formato: prohíbe emojis, recomienda usar bloques de alerta de GitHub y mantiene un lenguaje técnico y profesional.

* fix: refactor para revisión automatizada avanzada

Se añaden configuraciones para revisión automatizada avanzada: instrucciones de notas de versión en español, control de walkthrough (resumen de alto nivel, diagramas, archivos cambiados), activación de IA (in_progress_fortune, enable_prompt_for_ai_agents), detección de slop y nuevas métricas de revisión (estimar esfuerzo, issues/PRs relacionados y reviewers sugeridos).

* chore: plantilla de pull request

Se añade .github/pull_request_template.md con plantilla detallada (versión completa y abreviada) para guiar descripciones, criterios de aceptación y pruebas.

* chore/fix: Inserccion de resumen coderabbit no invasivo o demandante.

Añade la directriz de seguir una estructura limpia.
- Migración completa a pnpm con restricción de package manager para asegurar consistencia en el entorno.
- Actualización de dependencias clave a versiones estables y configuración de `pnpm-workspace.yaml` para mayor control sobre compilaciones y dependencias.
- Se elimina el archivo `.npmrc` anterior y se reemplaza por uno nuevo que permite explícitamente solo paquetes confiables para ejecutar scripts, mejorando la seguridad.
- Se actualiza el README para prohibir el uso de npm, estandarizando el uso de `corepack` y `pnpm` para todo el equipo.
- Se reemplaza npm por pnpm en las pipelines de GitHub Actions y configuraciones de Vercel para asegurar consistencia con el resto del proyecto.
- Se actualizan los hooks de Husky para ejecutar comandos mediante `pnpm exec`, eliminando cualquier dependencia residual de npm o npx.
- `scripts/migrate.mjs` para automatizar la limpieza de artefactos de npm y la configuración del entorno con pnpm.
- Con tracker de progreso visual para guiar al equipo durante la sincronización de dependencias y la regeneración de Prisma, evitando errores comunes de transición.
@trbureiyan trbureiyan added setup init a base for workspace update Update current workspace dependencies Pull requests that update a dependency file security About vulnerabilities and security updates or fixes ci Cambios en CI/CD, GitHub Actions, automatización de build y deploy labels Jun 6, 2026
@vercel

vercel Bot commented Jun 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
devurity-web Ready Ready Preview, Comment Jun 6, 2026 10:26pm

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@trbureiyan, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 45 minutes and 48 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 66ef0bdf-5f9f-4a88-be2e-e19133eaeaf6

📥 Commits

Reviewing files that changed from the base of the PR and between 07c0dcc and 7a2c442.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml
📝 Walkthrough

Walkthrough

PR que realiza la migración completa del proyecto de npm a pnpm como gestor oficial, incluye un script de migración interactivo, actualiza todos los workflows de CI/CD y deployment, establece documentación centralizada de convenciones del proyecto, y configura herramientas de análisis y review.

Changes

Migración a pnpm y configuración del proyecto

Layer / File(s) Summary
Configuración base de pnpm y workspace
package.json, pnpm-workspace.yaml
Se especifica pnpm@11.4.0 como packageManager oficial, se actualizan todas las dependencias a versiones fijas sin rangos ^/~ (next, prisma, tailwindcss, etc.), y se configura pnpm-workspace.yaml con allowBuilds y overrides de postcss para compatibilidad de compilación.
Script de migración interactivo npm → pnpm
scripts/migrate.mjs
Se implementa un script Node.js interactivo que orquesta 5 etapas de migración: (1) limpieza de package-lock.json y node_modules, (2) activación de corepack y verificación de pnpm, (3) instalación con --frozen-lockfile, (4) generación de cliente Prisma con tolerancia a fallos, y (5) verificación final; incluye clase ProgressTracker para visualizar progreso en terminal con colores y estados, manejo de errores por etapa, y confirmación del usuario.
Integración en CI/CD y automation local
.github/workflows/ci.yml, vercel.json, .husky/pre-commit, .husky/pre-push, .npmrc
GitHub Actions ahora usa pnpm install --frozen-lockfile, deshabilita servicio PostgreSQL temporalmente, ejecuta tsc --noEmit/lint/build sin BD activa. Vercel instala y ejecuta seed con pnpm exec. Husky pre-commit ejecuta pnpm exec lint-staged, pre-push ejecuta pnpm exec tsc --noEmit. Se elimina ignore-scripts=true de .npmrc dejando solo comentarios documentales.
Documentación de convenciones y guías del proyecto
AGENTS.md, .cline/README.md, .cline/skills/devurity-project/SKILL.md, .github/copilot-instructions.md, .github/pull_request_template.md, README.md
Se establece AGENTS.md con reglas de seguridad en cadena de suministro, arquitectura (Next.js App Router + Prisma + PostgreSQL), testing con node:test, y convenciones. Se crean guías compartidas para Cline en .cline/ (README y SKILL.md). Se añaden instrucciones para GitHub Copilot sobre tech stack, seguridad y code style. Se define template de PR con versiones completa y compacta en español. README actualiza flujo de inicio con pnpm y documenta pasos de migración.
Configuración de herramientas de análisis y review
.coderabbit.yaml, .clineignore
Se configura CodeRabbit con idioma es-ES, revisión automática en main/dev, desactivación de request_changes_workflow, habilitación de slop detection, y opciones de walkthrough colapsado. Se excluyen backup/, .next/, y node_modules/ del análisis de Cline.

Esfuerzo de revisión estimado

🎯 3 (Moderado) | ⏱️ ~25 minutos

PRs potencialmente relacionadas

  • trbureiyan/DevurityWeb#171: Este PR modifica la misma configuración de tooling y CI—particularmente .coderabbit.yaml (configuración de revisión automática, request_changes_workflow: false, slop detection) y .github/workflows/ci.yml (deshabilitar Postgres y usar tsc --noEmit)—por lo que los cambios de tooling y configuración están directamente conectados a nivel de archivos y propósito.

Labels sugeridas

documentation, chore

Revisores sugeridos

  • Arekkazu
  • Manuel-Yasno

Poema

🐰✨ De npm saltamos hacia pnpm,
Congelamos versiones, sin ^ ni ~,
El script migra con colores brillantes,
CI/CD ahora corre más elegante,
¡Documentación clara para avanzantes! 📚🚀

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed El título describe con precisión la principal intención de la PR: la migración completa del gestor de dependencias a pnpm 11.4, lo cual es el cambio central en el changeset.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
README.md (1)

168-168: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Eliminar emojis Unicode en encabezados del README

Los títulos usan emojis (🛠️, 🤝, 📄, 👥, ), lo que contradice la convención del repositorio para archivos Markdown.

As per coding guidelines, en **/*.md se debe enfatizar con GitHub Markdown Alerts y no con emojis Unicode.

Also applies to: 238-238, 271-271, 278-278, 305-305

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 168, Remove the Unicode emojis from all Markdown headings
and replace the emoji-bearing headings (e.g., "## 🛠️ Instalación y Uso", and
the other headers containing `🤝`, `📄`, `👥`, `✨`) with plain headings (e.g.,
"## Instalación y Uso"); where emphasis or callouts are needed, add a GitHub
Markdown alert block (blockquote starting with a bold label like **Note:**,
**Important:**, etc.) immediately below the heading to provide the same emphasis
previously conveyed by the emoji. Ensure you update every header instance that
contains emojis so headings are emoji-free and use GitHub alert blocks for
emphasis instead.

Sources: Coding guidelines, Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/pull_request_template.md:
- Around line 14-16: The template's markdown tables (e.g., the table beginning
with "| Campo | Detalle |" and the other table blocks present later in the file)
lack blank lines before and/or after them, triggering markdownlint MD058; update
the .github/pull_request_template.md by inserting a single blank line
immediately before each table block and a single blank line immediately after
each table block so every table is surrounded by blank lines (apply this to the
table starting with "| Campo | Detalle |" and the other table blocks mentioned
in the review).

In @.github/workflows/ci.yml:
- Around line 45-50: Los pasos de GitHub Actions están apuntando a tags mutables
(pnpm/action-setup@v4, actions/setup-node@v4, actions/checkout@v4,
actions/cache@v4); cámbialos para usar commit SHAs fijos: busca el repositorio
oficial de cada acción, copia el SHA completo del commit que corresponde a la
versión que quieres (por ejemplo el último commit de la etiqueta v4) y sustituye
las referencias tipo `owner/name@v4` por `owner/name@<full-commit-sha>` en
`.github/workflows/ci.yml` para cada uso (`pnpm/action-setup`,
`actions/setup-node`, `actions/checkout`, `actions/cache`), luego guarda,
ejecuta la CI y confirma que todo pasa.

In `@AGENTS.md`:
- Around line 15-24: La guía contiene palabras truncadas que generan
instrucciones inválidas; reescribe las referencias correctamente: cambia
"ode:test" a "node:test", "ode:assert/strict" a "node:assert/strict", muestra el
ejemplo de destructuring como import { ok, strictEqual } from
"node:assert/strict"; corrige el prefijo de commits truncado a "refactor:" junto
a los otros prefijos "feature:" y "fix:", y arregla el comando de verificación a
"npm run build"; mantén el formato y contexto original en AGENTS.md para que las
referencias a node:test, node:assert/strict, import { ok, strictEqual },
feature:, fix:, refactor: y npm run build sean exactas y legibles.

In `@pnpm-workspace.yaml`:
- Line 10: Cambia la entrada postcss en pnpm-workspace.yaml de '>=8.5.10' a la
versión exacta '8.5.10' para asegurar una resolución determinista (editar la
clave postcss en pnpm-workspace.yaml), y actualiza los scripts/CI que ejecutan
pnpm install para usar el flag --frozen-lockfile (por ejemplo reemplazar
llamadas a `pnpm install` por `pnpm install --frozen-lockfile`) para evitar
cambios no intencionados del pnpm-lock.yaml en CI.

In `@README.md`:
- Around line 180-183: Reemplaza la línea de blockquote que empieza con "> ⚠️ Se
requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido." por un
bloque de alerta GitHub continuo usando "> [!WARNING] ..." sin líneas en blanco
intermedias y unificando también el título "Migración npm -> pnpm (Actualización
Crítica)" dentro del mismo blockquote; asegúrate de mantener el texto completo
dentro del mismo bloque (no dividir con líneas vacías) para cumplir MD028 y la
guía de usar GitHub Markdown Alerts en README.md.

In `@scripts/migrate.mjs`:
- Around line 197-202: En la etapa de Corepack en scripts/migrate.mjs reemplaza
la llamada a runCommand('corepack', ['enable']) por runCommand('corepack',
['prepare', `pnpm@${CONFIG.pnpmVersion}`, '--activate']) y luego comprueba que
runCommand('pnpm', ['--version']) devuelva exactamente CONFIG.pnpmVersion; si
devuelve otro valor o falla, intenta un reintento razonable y, si sigue sin
coincidir, marca la tarea con tracker.updateTask('corepack', 'failed', ...) y
falla el proceso; asegúrate de actualizar tanto la rama de éxito
(tracker.updateTask('corepack','success',...)) como la de error/catch para
incluir el valor real de la versión obtenida y el contexto de
CONFIG.pnpmVersion.

In `@vercel.json`:
- Line 4: Actualiza el valor de la clave installCommand en vercel.json para
hacerlo determinista; reemplaza "pnpm install" por "pnpm install
--frozen-lockfile" en la entrada installCommand para forzar el uso del lockfile
durante despliegues y evitar cambios no deseados en dependencias.

---

Outside diff comments:
In `@README.md`:
- Line 168: Remove the Unicode emojis from all Markdown headings and replace the
emoji-bearing headings (e.g., "## 🛠️ Instalación y Uso", and the other headers
containing `🤝`, `📄`, `👥`, `✨`) with plain headings (e.g., "## Instalación y
Uso"); where emphasis or callouts are needed, add a GitHub Markdown alert block
(blockquote starting with a bold label like **Note:**, **Important:**, etc.)
immediately below the heading to provide the same emphasis previously conveyed
by the emoji. Ensure you update every header instance that contains emojis so
headings are emoji-free and use GitHub alert blocks for emphasis instead.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e80c9051-7ac6-417d-b7b1-0b404a870b04

📥 Commits

Reviewing files that changed from the base of the PR and between c5aebb2 and 07c0dcc.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (16)
  • .cline/README.md
  • .cline/skills/devurity-project/SKILL.md
  • .clineignore
  • .coderabbit.yaml
  • .github/copilot-instructions.md
  • .github/pull_request_template.md
  • .github/workflows/ci.yml
  • .husky/pre-commit
  • .husky/pre-push
  • .npmrc
  • AGENTS.md
  • README.md
  • package.json
  • pnpm-workspace.yaml
  • scripts/migrate.mjs
  • vercel.json

Comment on lines +14 to +16
| Campo | Detalle |
|---|---|
| **Título** | `tipo:` [descripción] (ej. `feature: autenticación JWT`, `fix: error en login`) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Ajustar espaciado alrededor de tablas para cumplir markdownlint (MD058)

Faltan líneas en blanco antes/después de varias tablas; esto genera warnings de lint en la plantilla.

Also applies to: 37-40, 66-68, 74-76, 85-87, 101-104

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 14-14: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/pull_request_template.md around lines 14 - 16, The template's
markdown tables (e.g., the table beginning with "| Campo | Detalle |" and the
other table blocks present later in the file) lack blank lines before and/or
after them, triggering markdownlint MD058; update the
.github/pull_request_template.md by inserting a single blank line immediately
before each table block and a single blank line immediately after each table
block so every table is surrounded by blank lines (apply this to the table
starting with "| Campo | Detalle |" and the other table blocks mentioned in the
review).

Source: Linters/SAST tools

Comment thread .github/workflows/ci.yml
Comment on lines +45 to 50
uses: pnpm/action-setup@v4
with:
version: 11

- name: Setup Node.js
uses: actions/setup-node@v4

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Show the workflow and relevant lines with numbers
sed -n '1,120p' .github/workflows/ci.yml | nl -ba | sed -n '35,80p'

# Search for other uses of actions/*`@v4` in repository
rg -n --hidden --glob '!.git/*' "uses:\s*[^@]+@v4" .github/workflows || true

Repository: trbureiyan/DevurityWeb

Length of output: 109


🏁 Script executed:

#!/bin/bash
set -euo pipefail
sed -n '1,140p' .github/workflows/ci.yml | nl -ba | sed -n '35,90p'
rg -n --hidden --glob '!.git/*' "uses:\s*[^@]+@v4" .github/workflows || true

Repository: trbureiyan/DevurityWeb

Length of output: 109


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== ci.yml lines 35-90 ==="
sed -n '35,90p' .github/workflows/ci.yml | cat -n

echo "=== uses: ...@v4 in workflows ==="
rg -n --glob '.github/workflows/**/*.yml' --glob '.github/workflows/**/*.yaml' "uses:\s*[^@]+@v4" .github/workflows || true

Repository: trbureiyan/DevurityWeb

Length of output: 2536


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Exact lines 35-70 with real line numbers ==="
awk 'NR>=35 && NR<=70 {printf "%d\t%s\n", NR, $0}' .github/workflows/ci.yml

echo "=== All uses: ...@v4 in .github/workflows ==="
rg -n --hidden --glob '!.git/*' "uses:\s*[^@]+@v4" .github/workflows || true

Repository: trbureiyan/DevurityWeb

Length of output: 1753


Fijar las GitHub Actions a un commit SHA (no a tags @v4) para reducir riesgo de supply chain.

En .github/workflows/ci.yml:

  • pnpm/action-setup@v4 (líneas 45) y actions/setup-node@v4 (línea 50) están atados a un tag mutable.
  • También hay actions/checkout@v4 (línea 42) y actions/cache@v4 (línea 57) con el mismo problema.
Patrón recomendado
- uses: pnpm/action-setup@v4
+ uses: pnpm/action-setup@<commit-sha>

- uses: actions/setup-node@v4
+ uses: actions/setup-node@<commit-sha>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
uses: pnpm/action-setup@v4
with:
version: 11
- name: Setup Node.js
uses: actions/setup-node@v4
uses: pnpm/action-setup@<actual-commit-sha-for-v4>
with:
version: 11
- name: Setup Node.js
uses: actions/setup-node@<actual-commit-sha-for-v4>
🧰 Tools
🪛 zizmor (1.25.2)

[error] 45-45: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)


[error] 50-50: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 45 - 50, Los pasos de GitHub Actions
están apuntando a tags mutables (pnpm/action-setup@v4, actions/setup-node@v4,
actions/checkout@v4, actions/cache@v4); cámbialos para usar commit SHAs fijos:
busca el repositorio oficial de cada acción, copia el SHA completo del commit
que corresponde a la versión que quieres (por ejemplo el último commit de la
etiqueta v4) y sustituye las referencias tipo `owner/name@v4` por
`owner/name@<full-commit-sha>` en `.github/workflows/ci.yml` para cada uso
(`pnpm/action-setup`, `actions/setup-node`, `actions/checkout`,
`actions/cache`), luego guarda, ejecuta la CI y confirma que todo pasa.

Source: Linters/SAST tools

Comment thread AGENTS.md
Comment on lines +15 to +24
- Use Node.js built-in test runner (
ode:test) and
ode:assert/strict).
- **Always destructure** specific assert functions (e.g., import { ok, strictEqual } from "node:assert/strict";).

## Workflow
- Follow conventional commits (feature:, fix:,
efactor:).
- Verify changes with
pm run build before pushing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Corregir comandos y prefijos truncados en la guía

Aquí hay texto cortado (ode:test, ode:assert/strict, efactor:, pm run build) que deja instrucciones inválidas para testing y flujo de trabajo.

Propuesta de corrección
-- Use Node.js built-in test runner (
-ode:test) and 
-ode:assert/strict).
+- Use Node.js built-in test runner (`node:test`) and `node:assert/strict`.
...
-- Follow conventional commits (feature:, fix:, 
-efactor:).
-- Verify changes with 
-pm run build before pushing.
+- Follow conventional commits (feature:, fix:, refactor:).
+- Verify changes with `pnpm run build` before pushing.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@AGENTS.md` around lines 15 - 24, La guía contiene palabras truncadas que
generan instrucciones inválidas; reescribe las referencias correctamente: cambia
"ode:test" a "node:test", "ode:assert/strict" a "node:assert/strict", muestra el
ejemplo de destructuring como import { ok, strictEqual } from
"node:assert/strict"; corrige el prefijo de commits truncado a "refactor:" junto
a los otros prefijos "feature:" y "fix:", y arregla el comando de verificación a
"npm run build"; mantén el formato y contexto original en AGENTS.md para que las
referencias a node:test, node:assert/strict, import { ok, strictEqual },
feature:, fix:, refactor: y npm run build sean exactas y legibles.

Comment thread pnpm-workspace.yaml
unrs-resolver: true

overrides:
postcss: '>=8.5.10'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== pnpm-workspace.yaml (around line 10) =="
nl -ba pnpm-workspace.yaml | sed -n '1,40p'

echo
echo "== Search for pnpm overrides / postcss usage =="
rg -n --hidden -S "overrides:|postcss" pnpm-workspace.yaml package.json **/package.json 2>/dev/null || true

echo
echo "== Any pnpm config files (if present) =="
ls -la | rg -n "pnpm|\\.npmrc|\\.pnpmfile\\.cjs|\\.pnpmfile\\.js" || true

Repository: trbureiyan/DevurityWeb

Length of output: 170


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Top of pnpm-workspace.yaml (first 40 lines, with numbers) =="
awk '{printf "%4d\t%s\n", NR, $0}' pnpm-workspace.yaml | sed -n '1,40p' || true

echo
echo "== Exact match for postcss in pnpm-workspace.yaml =="
rg -n "postcss" pnpm-workspace.yaml || true

echo
echo "== Search for overrides blocks (and postcss) in package.json files =="
fd -e json -a package.json . 2>/dev/null | head -n 200 | cat > /tmp/pkgfiles.txt
while IFS= read -r f; do
  echo "-- $f --"
  rg -n "overrides|postcss" "$f" || true
done < /tmp/pkgfiles.txt

echo
echo "== List pnpm-related root config files (if present) =="
ls -la | rg -n "(pnpm|\\.npmrc|\\.pnpmfile|\\.yarnrc|package\\.json|pnpm-workspace\\.yaml)" || true

Repository: trbureiyan/DevurityWeb

Length of output: 904


Fija postcss a una versión exacta en pnpm-workspace.yaml (overrides)

En pnpm-workspace.yaml (línea 10) se usa un rango ('>=8.5.10'), lo que puede hacer que al regenerar el pnpm-lock.yaml se resuelva a una versión distinta. Fijarlo a 8.5.10 mantiene la resolución determinista.

Diff propuesto
 overrides:
-  postcss: '>=8.5.10'
+  postcss: '8.5.10'

En CI/scripts, usa pnpm install --frozen-lockfile para evitar cambios involuntarios del lockfile.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
postcss: '>=8.5.10'
postcss: '8.5.10'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pnpm-workspace.yaml` at line 10, Cambia la entrada postcss en
pnpm-workspace.yaml de '>=8.5.10' a la versión exacta '8.5.10' para asegurar una
resolución determinista (editar la clave postcss en pnpm-workspace.yaml), y
actualiza los scripts/CI que ejecutan pnpm install para usar el flag
--frozen-lockfile (por ejemplo reemplazar llamadas a `pnpm install` por `pnpm
install --frozen-lockfile`) para evitar cambios no intencionados del
pnpm-lock.yaml en CI.

Sources: Coding guidelines, Learnings

Comment thread README.md
Comment on lines +180 to +183
> ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido.

> [!IMPORTANT]
> **Migración npm -> pnpm (Actualización Crítica)**

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Reemplazar advertencia con emoji por un bloque de alerta válido y continuo

La advertencia actual usa > ⚠️ ... y además introduce una línea en blanco dentro del blockquote, activando MD028. Conviene unificarla como alerta GitHub (> [!WARNING]) sin cortes.

Propuesta de corrección
-> ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido.
-
-> [!IMPORTANT]
+> [!WARNING]
+> Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. npm está prohibido.
+>
+> [!IMPORTANT]
 > **Migración npm -> pnpm (Actualización Crítica)**

As per coding guidelines, en **/*.md se debe usar GitHub Markdown Alerts para énfasis en lugar de emojis.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
> ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta prohibido.
> [!IMPORTANT]
> **Migración npm -> pnpm (Actualización Crítica)**
> [!WARNING]
> Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. npm está prohibido.
>
> [!IMPORTANT]
> **Migración npm -> pnpm (Actualización Crítica)**
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 181-181: Blank line inside blockquote

(MD028, no-blanks-blockquote)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 180 - 183, Reemplaza la línea de blockquote que
empieza con "> ⚠️ Se requiere Node 18+, pnpm >=11.1.0 y PostgreSQL. NPM esta
prohibido." por un bloque de alerta GitHub continuo usando "> [!WARNING] ..."
sin líneas en blanco intermedias y unificando también el título "Migración npm
-> pnpm (Actualización Crítica)" dentro del mismo blockquote; asegúrate de
mantener el texto completo dentro del mismo bloque (no dividir con líneas
vacías) para cumplir MD028 y la guía de usar GitHub Markdown Alerts en
README.md.

Sources: Coding guidelines, Linters/SAST tools

Comment thread scripts/migrate.mjs
Comment on lines +197 to +202
tracker.updateTask('corepack', 'running', 'Enabling corepack...');
await runCommand('corepack', ['enable']);

// Check pnpm version
const version = await runCommand('pnpm', ['--version']).catch(() => 'unknown');
tracker.updateTask('corepack', 'success', `pnpm v${version} active`);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) Mostrar el contexto del fichero alrededor de las líneas indicadas
nl -ba scripts/migrate.mjs | sed -n '150,260p'

# 2) Localizar definición/uso de CONFIG.pnpmVersion
rg -n "CONFIG\.pnpmVersion|pnpmVersion" scripts/migrate.mjs

# 3) Buscar otras invocaciones de corepack en el repo
rg -n "corepack\s+(enable|prepare|use|disable)" -S .

Repository: trbureiyan/DevurityWeb

Length of output: 109


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) Verificar herramientas básicas disponibles
command -v rg >/dev/null && echo "rg: ok" || echo "rg: missing"
command -v cat >/dev/null && echo "cat: ok" || echo "cat: missing"
command -v sed >/dev/null && echo "sed: ok" || echo "sed: missing"

# 2) Ubicar el bloque exacto de corepack en scripts/migrate.mjs
rg -n "tracker\.updateTask\('corepack'|corepack enable|corepack prepare|CONFIG\.pnpmVersion|pnpmVersion" scripts/migrate.mjs

echo "---- context around corepack block ----"
# 3) Mostrar contexto aproximado (sin nl)
sed -n '170,230p' scripts/migrate.mjs

echo "---- repo-wide corepack usage ----"
rg -n "corepack\s+(enable|prepare|use|disable)" -S .

Repository: trbureiyan/DevurityWeb

Length of output: 3321


Asegura que Corepack active la versión exacta de pnpm (CONFIG.pnpmVersion).
En scripts/migrate.mjs (etapa Corepack) solo se ejecuta corepack enable y luego se muestra pnpm --version sin garantizar que coincida con CONFIG.pnpmVersion; además, en el catch solo se valida que pnpm exista, sin comprobar la versión. Cambiar a corepack prepare pnpm@${CONFIG.pnpmVersion} --activate y fallar (o reintentar) si pnpm --version no coincide en ambos flujos.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/migrate.mjs` around lines 197 - 202, En la etapa de Corepack en
scripts/migrate.mjs reemplaza la llamada a runCommand('corepack', ['enable'])
por runCommand('corepack', ['prepare', `pnpm@${CONFIG.pnpmVersion}`,
'--activate']) y luego comprueba que runCommand('pnpm', ['--version']) devuelva
exactamente CONFIG.pnpmVersion; si devuelve otro valor o falla, intenta un
reintento razonable y, si sigue sin coincidir, marca la tarea con
tracker.updateTask('corepack', 'failed', ...) y falla el proceso; asegúrate de
actualizar tanto la rama de éxito (tracker.updateTask('corepack','success',...))
como la de error/catch para incluir el valor real de la versión obtenida y el
contexto de CONFIG.pnpmVersion.

Comment thread vercel.json
"buildCommand": "prisma generate && prisma migrate deploy && npx tsx prisma/seed.ts && next build",
"installCommand": "npm install",
"buildCommand": "prisma generate && prisma migrate deploy && pnpm exec tsx prisma/seed.ts && next build",
"installCommand": "pnpm install",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Haz determinista el installCommand en Vercel usando --frozen-lockfile.

El installCommand actual es "pnpm install"; cámbialo a "pnpm install --frozen-lockfile" para evitar cambios en el lock y mantener despliegues reproducibles.

Diff propuesto
-  "installCommand": "pnpm install",
+  "installCommand": "pnpm install --frozen-lockfile",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"installCommand": "pnpm install",
"installCommand": "pnpm install --frozen-lockfile",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@vercel.json` at line 4, Actualiza el valor de la clave installCommand en
vercel.json para hacerlo determinista; reemplaza "pnpm install" por "pnpm
install --frozen-lockfile" en la entrada installCommand para forzar el uso del
lockfile durante despliegues y evitar cambios no deseados en dependencias.

- Se elimina la versión estática de `pnpm` en `ci.yml` para dejar que el `action-setup` utilice la versión definida por `packageManager` en el `package.json`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Cambios en CI/CD, GitHub Actions, automatización de build y deploy dependencies Pull requests that update a dependency file security About vulnerabilities and security updates or fixes setup init a base for workspace update Update current workspace

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant