Skip to content
formatter-linter-expert logo

Formatter & Linter Expert Analyzer

formatter-linter-expert

Universal code formatter and linter analyzer for multi-ecosystem projects (Laravel/PHP, Bun/Node/TS/JS, React, Vue, Astro, Nuxt, Go, Rust, Deno) with intelligent asdf version management, auto-detection, and interactive workflows

SKILL.md

Full skill instructions

Formatter & Linter Expert Analyzer

Overview

A comprehensive, intelligent meta-formatter and linter system that automatically detects your project's ecosystem, respects asdf version management, and provides flexible formatting/​linting workflows across 9+ development environments.

When to use this skill:

  • "Analyze and format this Laravel project"
  • "Lint my TypeScript code"
  • "Check code style of this Go file"
  • "Format all PHP files with Pint"
  • "Quality report for this codebase"
  • "Run formatter on src/ directory"
  • "Interactive code cleanup"

What it does:

  1. Detects ecosystem automatically (Laravel, Bun/​Node, Go, Rust, Deno, etc.)
  2. Integrates with asdf to use project-specific tool versions from .tool-versions
  3. Finds configurations (auto-detect or use custom configs)
  4. Analyzes OR formats code based on your choice
  5. Generates comprehensive reports (Markdown + JSON export)
  6. Interactive mode for file-by-file review and approval

Supported Ecosystems

EcosystemFormatterLinterConfig Files
Laravel/​PHPLaravel Pint, PHP-CS-FixerPHPStanpint.json, .php-cs-fixer.php, phpstan.neon
Bun/​Node/​TS/​JSPrettier, BiomeESLint, Biome.prettierrc, biome.json, .eslintrc*
React/​Vue/​Astro/​NuxtPrettier, BiomeESLint + framework pluginsFramework-specific configs
Gogofmt, goimportsgolangci-lint.golangci.yml
Rustrustfmtclippyrustfmt.toml, clippy.toml
Denodeno fmtdeno lintdeno.json, deno.jsonc

Prerequisites

Required:

  • Python 3.9+ (for skill scripts)
  • Ecosystem-specific tools installed (see below)

Optional but Recommended:

Ecosystem-specific tools:

  • PHP: composer global require laravel/​pint, composer global require friendsofphp/​php-cs-fixer
  • JavaScript/​TypeScript: npm install -g prettier eslint @biomejs/​biome or bun add -g prettier eslint @biomejs/​biome
  • Go: go install golang.org/​x/​tools/​cmd/​goimports@latest, go install github.com/​golangci/​golangci-lint/​cmd/​golangci-lint@latest
  • Rust: rustfmt and clippy (included with rustup)
  • Deno: deno cli (includes fmt and lint)

Instructions

Step 1: Invoke the Skill

Activate the skill naturally:

"Analyze this Laravel project"
"Format all TypeScript files"
"Lint and report on src/ directory"
"Interactive format for Go code"

Step 2: Environment Detection

The skill will automatically:

  1. Search for .tool-versions (asdf integration)

    # Reads versions from current dir up to $HOME
    php 8.2.0
    nodejs 20.10.0
    golang 1.21.0
    
  2. Detect ecosystem via file markers:

    • composer.json + artisan → Laravel
    • package.json + bun.lockb → Bun/​*
    • go.mod → Go
    • Cargo.toml → Rust
    • deno.json → Deno
  3. Find framework (if JavaScript/​TypeScript):

    • Check package.json dependencies for react, vue, astro, nuxt
  4. Locate configurations:

    • Auto-detect: pint.json, .eslintrc, .prettierrc, etc.
    • Custom: User can provide path
    • Fallback: Use skill's default configs

Step 3: Choose Operation Mode

Mode A: Analyze Only (default if ambiguous)

Generate comprehensive report WITHOUT modifying files
→ Ideal for CI/​CD, code review, initial assessment

Mode B: Format (apply fixes directly)

Auto-fix all formatting issues
→ Fast, non-interactive, writes changes

Mode C: Interactive

Review and approve changes file-by-file
→ Safe, controlled, educational

Step 4: Execute Analysis/​Formatting

The skill orchestrates:

# Pseudo-workflow
python scripts/​main.py \
  --mode analyze \
  --scope project \
  --asdf-strict \
  --output markdown \
  --export-json report.json

Behind the scenes:

  1. Environment detection runs first
  2. Version validation checks asdf versions match
  3. Config resolution finds or uses defaults
  4. Formatter/​Linter execution runs ecosystem tools
  5. Report generation creates output

Step 5: Review Output

Analyze mode output:

# Code Quality Report

**Project:** my-laravel-app
**Environment:** Laravel 12 (PHP 8.2.0)
**Date:** 2025-10-30 14:23:45

## Summary
- Files analyzed: 127
- Issues found: 42
  - 🔴 Errors: 5
  - 🟡 Warnings: 15
  - 🔵 Info: 22

## Issues by Category
[Detailed breakdown...]

## Configuration Used
- Formatter: Laravel Pint
- Config: pint.json (detected)
- PHP Version: 8.2.0 (asdf)

## Recommendations
[Actionable next steps...]

Interactive mode prompt:

File: src/​Controllers/​UserController.php
Issues: 5 formatting, 2 linting

Preview of changes:
[diff display]

Apply fixes to this file? [y/​n/​s(kip)/​q(uit)]: _

Step 6: Handle Multiple Ecosystems

If multiple ecosystems detected (e.g., Laravel backend + Vue frontend):

🔍 Detected multiple ecosystems:
  1. Laravel/​PHP (app/, routes/, database/)
  2. Vue.js (resources/​js/)

→ Formatting BOTH ecosystems...

[Run PHP formatters on PHP files]
[Run JS formatters on JS/​Vue files]

Error Handling

Common Issues

ErrorCauseSolution
Tool not found: pintFormatter not installedInstall via composer global require laravel/​pint
asdf version mismatch.tool-versions version not installedRun asdf install
No ecosystem detectedNo recognizable file markersUse --env flag to specify manually
Config parsing failedInvalid configuration fileCheck config syntax or use --use-defaults
Permission deniedCannot write formatted filesCheck file permissions or run as appropriate user

asdf Integration Modes

Strict mode (default):

# Uses ONLY asdf versions, fails if not installed
--asdf-strict

Fallback mode:

# Tries asdf, falls back to system PATH if unavailable
--asdf-fallback

Report mode:

# Warns about version mismatch but continues
--asdf-warn

Examples

Example 1: Analyze Laravel Project

Input:

User: "Analyze and generate quality report for this Laravel API"

Execution:

# Skill detects:
# - Laravel 12 (composer.json + artisan)
# - PHP 8.2.0 from .tool-versions
# - Existing pint.json config

# Runs:
vendor/​bin/​pint --test --config pint.json
vendor/​bin/​phpstan analyze --level 5

# Outputs:
# report.md (detailed analysis)
# report.json (structured data)

Expected Output: Markdown report + JSON file showing 127 files analyzed, 42 issues categorized by severity.


Example 2: Format TypeScript with Biome

Input:

User: "Format all TypeScript files using Biome"

Execution:

# Skill detects:
# - TypeScript project (package.json with typescript dep)
# - Node 20.10.0 from .tool-versions
# - biome.json config present

# Runs:
biome format --write src/

# Outputs:
# Console: "✅ Formatted 45 files"

Example 3: Interactive Go Formatting

Input:

User: "Interactive format for Go files in cmd/ directory"

Execution:

# Skill detects:
# - Go project (go.mod)
# - Go 1.21.0 from .tool-versions
# - No config (uses defaults)

# Runs interactively:
# For each .go file:
#   - Shows gofmt diff
#   - Prompts: Apply? [y/​n/​s/​q]
#   - Applies only if 'y'

Interactive Flow:

File: cmd/​server/​main.go (3 formatting issues)

--- Original
+++ Formatted
@@ -15,7 +15,7 @@
-func main(){
+func main() {

Apply fixes? [y/​n/​s/​q]: y
✅ Applied

File: cmd/​worker/​worker.go (1 issue)
[...]

Example 4: Multi-Ecosystem Project (Laravel + Vue)

Input:

User: "Full project format - both backend and frontend"

Execution:

# Skill detects:
# - Laravel (composer.json)
# - Vue.js (package.json with vue dependency)
# - PHP 8.2.0 + Node 20.10.0 from .tool-versions

# Runs sequentially:
# 1. PHP formatting (Pint on app/, routes/, database/)
# 2. Vue formatting (Prettier on resources/​js/)

# Outputs:
# Combined report for both ecosystems

Output:

# Multi-Ecosystem Report

## PHP (Laravel)
- Files: 87
- Fixed: 12 formatting issues

## JavaScript (Vue)
- Files: 40
- Fixed: 8 formatting issues

Total: 127 files processed, 20 issues fixed

Advanced Usage

Custom Configuration Path

User: "Format with custom config at configs/​my-pint.json"

Skill will use --config configs/​my-pint.json flag.

Specific File/​Directory Scope

User: "Lint only the app/​Services/ directory"

Skill scopes analysis to that path only.

Export JSON for CI/​CD

User: "Generate JSON report for pipeline"

Outputs report.json:

{
  "project": "my-app",
  "timestamp": "2025-10-30T14:23:45Z",
  "environment": {
    "ecosystem": "laravel",
    "php_version": "8.2.0",
    "tools": ["pint", "phpstan"]
  },
  "summary": {
    "files_analyzed": 127,
    "issues": {
      "errors": 5,
      "warnings": 15,
      "info": 22
    }
  },
  "issues": [
    {
      "file": "app/​Http/​Controllers/​UserController.php",
      "line": 45,
      "severity": "error",
      "message": "Indentation incorrect",
      "rule": "PSR-12"
    }
  ],
  "exit_code": 1
}

Best Practices

✅ Do This

  1. Use asdf for version consistency across team
  2. Commit configs (.prettierrc, pint.json) to version control
  3. Run analyze first before formatting to understand impact
  4. Use interactive mode when learning or unsure about changes
  5. Export JSON for integration with CI/​CD pipelines
  6. Check exit codes in scripts (0 = clean, >0 = issues found)

⚠️ Avoid This

  1. Don't skip analyze - Always review before mass formatting
  2. Don't ignore version mismatches - Formatting can vary between tool versions
  3. Don't mix formatters - Pick one (Prettier vs Biome) and stick with it
  4. Don't format generated code - Exclude vendor/, node_modules/, dist/
  5. Don't commit without testing - Run tests after formatting

Troubleshooting

Issue: "No ecosystem detected"

Cause: Project lacks recognizable file markers

Fix:

# Manual specification
User: "Format this PHP project using Pint"
# Or create marker file
touch composer.json  # for PHP projects

Issue: "asdf: command not found"

Cause: asdf not installed or not in PATH

Fix:

# Install asdf
git clone https://github.com/​asdf-vm/​asdf.git ~/​.asdf --branch v0.14.0

# Add to shell
echo '. "$HOME/​.asdf/​asdf.sh"' >> ~/​.bashrc
source ~/​.bashrc

# Or use fallback mode
User: "Format with system tools (ignore asdf)"

Issue: "Version mismatch: PHP 8.2.0 not installed"

Cause: .tool-versions specifies version not installed via asdf

Fix:

# Install missing version
asdf plugin add php
asdf install php 8.2.0

# Or use fallback mode to use system PHP

Issue: "Config parsing error: Invalid JSON in biome.json"

Cause: Malformed configuration file

Fix:

# Validate JSON
cat biome.json | jq .

# Or use default config
User: "Format using default Biome config"

Technical Details

Architecture

User Request
    ↓
Environment Detector
    ├─ asdf Manager (version resolution)
    ├─ Config Finder (locate configs)
    └─ File Analyzer (detect ecosystem)
    ↓
Orchestrator
    ├─ PHP Formatter/​Linter
    ├─ JS Formatter/​Linter
    ├─ Go Formatter/​Linter
    ├─ Rust Formatter/​Linter
    └─ Deno Formatter/​Linter
    ↓
Reporter
    ├─ Markdown Report
    ├─ JSON Export
    └─ Console Output

Token Efficiency

  • Metadata load: ~500 tokens (always loaded in context)
  • Full instructions (this file): ~3,500 tokens (loaded on activation)
  • Script execution: 0 tokens (Python runs externally, only output returned)
  • Total skill overhead: ~4,000 tokens

Performance Considerations

  • Small projects (<100 files): ~5-10 seconds
  • Medium projects (100-500 files): ~30-60 seconds
  • Large projects (>500 files): 1-3 minutes

Optimization tips:

  • Use --scope to limit analysis to specific directories
  • Exclude large directories with --exclude node_modules,vendor
  • Run formatters in parallel for multi-ecosystem projects

Exit Codes

CodeMeaning
0Success - no issues found
1Formatting issues found (fixable)
2Linting warnings found
3Linting errors found (requires manual fix)
10Tool not found / not installed
11asdf version mismatch
12Configuration error
99Unknown error

Related Skills

No related skills detected in current environment

Maintenance

Version History:

  • v1.0.0 (2025-10-30) - Initial release with 9 ecosystem support

Roadmap:

  • Add Python support (black, ruff)
  • Add Swift support (swift-format)
  • Add Kotlin support (ktlint)
  • GitHub Actions integration
  • VS Code extension

Known Limitations:

  • Requires tools to be pre-installed (doesn't auto-install)
  • asdf integration tested on Unix-like systems only
  • Interactive mode not suitable for CI/​CD pipelines

Author: Created for personal cross-project use Created: 2025-10-30 License: Personal use


Quick Command Reference

# Analyze only (default)
"Analyze this project"

# Format directly
"Format all files"

# Interactive review
"Interactive format"

# Specific scope
"Lint the src/ directory"
"Format app/​Services/​PaymentService.php"

# Custom config
"Format using my custom Pint config at config/​pint.json"

# Export report
"Generate quality report with JSON export"

# Multi-ecosystem
"Format both PHP and Vue code"

# Ignore asdf
"Format using system tools"

Need Help?

  • Check tool installation: which pint, which prettier, etc.
  • Verify asdf setup: asdf current
  • Review config files: cat pint.json, cat .eslintrc
  • Test manually: vendor/​bin/​pint --test, prettier --check src/

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View