본문으로 건너뛰기
cccskills
무료GitHub에 공개

dependency-sweep

Run the "get dependencies current" flow for this monorepo — sweep for available updates, triage into safe / deliberate / wait buckets, bump the pnpm catalog, and prove it with the typecheck + e2e gate. Use when asked to "update dependencies", "are we on the latest", "do the quarterly sweep", "bump deps", or when the recurring sweep ticket comes due. We run NO update bot on purpose (#141) — this skill IS the update process.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHubPlaywright
설치 방법 보기

포함된 파일(1)

  • SKILL.md7.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Dependency Sweep

The deliberate, no-bot way to stay current. Shared versions live once in the catalog: block of pnpm-workspace.yaml (#142); this skill sweeps for updates, ships the safe ones through a gate, and tracks the rest. It does not chase latest blindly — for this codebase even some minor/patch framework bumps need a small package-side type fix first (precedent: nuxt 4.4 → #241, vue 3.5.38 → #242).

Why no Renovate/Dependabot: decided in #141/#143 — PR firehose, not help, for a solo dev. On-demand taze + this skill replaces it.

Step 1 — Sweep: what's available?

Get the gap between the catalog floors and latest. taze is catalog-aware but can be slow/blocked on a restricted network — fall back to npm view per dep.

npx taze minor -r            # review patch/minor across the workspace (no -w yet)
npx taze major -r            # majors, review only
# Fallback if taze hangs (network): direct check of the cataloged set
for p in nuxt vue vue-router typescript wrangler @libsql/client drizzle-orm drizzle-kit @nuxt/ui; do
  printf "%-16s " "$p"; npm view "$p" version
done

Read the current floors from pnpm-workspace.yaml (catalog:) and build a gap table: package | catalog floor | latest | gap (patch/minor/major).

Step 2 — Triage into buckets

BucketWhatAction
Safepatch/minor on leaf deps (DB, tooling — drizzle, libsql, etc.)bump now, this PR
Deliberate (in-major)big in-major jumps that touch every surface (@nuxt/ui, wrangler)own gated bump / own issue
Waitreal majors that must follow Nuxt's supported range (vue-router, typescript)hold; record why, re-check next sweep

Framework minors (nuxt, vue) are "safe-looking" but not auto-safe here — run them through the gate (Step 4); if red, demote to its own type:fix pkg:* issue and hold the floor. Don't force a red bump into the safe PR.

Step 3 — Bump the single dial

  • Edit only the catalog: block in pnpm-workspace.yaml. Never per-package.
  • Transitive singletons that no package declares directly (vue, zod, @tiptap/*) live in root package.json → pnpm.overrides, not the catalog (#140). If you bump vue/nuxt, bump their pnpm.overrides floor to match so the lockfile actually moves.
  • Keep package peer ranges wide (^3 || ^4) — untouched.
  • @playwright/test is special — sync the E2E container tag. If you bump it, also bump the CI image tag in .github/workflows/e2e.yml (container: mcr.microsoft.com/playwright:v<x.y.z>-jammy) to the same version. The image ships the matching Chromium + system libs, so a drift makes Playwright warn about a browser/library version mismatch — and the whole point of that container is to be version-matched (#392/#395).
pnpm install            # regenerates the lockfile

⚠️ Caret ranges don't downgrade. ^4.3.1 already satisfies an installed 4.4.8, so lowering the caret will NOT revert it. To back out a bump, reset the files and the lockfile, then reinstall:

git checkout pnpm-workspace.yaml package.json pnpm-lock.yaml && pnpm install

Step 4 — The gate (MANDATORY before commit)

pnpm -r --filter './apps/*' typecheck      # all apps must be green

Then the runtime check — invoke the e2e-smoke skill (pick the fixture that exercises the change; minimal covers core/auth/CRUD/DB).

⚠️ Stale-install gotcha: a Cannot find module '@vue/compiler-sfc' from nuxt typecheck is NOT a real error — it's an unhoisted node_modules after repeated checkout/installs. Fix: rm -rf node_modules && pnpm install, then re-run. Establish a clean baseline typecheck before blaming a bump.

  • Green → ship.
  • Red → identify the offending dep, hold its floor, open a type:fix pkg:* issue describing the failure (see #241/#242 for the format), and ship the rest.

Step 5 — Track + commit

  • Follow ISSUE-FIRST: the dependency epic is #233; open/update the relevant sub-issue (safe-bump issue, or a new type:fix pkg:* for a red dep).
  • Commit with /commit — chore(root): <YYYY> Q<n> dependency sweep — …, reference (#NN). The deliverable is pnpm-workspace.yaml + pnpm-lock.yaml (+ any pnpm.overrides).
  • One short-lived branch per sweep: chore/dependency-sweep-<YYYY>q<n> off main. Never a long-lived "deps" branch — the lockfile conflicts on almost every merge and an unmerged branch protects nothing.
  • Open a PR (don't push to main); the e2e smoke runs in CI as the real gate (the local container can't download the Playwright chromium binary).
  • Label the PR and every follow-up issue deps. That label is the timeline: gh pr list --label deps --state all · git log --grep "dependency sweep".

Step 6 — If this was the recurring sweep

Re-arm the cadence: open next quarter's "Quarterly dependency sweep — due <+3 months>" ticket (link #233), then close the current one. Re-check the standing deliberate/wait items each sweep — open deps issues (gh issue list --label deps); the majors watchlist is #2226.

Gotchas from the 2026 Q4 sweep (#244)

  • Peers can resolve to a version your overrides forbid. After bumps, the lockfile kept @unhead/vue@3 / @tiptap/core@3.27 peer snapshots alongside the overridden ones. Check grep "^ '<pkg>@" pnpm-lock.yaml for duplicates; fix by regenerating from main's lockfile, then pnpm dedupe.
  • The tiptap pin moves WITH @nuxt/ui. It's a single-copy dedupe pin at the lowest version every peer accepts — when @nuxt/ui raises its tiptap floor, raise the pin, or extensions resolve newer than core and the build fails with "…" is not exported by @tiptap/core.
  • @nuxt/ui 4.11+ and nuxt ≥4.5 ship unhead 3 — move them together (#2222).
  • Run typecheck with --no-bail (pnpm -r --no-bail --filter './apps/*' typecheck) — the default stops at the first red app and hides the rest.
  • Typecheck green ≠ build green. Missing-export errors only show at bundle time; build one app (cd apps/kassa && pnpm build) before pushing.

Known catalog gaps (carry forward)

  • Several packages pin drizzle directly instead of via catalog:, so old copies linger after a bump. Catalog-ising those is a separate cleanup.
  • vitest / @vitest/coverage-v8 / @vitest/ui / happy-dom are cataloged since #2291. @nuxt/kit|schema are still not cataloged (version spreads need a real migration — #141).

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

a11y

무료

Accessibility review for Vue surfaces — the code-cleaning analog of /code-review and /simplify, pointed at WCAG/ARIA. Reviews just your diff (or a package/file), rates findings by severity, and either comments inline on the PR (--comment) or applies the safe fixes for you (--fix). Steers the depth-aware `a11y` subagent. Use when asked to "check accessibility", "a11y this", "audit ARIA/keyboard", or run /a11y.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

FriendlyInternet/nuxt-crouton102026년 10월 20일 업데이트

ask-human

무료

Emit a blocking question the owner can read in ~10 seconds and answer in one reply — the scannable, recommendation-first handoff every agent posts when it hits a fork it can't own. Leads with the one decision + a recommendation, carries the 🤖 provenance header, doubles as the

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

FriendlyInternet/nuxt-crouton102026년 10월 20일 업데이트

audit

무료

Audit packages for documentation completeness, detect drift between code and docs, and maintain documentation quality across the monorepo. Use when checking package docs, running audits, or reviewing documentation health.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

FriendlyInternet/nuxt-crouton102026년 10월 20일 업데이트

Author a placeable layout block that looks right at ANY pane size. The one hard rule — size to the PANE with container queries (@container), never the viewport — plus list/form playbooks and the sizing contract (minWidth etc.) the viability metric reads. Use when adding/converting a croutonLayoutBlocks block, or when a block overflows/breaks in a narrow pane.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

FriendlyInternet/nuxt-crouton102026년 10월 20일 업데이트

When a bug or regression is reported, the FIRST step — before fixing — is to research how and when it was introduced (git archaeology), then record that finding on the tracking issue/PR. Use the moment a bug, error, broken build, or "this used to work" is reported, before writing a fix. Produces a first-bad-commit (or "not a code regression") note you paste onto the issue.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

FriendlyInternet/nuxt-crouton102026년 10월 20일 업데이트

commit

무료

Smart, granular git commits following monorepo conventions. Analyzes changes, filters to session-relevant files, groups by intent, and uses conventional commit format. Use when committing code changes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

FriendlyInternet/nuxt-crouton102026년 10월 20일 업데이트

FriendlyInternet의 스킬 모두 보기

이 스킬의 문제 신고