Files
dev-skills/pyproject.toml
T
av 872732989a адреса чужих документов сверяются с перечнем владельца
Адрес принадлежит одному плагину, а называют его все: docs/* стоит в
сорока местах конвейера, tasks/ROADMAP.md — в четырёх местах канона.
Переименование в каноне до них не доходит, и заметить это нечем:
протухший адрес попадает в механизм честной деградации ревью и выходит
правдоподобной строкой «документа в проекте нет», а не поломкой.

Перечень берётся из константы владельца — той, по которой он и так
проверяет раскладку. Судится упразднённое, а не незнакомое: список тем
канона открытый, и «нет такого имени» опровергнуть нечем; зато карта
переездов RETIRED и есть перечень запрещённого. Рядом одна догадка —
почти совпавшее имя как опечатка, порог замерен (законные до 0.64,
опечатки от 0.91).

Первый прогон: одна настоящая находка — REMAINING иллюстрировал
смысловой дубль адресом docs/specs/, упразднённым в версии 1 канона.

В гейте без glob: перечень лежит в .py, упоминания в .md, и коммит с
переименованием трогает только первую сторону.
2026-08-09 15:12:46 +03:00

68 lines
3.4 KiB
TOML

[project]
name = "dev-skills"
version = "0"
description = "Маркетплейс плагинов av-dev; здесь только линтеры скриптов скиллов"
requires-python = ">=3.12"
dependencies = []
# Версии прибиты точно: обновление линтера меняет набор находок, а находки тут
# правятся руками в скриптах, которые уезжают в чужие проекты. Обновление —
# отдельная осознанная правка, а не побочный эффект `uv sync`.
[dependency-groups]
dev = ["ruff==0.16.1", "pyrefly==1.2.0"]
[tool.uv]
package = false
[tool.ruff]
target-version = "py312"
line-length = 88
[tool.ruff.lint]
select = [
"F", # pyflakes: неиспользованное, неопределённое, битые f-строки
"E", "W",# pycodestyle
"I", # порядок импортов
"UP", # устаревшие для 3.12 конструкции
"B", # bugbear: изменяемый дефолт, забытый raise, цикл с замыканием
"SIM", # упрощения
"RET", # возвраты
"PTH", # os.path → pathlib
"RUF", # правила самого ruff
"TID", # запрет внешних зависимостей, см. banned-api ниже
"BLE", # голый except Exception — только там, где помечен noqa
]
ignore = [
"E501", # длину строк держит formatter, а не проверка
# Весь текст скриптов — русский: сообщения, докстроки, комментарии.
# «Похожая на латиницу кириллица» здесь не опечатка, а норма, и три этих
# правила дают 311 срабатываний из 338 на пустом месте.
"RUF001", "RUF002", "RUF003",
]
[tool.ruff.lint.flake8-tidy-imports.banned-api]
# Скрипты обязаны работать на голом python 3.12 без установки чего-либо:
# они лежат рядом со скиллами и запускаются в любом проекте. Список — не
# полный перечень мира, а частые соблазны; настоящий страж — pyrefly, у
# которого в окружении нет ничего, кроме линтеров.
"requests".msg = "внешняя зависимость; скрипты работают на голом python 3.12"
"yaml".msg = "внешняя зависимость; для json есть stdlib, для yaml — разбор руками"
"pydantic".msg = "внешняя зависимость; скрипты работают на голом python 3.12"
"click".msg = "внешняя зависимость; аргументы разбирает argparse"
"rich".msg = "внешняя зависимость; вывод — обычный print"
[tool.ruff.format]
quote-style = "double"
[tool.pyrefly]
project-includes = [
"av-dev-tasks/skills/tasks/scripts/tasks.py",
"av-dev-docs/skills/canon/scripts/docs.py",
"av-dev-pipeline/skills/openspec/scripts/openspec.py",
"scripts/addresses.py",
"scripts/copies.py",
"scripts/diagrams.py",
"scripts/frontmatter.py",
]
python-version = "3.12"