Skip to content

Modernize tooling: migrate to uv/ruff, add Taskfile, and Claude Code setup#121

Merged
Krlosromero merged 11 commits intodevelopfrom
claude/add-claude-documentation-IeeET
Mar 17, 2026
Merged

Modernize tooling: migrate to uv/ruff, add Taskfile, and Claude Code setup#121
Krlosromero merged 11 commits intodevelopfrom
claude/add-claude-documentation-IeeET

Conversation

@davidban77
Copy link
Copy Markdown
Owner

@davidban77 davidban77 commented Mar 14, 2026

Summary

  • Migrate from poetry/Make/black/flake8 to uv, ruff, and Taskfile as the modern Python toolchain
  • Add Claude Code skills (7 skills) and hooks for auto-formatting and git safety
  • Update CI workflow, devcontainer, and project config to match the new toolchain

Changes

Build & Package Management

  • Replace poetry with uv (faster, simpler dependency management)
  • Replace Makefile + setup.cfg with Taskfile.yml (cross-platform task runner)
  • Switch build backend to hatchling
  • Add uv.lock, remove poetry.lock

Linting & Formatting

  • Replace black + flake8 with ruff (single tool for both)
  • Add ruff S (bandit) security rules with S101 ignored in tests
  • Add lint-fix, lint-file, and security Taskfile tasks

CI/CD

  • Update GitHub Actions to install uv and task instead of poetry and make
  • Simplify CI steps to use task lint / task test-only / task test-ci

Claude Code Setup

  • Add 7 skills: /lint, /commit, /create-pr, /developer, /consistency-reviewer, /code-reviewer, /security-check
  • Add PostToolUse hook: auto-format Python files with ruff after Edit/Write
  • Add PreToolUse hook: block git push --force and --no-verify
  • Update CLAUDE.md with current project conventions

Code Quality

  • Apply ruff formatting across codebase (replacing black style)
  • Add *.pem, *.key, *.p12 to .gitignore
  • Update devcontainer to use uv

Test plan

  • task lint passes with no errors (includes security rules)
  • task test-only passes all tests
  • task security runs clean
  • CI matrix (Python 3.9-3.12) passes on GitHub Actions
  • Skills appear in Claude Code (/ autocomplete)
  • PostToolUse hook auto-formats .py files after edits

claude and others added 11 commits March 14, 2026 13:54
Documents project structure, build/test commands, architecture,
code conventions, testing patterns, CI/CD setup, and dependencies.

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
- Update Python matrix from 3.7/3.8 (EOL) to 3.9/3.10/3.11/3.12
- Bump actions/checkout v3 → v4, actions/setup-python v3 → v5,
  actions/cache v3 → v4, codecov/codecov-action v2 → v4
- Update Poetry from 1.5.1 to 1.8.4
- Fix black command missing path argument (added '.')

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
- Bump minimum Python from 3.6 to 3.9
- Bump pytest ^5.0 → ^7.0 (5.x crashes on Python 3.11+)
- Bump flake8 ^3.7 → ^5.0
- Bump pytest-cov ^2.7 → ^4.0
- Update classifiers to reflect Python 3.9-3.12 support
- Migrate poetry.dev-dependencies to poetry.group.dev.dependencies
- Update build-backend to poetry-core
- Regenerate poetry.lock

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
- Add missing id: setup-python to the Python setup step so the cache
  key can reference steps.setup-python.outputs.python-version
- Add token parameter to codecov-action v4 (now required)
- Set fail_ci_if_error to false so missing CODECOV_TOKEN secret
  doesn't break the build

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
The poetry install step failed on Python 3.12 because
pydoc-markdown 2.1.3 (via yapf) is incompatible with 3.12.

- Move mkdocs, pydoc-markdown, mkdocs-material to optional "docs"
  dependency group so they aren't installed during CI test runs
- Add fail-fast: false so one matrix failure doesn't cancel all jobs
- Use --without docs flag in poetry install

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
- Pin black ^23.0 (was * resolving to 20.8b1 which doesn't support 3.11+)
- Pin flake8 ^6.0 (5.x predates Python 3.12)
- Pin coverage ^7.0 (6.2 had no wheels for 3.12, causing silent crash)
- Apply black 23.x formatting fix (removed extra blank line in for loop)
- Regenerate poetry.lock with all updated versions

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
- Remove flake8 step from CI workflow and dev dependencies
- Fix E202 whitespace before '}' in gns3fy.py:1892
- Regenerate poetry.lock

https://claude.ai/code/session_017D3uGziwAhF88Zivc51jK5
- Replace poetry with uv as package manager
- Remove Makefile and setup.cfg in favor of Taskfile.yml
- Modernize pyproject.toml with hatchling build backend
- Add ruff S (bandit) security rules, ignore S101 in tests
- Update devcontainer to use uv instead of poetry
- Update README badge references
- Add Taskfile.yml with lint, test, security, and docs tasks
- Add lint-fix, lint-file (hook support), and security tasks
- Update CI workflow to use uv and Taskfile instead of poetry/Make
- Auto-format codebase with ruff (replacing black)
- Fix whitespace and style issues flagged by ruff
- Clean up test files for ruff compliance
- Add 7 skills: lint, commit, create-pr, developer, consistency-reviewer, code-reviewer, security-check
- Add PostToolUse hook for auto-formatting Python files after edits
- Add PreToolUse hook to block force-push and --no-verify
- Update CLAUDE.md with current project conventions
- Add *.pem, *.key, *.p12 to .gitignore
@davidban77 davidban77 changed the title Add CLAUDE.md with comprehensive codebase guide for AI assistants Modernize tooling: migrate to uv/ruff, add Taskfile, and Claude Code setup Mar 17, 2026
@davidban77 davidban77 requested a review from Krlosromero March 17, 2026 12:54
@Krlosromero
Copy link
Copy Markdown
Collaborator

A Big set of changes in this Commit

@Krlosromero Krlosromero merged commit 0ae720f into develop Mar 17, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants