Simple Modern Uv logo

Simple Modern Uv

Community
jlevy
simple-modern-uv

Start, selectively modernize, fully migrate, or update Python projects using simple-modern-uv practices: uv, ruff, BasedPyright, pytest, GitHub Actions CI, and tag-driven PyPI publishing. Use when creating a Python project; adding selected tooling or repository practices to an existing project; migrating from Poetry, setuptools, pip, requirements.txt, PDM, or hatch; or updating a project already managed by the simple-modern-uv Copier template.

Overview

Publisherjlevy
Repositorysimple-modern-uv
Skill namesimple-modern-uv
Stars
302
Forks
31
Bundled files
6
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 6 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by jlevy on GitHub. Read the source before you install it.

Installation

Install the Simple Modern Uv AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/jlevy/simple-modern-uv/tree/main/skills/simple-modern-uv
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/jlevy/simple-modern-uv.git /tmp/simple-modern-uv
mkdir -p .claude/skills
cp -r /tmp/simple-modern-uv/skills/simple-modern-uv .claude/skills/simple-modern-uv
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Simple Modern Uv in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Simple Modern Uv on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Simple Modern Uv is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

simple-modern-uv: Modern Python Project Setup

simple-modern-uv is a minimal, modern Python project template: uv for package management, ruff for linting and formatting, BasedPyright for type checking, pytest, GitHub Actions CI, and tag-driven publishing to PyPI. It is a Copier template, so fully managed projects can pull future template improvements with copier update.

Route the Request

Choose one workflow and load its reference before editing:

User goalWorkflow
Start a project from scratchStart a new project
Add one or more practices without restructuring everythingAdopt selected features
Convert an existing package to the template’s structure and update pathUpgrade an existing project
Pull upstream changes into a project with .copier-answers.ymlUpdate a template-managed project

Use references/customize.md for license, publishing, apps, and common policy changes. When something fails, consult references/faq.md before improvising.

If this file was fetched from a URL rather than installed as a folder, fetch the selected reference and any shared reference it names from the same Git ref. Never mix a pinned SKILL.md with references from main.

Choose the Lowest Useful Adoption Level

These are working modes, not certifications:

LevelResult
SelectiveAdopt only named feature bundles. Preserve the current build backend, layout, release model, and equivalent tools unless the user asks to change them. Do not add .copier-answers.yml.
Core toolchainAdopt uv dependency management, lockfile policy, lint/type/test commands, CI, and agent guidance. Preserve packaging, versioning, or layout where changing them has no stated benefit. This is not Copier-managed unless the user chooses full migration.
Full template-managedRender or migrate to the template structure, record .copier-answers.yml, and use Copier for future updates. Explicitly document any deliberate deviations.

Choose the lowest level that satisfies the request. A named feature request is selective by default. “Upgrade/migrate this project to simple-modern-uv” means full migration unless repository constraints make a lower level safer; surface that change of scope before acting.

Inspect Before Acting

For an existing repository, inspect its instructions and working tree first. Then map:

  • project metadata, dependencies, Python support, package layout, and build backend
  • current lockfiles, environment manager, linting, typing, tests, and CI
  • versioning, release, publishing, license, private-index, and platform constraints
  • existing AGENTS.md, CLAUDE.md, .copier-answers.yml, and local modifications

Preserve user work and established behavior. Work on a branch, and never overwrite an existing configuration merely because the template has a different default.

Interview Contract

New projects and full migrations use the template questions in copier.yml. Infer everything possible, then ask the user to confirm material choices once in one batched message.

Answer keyMeaningNotes
package_namePyPI package and GitHub repo nameNormalize to kebab-case and show the derived name
package_modulePython module nameDerive snake_case from the package name; show it, do not ask
package_descriptionOne-line descriptionInfer from existing metadata when possible
package_licenseMIT, Apache-2.0, BSD-3-Clause, AGPL-3.0-or-later, Proprietary, or NoneAlways surface, naming MIT as the new-project default
publish_to_pypitrue or falseAlways surface; use false for private packages and unpublished apps

Infer author name, author email, and GitHub organization from project metadata, git, the remote, and authenticated GitHub state. Include the inferred values in the confirmation summary rather than asking separately.

For new projects, apply the template conventions: src/ layout, Python 3.11+, line length 100, and tag-derived versions beginning with v0.1.0. For published migrations, the next tag must exceed the published version. For selective and core adoption, preserve existing choices unless the requested feature requires a change; ask only about those material conflicts.

Always surface changes to supported Python versions, package layout, build backend, versioning, license, publishing, or CI provider. These are project decisions, not incidental implementation details.

Shared Execution Contract

  • Use the repository’s reviewed, pinned Copier command and 14-day dependency cool-off.
  • Render the template to a temporary sibling directory when a reference implementation is useful. Compare and adapt; do not blindly copy over an existing project.
  • Adopt each feature’s complete dependency closure. For example, a locked CI workflow also needs compatible project metadata, uv.toml, uv.lock, and commands.
  • Keep equivalent existing tooling when replacement is outside the requested scope.
  • Add .copier-answers.yml only for a deliberate full migration. Selective copying does not create honest Copier lineage and must not pretend that it does.
  • Keep changes reviewable and report conflicts or deliberate deviations explicitly.

Verification and Handoff

Verify every touched path. Full and core adoption normally require make install, make lint, and make test; publishable projects also require make build. Selective adoption runs the smallest commands that prove the selected features and their failure paths. Validate workflow syntax and preserve existing tests whenever CI changes.

Before reporting success, summarize five categories:

  • Adopted: template practices used as designed
  • Adapted: practices adjusted to preserve project constraints
  • Preserved: existing choices or equivalent tools intentionally retained
  • Deferred: relevant practices intentionally left for later
  • Removed: superseded files or tooling, if any

Also state whether the result is selective, core, or full template-managed; list the validation commands and outcomes; and name any decision that still belongs to the user.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Simple Modern Uv AI skill do?

Start, selectively modernize, fully migrate, or update Python projects using simple-modern-uv practices: uv, ruff, BasedPyright, pytest, GitHub Actions CI, and tag-driven PyPI publishing. Use when creating a Python project; adding selected tooling or repository practices to an existing project; migrating from Poetry, setuptools, pip, requirements.txt, PDM, or hatch; or updating a project already managed by the simple-modern-uv Copier template.

Why use Simple Modern Uv on TypingMind?

Because you install it once and use it with any model. Simple Modern Uv is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Simple Modern Uv in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jlevy/simple-modern-uv/tree/main/skills/simple-modern-uv. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Simple Modern Uv?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Simple Modern Uv?

As many as you like. As long as a model supports skills, you can use Simple Modern Uv with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Simple Modern Uv AI skill free?

Yes. It is published on GitHub by jlevy under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇