Skip to main content

maintenance

Investigate, adopt, and verify dependency updates for repo-map. Captures what changed, understands why, cross-references against the codebase, applies fixes, and runs final checks. Supports two entry modes: run the full flow end-to-end, or review updates already applied.

Aller à l'installation

Informations de source

Dépôt
cyanheads/repo-map
Dernière activité de la source
14 août 2026 à 06:09
Langue détectée de SKILL.md
anglais
Étoiles
62
Forks
18

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
maintenance
description
Investigate, adopt, and verify dependency updates for repo-map. Captures what changed, understands why, cross-references against the codebase, applies fixes, and runs final checks. Supports two entry modes: run the full flow end-to-end, or review updates already applied.
metadata
{"author":"cyanheads","version":"1.0","audience":"project","type":"workflow"}
## When to Use - After running `poetry update` (or manually bumping a `pyproject.toml` constraint) and wanting to review the impact (**Mode B** — typical) - To run the whole flow end-to-end — outdated check → update → investigate → adopt → verify (**Mode A**) - Before tagging a release, to make sure the lockfile and code are coherent ## Entry Modes | Mode | Starting Point | First Step | |:-----|:---------------|:-----------| | **A — Full flow** | Lockfile is current; want to update | Step 1 | | **B — Post-update review** | User already ran `poetry update` (and possibly edited `pyproject.toml`) | Skip to Step 3 with the update output or `git diff poetry.lock pyproject.toml` | Both modes converge at Step 3 and end at Step 8. ## Steps ### 1. Survey what's outdated (Mode A only) ```bash poetry show --outdated ``` Columns are `name | current | latest | description`. Note which jumps cross majors — Poetry's caret constraints (`^1.2.3`) cap at the next major and **`poetry update` will not cross them**. For pre-1.0 packages, a minor bump is effectively a major and requires editing the constraint. ### 2. Apply the update (Mode A only) For in-range bumps: ```bash poetry update ``` For out-of-range jumps (caret-locked majors, pre-1.0 minor crossings), edit the constraint in `pyproject.toml` first, then `poetry update <package>`. Alternatively `poetry add <package>@latest` rewrites the constraint and updates in one step. Capture the version deltas from stdout (or `git diff poetry.lock pyproject.toml`) — these feed Step 3. ### 3. Investigate changelogs If the `changelog` skill is available, invoke it with the captured list of updated packages — it resolves repos, fetches release notes between old and new versions, and cross-references against actual imports. Skip the per-package research below if so. Otherwise, for each updated package: 1. Find the source repo (`poetry show <package>` shows the homepage; PyPI page links to it) 2. Read CHANGELOG / release notes between old and new version tags 3. Grep `src/` for imports of the package and cross-reference against the changes 4. Note: what changed, impact on repo-map, action items Focus only on packages we actually import from. Transitive bumps (`attrs`, `idna`, `platformdirs`, etc.) usually need no investigation unless they fail at runtime. The packages that matter for repo-map: | Package | Used In | Why It Matters | |:--------|:--------|:---------------| | `aiohttp` | `llm_service.py` | OpenRouter HTTP client; session/timeout/retry semantics | | `pydantic` / `pydantic-settings` | `config.py` | Settings loading and validation; v2.x is iterating fast | | `pathspec` | `file_scanner.py` | `.gitignore` matching | | `tqdm` | `cli_handler.py`, `logging_utils.py` | Progress bars + logging handler | | `certifi` | `llm_service.py` | TLS bundle; new releases just refresh certs | | `ruff` / `black` / `pytest` | dev tooling | New rules / format diffs / test runner changes | ### 4. Adopt changes in the codebase Apply findings from Step 3. Defaults are cost/benefit — there's no upstream framework here that's authoritative. - **Breaking changes** — fix call sites. Not optional. - **Deprecation warnings** — migrate now, while context is fresh. Don't silence. - **New `ruff` rules** that flag existing code — fix the code; don't add ignores. - **`black` format drift** — run `poetry run python scripts.py format` and commit the reformat as a separate concern from code changes if the diff is large. - **New library APIs that supersede local helper code** — swap them in if it's a clear win (smaller surface, removed dep, fewer bugs). Skip if marginal. - **New features that don't match existing call sites** — note for later, don't refactor speculatively. ### 5. Verify ```bash poetry run python scripts.py check poetry build ``` The test suite includes strict expected-failure reproductions linked to open issues; an unexpected pass is a gate failure until the implementation and issue state are reconciled. Smoke test the actual tool against a small public repository to catch runtime regressions the local tests cannot: ```bash poetry run repo-map /path/to/small/repo -y ``` Watch for new exceptions, broken parsing, or LLM call failures. Fix anything that fails. Re-run until clean. ### 6. Sync skills to agent mirrors `skills/` is the canonical source; `.agents/skills/` and `.claude/skills/` are read-only mirrors that local agent toolchains consume. They drift silently when `skills/` is edited. `scripts.py check` (Step 5) verifies the mirrors: it fails, naming every missing or content-drifted mirror file, and writes nothing. Regenerating them is a separate, deliberate command: ```bash poetry run python scripts.py sync-skills # or, no Poetry: python3 scripts/sync_skills.py ``` A Claude Code `PostToolUse` hook (in `.claude/settings.json`) runs that same mutating sync after any Write/Edit/MultiEdit under `skills/`, so reported drift usually means skills were authored outside Claude Code. Neither mode deletes: the sync copies only missing or content-drifted files, and the check reports a mirror-only file as an orphan instead of removing it (those may be general-purpose skills sourced elsewhere). ### 7. Wrap-up artifacts Update files that frequently fall out of sync: | File | When | |:-----|:-----| | `CHANGELOG.md` | Always — add an entry under a new version with the dependency bumps and any code adoptions | | `pyproject.toml` `version` | Bump (patch for dep-only updates, minor if code behavior changed) | | `AGENTS.md` / `CLAUDE.md` | If a workflow command, env var, or module responsibility changed | | `README.md` | Only if user-facing behavior, defaults, or commands changed (badges are dynamic from PyPI — skip those) | Use a concrete version + date in `CHANGELOG.md` (e.g. `## [0.7.1] - 2026-04-25`) — never `[Unreleased]`. ### 8. Summary Present a concise numbered summary to the user: 1. **Updated packages** — short list with version deltas (N total) 2. **Breaking changes handled** — call sites fixed 3. **Adoptions made** — new APIs swapped in, helpers removed 4. **Wrap-up artifacts** — files updated (CHANGELOG entry, version bump, doc edits) 5. **Open decisions** — ambiguous items: out-of-range majors that weren't taken, adoptions where the tradeoff is close, deprecation warnings deferred 6. **Status** — ruff / black / pytest / smoke-test results ## Checklist - [ ] Update applied (`poetry update` or constraint edit + `poetry update <pkg>`) — Mode A, or already done by user — Mode B - [ ] Per-package changelog investigation done (via `changelog` skill or manually) - [ ] Adoption opportunities identified and applied - [ ] `poetry run python scripts.py check` passes - [ ] `poetry build` succeeds - [ ] Smoke test against a sample repo passes - [ ] `skills/` mirrors in sync (the project check fails on drift; run `poetry run python scripts.py sync-skills` to regenerate them) - [ ] `CHANGELOG.md` entry added with concrete version + date - [ ] `pyproject.toml` version bumped - [ ] `AGENTS.md` / `CLAUDE.md` / `README.md` updated if behavior or commands changed - [ ] Numbered summary presented to user
Voir sur GitHub