
secretlint v13.0.3
Herramienta de linting conectable para evitar confirmar credenciales.
Secretlint 

Secretlint es una herramienta de linting conectable para prevenir la confirmación de credenciales.
Características
- Escáner: Encuentra credenciales en un proyecto e infórmalos
- Amigable con proyectos: Fácil de configurar en tu proyecto e integrar servicios CI
- Hook de Pre-Commit: Previene la confirmación de archivos con credenciales
- Conectable: Permite crear reglas personalizadas y configuración flexible
- Documentación: Describe la razón por la que la regla lo detecta como secreto
Demo rápida
Puedes ver el resultado del linting de secretlint en https://secretlint.github.io/.
Inicio rápido
Puedes probar Secretlint en tu proyecto con un solo comando.
Si ya tienes Docker instalado:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
Si ya tienes Node.js instalado:
npx @secretlint/quick-start "**/*"
Después de ejecutarlo,
si obtienes un resultado vacío y el código de salida es 0, tu proyecto es seguro.
De lo contrario, si obtienes algún informe de error, tu proyecto incluye credenciales como datos en bruto.

Si deseas obtener seguridad continua, consulta la siguiente guía de instalación y configura el hook de pre-commit y CI.
Instalación
Usando Docker
Requisitos: Se requiere Docker
Usa nuestro contenedor Docker para obtener un entorno con Node.js y secretlint funcionando tan rápido como puedas descargarlos.
Puedes comprobar todos los archivos en el directorio actual con secretlint usando el siguiente comando:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
El contenedor Docker secretlint/secretlint funciona sin configuración por diseño.
Esta imagen Docker incluye paquetes integrados:
- @secretlint/secretlint-rule-preset-recommend
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-formatter-sarif
Para más detalles, consulta el Dockerfile de secretlint.
Usando Node.js
Requisitos: Se requiere Node.js 22+.
Secretlint está escrito en JavaScript. Puedes instalar Secretlint usando npm:``` npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev
Luego, debes configurar un archivo de configuración:```
npx secretlint --init
Finalmente, puedes ejecutar Secretlint en cualquier archivo o directorio de esta manera:``` npx secretlint "**/*"
:memo: Secretlint admite [glob pattern](https://github.com/mrmlnc/fast-glob#basic-syntax) y el patrón glob debe estar envuelto entre comillas dobles.
También es posible instalar Secretlint globalmente usando `npm install --global`. Pero no lo recomendamos, algunas reglas pueden romperse globalmente.
### Usando un Binario Ejecutable Único
**Requisitos previos:** Ninguno
Puede usar el comando `secretlint` sin Node.js utilizando un binario ejecutable único.
1. Descargue el último binario desde [Releases page](https://github.com/secretlint/secretlint/releases)
2. Cambie el permiso del archivo a ejecutable: `chmod +x ./secretlint`
3. Ejecute `./secretlint --init` para crear un archivo de configuración
4. Ejecute `./secretlint "**/*"` para analizar su proyecto
Para más detalles, por favor consulte el README de [publish/binary-compiler](https://github.com/secretlint/secretlint/blob/HEAD/publish/binary-compiler).
## Uso
`secretlint --help` muestra el uso.
Secretlint CLI that scan secret/credential data.
Usage
$ secretlint [file|glob*]
Note
supported glob syntax is based on picomatch (the engine used by micromatch)
https://github.com/micromatch/picomatch#globbing-features
https://github.com/micromatch/micromatch#matching-features
Options
--init setup config file. Create .secretlintrc.json file from your package.json
--format [String] formatter name. Default: "stylish". Available Formatter: checkstyle, compact, github, jslint-xml, junit, pretty-error, stylish, tap, unix, json, mask-result, table
--output [path:String] output file path that is written of reported result.
--secretlintrc [path:String] path to .secretlintrc config file. Default: .secretlintrc.*
--secretlintignore [path:String] path to .secretlintignore file. Default: .secretlintignore
--stdinFileName [String] filename to process STDIN content. Some rules depend on filename to check content.
--no-color disable ANSI-color of output.
--no-terminalLink disable terminalLink of output.
--no-maskSecrets disable masking of secret values; secrets are masked by default.
--no-glob disable glob pattern interpretation; treat all inputs as literal file paths.
--no-gitignore disable .gitignore cascade respect; .gitignore files are
respected by default (since v13).
Options for Developer
--profile Enable performance profile.
--secretlintrcJSON [String] a JSON string of .secretlintrc. use JSON string instead of rc file.
Experimental Options
--locale [String] locale tag for translating message. Default: en
Examples
# Scan a single file
$ secretlint ./README.md
# Scan all files (wrap glob in double quotes to avoid shell expansion)
$ secretlint "**/*"
$ secretlint "source/**/*.ini"
# Treat inputs as literal paths (for SvelteKit (group) / Next.js [param] etc.)
$ secretlint --no-glob "src/(auth)/login.ts"
# Lint STDIN content (filename hint affects which rules apply)
$ echo "SECRET" | secretlint --stdinFileName=secret.txt
# Use a custom config file
$ secretlint "**/*" --secretlintrc=.secretlintrc.custom.json
# Scan files ignored by .gitignore (e.g. to verify build artifacts)
$ secretlint --no-gitignore "dist/**/*"
# Mask secrets in a file in-place
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
# Output JSON for programmatic parsing
$ secretlint "**/*" --format=json --output=secretlint-report.json
# Output GitHub Actions annotations in CI
$ secretlint "**/*" --format=github
Exit Status
Secretlint exits with the following values:
- 0:
- Linting succeeded, no errors found.
- Found lint error but --output is specified.
- 1:
- Linting failed, errors found.
- 2:
- Unexpected error occurred, fatal error.
## Configuración
Secretlint tiene un archivo de configuración `.secretlintrc.{json,yml,js}`.
- Documento: [Configurando Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md)
Después de ejecutar `secretlint --init`, tendrá un archivo `.secretlintrc.json` en su directorio.
En él, verá algunas reglas configuradas así:```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-preset-recommend"
}
]
}
La propiedad id es el nombre del paquete de reglas de secretlint.
Secretlint no tiene reglas integradas.
Si desea agregar una regla, debe instalar el paquete y agregar la regla al archivo .secretlintrc.
Cada regla tiene el mismo patrón de configuración:
options: Definición de opciones para la regla. Para más detalles, consulte la documentación de cada regla.disabled: Sidisabledestrue, la regla se deshabilita.allowMessageIds:allowMessageIdses un arreglo de identificadores de mensajes para los que desea suprimir el informe de errores.- El identificador de mensaje se define en cada regla; consulte la documentación de la regla.
Ejemplo: options
Por ejemplo, @secretlint/secretlint-rule-example tiene allows en options.
La opción allows define una lista de cadenas tipo RegExp que desea ignorar.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"options": {
"allows": [
"/dummy_secret/i"
]
}
}
]
}
Cuando usas un preset como `@secretlint/secretlint-rule-preset-recommend`, debes poner la opción en `rules`.
Por ejemplo, una opción para `@secretlint/secretlint-rule-preset-recommend > @secretlint/secretlint-rule-aws````json5
{
"rules": [
{
"id": "@secretlint/secretlint-rule-preset-recommend",
"rules": [
{
"id": "@secretlint/secretlint-rule-aws",
"options": {
"allows": [
// it will be ignored
"xxxx-xxxx-xxxx-xxxx-xxxx"
]
}
}
]
}
]
}
Ejemplo: allowMessageIds
Por ejemplo, tienes el siguiente informe de error al ejecutar secretlint:```
$ secretlint "**/*"
SECRET.txt 1:8 error [EXAMPLE_MESSAGE] found secret: SECRET @secretlint/secretlint-rule-example
✖ 1 problem (1 error, 0 warnings)
El id de mensaje de este error es `EXAMPLE_MESSAGE` en `@secretlint/secretlint-rule-example`.
Si deseas ignorar este error, por favor usa `allowMessageIds`.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"allowMessageIds": ["EXAMPLE_MESSAGE"]
}
]
}
Cuando usas un preset como @secretlint/secretlint-rule-preset-recommend, debes colocar la opción en rules.
Por ejemplo, si deseas ignorar "AWSAccountID" y "AWSAccessKeyID" de "@secretlint/secretlint-rule-aws", puedes escribir lo siguiente.```json5 { "rules": [ { "id": "@secretlint/secretlint-rule-preset-recommend", "rules": [ { "id": "@secretlint/secretlint-rule-aws", "allowMessageIds": ["AWSAccountID", "AWSAccessKeyID"] } ] } ] }
### Ignorando archivos mediante `.gitignore` y `.secretlintignore`
Secretlint recorre el sistema de archivos de la misma manera que Git, respetando los archivos `.gitignore` anidados. Cualquier archivo o directorio que coincida con algún `.gitignore` en la ruta desde el directorio de trabajo hasta el archivo se omite.
`.secretlintignore` funciona de la misma manera que `.gitignore` y se consulta adicionalmente. El orden de resolución es:
1. Ignorados incorporados: `.git`, `node_modules` y la familia `.secretlintrc*`.
2. El archivo señalado por `--secretlintignore` (por defecto: `.secretlintignore`).
3. El `.gitignore` de cada directorio (en cascada).
Para escanear archivos que están en gitignore — por ejemplo, un archivo `.env` en un proyecto donde `.env` está en gitignore — pase `--no-gitignore`:```
secretlint --no-gitignore "**/*"
Migrando a v13:
.gitignoreahora se respeta por defecto. Anteriormente, secretlint escaneaba todos los archivos coincidentes sin importar.gitignore. Pase--no-gitignorepara restaurar el comportamiento anterior.- Los patrones de inclusión siguen la sintaxis glob de picomatch (expansión de llaves,
**, clases de caracteres, …). La pila de ignorados en cascada (.gitignore,.secretlintignorey la lista de ignorados incorporada) sigue la semántica estándar de.gitignore, que NO admite expansión de llaves — escriba**/.cacheen lugar de**/{cache,tmp}para patrones de ignorado.- Los patrones se interpretan como globs por defecto. Cuando un patrón se resuelve en una ruta existente en disco, el caminante lo trata literalmente incluso si el nombre contiene metacaracteres de glob (
[,(,{,?), reflejando el comportamiento antiguo deconvertPathToPatternde globby. Pase--no-globpara forzar el manejo literal de rutas que aún no existen en disco.- Los enlaces simbólicos de directorios se siguen durante la búsqueda (coincidiendo con el comportamiento anterior basado en globby), pero la ruta del enlace simbólico — no el destino resuelto — es lo que ven las reglas de
.gitignorey.secretlintignore. Los ciclos se detectan medianterealpath, por lo que cada destino único se visita como máximo una vez.
Ignorar por comentario
@secretlint/secretlint-rule-filter-comments admite comentarios de ignorado como secretlint-disable.```
// secretlint-disable
THIS IS SECRET, BUT IT WILL BE IGNORED
// secretlint-enable
Para más detalles, consulte [Configuración de Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md).
## Casos de Uso
### Ocultar secretos en mensajes de error de lint (Comportamiento predeterminado)
Secretlint oculta secretos en mensajes de error de lint de forma predeterminada. Esto es útil para evitar la exposición accidental de secretos en registros de CI, salida de terminal o al usar herramientas de agente de IA.```bash
# Secrets are masked by default
$ secretlint "**/*"
Para mostrar los valores secretos reales en la salida, usa --no-maskSecrets:```bash
$ secretlint --no-maskSecrets "**/*"
### Corregir secretos
Secretlint no puede corregir los secretos automáticamente.
Sin embargo, es útil que `--format=mask-result` enmascare los secretos del archivo de entrada.
Por ejemplo, puedes enmascarar los secretos del archivo `.zsh_history` y sobrescribirlo.```bash
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
Paquetes de Reglas
Las reglas de Secretlint se han implementado como módulos separados.
- @secretlint/secretlint-rule-npm
- @secretlint/secretlint-rule-aws
- @secretlint/secretlint-rule-gcp
- @secretlint/secretlint-rule-github
- @secretlint/secretlint-rule-gitlab
- @secretlint/secretlint-rule-privatekey
- @secretlint/secretlint-rule-basicauth
- @secretlint/secretlint-rule-slack
- @secretlint/secretlint-rule-sendgrid
- @secretlint/secretlint-rule-shopify
- @secretlint/secretlint-rule-stripe
- @secretlint/secretlint-rule-openai
- @secretlint/secretlint-rule-anthropic
- @secretlint/secretlint-rule-grafana
- @secretlint/secretlint-rule-groq
- @secretlint/secretlint-rule-linear
- @secretlint/secretlint-rule-1password
- @secretlint/secretlint-rule-database-connection-string
- @secretlint/secretlint-rule-databricks
- @secretlint/secretlint-rule-hashicorp-vault
- @secretlint/secretlint-rule-vercel
- @secretlint/secretlint-rule-azure
- @secretlint/secretlint-rule-docker
- @secretlint/secretlint-rule-figma
- @secretlint/secretlint-rule-cloudflare
- @secretlint/secretlint-rule-tailscale
- @secretlint/secretlint-rule-huggingface
- @secretlint/secretlint-rule-notion
- @secretlint/secretlint-rule-secp256k1-privatekey
- @secretlint/secretlint-rule-no-k8s-kind-secret
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-rule-no-homedir
- @secretlint/secretlint-rule-no-dotenv
- @secretlint/secretlint-rule-filter-comments
Además, Secretlint proporciona un preset de reglas que incluye un conjunto de reglas recomendado.
- @secretlint/secretlint-rule-preset-recommend
- Conjunto de reglas recomendadas
Reglas Personalizadas
Puede crear su propia regla de secretlint.
Si desea obtener una regla de secretlint adecuada para su proyecto, ¡puede crearla! Una regla de secretlint es simplemente un paquete npm.
Si desea saber cómo crear una regla de secretlint, consulte docs/secretlint-rule.md.
Integraciones
Hook de Pre-commit por Proyecto
Puede usar Secretlint con alguna herramienta de pre-commit. Esto puede prevenir la confirmación (commit) de datos secretos mediante el linting con Secretlint.
Aplicar secretlint al proyecto y mejorar la seguridad en el desarrollo en equipo.
Husky + lint-staged
Caso de uso: Si desea introducir secretlint en un proyecto Node.js, esta combinación es útil.
Instale Husky y lint-staged:``` npx husky-init && npm install lint-staged --save-dev
Añade hooks a `.husky/pre-commit`:```
npx husky add .husky/pre-commit "npx --no-install lint-staged"
Editar package.json:```json5
{
// add "lint-staged" field
"lint-staged": {
"*": [
"secretlint --no-glob"
]
}
}
> **Nota:** La bandera `--no-glob` es necesaria porque lint-staged pasa rutas de archivos literales que pueden contener caracteres especiales de glob (por ejemplo, patrones de enrutamiento `(group)` o `[param]` utilizados por Next.js, SvelteKit, etc.).
Esto significa que se revisa cada archivo preparado por Secretlint antes del commit.
#### [pre-commit](https://github.com/pre-commit/pre-commit)
**Caso de uso:** Tienes un proyecto que se está desarrollando con Docker. Fácil de integrar con secretlint.
Instalar [pre-commit](https://pre-commit.com/#install)
# macOS. see also https://pre-commit.com/#install
brew install pre-commit
Crear `.pre-commit-config.yaml`:```
- repo: local
hooks:
- id: secretlint
name: secretlint
language: docker_image
entry: secretlint/secretlint:latest secretlint
Ejemplo de repositorio de configuración:
Script Bash
Alternativamente, puede guardar este script como .git/hooks/pre-commit y darle permiso de ejecución (chmod +x .git/hooks/pre-commit):```bash
#!/bin/sh
FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\ |g')
[ -z "$FILES" ] && exit 0
Secretlint all selected files
echo "$FILES" | xargs ./node_modules/.bin/secretlint --no-glob
If you using docker
echo "$FILES" | xargs docker run -v pwd:pwd -w pwd --rm secretlint/secretlint secretlint
RET=$? if [ $RET -eq 0 ] ;then exit 0 else exit 1 fi
### Pre-commit Hook globalmente
**Caso de uso:** Si deseas revisar cualquier proyecto con secretlint, puedes usar hooks de git globales.
[Git 2.9+](https://github.blog/2016-06-13-git-2-9-has-been-released/) admite [`core.hooksPath`](https://git-scm.com/docs/githooks).
Permite integrar secretlint globalmente.
Hemos creado un proyecto de ejemplo de git hooks usando secretlint + Docker.
- [secretlint/git-hooks](https://github.com/secretlint/git-hooks)
- Requisito: Docker
Puedes configurarlo siguiendo los siguientes pasos:```shell script
# clone this repository
git clone https://github.com/secretlint/git-hooks git-hooks
cd git-hooks
# integrate secretlint to git hook globally
git config --global core.hooksPath $(pwd)/hooks
Después de configurar core.hooksPath, secretlint verifica cualquier archivo antes de que lo confirmes.
Para más detalles, consulta el proyecto secretlint/git-hooks.
La versión de Node.js también se puede usar para el hook global de git. Si estás interesado, consulta @azu/git-hooks.
CI
GitHub Actions
Si ya configuraste secretlint Usando Node.js, puedes ejecutar secretlint con tu configuración en GitHub Actions.
Coloca .github/workflows/secretlint.yml en tu repositorio.```yaml
name: Secretlint
on: [push, pull_request]
permissions:
contents: read
jobs:
test:
name: "Secretlint"
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: setup Node.js
uses: actions/setup-node@v3
with:
node-version: 22
- name: Install
run: npm ci
- name: Lint with Secretlint
run: npx secretlint "**/*"
##### `--format github` para anotaciones en Pull Requests
Puedes usar `--format github` para mostrar errores de lint como anotaciones en los archivos de la Pull Request.
Este formateador genera [comandos de flujo de trabajo de GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) que muestran anotaciones de error directamente en los archivos modificados de tu Pull Request.```yaml
- name: Lint with Secretlint
run: npx secretlint --format github "**/*"
Esta configuración integra las anotaciones de revisión de Pull Request.

- Repositorio de ejemplo: https://github.com/secretlint/secretlint-github-actions-example
- Pull Request de ejemplo: https://github.com/secretlint/secretlint-github-actions-example/pull/1/files
Si solo desea verificar archivos diff, consulte el siguiente ejemplo:```yaml name: test-diff on: push: pull_request: jobs: test-diff: permissions: contents: read name: "Run secretlint to diff files" runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v4 with: # fetch history to get all changed files on push or pull_request event fetch-depth: 0 - name: Get changed files id: changed-files uses: tj-actions/changed-files@v44 with: quotepath: "false" - name: setup Node ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: 22 - name: Show changed files run: echo "${{ steps.changed-files.outputs.all_changed_files }}" - name: Install if: steps.changed-files.outputs.any_changed == 'true' run: npm ci - name: Run secretlint if: steps.changed-files.outputs.any_changed == 'true' run: npx secretlint --no-glob ${{ steps.changed-files.outputs.all_changed_files }}
#### Mega-Linter
[Mega-Linter](https://nvuillam.github.io/mega-linter/) es un agregador de linters compatible de forma nativa con cualquier herramienta de CI, que incluye [más de 80 aplicaciones de linting](https://nvuillam.github.io/mega-linter/supported-linters/), incluyendo [**secretlint**](https://nvuillam.github.io/mega-linter/descriptors/credentials_secretlint/) por defecto.
Puedes [instalarlo](https://nvuillam.github.io/mega-linter/installation/) en cualquier proyecto de repositorio usando el siguiente comando (Node.js debe estar instalado previamente)```shell
npx mega-linter-runner --install

Navegador
Secretlint WebExtension funciona en tu navegador.
- Firefox: https://addons.mozilla.org/ja/firefox/addon/secretlint/
- Chrome: https://chrome.google.com/webstore/detail/secretlint/hidpojbnemkajlnibhmeilpgoddkjjkf
Esta extensión web tiene como objetivo encontrar credenciales que estén incluidas en tu solicitud/respuesta.

Secretlint WebExtension se integra en DevTools de Chrome/Firefox. Esta extensión ayuda a los desarrolladores web a detectar credenciales expuestas.
macOS
SecureClipboard es una aplicación de la barra de menú de macOS que utiliza Secretlint para detectar y ocultar secretos en tu portapapeles antes de que se peguen en otro lugar.
Otros
Soporte de formato SARIF
Utilice @secretlint/secretlint-formatter-sarif.``` npm install @secretlint/secretlint-formatter-sarif --dev secretlint --format @secretlint/secretlint-formatter-sarif "**/*"
## Política de Versionado Semántico
El proyecto Secretlint sigue [Versionado Semántico](https://semver.org/ "Semantic Versioning") ([secretlint-rule-preset-canary](https://github.com/secretlint/secretlint/blob/HEAD/packages/@secretlint/secretlint-rule-preset-canary) es una excepción).
- Versión de Parche (diseñada para no romper tu compilación de lint)
- Una corrección de errores en la CLI o el núcleo (incluyendo formateadores).
- Mejoras en la documentación.
- Cambios no visibles para el usuario, como refactorización.
- Volver a publicar después de una publicación fallida (es decir, publicar una versión que no funciona para nadie).
- Versión Menor (podría romper tu compilación de lint)
- Una nueva opción.
- Una regla existente queda obsoleta.
- Se crea una nueva capacidad de la CLI.
- Se agregan nuevas API públicas (nuevas clases, nuevos métodos, nuevos argumentos para métodos existentes, etc.).
- Podría romper las definiciones de TypeScript
- Se crea un nuevo formateador.
- Versión Mayor (rompe tu compilación de lint)
- Una nueva opción para una regla existente que resulta en que secretlint reporte más errores por defecto.
- Se elimina un formateador existente.
- Se agrega una nueva regla predeterminada al conjunto de reglas.
- Se elimina o cambia parte de la API pública de forma incompatible.
## Motivación
- [git-secrets](https://github.com/awslabs/git-secrets) es útil, pero es difícil de configurar por proyecto.
- Su principal caso de uso es la instalación global.
- Secretlint quiere instalarse para un proyecto y personalizar la configuración por proyecto.
- [repo-security-scanner](https://github.com/UKHomeOffice/repo-security-scanner), [Gitleaks](https://github.com/zricethezav/gitleaks) y [truffleHog](https://github.com/dxa4481/truffleHog) son buenas herramientas de escaneo.
- Secretlint necesita personalización flexible que incluya definiciones de ignorado y reglas personalizadas.
- [detect-secrets](https://github.com/Yelp/detect-secrets) es una herramienta similar, pero adopta un enfoque de exclusión voluntaria.
- Secretlint adopta un enfoque de inclusión voluntaria.
- También necesitamos reglas personalizadas por el usuario.
- Ver [Bring-your own-plugins (BYOP), via --custom-plugins option by KevinHock · Pull Request #255 · Yelp/detect-secrets](https://github.com/Yelp/detect-secrets/pull/255)
- GitHub admite [escaneo de secretos](https://docs.github.com/en/code-security/secret-security/about-secret-scanning), pero solo funciona después del commit [~~push~~](https://docs.github.com/en/code-security/secret-scanning/push-protection-for-users).
- Secretlint funciona en tu máquina local, Secretlint puede prevenir el commit.
## Filosofía
- Reducir falsos positivos del linting.
- Integración con el flujo de trabajo de desarrollo.
- Capacitar a los usuarios para contribuir.
### Inclusión voluntaria en lugar de exclusión voluntaria
Secretlint adopta un enfoque de inclusión voluntaria.
En nuestra experiencia, las herramientas de linting que reportan varios errores por defecto son difíciles de usar.
El enfoque de inclusión voluntaria ayuda a introducir Secretlint de forma incremental.
Ayudará a reducir los falsos positivos mediante la configuración.
### Regla como Documentación
Consideramos una regla como una documentación.
Por lo tanto, cada regla debe tener una documentación razonable.
Necesitamos describir por qué este archivo es un error.
Una regla que no tiene documentación es simplemente dogmática.
Describe la razón del error y eso llevará a reducir los errores falsos positivos.
Además, la CLI de Secretlint admite hipervínculos en la terminal.
Significa que puedes saltar a la documentación de la regla directamente desde el mensaje de error de lint.

> Ejemplo en iTerm 2: Cmd + clic en el messageId del error y abre [AWSSecretAccessKey](https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/secretlint-rule-aws/README.md#awssecretaccesskey) en tu navegador.
Si quieres conocer la compatibilidad de terminales, consulta [Hyperlinks in Terminal Emulators](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda).
Además, ¡Bienvenida la contribución a la documentación de secretlint!
### ¿Por qué Node.js?
- Gestor de Paquetes
- Se requiere un gestor de paquetes para realizar un sistema flexible de complementos.
- Node.js tiene npm y pnpm como gestor de paquetes.
- El gestor de paquetes ayuda a instalar complementos/reglas personalizados por el usuario.
- Existen Implementaciones de Referencia
- Node.js ya tiene herramientas de linting con complementos como ESLint, textlint, stylelint, etc.
- Por lo tanto, los usuarios de Node.js están familiarizados con herramientas de linting con complementos.
- Anteriormente, creé textlint con el mismo enfoque, por lo que estoy familiarizado con Node.js.
- Usuarios
- JavaScript es un lenguaje popular.
- Capacita a los usuarios para contribuir.
- Los usuarios pueden crear sus propias reglas con sus propias manos.
Por supuesto, secretlint también es compatible con [Docker](https://hub.docker.com/r/secretlint/secretlint).
## Registro de Cambios
Ver [página de versiones](https://github.com/secretlint/secretlint/releases).
## Contribuir
Las solicitudes de extracción y las estrellas son siempre bienvenidas.
Para errores y solicitudes de características, [por favor crea un issue](https://github.com/secretlint/secretlint/issues).
Ver también, [CONTRIBUTING.md](https://github.com/secretlint/secretlint/blob/HEAD/CONTRIBUTING.md) y [CODE_OF_CONDUCT.md](https://github.com/secretlint/secretlint/blob/HEAD/CODE_OF_CONDUCT.md)
### Añadir Nueva Regla
Puedes usar el comando `pnpm run gen:rule` para crear una nueva regla.```shell script
pnpm run gen:rule
Para más detalles, por favor consulte CONTRIBUTING.md
Benchmark
El flujo de trabajo de Benchmark se ejecuta en cada commit.
Autor
Licencia
MIT © azu