Skip to main content

Source Code Todo — scan TODO/DONE markers in code

Project description

Source Code Todo (sct)

Утилита для учёта задач прямо в исходниках: ищет метки TODO / DONE в коде, кэширует состояние в JSON и даёт CLI и TUI для просмотра и закрытия задач.

[!WARNING] Примечание: проект завайбкожен — большая часть кода и документации собрана с помощью ИИ (Cursor). С версии 0.2.0 добавлены тесты, CI и проверки перед правкой файлов; всё равно смотрите diff перед коммитом.

Идея

Пишешь код в редакторе (например, Neovim). Если что-то нужно доделать позже — оставляешь в файле метку с текстом задачи. sct сканирует проект, показывает список в терминале и при необходимости меняет метку в файле на DONE, сохраняя приоритет.

Приоритет кодируется буквами в маркере:

Маркер (открыто) Приоритет
TODO 1
TODOO 2
TODOOO 3

Для закрытых задач — то же с DONE / DONEE / DONEEE (столько же букв E, сколько было O).

Установка

PyPI (рекомендуется)

Пакет на PyPI называется sctodo, CLI-команда — sct:

pip install sctodo
# или изолированно в ~/.local/bin:
pipx install sctodo

Из исходников (разработка)

cd /path/to/sct
python3 -m venv .venv
.venv/bin/pip install -r requirements-dev.txt
.venv/bin/pip install -e .

Метаданные пакета и console-script sct — в pyproject.toml.

Использование

# TUI (нужен интерактивный терминал)
.venv/bin/sct

# Первичная настройка каталога .sct/
.venv/bin/sct init

# Синхронизация (по умолчанию инкрементальная)
.venv/bin/sct sync
.venv/bin/sct sync --full -v

# Проверка кэша и исходников
.venv/bin/sct doctor
.venv/bin/sct doctor --compare

# Список открытых задач (id в каждой строке)
.venv/bin/sct list
.venv/bin/sct list --no-id          # компактный вид
.venv/bin/sct list --priority 2
.venv/bin/sct list --all --json

# Закрыть / открыть: id, короткий префикс id (как git), или file:line
.venv/bin/sct done dd5be318
.venv/bin/sct done path/to/file.py:12
.venv/bin/sct done --dry-run dd5be
.venv/bin/sct reopen <id>

.venv/bin/sct --version
.venv/bin/python -m sct sync

Корень проекта ищется вверх по каталогам (наличие .sct/cache.json или .sct/config.json), либо задайте --root.

После обновления с 0.2.1 на 0.2.2 один раз выполните sct sync --full — схема id задач изменилась (теперь hash файла + номера строки).

Коды выхода

Код Значение
0 Успех
1 Не найдено / неоднозначный префикс id
2 Устаревший кэш / строка изменилась (doctor, done)
3 Ошибка ввода-вывода
4 Неверное использование (например, TUI без TTY)

Метки в коде

Формат: TOD + от одной до трёх O (открыто) или DON + от одной до трёх E (сделано), затем : и текст задачи.

Примеры в исходных файлах (отдельная строка комментария):

  • # TOD + O: + текст — приоритет 1, открыто
  • # TOD + OO: + текст — приоритет 2
  • # TOD + OOO: + текст — приоритет 3
  • # DON + E: + текст — закрыто, приоритет 1

(В этом README маркеры разбиты, чтобы файл документации не попадал в собственный сканер.)

Кэш и конфиг

  • Кэш: .sct/cache.json.gitignore)
  • Конфиг: .sct/config.json — создайте через sct init или скопируйте .sct/config.json.example
  • По умолчанию не сканируются каталоги tests/, test/, .venv, node_modules и др. (см. sct/core/config.py)

JSON для скриптов

.venv/bin/sct list --json
{
  "version": "0.2.0",
  "items": [ { "id": "…", "file": "…", "line": 1,  } ]
}

Удобно вызывать из Neovim через jobstart / system без отдельного плагина.

Клавиши TUI

Тёмный минималистичный интерфейс: список задач, строка деталей, статусная строка внизу.

Клавиша Действие
j / k Вниз / вверх по списку
g / G Первая / последняя строка
Ctrl+d / Ctrl+u Страница вниз / вверх
d Закрыть задачу (с подтверждением)
o Открыть снова
r Синхронизация
a Все / только открытые
/ Фильтр
? Подсказка
q Выход

При устаревшем кэше при старте показывается предупреждение.

Тесты

.venv/bin/pip install -r requirements-dev.txt
.venv/bin/pip install -e .
.venv/bin/python -m unittest discover -s tests -v

В CI то же самое (см. .github/workflows/ci.yml).

Планы

  • Плагин или рецепты для Neovim (обёртка над sct list --json, переход к file:line)
  • Создание GitHub Issues из задачи (заготовка в sct/core/github.py, пока не реализовано)

История версий

См. CHANGELOG.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sctodo-0.2.2.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sctodo-0.2.2-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file sctodo-0.2.2.tar.gz.

File metadata

  • Download URL: sctodo-0.2.2.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sctodo-0.2.2.tar.gz
Algorithm Hash digest
SHA256 0401bebc6d514dc66d1f48d93602a97a821520e29747aabb1aa8ec1957897f49
MD5 8e2ad099d0ad2da4b83b3c5ea5fd1dba
BLAKE2b-256 a339a7e0150436cad13d0294735ab4359876899d5bbfc4a88b3f219828bb903b

See more details on using hashes here.

File details

Details for the file sctodo-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: sctodo-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sctodo-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c2e7075282268207cd5bbe4a164b18d27670057046665d55551bb829af163506
MD5 efca5704eec4725c5ae7563d5c254a62
BLAKE2b-256 a2787cee86c09145166b355e73795b7dcdfe178440c6616ac80754ed37727019

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page