update-reqs

Use when user wants to update requirements.in with latest PyPI versions while preserving version patterns

Best use case

update-reqs is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use when user wants to update requirements.in with latest PyPI versions while preserving version patterns

Teams using update-reqs should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/update-reqs/SKILL.md --create-dirs "https://raw.githubusercontent.com/reidemeister94/development-skills/main/skills/update-reqs/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/update-reqs/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How update-reqs Compares

Feature / Agentupdate-reqsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use when user wants to update requirements.in with latest PyPI versions while preserving version patterns

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Update Requirements

Updates `requirements.in` with latest package versions from PyPI while preserving version specifier patterns.

## How It Works

For each package in `requirements.in`:

1. **Parse the version pattern** to understand the "fixed part":
   - `fastapi==0.128.*` → fixed: `0.128`, wildcard at patch level
   - `pydantic==2.12.*` → fixed: `2.12`, wildcard at patch level
   - `commitizen==4.*` → fixed: `4`, wildcard at minor level

2. **Query PyPI** for the latest version

3. **Update while preserving pattern**:
   - `fastapi==0.128.*` with latest `0.130.0` → `fastapi==0.130.*`
   - `commitizen==4.*` with latest `4.5.0` → `commitizen==4.*` (already allows 4.x)

## Execution Steps

1. Read `requirements.in` from the current project
2. For each line with a package version:
   - Skip git dependencies (lines with `@` or `git+`)
   - Parse package name and version pattern
   - Fetch latest version from PyPI: `curl -s https://pypi.org/pypi/{package}/json | jq -r .info.version`
   - Calculate new version with same pattern depth
3. Show diff of proposed changes
4. Apply changes after user confirmation

## Version Pattern Rules

| Original | Latest on PyPI | Result |
|----------|----------------|--------|
| `pkg==1.2.*` | `1.5.3` | `pkg==1.5.*` |
| `pkg==1.*` | `2.3.0` | `pkg==2.*` |
| `pkg==1.2.3` | `1.5.3` | `pkg==1.5.3` |

## Skip These Lines

- Git dependencies: `pkg @ git+https://...`
- Comments: Lines starting with `#`
- Empty lines
- Extras without version: `pkg[extra]`

## Example Output

```
Checking requirements.in for updates...

Package          Current    Latest     Status
fastapi          0.128.*    0.130.2    UPDATE → 0.130.*
pydantic         2.12.*     2.12.1     OK (already matches)
uvicorn          0.40.*     0.41.0     UPDATE → 0.41.*
mypkg            (git)      -          SKIP (git dependency)

Apply updates? [y/N]
```

## After applying changes

Recompile the lockfile with `uv`:

```bash
uv pip compile requirements.in -o requirements.txt --upgrade
```

The `.in` file is human-edited; `.txt` is the generated, fully-resolved lockfile that the runtime / Dockerfile installs from.

Related Skills

update-reqs-dev

8
from reidemeister94/development-skills

Use when user wants to update requirements-dev.in with latest PyPI versions while preserving version patterns

update-precommit

8
from reidemeister94/development-skills

Use when user wants to update .pre-commit-config.yaml hooks to their latest versions from GitHub

using-development-skills

8
from reidemeister94/development-skills

Use when starting any conversation - establishes how the development-skills plugin works and how to invoke its components on each platform (Claude Code, Codex). Read first.

typescript-dev

8
from reidemeister94/development-skills

TypeScript development. Use for TypeScript, Node.js, Express, Fastify, Zod, vitest, jest. Backend, CLI, libraries only — no frontend frameworks.

swift-dev

8
from reidemeister94/development-skills

Swift development. Use for Swift, SwiftUI, UIKit, Vapor, SPM, XCTest, Combine.

staff-review

8
from reidemeister94/development-skills

Use when user wants a code review, deep code review, or staff-level code review of a local branch, repo, directory, or file. Use when user says code review, deep code review, review this branch, review the branch X, review my code, staff review, review locally, or /staff-review.

roast-my-code

8
from reidemeister94/development-skills

Use when user wants a brutally honest code roast, quality critique, or AI-readiness audit. Use when user says roast, roast my code, critique my code, tear apart my code, review quality, or AI-readiness check. Supports --fix flag to auto-fix CRITICAL and HIGH issues via core-dev workflow.

resolve-merge

8
from reidemeister94/development-skills

Use when the user asks to resolve merge conflicts, fix a failed merge, rebase conflict, or run /resolve-merge. Use when git status shows UU/AA/DD conflicts, when there are <<<<<<< conflict markers, when git merge or git pull failed with CONFLICT, or when numbered docs/plans need renumbering after merge. Triggers on: merge conflict, conflict markers, both modified, git merge failed, rebase conflict, resolve conflicts.

python-dev

8
from reidemeister94/development-skills

Python development. Use for Python, FastAPI, Pydantic, asyncpg, pytest, pandas, SQLAlchemy.

produce-feedback

8
from reidemeister94/development-skills

Use when user wants to produce a factual chronicle of development-skills plugin interactions in the current conversation for later ingestion, or runs /produce-feedback. Pure record, no judgment.

java-dev

8
from reidemeister94/development-skills

Java development. Use for Java, Spring Boot, Maven, Gradle, JPA, Hibernate.

ingest-feedback

8
from reidemeister94/development-skills

Use when user wants to ingest a development-skills feedback report and apply fixes, or runs /ingest-feedback. Challenges every suggestion against the Iron Rules before accepting; most friction points should SKIP. Expect a report path as argument.