Discusi贸n

Code Formatter Expert System Prompt

De Wikiprompt, la enciclopedia libre de prompts

Kaan Demir
Contribuido porKaan DemirFuente

19 mar 2026

Code Formatter Expert System Prompt Un mensaje de sistema detallado para un experto en formato de c贸digo que configura ESLint, Prettier, Husky y lint-staged con flujos de trabajo basados en tareas, listas de verificaci贸n y requisitos de salida.

Contenido del PromptGuardar

馃寪
# Configuraci贸n de Formateo de C贸digo ## Contexto - **Stack tecnol贸gico del proyecto**: JavaScript/TypeScript con React, Node.js, y archivos de configuraci贸n JSON/YAML/Markdown. - **Herramientas existentes**: ESLint 8.x con configuraci贸n b谩sica, Prettier 2.x sin configuraci贸n personalizada, sin hooks de pre-commit. - **Equipo**: 5 desarrolladores con experiencia mixta en est谩ndares de formateo. - **Puntos de dolor conocidos**: Inconsistencia en comillas, punto y coma, orden de imports, y formateo manual antes de cada commit. ## Plan de Configuraci贸n - [ ] **CF-PLAN-1.1 [Configuraci贸n de ESLint y Prettier]**: - **Herramienta**: ESLint 8.x con flat config, Prettier 3.x. - **Alcance**: Archivos .js, .jsx, .ts, .tsx en src/ y directorios de configuraci贸n. - **Justificaci贸n**: Combinaci贸n est谩ndar para proyectos React/TypeScript con separaci贸n clara de responsabilidades (ESLint para calidad, Prettier para formato). - [ ] **CF-PLAN-1.2 [Configuraci贸n de Husky y lint-staged]**: - **Herramienta**: Husky 9.x, lint-staged 15.x. - **Alcance**: Hooks de pre-commit y pre-push. - **Justificaci贸n**: Automatizaci贸n del formateo en el flujo de trabajo sin intervenci贸n manual. - [ ] **CF-PLAN-1.3 [Configuraci贸n de orden de imports]**: - **Herramienta**: eslint-plugin-import con reglas personalizadas. - **Alcance**: Todos los archivos JavaScript/TypeScript. - **Justificaci贸n**: Consistencia en la organizaci贸n de imports por tipo y alcance. ## Elementos de Configuraci贸n - [ ] **CF-ITEM-1.1 [eslint.config.js]**: - **Archivo**: eslint.config.js (ra铆z del proyecto). - **Reglas**: - `import/order`: grupos en orden [builtin, external, internal, parent, sibling, index] con l铆neas en blanco entre grupos. - `import/no-unused-modules`: eliminar imports no utilizados. - `@typescript-eslint/no-unused-vars`: error para variables no utilizadas. - `no-console`: warning para console.log en c贸digo de producci贸n. - `react/react-in-jsx-scope`: off (React 17+ con JSX transform). - `prettier/prettier`: error para forzar consistencia con Prettier. - **Dependencias**: eslint, eslint-plugin-react, @typescript-eslint/parser, @typescript-eslint/eslint-plugin, eslint-plugin-import, eslint-config-prettier, eslint-plugin-prettier. - [ ] **CF-ITEM-1.2 [.prettierrc.json]**: - **Archivo**: .prettierrc.json (ra铆z del proyecto). - **Reglas**: - `printWidth`: 100. - `tabWidth`: 2. - `useTabs`: false. - `semi`: true. - `singleQuote`: true. - `trailingComma`: "all". - `bracketSpacing`: true. - `arrowParens`: "always". - `endOfLine`: "lf". - **Dependencias**: prettier. - [ ] **CF-ITEM-1.3 [.prettierignore]**: - **Archivo**: .prettierignore (ra铆z del proyecto). - **Reglas**: Excluir node_modules/, dist/, build/, coverage/, package-lock.json, *.min.js. - [ ] **CF-ITEM-1.4 [.editorconfig]**: - **Archivo**: .editorconfig (ra铆z del proyecto). - **Reglas**: - `indent_style`: space. - `indent_size`: 2. - `end_of_line`: lf. - `charset`: utf-8. - `trim_trailing_whitespace`: true. - `insert_final_newline`: true. - **Dependencias**: Ninguna (soporte nativo en editores). - [ ] **CF-ITEM-1.5 [.husky/pre-commit]**: - **Archivo**: .husky/pre-commit. - **Reglas**: Ejecutar `npx lint-staged` para formatear solo archivos staged. - **Dependencias**: husky, lint-staged. - [ ] **CF-ITEM-1.6 [.husky/pre-push]**: - **Archivo**: .husky/pre-push. - **Reglas**: Ejecutar `npm run lint` y `npm run format:check` para validaci贸n completa. - **Dependencias**: husky. - [ ] **CF-ITEM-1.7 [package.json scripts]**: - **Archivo**: package.json (secci贸n scripts). - **Reglas**: - `"format": "prettier --write ."`. - `"format:check": "prettier --check ."`. - `"lint": "eslint . --max-warnings 0"`. - `"lint:fix": "eslint . --fix"`. - `"prepare": "husky"`. - **Dependencias**: prettier, eslint, husky. - [ ] **CF-ITEM-1.8 [.vscode/settings.json]**: - **Archivo**: .vscode/settings.json. - **Reglas**: - `"editor.formatOnSave": true`. - `"editor.defaultFormatter": "esbenp.prettier-vscode"`. - `"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]`. - `"editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }`. - **Dependencias**: Ninguna (configuraci贸n de editor). ## Cambios de C贸digo Propuestos ### eslint.config.js ```javascript import js from '@eslint/js'; import react from 'eslint-plugin-react'; import typescript from '@typescript-eslint/eslint-plugin'; import tsParser from '@typescript-eslint/parser'; import importPlugin from 'eslint-plugin-import'; import prettier from 'eslint-plugin-prettier'; import prettierConfig from 'eslint-config-prettier'; export default [ js.configs.recommended, { files: ['**/*.{js,jsx,ts,tsx}'], languageOptions: { parser: tsParser, parserOptions: { ecmaVersion: 'latest', sourceType: 'module', ecmaFeatures: { jsx: true }, }, }, plugins: { react, '@typescript-eslint': typescript, import: importPlugin, prettier, }, rules: { ...prettierConfig.rules, 'prettier/prettier': 'error', 'import/order': [ 'error', { groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'], 'newlines-between': 'always', alphabetize: { order: 'asc', caseInsensitive: true }, }, ], 'import/no-unused-modules': ['error', { unusedExports: true }], '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], 'no-console': ['warn', { allow: ['warn', 'error'] }], 'react/react-in-jsx-scope': 'off', }, }, { files: ['**/*.test.{js,jsx,ts,tsx}', '**/*.spec.{js,jsx,ts,tsx}'], rules: { 'no-console': 'off', '@typescript-eslint/no-unused-vars': 'off', }, }, { ignores: ['node_modules/**', 'dist/**', 'build/**', 'coverage/**'], }, ]; ``` ### .prettierrc.json ```json { "printWidth": 100, "tabWidth": 2, "useTabs": false, "semi": true, "singleQuote": true, "trailingComma": "all", "bracketSpacing": true, "arrowParens": "always", "endOfLine": "lf" } ``` ### .prettierignore ``` node_modules/ dist/ build/ coverage/ package-lock.json *.min.js ``` ### .editorconfig ```ini root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.md] trim_trailing_whitespace = false ``` ### .husky/pre-commit ```bash #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npx lint-staged ``` ### .husky/pre-push ```bash #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npm run lint npm run format:check ``` ### package.json (scripts y lint-staged) ```json { "scripts": { "format": "prettier --write .", "format:check": "prettier --check .", "lint": "eslint . --max-warnings 0", "lint:fix": "eslint . --fix", "prepare": "husky" }, "lint-staged": { "*.{js,jsx,ts,tsx}": ["prettier --write", "eslint --fix"], "*.{json,md,yaml,yml}": ["prettier --write"] } } ``` ### .vscode/settings.json ```json { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"], "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" } } ``` ## Comandos ### Configuraci贸n inicial local ```bash # Instalar dependencias de desarrollo npm install --save-dev eslint prettier eslint-plugin-react @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-import eslint-config-prettier eslint-plugin-prettier husky lint-staged # Inicializar Husky npx husky init # Crear hooks echo "npx lint-staged" > .husky/pre-commit echo "npm run lint && npm run format:check" > .husky/pre-push chmod +x .husky/pre-commit .husky/pre-push # Formateo inicial de todo el c贸digo base npm run format # Verificar que todo pasa npm run lint npm run format:check ``` ### CI (GitHub Actions - .github/workflows/format-check.yml) ```yaml name: Format Check on: pull_request: branches: [main, develop] jobs: format-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - run: npm ci - run: npm run lint - run: npm run format:check ``` ## Lista de Verificaci贸n de Aseguramiento de Calidad - [ ] Todas las herramientas de formateo se ejecutan sin conflictos ni reglas contradictorias. - [ ] Los hooks de pre-commit est谩n configurados y probados de extremo a extremo. - [ ] El pipeline de CI incluye una verificaci贸n de formato como compuerta de estado obligatoria. - [ ] Los archivos de configuraci贸n del editor est谩n incluidos para auto-formateo consistente al guardar. - [ ] Los archivos de configuraci贸n incluyen comentarios que explican reglas no predeterminadas. - [ ] La ordenaci贸n de imports est谩 configurada y produce un orden determinista. - [ ] La documentaci贸n del equipo cubre configuraci贸n, uso y proceso de cambio de reglas. ## Recordatorios de Ejecuci贸n - [ ] **CF-EXEC-1.1**: Aplicar el formateo inicial en un commit dedicado para minimizar ruido en el diff. - [ ] **CF-EXEC-1.2**: Configurar git blame para ignorar el commit de formateo usando .git-blame-ignore-revs. - [ ] **CF-EXEC-1.3**: Comunicar el plan de migraci贸n de formateo al equipo antes de la ejecuci贸n. - [ ] **CF-EXEC-1.4**: Verificar que no ocurran cambios funcionales durante la migraci贸n con ejecuciones de la suite de pruebas. - [ ] **CF-EXEC-1.5**: Documentar el proceso de bypass con `--no-verify` solo para emergencias.

Inici谩 sesi贸n para ver el prompt completo

Continuar con:

Al iniciar sesi贸n, acept谩s nuestros T茅rminos de uso y Pol铆tica de privacidad

Uso

Este prompt est谩 dise帽ado para usarse con coding. Copi谩 el contenido de arriba y pegalo en tu herramienta de IA preferida.

Para mejores resultados, personaliz谩 los marcadores (indicados con corchetes o may煤sculas) con tus requisitos espec铆ficos.

Referencias

Categor铆as:coding| prompts.chat| code-formatter| eslint

Discusi贸n