Badges Dinámicos para Proyectos - Guía Completa
Autor: Abkrim
Última actualización: 31 Diciembre 2025
Propósito: Documentación unificada de badges para todos los proyectos
Índice
- Plantilla Base Adaptable
- Badges por Categoría
- Servicios Externos
- Ejemplos Completos
- Soluciones Especiales
- Checklist de Configuración
Plantilla Base Adaptable
<!-- PROJECT HEADER -->
# {NOMBRE_PROYECTO}
<!-- BADGES: Información del Paquete -->
[](https://packagist.org/packages/{vendor}/{package})
[](https://packagist.org/packages/{vendor}/{package})
[](https://packagist.org/packages/{vendor}/{package})
<!-- BADGES: Estado de CI/CD -->
[](https://github.com/{vendor}/{repo}/actions?query=workflow%3Arun-tests+branch%3Amain)
[](https://github.com/{vendor}/{repo}/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain)
[](https://github.com/{vendor}/{repo}/actions/workflows/phpstan.yml)
<!-- BADGES: Calidad de Código -->
[](https://phpstan.org/)
[](https://codecov.io/gh/{vendor}/{repo})
[](https://codeclimate.com/github/{vendor}/{repo})
[](https://codeclimate.com/github/{vendor}/{repo})
<!-- BADGES: Requisitos Técnicos -->
[](https://packagist.org/packages/{vendor}/{package})
[](https://laravel.com)
<!-- BADGES: Stack Tecnológico -->
[](https://www.rabbitmq.com/)
[](https://www.elastic.co/)
[](https://redis.io/)
[](https://www.postgresql.org/)
<!-- BADGES: Estado del Repositorio -->
[](https://github.com/{vendor}/{repo}/commits)
[](https://github.com/{vendor}/{repo}/graphs/commit-activity)
[](https://github.com/{vendor}/{repo}/issues)
[](https://github.com/{vendor}/{repo}/pulls)
<!-- BADGES: Estado del Proyecto -->
[](https://www.repostatus.org/#active)
[](https://github.com/{vendor}/{repo}/graphs/commit-activity)
[](LICENSE.md)
<!-- BADGES: Comunidad -->
[](https://github.com/{vendor}/{repo}/stargazers)
[](https://github.com/{vendor}/{repo}/network/members)
[](https://github.com/{vendor}/{repo}/graphs/contributors)
<!-- BADGES: Seguridad -->
[](https://snyk.io/)
[](https://snyk.io/test/github/{vendor}/{repo})
Variables a reemplazar
| Variable | Ejemplo | Descripción |
|---|---|---|
{vendor} |
AichaDigital |
Nombre de la organización/vendor |
{repo} |
lara-verifactu |
Nombre del repositorio |
{package} |
aichadigital/lara-verifactu |
Nombre completo del paquete en Packagist |
Badges por Categoría
1. Información del Paquete (Packagist)
Versión y Descargas
<!-- Versión estable actual -->
[](https://packagist.org/packages/{vendor}/{package})
<!-- Versión pre-release -->
[](https://packagist.org/packages/{vendor}/{package})
<!-- Descargas totales -->
[](https://packagist.org/packages/{vendor}/{package})
<!-- Descargas mensuales -->
[](https://packagist.org/packages/{vendor}/{package})
<!-- Descargas diarias -->
[](https://packagist.org/packages/{vendor}/{package})
<!-- Licencia desde Packagist -->
[](https://packagist.org/packages/{vendor}/{package})
Configuración
- URL: https://packagist.org/
- Requisitos: Paquete publicado en Packagist
- Actualización: Automática tras cada release
- Costo: Gratuito
2. CI/CD y Tests (GitHub Actions)
Workflows Estándar
<!-- Tests generales -->
[](https://github.com/{vendor}/{repo}/actions/workflows/run-tests.yml)
<!-- Code Style (Pint/PHP-CS-Fixer) -->
[](https://github.com/{vendor}/{repo}/actions/workflows/fix-php-code-style-issues.yml)
<!-- PHPStan -->
[](https://github.com/{vendor}/{repo}/actions/workflows/phpstan.yml)
<!-- Pest/PHPUnit -->
[](https://github.com/{vendor}/{repo}/actions/workflows/tests.yml)
<!-- Build Status (genérico) -->
[](https://github.com/{vendor}/{repo}/actions)
<!-- Estado específico de workflow con parámetros -->
[](https://github.com/{vendor}/{repo}/actions/workflows/run-tests.yml)
Configuración
- Ubicación:
.github/workflows/*.yml - Requisitos: Workflows activos en GitHub Actions
- Actualización: Automática en cada push/PR
- Costo: Gratuito para repos públicos
Ejemplo de workflow mínimo:
# .github/workflows/run-tests.yml
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
- run: composer install
- run: vendor/bin/pest
3. Calidad de Código
PHPStan (Badges Manuales)
<!-- Level específico (0-9) - ACTUALIZAR MANUALMENTE -->
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
[](https://phpstan.org/)
<!-- Max Level (para proyectos con level 9) -->
[](https://phpstan.org/)
<!-- Badge con workflow dinámico (muestra estado del workflow) -->
[](https://github.com/{vendor}/{repo}/actions/workflows/phpstan.yml)
Nota importante: PHPStan no tiene badge oficial dinámico que lea el level automáticamente. Debes actualizar el badge manualmente cuando cambies el level. Ver Solución Custom para PHPStan más abajo.
Codecov
<!-- Badge básico -->
[](https://codecov.io/gh/{vendor}/{repo})
<!-- Con token (para repos privados) -->
[](https://codecov.io/gh/{vendor}/{repo})
<!-- Badge con porcentaje visible -->
[](https://codecov.io/gh/{vendor}/{repo})
Configuración:
-
Crear cuenta en https://codecov.io/
-
Vincular repositorio
-
Obtener token (Settings > Repository > Upload Token)
-
Añadir token a GitHub Secrets:
CODECOV_TOKEN -
Configurar workflow:
# .github/workflows/tests.yml
- name: Run tests with coverage
run: vendor/bin/pest --coverage --coverage-clover=coverage.xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage.xml
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
Costo: Gratuito para repos open source
Code Climate
<!-- Maintainability -->
[](https://codeclimate.com/github/{vendor}/{repo}/maintainability)
<!-- Test Coverage -->
[](https://codeclimate.com/github/{vendor}/{repo}/test_coverage)
<!-- Technical Debt -->
[](https://codeclimate.com/github/{vendor}/{repo})
<!-- Badge de issues -->
[](https://codeclimate.com/github/{vendor}/{repo}/issues)
Configuración:
-
Crear cuenta en https://codeclimate.com/
-
Conectar repositorio
-
Obtener
badge_iddel dashboard (Repo Settings > Badges) -
Crear
.codeclimate.yml:
version: "2"
checks:
argument-count:
enabled: true
config:
threshold: 4
complex-logic:
enabled: true
method-complexity:
enabled: true
config:
threshold: 10
method-lines:
enabled: true
config:
threshold: 50
Costo: Gratuito para repos open source
Scrutinizer
<!-- Quality Score -->
[](https://scrutinizer-ci.com/g/{vendor}/{repo}/?branch=main)
<!-- Coverage -->
[](https://scrutinizer-ci.com/g/{vendor}/{repo}/?branch=main)
<!-- Build Status -->
[](https://scrutinizer-ci.com/g/{vendor}/{repo}/build-status/main)
Configuración:
- URL: https://scrutinizer-ci.com/
- Requisitos: Conectar repo, configurar
.scrutinizer.yml - Costo: Gratuito para repos open source
SonarCloud
<!-- Quality Gate Status -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Bugs -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Code Smells -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Coverage -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Duplicated Lines -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Technical Debt -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Vulnerabilities -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Security Rating -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Maintainability Rating -->
[](https://sonarcloud.io/dashboard?id={project_key})
<!-- Reliability Rating -->
[](https://sonarcloud.io/dashboard?id={project_key})
Configuración:
- URL: https://sonarcloud.io/
- Requisitos: Vincular con GitHub/GitLab, configurar
sonar-project.properties - Costo: Gratuito para repos open source
4. Requisitos Técnicos
<!-- PHP Version (desde composer.json - DINÁMICO) -->
[](https://packagist.org/packages/{vendor}/{package})
<!-- PHP Version específica (manual) -->
[](https://www.php.net/)
[](https://www.php.net/)
<!-- Laravel Version (manual) -->
[](https://laravel.com)
[](https://laravel.com)
<!-- Versión múltiple de Laravel -->
[](https://laravel.com)
<!-- Composer Version -->
[](https://getcomposer.org/)
<!-- Node.js (si aplica) -->
[](https://nodejs.org/)
Nota: El badge de PHP desde Packagist lee automáticamente el require.php de composer.json.
5. Stack Tecnológico
Bases de Datos
<!-- MySQL -->
[](https://www.mysql.com/)
[](https://www.mysql.com/)
<!-- PostgreSQL -->
[](https://www.postgresql.org/)
[](https://www.postgresql.org/)
<!-- MariaDB -->
[](https://mariadb.org/)
<!-- SQLite -->
[](https://www.sqlite.org/)
<!-- MongoDB -->
[](https://www.mongodb.com/)
Message Queues
<!-- RabbitMQ -->
[](https://www.rabbitmq.com/)
<!-- Apache Kafka -->
[](https://kafka.apache.org/)
<!-- AWS SQS -->
[](https://aws.amazon.com/sqs/)
Cache y Storage
<!-- Redis -->
[](https://redis.io/)
<!-- Memcached -->
[](https://memcached.org/)
<!-- MinIO -->
[](https://min.io/)
Search Engines
<!-- Elasticsearch -->
[](https://www.elastic.co/)
<!-- Algolia -->
[](https://www.algolia.com/)
<!-- MeiliSearch -->
[](https://www.meilisearch.com/)
<!-- Typesense -->
[](https://typesense.org/)
Frontend (si aplica)
<!-- Vue.js -->
[](https://vuejs.org/)
<!-- React -->
[](https://reactjs.org/)
<!-- Alpine.js -->
[](https://alpinejs.dev/)
<!-- Livewire -->
[](https://livewire.laravel.com/)
<!-- Inertia.js -->
[](https://inertiajs.com/)
<!-- Tailwind CSS -->
[](https://tailwindcss.com/)
<!-- Bootstrap -->
[](https://getbootstrap.com/)
DevOps y Contenedores
<!-- Docker -->
[](https://www.docker.com/)
<!-- Kubernetes -->
[](https://kubernetes.io/)
<!-- Proxmox -->
[](https://www.proxmox.com/)
<!-- GitHub Actions -->
[](https://github.com/features/actions)
<!-- GitLab CI -->
[](https://docs.gitlab.com/ee/ci/)
6. Estado del Repositorio
<!-- Último commit (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/commits)
<!-- Actividad de commits mensual (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/graphs/commit-activity)
<!-- Actividad de commits semanal (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/graphs/commit-activity)
<!-- Actividad de commits anual (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/graphs/commit-activity)
<!-- Issues abiertas (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/issues)
<!-- Issues cerradas (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/issues?q=is%3Aissue+is%3Aclosed)
<!-- Pull Requests abiertas (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/pulls)
<!-- Pull Requests cerradas (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/pulls?q=is%3Apr+is%3Aclosed)
<!-- Tamaño del repositorio (DINÁMICO) -->
[](https://github.com/{vendor}/{repo})
<!-- Lenguaje principal (DINÁMICO) -->
[](https://github.com/{vendor}/{repo})
<!-- Conteo de lenguajes (DINÁMICO) -->
[](https://github.com/{vendor}/{repo})
<!-- Última release (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/releases/latest)
<!-- Release date (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/releases)
7. Estado del Proyecto (dinámicos)
RepoStatus.org (Estados Oficiales)
<!-- Active: Proyecto activo con desarrollo regular -->
[](https://www.repostatus.org/#active)
<!-- WIP: Work In Progress, funcional pero en desarrollo -->
[](https://www.repostatus.org/#wip)
<!-- Suspended: Temporalmente detenido -->
[](https://www.repostatus.org/#suspended)
<!-- Abandoned: No mantenido -->
[](https://www.repostatus.org/#abandoned)
<!-- Moved: Repositorio movido a otra ubicación -->
[](https://www.repostatus.org/#moved)
<!-- Inactive: Funcional pero no mantenido activamente -->
[](https://www.repostatus.org/#inactive)
<!-- Unsupported: Funcional pero sin soporte -->
[](https://www.repostatus.org/#unsupported)
<!-- Concept: En fase de concepto -->
[](https://www.repostatus.org/#concept)
URL: https://www.repostatus.org/
Actualización: Manual (copiar el badge apropiado)
Maintenance Status (Año específico)
<!-- Mantenido actualmente (cambiar año según corresponda) -->
[](https://github.com/{vendor}/{repo})
<!-- No mantenido -->
[](https://github.com/{vendor}/{repo})
Nota: Actualizar el año anualmente.
8. Licencia
<!-- Licencia desde GitHub (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/blob/main/LICENSE.md)
<!-- MIT -->
[](https://opensource.org/licenses/MIT)
<!-- GPL v3 -->
[](https://www.gnu.org/licenses/gpl-3.0)
<!-- Apache 2.0 -->
[](https://opensource.org/licenses/Apache-2.0)
<!-- BSD 3-Clause -->
[](https://opensource.org/licenses/BSD-3-Clause)
<!-- ISC -->
[](https://opensource.org/licenses/ISC)
<!-- Propietaria -->
[](LICENSE.md)
9. Comunidad
<!-- Stars (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/stargazers)
<!-- Forks (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/network/members)
<!-- Watchers (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/watchers)
<!-- Contributors (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/graphs/contributors)
<!-- Discussions (DINÁMICO) -->
[](https://github.com/{vendor}/{repo}/discussions)
<!-- Sponsors -->
[](https://github.com/sponsors/{vendor})
<!-- Discord -->
[](https://discord.gg/{invite_code})
<!-- Slack -->
[](https://join.slack.com/...)
<!-- Twitter -->
[](https://twitter.com/{handle})
10. Seguridad
<!-- Snyk (DINÁMICO) -->
[](https://snyk.io/test/github/{vendor}/{repo})
<!-- Dependabot (manual) -->
[](https://github.com/{vendor}/{repo}/network/dependencies)
<!-- Security Policy (manual) -->
[](https://github.com/{vendor}/{repo}/security/policy)
<!-- OSSF Best Practices (DINÁMICO tras registro) -->
[](https://bestpractices.coreinfrastructure.org/projects/{project_id})
<!-- OSSF Scorecard -->
[](https://api.securityscorecards.dev/projects/github.com/{vendor}/{repo})
Configuración Snyk:
-
Crear cuenta en https://snyk.io/
-
Conectar repositorio
-
Badge aparece automáticamente
Costo: Gratuito para repos open source
11. Documentación
<!-- ReadTheDocs (DINÁMICO) -->
[](https://{project}.readthedocs.io/en/latest/)
<!-- GitHub Pages (manual) -->
[](https://{vendor}.github.io/{repo}/)
<!-- Wiki (manual) -->
[](https://github.com/{vendor}/{repo}/wiki)
<!-- Gitbook -->
[](https://{organization}.gitbook.io/{project}/)
<!-- Badge de "docs" personalizado -->
[](https://docs.{domain}.com)
Servicios Externos Recomendados
| Servicio | Propósito | URL | API Key | Costo OSS | Configuración |
|---|---|---|---|---|---|
| Packagist | Stats de paquetes PHP | https://packagist.org/ | No | Gratis | Automático tras publish |
| Codecov | Code Coverage | https://codecov.io/ | Sí | Gratis | Token en GitHub Secrets |
| Code Climate | Calidad de código | https://codeclimate.com/ | Sí | Gratis | Conectar repo + .codeclimate.yml |
| Scrutinizer | Análisis estático | https://scrutinizer-ci.com/ | No | Gratis | Conectar + .scrutinizer.yml |
| SonarCloud | Análisis de seguridad | https://sonarcloud.io/ | Sí | Gratis | sonar-project.properties |
| Snyk | Vulnerabilidades | https://snyk.io/ | Sí | Gratis | Conectar repositorio |
| Shields.io | Badges personalizados | https://shields.io/ | No | Gratis | - |
| RepoStatus.org | Estado del proyecto | https://www.repostatus.org/ | No | Gratis | - |
| OSSF | Security Scorecard | https://securityscorecards.dev/ | No | Gratis | Configurar workflow |
Ejemplos Completos por Tipo de Proyecto
Ejemplo 1: Paquete Laravel con Testing Completo
# Lara-Verifactu
> Paquete Laravel para integración con el sistema VeriFactu de la AEAT
[](https://packagist.org/packages/aichadigital/lara-verifactu)
[](https://packagist.org/packages/aichadigital/lara-verifactu)
[](https://github.com/AichaDigital/lara-verifactu/actions/workflows/run-tests.yml)
[](https://phpstan.org/)
[](https://codecov.io/gh/AichaDigital/lara-verifactu)
[](https://packagist.org/packages/aichadigital/lara-verifactu)
[](https://laravel.com)
[](LICENSE.md)
## Instalación
\```bash
composer require aichadigital/lara-verifactu
\```
Ejemplo 2: Proyecto Laravel con Stack Completo
# Sistema de Subastas Online
> Plataforma empresarial para subastas en tiempo real
[](https://www.repostatus.org/#active)
[](https://github.com/AichaDigital/subastas-app)
[](https://github.com/AichaDigital/subastas-app/actions/workflows/tests.yml)
[](https://github.com/AichaDigital/subastas-app/commits)
**Stack Tecnológico:**
[](https://www.php.net/)
[](https://laravel.com)
[](https://livewire.laravel.com/)
**Infraestructura:**
[](https://www.postgresql.org/)
[](https://redis.io/)
[](https://www.rabbitmq.com/)
[](https://www.elastic.co/)
[](LICENSE.md)
Ejemplo 3: Paquete PHP Standalone
# PHP-Utils
> Utilidades PHP para proyectos empresariales
[](https://packagist.org/packages/xerintel/php-utils)
[](https://www.php.net/)
[](https://github.com/xerintel/php-utils/actions/workflows/tests.yml)
[](https://phpstan.org/)
[](LICENSE.md)
Ejemplo 4: Proyecto con Monitorización y Seguridad
# Enterprise CRM
[](https://www.repostatus.org/#active)
[](https://github.com/empresa/crm/actions)
[](https://snyk.io/test/github/empresa/crm)
**Calidad:**
[](https://codecov.io/gh/empresa/crm)
[](https://codeclimate.com/github/empresa/crm)
[](https://sonarcloud.io/dashboard?id=empresa_crm)
**Stack:**
[](https://laravel.com)
[](https://vuejs.org/)
[](https://www.mysql.com/)
Soluciones Especiales
Badge Dinámico para PHPStan (Solución Custom)
Como PHPStan no ofrece badges dinámicos oficiales, aquí hay una solución mediante GitHub Actions:
Opción 1: Badge con GitHub Actions Status
# .github/workflows/phpstan-badge.yml
name: PHPStan Badge
on:
push:
branches: [main]
pull_request:
jobs:
phpstan:
name: PHPStan Level Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
- name: Install dependencies
run: composer install --no-interaction
- name: Run PHPStan
run: vendor/bin/phpstan analyse --no-progress
Badge a usar:
[](https://github.com/{vendor}/{repo}/actions/workflows/phpstan-badge.yml)
Opción 2: Badge Dinámico con Gist (Avanzado)
# .github/workflows/phpstan-dynamic-badge.yml
name: PHPStan Dynamic Badge
on:
push:
branches: [main]
jobs:
badge:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
- name: Install dependencies
run: composer install --no-interaction
- name: Extract PHPStan Level
id: level
run: |
if [ -f phpstan.neon ]; then
LEVEL=$(grep -oP "level: \K\d+" phpstan.neon || echo "0")
elif [ -f phpstan.neon.dist ]; then
LEVEL=$(grep -oP "level: \K\d+" phpstan.neon.dist || echo "0")
else
LEVEL="0"
fi
echo "level=$LEVEL" >> $GITHUB_OUTPUT
echo "PHPStan Level: $LEVEL"
- name: Create Badge
uses: schneegans/dynamic-badges-action@v1.7.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: YOUR_GIST_ID_HERE
filename: phpstan-${{ github.event.repository.name }}.json
label: PHPStan
message: level ${{ steps.level.outputs.level }}
color: brightgreen
Configuración:
-
Crear un GitHub Personal Access Token con scope
gist -
Añadirlo a GitHub Secrets como
GIST_SECRET -
Crear un Gist público en https://gist.github.com/
-
Copiar el Gist ID (última parte de la URL)
-
Reemplazar
YOUR_GIST_ID_HEREen el workflow
Badge a usar:
[](https://phpstan.org/)
Opción 3: Badge Manual (Más simple)
Si prefieres simplicidad, actualiza manualmente el badge cuando cambies el level:
<!-- Level 0 (rojo) -->
[](https://phpstan.org/)
<!-- Level 5 (verde) -->
[](https://phpstan.org/)
<!-- Level 8 (verde brillante) -->
[](https://phpstan.org/)
<!-- Level 9 / Max (verde brillante) -->
[](https://phpstan.org/)
[](https://phpstan.org/)
Colores recomendados por level:
- Level 0-2:
red - Level 3-4:
orangeoyellow - Level 5-6:
yellowgreenogreen - Level 7-9:
brightgreen
Badges Personalizados con Shields.io
Para crear badges totalmente personalizados:
<!-- Badge estático simple -->
[](https://example.com)
<!-- Ejemplos reales -->
[](https://www.proxmox.com/)
[](https://www.zabbix.com/)
[](https://www.nginx.com/)
<!-- Badge con endpoint dinámico -->
[](https://example.com)
Formato del endpoint JSON:
{
"schemaVersion": 1,
"label": "PHPStan",
"message": "level 9",
"color": "brightgreen",
"logoSvg": "<svg>...</svg>"
}
Documentación completa: https://shields.io/
Checklist de Configuración
Requisitos Básicos
- Repositorio público en GitHub
- Archivo
LICENSE.mdpresente - Archivo
README.mdcon badges -
.gitignoreconfigurado -
composer.jsoncon metadatos completos
Para Paquetes Packagist
- Publicado en https://packagist.org/
-
composer.jsoncon:-
namecorrecto -
descriptionclara -
licenseespecificada -
requirecon versiones de PHP -
autoloadconfigurado
-
- Tags/Releases versionados (semver)
Para GitHub Actions
- Workflows en
.github/workflows/ - Workflow para tests:
run-tests.yml - Workflow para code style:
fix-php-code-style-issues.yml - Workflow para PHPStan:
phpstan.yml - Secrets configurados (si se requieren)
Para Code Coverage
- Cuenta en Codecov.io vinculada
- Token añadido a GitHub Secrets:
CODECOV_TOKEN - Workflow configurado para subir coverage
- Tests generan archivo
coverage.xml
Para Calidad de Código
- Code Climate:
- Repo conectado
-
.codeclimate.ymlconfigurado - Badge ID obtenido
- Scrutinizer:
- Repo conectado
-
.scrutinizer.ymlconfigurado
- SonarCloud:
- Proyecto configurado
-
sonar-project.propertiescreado - Project key obtenido
Para Seguridad
- Snyk vinculado al repositorio
- Dependabot habilitado
-
SECURITY.mdpresente - Vulnerabilities monitorizadas
Para Testing
- Tests unitarios con PHPUnit o Pest
- PHPStan configurado (
phpstan.neon) - Code style configurado (Pint, PHP-CS-Fixer)
- Coverage mínimo definido
Documentación
-
README.mdcompleto -
CONTRIBUTING.md(si es open source) -
CHANGELOG.mdmantenido - PHPDoc en código
- Wiki o docs externas (opcional)
Referencias y Recursos
Documentación Oficial
- Shields.io: https://shields.io/
- Packagist: https://packagist.org/about
- GitHub Actions: https://docs.github.com/en/actions
- RepoStatus: https://www.repostatus.org/
Servicios de Calidad
- Codecov: https://docs.codecov.com/
- Code Climate: https://docs.codeclimate.com/
- Scrutinizer: https://scrutinizer-ci.com/docs/
- SonarCloud: https://docs.sonarcloud.io/
Herramientas de Testing
- PHPStan: https://phpstan.org/user-guide/getting-started
- Pest: https://pestphp.com/docs/
- PHPUnit: https://phpunit.de/documentation.html
- Laravel Pint: https://laravel.com/docs/11.x/pint
Seguridad
- Snyk: https://docs.snyk.io/
- Dependabot: https://docs.github.com/en/code-security/dependabot
- OSSF: https://github.com/ossf/scorecard
Mantenimiento de este Documento
- Responsable: Abkrim
- Frecuencia de revisión: Trimestral
- Última revisión: 31 Diciembre 2025
- Próxima revisión: Marzo 2026
Historial de Cambios
| Fecha | Versión | Cambios |
|---|---|---|
| 2025-12-31 | 1.0 | Creación del documento inicial |
Soporte
Para dudas o sugerencias sobre esta guía:
-
Abrir issue en el repositorio del proyecto
-
Consultar con el equipo de desarrollo
-
Revisar documentación oficial de cada servicio
Fin del documento