本文へ移動
cccskills
無料GitHub で公開

ln-741-linter-configurator

Configures ESLint, Prettier, Ruff, mypy, and .NET analyzers

インストール方法を見る

含まれるファイル(9)

  • SKILL.md8.5 KB
  • references/directory_build_props_template.xml1.4 KB
  • references/editorconfig_template.ini4.1 KB
  • references/eslint_template.ts3.6 KB
  • references/lint_script_template.sh3.8 KB
  • references/linter_guide.md9.8 KB
  • references/mypy_template.toml1.1 KB
  • references/prettier_template.json201 B
  • references/ruff_template.toml3.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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.

ln-741-linter-configurator

Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-740-quality-setup

Configures code linting, formatting, and type checking tools for TypeScript, Python, and .NET projects.


Purpose & Scope

Does:

  • Detects which linter stack to configure based on project type
  • Checks for existing linter configurations
  • Generates appropriate config files from templates
  • Installs required dependencies (always latest versions, no pinning)
  • Generates unified lint script (scripts/lint.sh)
  • Verifies all linters run without errors

Does NOT:

  • Configure pre-commit hooks (ln-742 does this)
  • Set up test infrastructure (ln-743 does this)
  • Modify source code

Supported Stacks

TechnologyLinterType CheckerFormatterConfig Files
TypeScriptESLint 9+ (flat config)TypeScript (tsc)Prettiereslint.config.ts, .prettierrc
.NETRoslyn AnalyzersRoslyndotnet format.editorconfig, Directory.Build.props
PythonRuffmypyRuff (built-in)ruff.toml, mypy.toml (or pyproject.toml)

Phase 1: Check Existing Configuration

Before generating configs, check what already exists.

Files to Check:

StackConfig FilesGlob Pattern
TypeScriptESLint configeslint.config.*, .eslintrc*
TypeScriptPrettier config.prettierrc*, prettier.config.*
.NETEditor config.editorconfig
.NETBuild propsDirectory.Build.props
PythonRuff configruff.toml, pyproject.toml
Pythonmypy configmypy.toml, mypy.ini, pyproject.toml [tool.mypy]

Decision Logic:

  1. If config exists and is complete: SKIP (inform user)
  2. If config exists but incomplete: ASK user to merge or replace
  3. If no config exists: CREATE from template

Phase 2: Generate Configuration

Use templates from references/ folder. Customize placeholders based on project.

TypeScript:

  1. Copy eslint_template.ts to project root as eslint.config.ts
  2. Copy prettier_template.json as .prettierrc
  3. Add scripts to package.json:
    • "lint": "eslint ."
    • "lint:fix": "eslint . --fix"
    • "format": "prettier --write ."
    • "format:check": "prettier --check ."
    • "typecheck": "tsc --noEmit"
    • "lint:all": "npm run typecheck && npm run lint && npm run format:check"
  4. For React projects: uncomment React sections in template

.NET:

  1. Copy editorconfig_template.ini as .editorconfig
  2. Copy directory_build_props_template.xml as Directory.Build.props
  3. Ensure analyzers are included (SDK 5+ includes them by default)

Python:

  1. Copy ruff_template.toml as ruff.toml
    • OR merge into existing pyproject.toml under [tool.ruff]
  2. Copy mypy_template.toml as mypy.toml
    • OR merge into existing pyproject.toml under [tool.mypy]
  3. Update known-first-party in isort config to match project package name
  4. Update files in mypy config to match project source directories

Phase 3: Install Dependencies

Install required packages. Always install latest versions — no version pinning.

TypeScript:

npm install -D eslint @eslint/js typescript-eslint eslint-config-prettier prettier eslint-plugin-unicorn jiti

For React projects, also install: npm install -D eslint-plugin-react eslint-plugin-react-hooks

Note on jiti: Required for eslint.config.ts on Node.js < 22.10. On Node.js 22.10+ TypeScript configs are supported natively.

.NET:

  • Analyzers included in SDK 5+ — no separate install needed

Python:

uv add --dev ruff mypy
# OR without uv:
pip install ruff mypy

Phase 4: Generate Lint Script

Generate scripts/lint.sh from lint_script_template.sh with checks for the detected stack.

  1. Copy lint_script_template.sh to scripts/lint.sh
  2. Uncomment the check lines matching the detected stack (Python/TypeScript/.NET)
  3. Set TOTAL variable to match the number of active checks
  4. Make file executable: chmod +x scripts/lint.sh
  5. For TypeScript: ensure "lint:all" script exists in package.json

Phase 5: Verify Setup

After configuration, verify everything works.

TypeScript:

npx tsc --noEmit
npx eslint .
npx prettier --check .

.NET:

dotnet format --verify-no-changes

Python:

ruff check .
ruff format --check .
mypy

Unified verification:

bash scripts/lint.sh

Expected: Exit code 0 for all checks.

On Failure: Check error output, adjust config, re-verify.


Phase 6: Optional Advanced Tools

Suggest but do not auto-install. Inform user and add as commented lines in scripts/lint.sh.

StackToolPurposeInstall
TypeScriptdependency-cruiserArchitecture boundary validationnpm install -D dependency-cruiser
TypeScriptknipUnused code/dependency detectionnpm install -D knip
Pythonvulture / deadcodeDead code detectionuv add --dev vulture
Pythonimport-linterCircular import preventionuv add --dev import-linter
PythondeptryUnused/missing dependency detectionuv add --dev deptry
.NETCSharpierOpinionated formatter (Prettier for C#)dotnet tool install csharpier

Critical Rules

RULE 1: Always include eslint-config-prettier (last in config) when using ESLint + Prettier together.

RULE 2: Use ESLint flat config format (eslint.config.ts), NOT legacy .eslintrc.

RULE 3: Ruff replaces Black, isort, flake8, and many other Python tools. Do NOT install them separately.

RULE 4: Never disable strict TypeScript rules without documented reason.

RULE 5: Always run mypy alongside Ruff for Python projects. Ruff handles style/bugs, mypy handles type safety.

RULE 6: Use recommendedTypeChecked as ESLint default, not just recommended. Downgrade individual rules if needed.

RULE 7: Never pin dependency versions in install commands — always install latest.


Definition of Done

  • Appropriate config files created for detected stack
  • Dependencies installed (latest versions)
  • scripts/lint.sh generated with correct checks for stack
  • Lint command runs without errors on project source
  • Format command runs without errors
  • Type checker runs without errors (mypy for Python, tsc for TypeScript)
  • No ESLint/Prettier conflicts (eslint-config-prettier installed)
  • User informed of available lint/format commands and optional advanced tools

Reference Files

FilePurpose
eslint_template.tsESLint flat config template (TypeScript)
prettier_template.jsonPrettier config template
ruff_template.tomlPython Ruff config template
mypy_template.tomlPython mypy config template
lint_script_template.shUnified lint script template
editorconfig_template.ini.NET editorconfig template
directory_build_props_template.xml.NET analyzers template
linter_guide.mdDetailed configuration guide

Error Handling

ErrorCauseResolution
ESLint/Prettier conflictMissing eslint-config-prettierInstall and add as last config
ESLint projectService errorConfig file not in tsconfigAdd to allowDefaultProject list
ESLint .ts config failsMissing jitinpm install -D jiti
TypeScript parse errorsParser version mismatchAlign typescript-eslint with TS version
mypy missing stubsThird-party library without typesAdd [[mypy.overrides]] with ignore_missing_imports
mypy strict too strictHundreds of errors on first runStart with relaxed config, enable strict gradually
Ruff not foundNot installedpip install ruff or uv add ruff
dotnet format failsMissing SDKInstall .NET SDK

Version: 3.0.0 Last Updated: 2026-02-26

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA standards. Use this skill to generate semantic ARIA for Web and accessibility traits for Web and Native platforms (iOS/Android).

日本語の概要は準備中です。原文の説明を表示しています。

tensology/decisionsai172026年10月13日 更新

Whole site or product — a full web accessibility (a11y) audit against WCAG 2.2, following the WCAG-EM methodology. Defines scope, samples representative pages and flows, runs the automated tier (`accessibility-scan`) and the hands-on manual tier (`accessibility-inspect`), and produces one conformance report. Grades each finding by severity and evidence basis, and states per-criterion conformance as pass, fail, or undetermined (needs a human). Use it for 'audit my site for accessibility', 'is this product accessible', 'a11y audit', 'WCAG or Section 508 conformance report', or any multi-page assessment. Assesses; does not fix (use `accessibility-fix`) or diff (use `accessibility-diff`). For a single page use `accessibility-scan`; for hands-on keyboard and screen-reader checks use `accessibility-inspect`.

日本語の概要は準備中です。原文の説明を表示しています。

tensology/decisionsai172026年10月13日 更新

Regression check — diff a live page's web accessibility (a11y) violations against a baseline. By default it compares your uncommitted changes (stash-based); pass `--branch [<name>]` to compare against a branch. Reports the new WCAG violations introduced, the ones fixed, and the count of pre-existing ones. Use it for 'did my change break accessibility', 'what a11y issues did this PR add', or as a CI gate. For a full scan of one page use `accessibility-scan`; for a whole site use `accessibility-audit`.

日本語の概要は準備中です。原文の説明を表示しています。

tensology/decisionsai172026年10月13日 更新

Remediation only — repair web accessibility (a11y) violations against WCAG 2.2 with a baseline, edit, and verify loop. Takes a target (URL, files, directory) or a findings worklist from `accessibility-scan`/`accessibility-inspect`/`accessibility-audit`, applies mechanical fixes as given, leaves TODOs for visual or contextual judgment, and verifies by re-running the baseline check. It only fixes. To find issues use `accessibility-scan` (one page, automated), `accessibility-inspect` (one page, manual), or `accessibility-audit` (whole site, WCAG-EM); to check for regressions use `accessibility-diff`. Use it for 'fix the a11y issues in X', 'make this accessible', 'add missing alt text and labels', 'apply these accessibility fixes', 'remediate these violations'.

日本語の概要は準備中です。原文の説明を表示しています。

tensology/decisionsai172026年10月13日 更新

One page, hands-on manual tier — drive a live page through the web accessibility (a11y) checks a rule engine can't decide: keyboard operation and focus order, screen-reader names, roles and states from the accessibility tree, reflow and zoom, reduced motion, form errors, and target size. Grades each finding by evidence basis (verified / confirm-with-a-human / human-required) and severity, and closes every criterion in a ledger: verified, flagged, not exercised, or N/A. Locates and assesses; does not fix (use `accessibility-fix`). Use it for keyboard testing, focus-order checks, screen-reader or a11y-tree review, reflow and zoom at 200%, or 'is this operable, not just lint-clean'. The automated tier is `accessibility-scan`; `accessibility-audit` runs both across a sampled site.

日本語の概要は準備中です。原文の説明を表示しています。

tensology/decisionsai172026年10月13日 更新

One page, automated tier — run the web accessibility (a11y) rule engine against a live page and locate every violation it can detect mechanically. Pass a URL, a config target name (e.g. `accesslint:accessibility-scan dev`), or nothing to use the default target from `accesslint.config.json`. Ensures a debuggable Chrome, runs the @accesslint/core engine over CDP, and returns a worklist of live-DOM WCAG 2.2 violations, each grounded to its DOM selector and source `file:line`. Locates; doesn't edit. Use it for 'is this page accessible', 'check a11y on this URL', 'find contrast and alt-text issues', or to verify a UI change. For hands-on keyboard and screen-reader checks use `accessibility-inspect`; for a whole site or product use `accessibility-audit`; to diff against uncommitted changes or a branch use `accessibility-diff`.

日本語の概要は準備中です。原文の説明を表示しています。

tensology/decisionsai172026年10月13日 更新

tensology のスキルをすべて見る

このスキルの問題を報告する