Repository navigation
fix: detecta el stack aunque el manifiesto no esté en la raíz - #18
Merged
Merged
Conversation
Instalar en un proyecto C# real destapó que la detección solo miraba la raíz del repo. En .NET el layout normal es Proyecto/Proyecto.csproj o src/App/App.csproj, así que un proyecto C# perfectamente estándar no se detectaba y había que pasar --stack a mano. Las reglas de detección se factorizan a detectIn(dir), parametrizado por directorio, y detectStack() las aplica primero a la raíz y, SOLO si ahí no hay nada, a los subdirectorios en anchura (3 niveles, tope de 250 directorios, saltando node_modules, bin, obj, target, dist y packages). La raíz mantiene prioridad absoluta: ningún proyecto que ya se detectaba cambia de resultado. packages/ se salta a propósito: en un monorepo, elegir un paquete al azar sería peor que pedir --stack. El instalador informa de por dónde lo detectó —'backend/dotnet (por PruebaConteo/, no por la raíz)'— y aclara que se instala en el directorio actual para que el CLAUDE.md cubra todo el repo. Coste medido: 156 ms en un repo de 422 directorios sin nada detectable, y solo se paga cuando la raíz no resuelve. Tests: 56 (5 nuevos: el caso real, src/App, Spring y Angular anidados, la raíz ganando sobre el subdirectorio, y artefactos de build ignorados).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Este commit iba en #17, pero el merge ocurrió justo antes de que aterrizara el push, así que se quedó fuera de
master. Es el arreglo más importante de los que salieron al instalar el kit en un proyecto C# real, así que va en su propio PR. Contenido idéntico al que comenté en #17, sin conflictos.El problema
La detección solo miraba la raíz del repo. Con el proyecto en
PruebaConteo/PruebaConteo.csprojhabía que pasar--stack backend/dotneta mano, y en .NET ese layout no es una rareza: es el normal (Proyecto/Proyecto.csproj,src/App/App.csproj).La solución
Las reglas se factorizan a
detectIn(dir), parametrizado por directorio.detectStack()las aplica primero a la raíz y, solo si ahí no hay nada, a los subdirectorios en anchura: 3 niveles, tope de 250 directorios, saltandonode_modules,bin,obj,target,dist,packages…La raíz mantiene prioridad absoluta, así que ningún proyecto que ya se detectaba cambia de resultado — hay un test que lo fija.
packages/se salta a propósito: en un monorepo, elegir un paquete al azar sería peor que pedir--stack.Auditable, no un acto de fe
Esa segunda línea responde la duda que aparece al instalar en la raíz teniendo el proyecto en un subdirectorio.
Verificación
PruebaConteo/PruebaConteo.csproj(el caso real)backend/dotnet (por PruebaConteo/)src/App/App.csprojbackend/dotnet (por src/App/).slnen raízbackend/dotnet(sin cambio)backend/pom.xmlcon Springbackend/spring (por backend/)web/angular.jsonfrontend/angular (por web/)sub/Legacy.csprojbackend/nestjs— la raíz ganaobj/Debug/generado.csproj,node_modules/x/angular.jsonTest plan
node --test— 51 → 56 tests (5 nuevos: el caso real,src/App, Spring y Angular anidados, la raíz ganando sobre el subdirectorio, y artefactos de build ignorados)node scripts/validate.cjs— 49 comprobaciones