Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

refactor(cli): call isCompatibilityActionable instead of mirroring the rule

Abierto
#48 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Refactorización
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript

Línea de trabajo

Start with packages/cli/src/lib/skill-lookup.ts, packages/cli/tsconfig.json, and the CLI tsup.config.ts, then inspect packages/contracts/src/compatibility.test.ts and the existing contract export. Verify the workspace dependency, path resolution, rootDir, and bundling behavior by running the CLI bundler and executing node bin/skillx.js check --target . Done means the artifact agrees with isCompatibilityActionable for all five statuses and pnpm test passes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Problem

packages/cli/src/lib/skill-lookup.ts mirrors the compatibility actionability rule by hand:

export function isActionable(status: string | null | undefined): boolean {
  return status === 'declared' || status === 'verified';
}

packages/contracts owns the real rule (isCompatibilityActionable, with the vocabulary in COMPATIBILITY_STATUSES). Two implementations of one rule is exactly the drift the cross-surface parity suite in PR #41 exists to catch — and the CLI is the one surface that suite cannot reach.

Why it was not fixed in PR #41

Making the CLI import @skillx/contracts requires changing how the published artifact is bundled:

  • packages/cli/tsconfig.json sets rootDir: "./src", so any import outside src/ fails typecheck;
  • tsup treats dependencies as external by default, and @skillx/contracts ships TypeScript source with no compile step, so it has to go in devDependencies and be force-bundled (noExternal), together with the tsconfig paths entry that the bundler needs to resolve it.

Getting that wrong breaks the npm publish path, which release-please triggers automatically on merge to main. That is a poor trade for a one-line predicate.

Mitigation already in place

packages/contracts/src/compatibility.test.ts pins COMPATIBILITY_STATUSES to an explicit list, with a comment naming this mirror. Adding a sixth status now fails that test instead of silently leaving the CLI wrong.

What the fix needs

  1. Add @skillx/contracts to packages/cli devDependencies as workspace:*.
  2. Add the tsconfig paths entry and drop or widen rootDir.
  3. Add noExternal: ['@skillx/contracts'] to tsup.config.ts.
  4. Delete the mirrored predicate and delegate to the contract.
  5. Verify at the artifact level, not just in source: run the CLI bundler, then execute the resulting CLI (node bin/skillx.js check <slug> --target <runtime>) and confirm the bundle inlined the rule instead of leaving an unresolvable import.

Acceptance

  • The shipped CLI reports the same actionable decision as isCompatibilityActionable for all five statuses.
  • pnpm test still passes, and the parity test's note about the CLI limitation can be removed.
Lenguaje dominante
TypeScript
Estrellas
186
Forks
40
Merge medio
10 h 12 min
PR fusionados (30 d)
16

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de nextlevelbuilder/skillx

Todos los issues de nextlevelbuilder/skillx

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.