skills-catalog/ln-740-quality-setup/SKILL.md
Sets up linters, pre-commit hooks, and test infrastructure. Use when adding code quality tooling to a project.
npx skillsauth add levnikolaevich/claude-code-skills ln-740-quality-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L2 Domain Coordinator Category: 7XX Project Bootstrap Parent: ln-700-project-bootstrap
Coordinates code quality tooling configuration for the project.
Does:
Does NOT:
| Trigger | Action | |---------|--------| | After ln-720-structure-migrator completes | Automatic delegation from ln-700 | | Manual quality setup needed | Invoke directly with project path | | Existing project needs quality tools | Run with existing config detection |
| Phase | Action | Output | |-------|--------|--------| | 1 | Stack Detection | Identified technologies | | 2 | Existing Config Check | Skip/merge/replace decisions | | 3 | Parallel Delegation | Worker invocations | | 4 | Verification | Working quality pipeline |
Detect project technologies to determine which quality tools to configure.
Detection Rules:
| File Pattern | Technology | Linter Stack |
|--------------|------------|--------------|
| package.json + tsconfig.json | TypeScript/React | ESLint + Prettier |
| *.csproj or *.sln | .NET | editorconfig + Roslyn |
| pyproject.toml or requirements.txt | Python | Ruff |
| Multiple detected | Mixed | Configure all detected |
Actions:
Before delegating, check what configurations already exist.
Config Files to Check:
| Technology | Config Files |
|------------|--------------|
| TypeScript | eslint.config.*, .prettierrc*, tsconfig.json |
| .NET | .editorconfig, Directory.Build.props |
| Python | ruff.toml, pyproject.toml [tool.ruff] |
| Pre-commit | .husky/, .pre-commit-config.yaml |
| Tests | vitest.config.*, pytest.ini, *.Tests.csproj |
Decision Matrix:
| Existing Config | Action | Confirmation | |-----------------|--------|--------------| | None found | Create from template | No | | Exists but incomplete | Extend to match template | No | | Exists and matches template | Skip | Inform user |
Completeness Check (Python): evaluate against ln-741's Completeness Check table (7 aspects: Ruff rules, per-file-ignores, advanced settings, MyPy strict, advanced tools, lint script, editorconfig). If ANY aspect is incomplete, delegate to ln-741 with instruction to EXTEND (not replace).
Invoke workers for each quality aspect. Workers can run in parallel as they configure independent tools.
Delegation Order:
ln-740 (this)
|
+---> ln-741-linter-configurator
| - ESLint/Prettier (TypeScript)
| - editorconfig/Roslyn (.NET)
| - Ruff (Python)
|
+---> ln-742-precommit-setup
| - Husky + lint-staged (Node.js)
| - pre-commit framework (Python)
| - commitlint
|
+---> ln-743-test-infrastructure
- Vitest (TypeScript)
- xUnit (.NET)
- pytest (Python)
Pass detected stack and existing configs to workers via direct Skill tool invocation. For Python: instruct ln-741 to apply full quality stack per its Completeness Check table.
Invocations:
Skill(skill: "ln-741-linter-configurator", args: "{projectPath}")
Skill(skill: "ln-742-precommit-setup", args: "{projectPath}")
Skill(skill: "ln-743-test-infrastructure", args: "{projectPath}")
After all workers complete, verify the quality pipeline works.
Verification Steps:
| Check | TypeScript | Python | .NET |
|-------|-----------|--------|------|
| Lint | ESLint | ruff check | dotnet format --verify-no-changes |
| Format | Prettier | ruff format --check | dotnet format |
| Type check | tsc --noEmit | mypy | Roslyn (build) |
| Import boundaries | depcruise | lint-imports | -- |
| Unused deps | knip | deptry | -- |
| Dead code | knip | vulture | -- |
| Vulnerability scan | npm audit | pip-audit | -- |
| Unified script | bash scripts/lint.sh | bash scripts/lint.sh | bash scripts/lint.sh |
| Tests | npm test | pytest | dotnet test |
| Hooks | Create test commit | Create test commit | Create test commit |
On Failure:
RULE 1: Never overwrite existing user configurations without explicit confirmation.
RULE 2: Workers run AFTER stack detection - do not invoke workers without knowing the stack.
RULE 3: Verification phase is MANDATORY - quality setup is not complete until tools run successfully.
RULE 4: eslint-config-prettier is REQUIRED when both ESLint and Prettier are configured.
TodoWrite format (mandatory):
- Invoke ln-741-linter-configurator (pending)
- Invoke ln-742-precommit-setup (pending)
- Invoke ln-743-test-infrastructure (pending)
- Verify quality pipeline (pending)
| Phase | Worker | Context | |-------|--------|---------| | 3a | ln-741-linter-configurator | Shared (Skill tool) — ESLint/Prettier, editorconfig, Ruff | | 3b | ln-742-precommit-setup | Shared (Skill tool) — Husky, lint-staged, commitlint | | 3c | ln-743-test-infrastructure | Shared (Skill tool) — Vitest, xUnit, pytest |
All workers: Invoke via Skill tool — workers see coordinator context.
MANDATORY READ: Load shared/references/meta_analysis_protocol.md
Skill type: execution-orchestrator. Analyze this session per protocol §7. Output per protocol format.
| File | Purpose | |------|---------| | stack_detection.md | Detailed detection rules | | verification_checklist.md | Full verification checklist |
| Error | Cause | Resolution |
|-------|-------|------------|
| No stack detected | Empty project | Ask user for intended stack |
| Worker failed | Missing dependencies | Install prerequisites, retry |
| Verification failed | Config error | Check specific tool output, fix |
| Hooks not working | Git not initialized | Run git init first |
Version: 3.0.0 Last Updated: 2026-03-18
testing
Drafts and publishes fact-checked GitHub Discussions announcements. Use for releases, updates, or project news; not for release creation or issue responses.
testing
Prepares and publishes a tagged GitHub release from repository evidence. Use for an explicit release request; not for ordinary commits, packages, or community news.
testing
Validates, commits, pushes, and remotely verifies approved repository changes. Use when publication is requested; not for releases, package publishing, or announcements.
development
Reviews standalone skills and their configured distribution surfaces before publication. Use for skill release readiness; not for product code or implementation-plan review.