maintenance
Skill526 starsChanged 18 days agoMITView on GitHub
Quarterly maintenance pass (every 1-3 months) — dependency/security audit, build health, and repo hygiene for PerformanceMonitor and PerformanceStudio
15 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- bekalpaslan/promptlinetheir own version, first seen Nov 8, 2026
- anatolykoptev/piter-writer-packtheir own version, first seen Nov 8, 2026
- everruns/yoloptheir own version, first seen Nov 2, 2026
- JPeetz/agent-skillstheir own version, first seen Nov 1, 2026
- everruns/everrunstheir own version, first seen Oct 31, 2026
- knowttl/bstacktheir own version, first seen Oct 20, 2026
Used with
Projects with it also use recall and release.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
termdockSkillrecall
Retrieves cross-session memories about past decisions, lessons, and patterns. Use when user asks about prior work, past decisions, or mentions a feature. Triggers include check memory, what did we decide, how did we solve.
Also in 3 projects that use this
MicrosoftSkillrelease
Use ONLY when the user explicitly asks to cut/publish a Huabu desktop release or tag a version. Performs an outward action — bumps the version in apps/desktop/package.json, commits + annotated-tags vX.Y.Z, and pushes the branch + tag. That tag push auto-builds the macOS/Windows installers and publishes a GitHub Release. Provides `status`, `bump`, `tag-push`, and a one-command `run` (bump → tag-push).
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- erikdarlingdata/PerformanceStudio★ 24593% same
Wrote their own version · 14
- Chachamaru127/claude-code-harness★ 3.2ksame name
- pipecat-ai/gradient-bang★ 420same name
- hyperlist/feishu-multi-agent★ 273same name
- everruns/everruns★ 66same name
- everruns/yolop★ 18same name
- JPeetz/agent-skills★ 14same name
- bekalpaslan/promptline★ 11same name
- tomo3141592653/ayumu-oss★ 9same name
- stevehansen/eidet★ 4same name
- bmsuisse/skills★ 2same name
4 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- llms.txtllms.txt
- buildSkill
- duckdbSkill
- lane-ordersSkill
- release-checklistSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 0 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 26
After version edits, if the repo uses lock files (packages.lock.json — PerformanceMonitor does.
- Very specific: line 29
Must be zero. Any hit (incl.
- Very specific: line 57
Line endings /
.gitattributes: If the repo has no .gitattributes, line endings drift (CRLF/LF mixed, core.autocrlf=false) and bulk edits … - Very specific: line 68
Release infra freshness: Test servers online/patched.
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Routine Maintenance Pass
A repeatable every-1-3-months health check for the .NET desktop + SQL-monitoring repos
(PerformanceMonitor = WPF, PerformanceStudio = Avalonia; same dependency/build/release shape).
$ARGUMENTS optionally scopes it (deps, build, or all — default all).
Work top to bottom. Do read-only scans first and report findings; make fixes on a feature
branch/worktree (branch protection: never commit to dev/main), build + test, then PR to dev.
Low-risk patch/minor bumps can go in one PR; majors and anything release-critical get their own.
A. Dependencies & Security
Scope — scan every project, not just the solution. A repo's
.slnmay not list every project. PerformanceStudio'sPlanViewer.slnomitsserver/PlanShare.csprojand the SSMS VSIX (PlanViewer.Ssms,PlanViewer.Ssms.Installer), so thedotnet list <Solution>.sln …scans and the solution build all silently skip them. Run the checks against those projects too. The net472 VSIX is old-style, sodotnet listis unreliable on it — read its<PackageReference>s by hand (itsMicrosoft.VSSDK.BuildToolsis intentionally held on the 17.x line; 18.x is un-restorable from nuget.org and targets VS 18, not VS 2022). Where the.slncovers all projects, the solution is enough.
- Outdated packages.
dotnet list <Solution>.sln package --outdated- Take low-risk patch/minor bumps (Microsoft.Extensions.*, Test.Sdk, etc.).
- Majors get their own effort — especially the update framework (Velopack: bump the library AND the
vpkCLI pin in the release workflow —.github/workflows/release.ymlfor PerformanceStudio — together; validate the in-app + Setup.exe update path) and anything release-critical. - Engine-wrapped bindings (e.g. DuckDB.NET) trail the native engine — bump when the binding catches up, and validate behavior (for DuckDB run
tools/CompactionReprore: the parquet-COPY memory-limit floor before changing the version). - After version edits, if the repo uses lock files (
packages.lock.json— PerformanceMonitor does; PerformanceStudio does not), regenerate them:dotnet restore <Solution>.sln --force-evaluate(CI restores--locked-mode).
- Vulnerable packages (security).
dotnet list <Solution>.sln package --vulnerable --include-transitive- Must be zero. Any hit (incl. transitive) is urgent — bump or pin to a fixed version. This catches CVEs the
--outdatedcheck does not. - Code-level pass, not just packages: run the
security-reviewskill/agent on the diff since the last maintenance pass. These apps have real attack surface beyond their dependencies — PerformanceStudio's MCP server opens a local network listener, both store DB credentials (Windows Credential Manager), and both parse untrusted input (e.g. execution-plan XML). Triage anything it flags.- Calibrate severity to the deployment. PerformanceStudio runs on a single-user personal laptop, and its MCP tools are strictly read-only (no arbitrary SQL, no writes/config changes). So loopback-bound / opt-in / local-IPC findings — the MCP listener, the named-pipe single-instance server — are Low/informational here, not High: there's no other local user or attacker to exploit them, and read-only tools can at most leak data they already return. Reserve High for remotely reachable vectors (e.g. a missing
Host/Origincheck that allows DNS rebinding) or credential disclosure. This calibration would change only if Studio shipped the MCP server enabled-by-default or ran on a shared/multi-user host. Don't re-raise the same local-IPC findings at High each pass.
- Calibrate severity to the deployment. PerformanceStudio runs on a single-user personal laptop, and its MCP tools are strictly read-only (no arbitrary SQL, no writes/config changes). So loopback-bound / opt-in / local-IPC findings — the MCP listener, the named-pipe single-instance server — are Low/informational here, not High: there's no other local user or attacker to exploit them, and read-only tools can at most leak data they already return. Reserve High for remotely reachable vectors (e.g. a missing
- Must be zero. Any hit (incl. transitive) is urgent — bump or pin to a fixed version. This catches CVEs the
- Deprecated packages.
dotnet list <Solution>.sln package --deprecated— replace anything abandoned. - Framework / runtime currency. Confirm the TFM is on a supported, released .NET (do NOT move to a preview). Take the latest servicing patch of the current major. WPF/Avalonia track the runtime/their own NuGet — check both.
- CI tool & action pins. In
.github/workflows/*.yml: confirmuses:actions are on current majors, and that anydotnet tool installis version-pinned to match its library (e.g.vpk --versionmust equal the Velopack PackageReference). Bump GitHub Actions that are behind / deprecated. - Dependabot. Two separate features: security alerts (passive CVE notifications between manual
--vulnerablepasses) and version-update PRs (automated bump PRs). Alerts are a one-toggle enable in repo Settings → Code security, with no config file. Both repos run version updates from.github/dependabot.yml, intodev, and the manual sweep above still runs. The repos differ in one step:- PerformanceMonitor commits
packages.lock.json, and Dependabot does not regenerate it. Each NuGet PR needsdotnet restore PerformanceMonitor.sln --force-evaluateand a commit of every lock file it rewrites before CI can pass. The header of.github/dependabot.ymlexplains why, and what to check by hand on aMicrosoft.Data.SqlClientorAzure.Identitybump. - PerformanceStudio commits no lock files, so its Dependabot PRs need no extra restore step.
- PerformanceMonitor commits
B. Code & Build Health
- Zero-warning build. Build the whole solution and capture warnings — the standard is 0:
dotnet build <Solution>.sln -c Debug --nologo 2>&1 | Select-String ": warning "- Kill the running app(s) first OR build in a worktree — a running Dashboard/Lite/Studio locks its
binDLLs (MSB3021). Note: an incremental no-op build emits no warnings; force a clean compile of any project you're checking. - Fix each warning honestly (don't add to
NoWarnto silence). Remove dead code (e.g. an unused test seam → CS0649).
- Kill the running app(s) first OR build in a worktree — a running Dashboard/Lite/Studio locks its
- NoWarn review. Scan each csproj
<NoWarn>: every suppressed rule should have a reason (these repos keep inline comments). Remove suppressions that no longer fire; don't let the list grow silently. Most existing CA suppressions are intentional high-count ones — leave those. - Stale markers.
grep -rE "\b(TODO|FIXME|HACK|XXX)\b" --include=*.cs— resolve or file an issue; a// TODO: restore to Xnext to a non-X value may mean the comment is the leftover (ask before flipping). - Git repo hygiene.
- Line endings /
.gitattributes. If the repo has no.gitattributes, line endings drift (CRLF/LF mixed,core.autocrlf=false) and bulk edits balloon diffs. Add one and run a dedicatedgit add --renormalize .commit (its own PR, when no other work is in flight — it touches nearly every file). - Stale branches & worktrees.
git worktree list— remove leftover worktrees (anything under.claude/worktrees/or other agent/isolation worktrees) withgit worktree remove. Thengit fetch --pruneto drop stale remote-tracking refs, and audit:git branch --merged origin/dev(local branches already in dev — safe to delete) andgit branch -r(remote branches from closed/merged PRs). Delete merged/dead branches; keep intentionally-parked ones (note which and why — e.g. a blocked-upgrade branch likeupgrade/avalonia-12). For branches you didn't create, surface and confirm before deleting rather than assuming abandoned. Confirm open PRs are still wanted.
- Line endings /
C. App data & runtime hygiene (lighter)
- Retention / archive end-to-end. Confirm the app's data retention/purge and (Lite) parquet archiving actually prune old data, and logs rotate. A new time-series table must be registered for retention/archive or it grows forever.
- Perf regression spot-check. Re-run the UI-latency-under-load harness if available; watch known hot spots (e.g. the Lite Blocking tab render hitch). Quick collector-health pass.
D. Release & platform currency (lighter)
- Release infra freshness. Test servers online/patched; signing cert (SignPath) not near expiry; cloud creds (
az/aws) valid; therelease-checklistskill still accurate.- Cross-platform publish smoke.
dotnet publishthe desktop app for the non-Windows runtimes it ships (PerformanceStudio:linux-x64,osx-arm64/osx-x64) and confirm each still produces a runnable app. The Avalonia/SkiaSharp native pins are fragile — the LinuxSkiaSharp.NativeAssets.Linuxpin exists to guard GitHub issue #139 — and a Windows-only build won't catch a broken Linux/macOS runtime.
- Cross-platform publish smoke.
- SQL Server / cloud drift + bundled tools. New SQL Server CU/version, new DMVs/columns, Azure SQL DB / RDS changes (cloud collector paths have a bug history); refresh bundled community procs (sp_WhoIsActive, sp_BlitzLock, sp_HealthParser, sp_HumanEventsBlockViewer).
Output
Report per section: ✅ clean / ⚠️ findings (with the fix made or recommended). Group merged PRs and "parked" items (e.g. a major bump deferred) so the next pass knows where things stand.
Does 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.

