drift-dependency-update
Skill14 starsChanged 7 months agoMITView on GitHub
Dependency-Update-Workflow für das Drift-Repo. Verwenden bei: uv.lock aktualisieren, pyproject.toml Abhängigkeit hinzufügen/upgraden/entfernen, Lockfile synchronisieren, Typecheck und Tests gegen neue Version, Commit mit korrektem chore:-Typ. Keywords: uv lock, uv sync, uv add, dependency, pyproject.toml, lockfile, uv.lock, upgrade, security patch, chore commit.
- Installs packages
- Commits and pushes
In this repository41 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- llms.txtllms.txt
- brainstormingSkill
- drift-adr-workflowSkill
- drift-agent-prompt-authoringSkill
- drift-commit-pushSkill
- drift-docs-gap-fixSkill
- drift-evidence-artifact-authoringSkill
- drift-finding-message-authoringSkill
- drift-ground-truth-fixture-developmentSkill
- drift-mcp-repo-ops-usageSkill
- drift-pr-review-loopSkill
- drift-pr-reviewSkill
- drift-releaseSkill
- drift-risk-audit-artifact-updatesSkill
- drift-security-triageSkill
- drift-session-handover-authoringSkill
- drift-signal-development-full-lifecycleSkill
- fix-failing-actionsSkill
- grill-meSkill
- guard-src-drift-apiSkill
- guard-src-drift-commandsSkill
- guard-src-drift-ingestionSkill
- guard-src-drift-outputSkill
- guard-src-drift-signalsSkill
- guard-src-driftSkill
- improve-codebase-architectureSkill
- prd-to-issuesSkill
- self-improving-agentSkill
- simplify-and-hardenSkill
- skill-creatorSkill
- subagent-driven-developmentSkill
- systematic-debuggingSkill
- tddSkill
- test-driven-developmentSkill
- verification-before-completionSkill
- workspace-automation-orchestratorSkill
- write-a-prdSkill
- writing-plansSkill
The file
Files
Drift Dependency Update
Workflow für alle Änderungen an pyproject.toml-Abhängigkeiten im Drift-Repo.
Deckt: neue Abhängigkeit hinzufügen, bestehende upgraden/einschränken, Abhängigkeit entfernen.
KRITISCH: pyproject.toml und uv.lock sind unlösbar gekoppelt. Beide Dateien müssen im selben Commit landen. Das Pre-Push-Gate 5 blockiert jeden Push, bei dem pyproject.toml geändert, uv.lock aber nicht committet wurde.
Wann verwenden
pyproject.toml-Abhängigkeit soll geändert, hinzugefügt oder entfernt werdenuv.locksoll mit aktuellen Constraints synchronisiert werden- Security-Patch für eine direkte oder transitive Abhängigkeit
- CI schlägt fehl mit „Lockfile not synchronized" oder ähnlichem
Technischer Kontext
Dependency-Gruppen in [project.optional-dependencies]:
| Gruppe | Zweck |
typescript | tree-sitter, tree-sitter-typescript |
embeddings | sentence-transformers, faiss-cpu, numpy |
markdown | mistune |
mcp | mcp[cli] |
watch | watchfiles |
dev | Alle Test- / Lint- / Release-Werkzeuge |
all | Metagruppe, die alle einschließt |
Lokale Venv-Aktivierung (Windows):
.\.venv\Scripts\Activate.ps1Wichtige uv-Befehle:
| Aufgabe | Befehl |
| Neue Abhängigkeit hinzufügen (schreibt auch pyproject.toml) | uv add <paket> |
| Abhängigkeit in optionale Gruppe hinzufügen | uv add --optional <gruppe> <paket> |
| Abhängigkeit entfernen | uv remove <paket> |
| Lockfile neu erzeugen (nach manuellem pyproject.toml-Edit) | uv lock |
| Einzelnes Paket im Lock upgraden | uv lock --upgrade-package <paket> |
| Alle Transitivs upgraden (innerhalb Constraints) | uv lock --upgrade |
| Devenv installieren/aktualisieren | uv sync --all-extras |
Schritt-für-Schritt-Workflow
Schritt 0 — Policy Gate
### Drift Policy Gate
- Trivialtask: JA
- Zulässig: JA → rein mechanisch, ohne Verhaltens-, Policy-, Architektur- oder SignaleffektDependency-Updates sind
chore:-Commits. Sie lösen kein feat:/fix:-Gate aus und erfordern kein CHANGELOG-Update. Ausnahme: Ein Upgrade behebt einen produktiven Bug → dannfix:.
Schritt 1 — Abhängigkeit klassifizieren
Vor der Änderung klären:
- Nur
pyproject.toml(Versions-Constraint ändern): direkt editieren → dannuv lock. - Neue Abhängigkeit hinzufügen:
uv add <paket>bevorzugen — schreibt pyproject.toml und uv.lock atomar. - Security-Patch für transitive Abhängigkeit (nicht in pyproject.toml):
uv lock --upgrade-package <paket>+ kein pyproject.toml-Edit nötig. - Abhängigkeit entfernen:
uv remove <paket>.
Schritt 2 — Lockfile synchronisieren
Nach jedem manuellen Edit von pyproject.toml:
uv lockPrüfen, ob keine Konflikte ausgegeben werden. Bei Konflikten Constraint in pyproject.toml anpassen und erneut ausführen.
Schritt 3 — Devenv aktualisieren
uv sync --all-extrasStellt sicher, dass das lokale Venv die neuen Versionen enthält, bevor Tests laufen.
Schritt 4 — Typecheck
.\.venv\Scripts\python.exe -m mypy src/drift --ignore-missing-importsSchlägt der Typecheck durch inkompatible API-Änderungen fehl, Constraint in pyproject.toml einschränken oder Typ-Fehler beheben.
Schritt 5 — Quick-Tests
.\.venv\Scripts\python.exe -m pytest tests/ --ignore=tests/test_smoke_real_repos.py -m "not slow" -q -n auto --dist=loadscopeBei Testfehlern durch API-Änderungen der aktualisierten Bibliothek:
- Prüfen, ob es einen Workaround im Drift-Code gibt.
- Constraint ggf. zurücksetzen (
<neue_version). - Issue gegen die Bibliothek vorbereiten, falls es ein echter Bug ist.
Schritt 6 — Beide Artefakte committen
PFLICHT: pyproject.toml und uv.lock immer gemeinsam in einem Commit.
git add pyproject.toml uv.lock
git status --short # Sicherheitscheck: keine unerwünschten Dateien
git commit -m "chore: update <paket> to <version>"Commit-Typ-Regeln:
| Situation | Commit-Typ |
| Routine-Upgrade, kein Bug-Fix | chore: |
| Upgrade behebt produktiven Drift-Bug | fix: |
| Neue optionale Funktionalität ermöglicht | feat: |
| Breaking change in Abhängigkeit, Drift-API bricht | BREAKING: |
Schritt 7 — Pre-Push-Gate-Check (vor dem Push)
Gate 4 (Version Bump) feuert, wenn pyproject.toml geändert wurde:
- PSR bumpt die Version nicht für
chore:-Commits → Gate würde blockieren. - Lösung für
chore:-nur-Dependency-Pushes:
DRIFT_SKIP_VERSION_BUMP=1 git pushBei
fix:oderfeat:-Commits ist kein Bypass nötig — PSR erstellt einen Version-Bump-Commit in CI.
Häufige Fehler (und Korrekturen)
| Fehler | Korrekte Vorgehensweise |
pip install <paket> anstatt uv add | Immer uv add oder uv sync — pip umgeht den Lock |
Nur pyproject.toml committen, uv.lock vergessen | git add pyproject.toml uv.lock immer zusammen |
uv lock vergessen nach manuellem pyproject.toml-Edit | Step 2 ist Pflicht nach jedem manuellen Edit |
fix: statt chore: für routinemäßiges Upgrade | Nur fix: wenn der Upgrade einen echten Bug in drift-analyzer behebt |
Version-Bump-Gate blockiert chore:-Push | DRIFT_SKIP_VERSION_BUMP=1 git push |
| Tests gegen alte gecachte Pakete | uv sync --all-extras vor Tests (Schritt 3) |
Checkliste (Kurzform)
[ ] Art der Änderung klassifiziert (add / upgrade / remove / security-patch)
[ ] pyproject.toml bearbeitet (oder uv add/remove genutzt)
[ ] uv lock ausgeführt — keine Konflikte
[ ] uv sync --all-extras ausgeführt
[ ] mypy src/drift — sauber
[ ] pytest quick suite — grün
[ ] git add pyproject.toml uv.lock (beide!)
[ ] Commit-Typ korrekt (chore: / fix: / feat:)
[ ] DRIFT_SKIP_VERSION_BUMP=1 wenn chore:-PushDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

