sinemacula/coding-standards

Centralized coding standards, static analysis configurations, and code quality tooling for all Sine Macula repositories.

Maintainers

Package info

github.com/sinemacula/coding-standards

Type:phpcodesniffer-standard

pkg:composer/sinemacula/coding-standards

Statistics

Installs: 587

Dependents: 8

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.6 2026-05-13 17:17 UTC

README

Latest Stable Version npm Version Maintainability Total Downloads

Centralized coding standards, static analysis configurations, and code quality tooling for all Sine Macula repositories.

This package ships config files only — no runtime dependencies. Consuming projects install the tools themselves.

Installation

Composer (PHP-side: PHP CS Fixer, PHPStan, PHPCS)

composer require --dev sinemacula/coding-standards

npm (JS-side: Biome, Knip)

npm install --save-dev @sinemacula/coding-standards

The npm package ships only the static configs (js/, markdown/, yaml/, shell/, security/). The PHP autoloaded code lives in the Composer package.

Usage

Each consuming project creates thin wrapper files at its root that reference the shared configs.

PHP CS Fixer

Create a .php-cs-fixer.dist.php at your project root:

<?php

use SineMacula\CodingStandards\PhpCsFixerConfig;

return PhpCsFixerConfig::make([
    __DIR__ . '/src',
    __DIR__ . '/tests',
]);

You can pass rule overrides as a second argument:

return PhpCsFixerConfig::make(
    [__DIR__ . '/src', __DIR__ . '/tests'],
    ['strict_comparison' => false],
);

PHPCS

The SineMacula coding standard is auto-discovered via the phpcodesniffer-standard composer type. Create a phpcs.xml at your project root:

<?xml version="1.0"?>
<ruleset name="Project">
    <rule ref="SineMacula"/>
    <file>src</file>
    <file>tests</file>
</ruleset>

PHPStan

The shared PHPStan configs are auto-included via the extra.phpstan.includes section in composer.json. Your project's phpstan.neon only needs project-specific settings:

parameters:
    level: 8
    paths:
        - src
        - tests

Laravel projects

Documentation for Laravel/Larastan integration is coming soon.

Biome (JavaScript / TypeScript)

After installing the npm package, extend the shared Biome config from your project's biome.json (or .qlty/configs/biome.json when wired through Qlty):

{
    "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
    "root": true,
    "extends": ["@sinemacula/coding-standards/js/biome.json"],
    "files": {
        "ignoreUnknown": true,
        "includes": ["**", "!**/node_modules/**", "!**/vendor/**"]
    }
}

extends paths are resolved through normal Node module lookup, so the package only needs to be installed (no path math against node_modules/ required). Project-specific files.includes and files.excludes stay in the consumer config.

Knip (JavaScript / TypeScript)

{
    "$schema": "https://unpkg.com/knip@6/schema.json",
    "extends": ["@sinemacula/coding-standards/js/knip.json"]
}

Qlty

Reference this repository as a source in your project's .qlty/qlty.toml:

[[source]]
name = "sinemacula"
repository = "https://github.com/sinemacula/coding-standards"
tag = "v1.0.0"

What's Included

Path Tool Description
src/PhpCsFixerConfig.php PHP CS Fixer Factory class for building PHP CS Fixer configurations
php/.php-cs-fixer.rules.php PHP CS Fixer Shared rules array (PSR-12 base + org conventions)
SineMacula/ruleset.xml PHPCS Auto-discovered coding standard (PSR-12 + exclusions)
php/phpstan.neon PHPStan Base config (org-wide ignored errors + settings)
js/biome.json Biome JavaScript / TypeScript formatter + linter rules
js/knip.json Knip Unused-export detection rules
markdown/.markdownlint.json markdownlint Markdown linting rules
yaml/.yamllint.yaml yamllint YAML linting rules
shell/.shellcheckrc ShellCheck Shell script linting rules
security/.gitleaks.toml Gitleaks Secret-detection ruleset

Contributing

Contributions are welcome via GitHub pull requests.

Security

If you discover a security issue, please contact Sine Macula directly rather than opening a public issue.

License

Licensed under the Apache License, Version 2.0.