Agent skill

Polylith Migrate Convert Linter

by DavidVujic in DavidVujic/python-polylith

[Internal sub-skill of polylith-migrate-orchestrator (optional, runs only when opted in during polylith-migrate-discover).

MITAuto-check passedDevelopment

Install Polylith Migrate Convert Linter

skills CLI
$ npx skills add DavidVujic/python-polylith --skill polylith-migrate-convert-linter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install DavidVujic/python-polylith polylith-migrate-convert-linter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/DavidVujic/python-polylith.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/polylith/migrate-project/polylith-migrate-convert-linter .claude/skills/polylith-migrate-convert-linter && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
polylith-migrate-convert-linter
GitHub stars
553
Token cost
~1.4k tokens
SKILL.md length
611 words
Files
1
Skills in repo
37
Repo updated
First seen
Licence
MIT

At a glance

[Internal sub-skill of polylith-migrate-orchestrator (optional, runs only when opted in during polylith-migrate-discover).

  • Works in 6 steps: Identify the workspace's tool → Remove Project-Specific Configs and… → Assess Workspace Linting Config → …
  • Tasks that involve Linting and formatting
  • SKILL.md covers Goal, When to Skip, Inputs and Steps, plus 4 more sections
  • Calls git

What it does

Polylith Migrate Convert Linter is an agent skill from DavidVujic/python-polylith. [Internal sub-skill of polylith-migrate-orchestrator (optional, runs only when opted in during polylith-migrate-discover). Do not load directly — load polylith-migrate-orchestrator first.] Align the project's linter and formatter with the workspace's configured tool (whatever it is — ruff, black+isort+flake8, pylint, etc.). Removes project-specific config and consolidates rules into the workspace root.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Linting and formatting. It works with Ruff. The repository describes itself as: Tooling support for the Polylith Architecture in Python. The licence is MIT.

When your agent uses it

  • Tasks that involve Linting and formatting

Example prompts

  • “s linter and formatter with the workspace”
  • “/polylith-migrate-convert-linter”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Identify the workspace's tool
  2. Remove Project-Specific Configs and Dependencies
  3. Assess Workspace Linting Config
  4. Merge Project-Specific Rules
  5. Run Workspace Linting and Formatting Tools
  6. Update state.md

What it can do on your machine

Read from SKILL.md and the folder at commit a7a80f2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Polylith Migrate Convert Linter loads about 1.4k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 611 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~112
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from DavidVujic/python-polylith at commit a7a80f2, republished under its MIT licence (© DavidVujic). 611 words, ~1,359 tokens.

Download SKILL.mdSave it as .claude/skills/polylith-migrate-convert-linter/SKILL.md (or your agent's skills folder).
name
polylith-migrate-convert-linter
description
[Internal sub-skill of `polylith-migrate-orchestrator` (optional, runs only when opted in during `polylith-migrate-discover`). Do not load directly — load `polylith-migrate-orchestrator` first.] Align the project's linter and formatter with the **workspace's** configured tool (whatever it is — ruff, black+isort+flake8, pylint, etc.). Removes project-specific config and consolidates rules into the workspace root.

Skill: polylith-migrate-convert-linter

Goal

Align the project with the workspace's linter and formatter. This skill is not opinionated about ruff — it reads the workspace's configured tool from the root pyproject.toml and aligns the project to that.

When to Skip

Skip this step if the project's LINTER and FORMATTER in migration/<PROJECT>/state.md already match the workspace's tools.

Inputs

From migration/<PROJECT>/state.md:

  • PROJECT_DIR
  • LINTER, FORMATTER
  • RUN_TEST_CMD (optional: RUN_LINT_CMD, RUN_TYPECHECK_CMD)

All inputs from state.md are assumed to satisfy the validation rules in polylith-migrate-discover (### Validation rules). Validate before proceeding.

Steps

0. Identify the workspace's tool

Open the workspace root pyproject.toml and identify the configured linter and formatter using the same detection table as polylith-migrate-discover ([tool.ruff] → ruff, [tool.black] → black, [tool.flake8] or .flake8 → flake8, etc.). Record what you found — every step below refers to "the workspace's linter/formatter" and means this tool, not necessarily ruff.

If the workspace has no linter configured at all, stop and ask the user how to proceed (introduce ruff? skip linting alignment? abort the conversion?).

1. Remove Project-Specific Configs and Dependencies
  • Remove the following sections from the project's pyproject.toml:
    • [tool.black], [tool.isort], [tool.flake8], [tool.pylint.*], [tool.autopep8], [tool.pycodestyle]
  • Remove standalone config files: .flake8, .pylintrc, .isort.cfg, and lint sections in setup.cfg or tox.ini.
  • Remove old linter/formatter dependencies from the project's pyproject.toml:
    • flake8, flake8-* plugins, pylint, pylint-* plugins, black, isort, autopep8, pyflakes, pycodestyle, bandit
2. Assess Workspace Linting Config
  • Review the workspace root's linting and formatting configuration.
  • Identify any project-specific rules or ignores that differ from the workspace's standards.
3. Merge Project-Specific Rules
  • If the project has unique linting rules or ignores, merge them into the workspace root's linting configuration (e.g., [tool.ruff]).
  • For conflicts (e.g., stricter rules in the project), ask the user to provide guidance on whether to:
    • Adopt the project's rules in the workspace.
    • Suppress the project's rules in favor of the workspace's.
    • Defer the decision and document the conflict in migration/<PROJECT>/state.md.
4. Run Workspace Linting and Formatting Tools
  • Run the workspace's linting tool to assess violations:
    • Few new violations: Fix them now.
    • Many new violations: Ask the user whether to fix, suppress, or defer.
  • Run the workspace's formatting tool to reformat the code.
5. Update state.md
  • Set LINTER and FORMATTER to the workspace's tool(s).
  • Update RUN_LINT_CMD to use the workspace's linting and formatting commands.
Show full SKILL.md (244 more words)Show less

Verify

  • The workspace's linting tool passes (or remaining violations are user-approved).
  • The workspace's formatting tool passes.
  • RUN_TEST_CMD succeeds.
  • If set, RUN_TYPECHECK_CMD succeeds.

Common failure modes

SymptomLikely causeRemediation
The workspace's linter surfaces hundreds of violations the project's old linter didn't catchStricter ruleset; not a "fix everything now" situation.Ask the user: fix now, suppress via [tool.<linter>] ignores in the project subsection, or defer in a follow-up branch. Do not auto-fix silently — record the decision in state.md.
Project-specific lint rules are stricter than the workspace's standardProject had higher discipline; lowering it would regress quality.Add the project's rule as a per-path override in the workspace's lint config (most linters support per-directory rule overrides). Do not weaken the rule globally.
Old linter config file (.flake8, .pylintrc, etc.) lingers and confuses developers' local editorsStep 1 missed a config file.Delete it; mention in the commit message so reviewers update their editor configs.

Done When

  • No project-specific linter/formatter config files or dependencies remain.
  • Project-specific linting rules are merged into the workspace root's configuration.
  • LINTER and FORMATTER in migration/<PROJECT>/state.md match the workspace's tools.
  • Tests pass via the workspace's tooling.

Commit

After verification passes, commit this phase to the migration branch:

bash
git add -A && git commit -m "migrate(<PROJECT>): phase optional — convert-linter"

Substitute <PROJECT> from state.md. This is an optional skill off the numbered main line, so the commit uses the literal phase optional label (no <N>). Do not proceed without a clean commit — the per-phase commit is the rollback point for the next phase's failure-mode tables.

© DavidVujic, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/polylith/migrate-project/polylith-migrate-convert-linter of DavidVujic/python-polylith.

Open the folder on GitHubat commit a7a80f2

Compare with similar skills

Polylith Migrate Convert Linter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Polylith Migrate Convert Linter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Polylith Migrate Convert Linter this skillDavidVujic/python-polylith553—~1.4kAutomated safety check: PassMIT
Summarise Ecosystem Resultsastral-sh/ruff50k1 repos~2.2kAutomated safety check: PassMIT
Minimizing Ty Ecosystem Changesastral-sh/ruff50k—~4.6kAutomated safety check: PassMIT
Kedro Babysitkedro-org/kedro11k—~4kAutomated safety check: PassCustom licence
Saleor Commit Workflowsaleor/saleor23k—~575Automated safety check: PassBSD-3-Clause
Mnemosyne Contextmnemosyne-oss/mnemosyne3.4k—~2.6kAutomated safety check: PassMIT

Similar skills

  • Official

    A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…

    50k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…

    50k GitHub stars~4.6k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Kedro Babysit

    kedro-org/kedro

    Run Kedro's local lint / format / type-check / tests on changed files (uses the project's pre-commit hooks, ruff, mypy, pytest, lint-imports, detect-secrets, Make targets — in the right venv), or…

    11k GitHub stars~4k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Commits changes in the Saleor codebase and works through pre-commit hook failures from ruff, mypy, the GraphQL schema check and the migrations check.

    23k GitHub stars~575 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Mnemosyne Context

    mnemosyne-oss/mnemosyne

    Load this when working on the mnemosyne memory system — its repo, sync server, memory databases, or CI.

    3.4k GitHub stars~2.6k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Adding Ty Diagnostics

    astral-sh/ruff

    Official

    A skill your agent uses when a user says "add a ty rule", "add a ty diagnostic", "write this new ty diagnostic", "change a ty error message", "review ty diagnostics", or asks to add, update, or…

    50k GitHub stars~556 tokensUpdated yesterday
    DevelopmentAuto-check passed

More from DavidVujic/python-polylith

All 37 skills in this repo
  • Polylith Base Creation

    DavidVujic/python-polylith

    Create a Polylith base with poly create base — the entry point of a deployable application (HTTP API, CLI, message-queue consumer, AWS Lambda handler, GCP Cloud Function, scheduled job).

    553 GitHub stars~757 tokensUpdated 4 days ago
    Auto-check passed
  • Polylith Check

    DavidVujic/python-polylith

    Validate a Polylith workspace with poly check — the canonical CI gate.

    553 GitHub stars~972 tokensUpdated 4 days ago
    Auto-check passed
  • Polylith Component Creation

    DavidVujic/python-polylith

    Create a Polylith component with poly create component — a reusable, isolated brick implementing business logic, a feature, a domain module, or a capability.

    553 GitHub stars~800 tokensUpdated 4 days ago
    Auto-check passed
  • Polylith Dependency Management

    DavidVujic/python-polylith

    Add or manage third-party dependencies in a Polylith workspace.

    553 GitHub stars~643 tokensUpdated 4 days ago
    Auto-check passed
  • Polylith Dependency Visualization

    DavidVujic/python-polylith

    Visualize brick × brick dependencies with poly deps — find circular dependencies, inspect a brick's public interface, and detect interface-bypass violations.

    553 GitHub stars~906 tokensUpdated 4 days ago
    Auto-check passed
  • Polylith Diff

    DavidVujic/python-polylith

    List Polylith bricks whose implementation changed since a git tag using poly diff.

    553 GitHub stars~1.1k tokensUpdated 4 days ago
    Auto-check passed

Works with

Categories

Questions about Polylith Migrate Convert Linter

What does Polylith Migrate Convert Linter do?

[Internal sub-skill of polylith-migrate-orchestrator (optional, runs only when opted in during polylith-migrate-discover). Polylith Migrate Convert Linter is an agent skill from DavidVujic/python-polylith. [Internal sub-skill of polylith-migrate-orchestrator (optional, runs only when opted in during polylith-migrate-discover).

When should I use Polylith Migrate Convert Linter?

Polylith Migrate Convert Linter fits situations like: tasks that involve Linting and formatting.

How do I install Polylith Migrate Convert Linter in Claude Code?

Run `npx skills add DavidVujic/python-polylith --skill polylith-migrate-convert-linter -a claude-code`. Or copy the skill folder (.agents/skills/polylith/migrate-project/polylith-migrate-convert-linter in DavidVujic/python-polylith) into .claude/skills/polylith-migrate-convert-linter in your project. Claude Code loads it when a task matches its description.

How do I install Polylith Migrate Convert Linter in Codex?

Run `npx skills add DavidVujic/python-polylith --skill polylith-migrate-convert-linter -a codex`. Or copy the skill folder (.agents/skills/polylith/migrate-project/polylith-migrate-convert-linter in DavidVujic/python-polylith) into .agents/skills/polylith-migrate-convert-linter in your project. Codex loads it when a task matches its description.

Can I use Polylith Migrate Convert Linter in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add DavidVujic/python-polylith --skill polylith-migrate-convert-linter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/polylith-migrate-convert-linter, .gemini/skills/polylith-migrate-convert-linter, .github/skills/polylith-migrate-convert-linter and .opencode/skills/polylith-migrate-convert-linter in your project.

What does Polylith Migrate Convert Linter need to run?

Going by SKILL.md and its folder, Polylith Migrate Convert Linter needs the command-line tools its instructions call (git).

Does Polylith Migrate Convert Linter access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Polylith Migrate Convert Linter safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Polylith Migrate Convert Linter use?

Polylith Migrate Convert Linter is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Polylith Migrate Convert Linter use?

About 1.4k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Polylith Migrate Convert Linter?

Skills that share tags, products or a category with Polylith Migrate Convert Linter: Summarise Ecosystem Results (astral-sh/ruff, 50k stars), Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars), Kedro Babysit (kedro-org/kedro, 11k stars) and Saleor Commit Workflow (saleor/saleor, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Polylith Migrate Convert Linter?

DavidVujic (a GitHub user) maintains it in DavidVujic/python-polylith, which has 553 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on October 4, 2026.

Source: DavidVujic/python-polylith on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.