Improve skills and document updates
This commit is contained in:
@@ -22,19 +22,9 @@ Before acting, read the shared policy references:
|
||||
test -f pyproject.toml && test -d src/plugin_helper && test -d registry && test -d locks
|
||||
```
|
||||
|
||||
2. Read the local helper behavior before changing files.
|
||||
|
||||
Inspect at least:
|
||||
|
||||
```bash
|
||||
sed -n '1,220p' README.md
|
||||
sed -n '1,260p' src/plugin_helper/cli.py
|
||||
sed -n '1,260p' src/plugin_helper/planner.py
|
||||
sed -n '1,220p' src/plugin_helper/models.py
|
||||
sed -n '1,220p' registry/plugins.toml
|
||||
sed -n '1,220p' locks/<instance>.lock.toml
|
||||
sed -n '1,220p' docs/SMOKETEST.md
|
||||
```
|
||||
2. Read the locked plugin entry and its registry file before changing them.
|
||||
Open `src/plugin_helper` only when the command output disagrees with the
|
||||
lock. `docs/SMOKETEST.md` is for the smoke after apply.
|
||||
|
||||
3. Determine the instance.
|
||||
|
||||
@@ -103,22 +93,22 @@ release URL only.
|
||||
curl -sS https://api.github.com/repos/<owner>/<repo>/releases/tags/<tag>
|
||||
```
|
||||
|
||||
Pick the asset that matches the Beat Saber instance/version. Prefer an exact versioned asset such as `1.40.8.zip` over broad or source archives. If multiple plausible assets remain, ask the user.
|
||||
Pick the asset that matches the Beat Saber instance/version. Prefer an exact versioned asset such as `1.40.8.zip` over broad or source archives. If multiple plausible assets remain, ask the user. When a release ships one zip per game version, record the asset name and the `gameVersion` string embedded in the DLL. A stale manifest is a warning on the chosen asset. It is not a reason to select a lower-named zip.
|
||||
|
||||
5. Inspect the asset before selecting an install strategy.
|
||||
|
||||
Download to the helper state directory:
|
||||
Download to the helper cache the planner searches:
|
||||
|
||||
```bash
|
||||
mkdir -p .state/instances/<instance>/downloads/<plugin-id>
|
||||
curl -L --fail -o .state/instances/<instance>/downloads/<plugin-id>/<asset-name> "<browser_download_url>"
|
||||
sha256sum .state/instances/<instance>/downloads/<plugin-id>/<asset-name>
|
||||
mkdir -p .state/cache/downloads/<instance>/<plugin-id>
|
||||
curl -L --fail -o .state/cache/downloads/<instance>/<plugin-id>/<asset-name> "<browser_download_url>"
|
||||
sha256sum .state/cache/downloads/<instance>/<plugin-id>/<asset-name>
|
||||
```
|
||||
|
||||
Match the checksum against GitHub's `digest` when available. Inspect zip contents:
|
||||
|
||||
```bash
|
||||
unzip -l .state/instances/<instance>/downloads/<plugin-id>/<asset-name>
|
||||
unzip -l .state/cache/downloads/<instance>/<plugin-id>/<asset-name>
|
||||
```
|
||||
|
||||
Use the install strategy guide in the artifact policy.
|
||||
@@ -152,15 +142,22 @@ release URL only.
|
||||
|
||||
7. Use the helper to validate, plan, and apply.
|
||||
|
||||
Always pass `--state-dir .state` so the helper uses the repo-local downloaded asset:
|
||||
Pass `--state-dir .state` so the helper uses the repo-local download. On a
|
||||
native Windows BSManager install, also pass
|
||||
`--config plugin-helper.windows.toml.example --profile windows` when
|
||||
`plugin-helper.local.toml` is absent. `--state-dir .state` alone selects the
|
||||
`default` install id, which is a different bootstrap record from the
|
||||
`windows` profile.
|
||||
|
||||
```bash
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper --state-dir .state check --instance <instance>
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper --state-dir .state plan --instance <instance> --plugin <plugin-id>
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper --state-dir .state apply <generated-plan-path>
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper --config plugin-helper.windows.toml.example --profile windows --state-dir .state check --instance <instance>
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper --config plugin-helper.windows.toml.example --profile windows --state-dir .state plan --instance <instance> --plugin <plugin-id>
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper --config plugin-helper.windows.toml.example --profile windows --state-dir .state apply <generated-plan-path>
|
||||
```
|
||||
|
||||
Before applying, read or summarize the generated plan enough to confirm it changes only the intended plugin files.
|
||||
`plan` keeps the dependency closure in `unchanged` when those live files
|
||||
already match. `changes` is what `apply` writes. Confirm `Changes:` is the
|
||||
intended plugin before applying.
|
||||
|
||||
8. Verify the result.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: beatsaber-plugin-update-auditor
|
||||
description: Audit Beat Saber plugin-helper locks for available plugin updates and follow-up work. Use when the user asks to check all Beat Saber plugins for updates, compare locked mods against GitHub or BeatMods, review plugin/version compatibility tracking notes, identify PR/local/manual builds that need follow-up, or skip paid/private Patreon and Discord plugin sources during update checks.
|
||||
description: Audit Beat Saber plugin-helper locks for available plugin updates and follow-up work. Use when the user asks to check all Beat Saber plugins for updates, compare locked mods against GitHub or BeatMods, review plugin/version compatibility tracking notes, identify PR/local/manual builds that need follow-up, or skip paid/private Patreon and Discord plugin sources during update checks. Read docs/notes/update-checks/<version>/ before the audit and add a new markdown file there when the audit finishes.
|
||||
---
|
||||
|
||||
# Beat Saber Plugin Update Auditor
|
||||
@@ -32,7 +32,14 @@ Before auditing, read the shared policy references:
|
||||
PYTHONPATH=src .venv/bin/python -m plugin_helper instances
|
||||
```
|
||||
|
||||
3. Run the update audit with repo-local state unless the user explicitly targets
|
||||
3. Read the update journal for that Beat Saber version before drawing
|
||||
conclusions. Journals live under `docs/notes/update-checks/<version>/`, one
|
||||
directory per game version, with as many markdown files as needed (usually
|
||||
one dated file per check). List the directory and read the recent files.
|
||||
Treat them as prior findings, not as a substitute for a fresh audit. If the
|
||||
directory does not exist yet, create it when recording this check.
|
||||
|
||||
4. Run the update audit with repo-local state unless the user explicitly targets
|
||||
another configured profile:
|
||||
|
||||
```bash
|
||||
@@ -44,7 +51,7 @@ Before auditing, read the shared policy references:
|
||||
verified metadata, skips `patreon/` and `discord/` sources, and marks local,
|
||||
PR, manual, failed-trial, or pending-smoke entries as review items.
|
||||
|
||||
4. Read the active compatibility tracker before proposing updates for review
|
||||
5. Read the active compatibility tracker before proposing updates for review
|
||||
items. For the current migration notes, inspect:
|
||||
|
||||
```bash
|
||||
@@ -53,15 +60,22 @@ Before auditing, read the shared policy references:
|
||||
```
|
||||
|
||||
Follow up on rows marked failed, omitted, currently failed, smoke blocked,
|
||||
manual resmoke pending, local build, PR build, or local/private. Do not
|
||||
reinstall failed or omitted plugins unless the notes identify a newer
|
||||
compatible source.
|
||||
manual resmoke pending, local build, PR build, or local/private. The lock
|
||||
`reason` and `docs/notes/update-checks/<version>/` are the current record.
|
||||
When an older note says a plugin was removed and the lock still has a local
|
||||
or pull-request build, the lock wins. Correct that note in the same change.
|
||||
Do not reinstall failed or omitted plugins unless the lock or journal
|
||||
identifies a newer compatible source.
|
||||
|
||||
5. For each public update candidate, inspect source notes before changing the
|
||||
To see what BeatMods has for one mod, query `status=all` for that game
|
||||
version and filter by mod name in the client. BeatMods ignores `search` and
|
||||
`name`. An empty verified list is not the whole catalog.
|
||||
|
||||
6. For each public update candidate, inspect source notes before changing the
|
||||
lock. Follow the shared artifact policy for GitHub-first sourcing and
|
||||
BeatMods fallback cases.
|
||||
|
||||
6. Do not attempt automated public update checks for:
|
||||
7. Do not attempt automated public update checks for:
|
||||
|
||||
- `patreon/NalulunaModAssistant` or Naluluna bundles
|
||||
- `discord/BeatSaberPlus` or BeatSaberPlus/ChatPlexSDK bundles
|
||||
@@ -69,7 +83,7 @@ Before auditing, read the shared policy references:
|
||||
|
||||
Report them as skipped/manual follow-up only.
|
||||
|
||||
7. If the user asks to apply an update, switch to the `beatsaber-plugin-manager`
|
||||
8. If the user asks to apply an update, switch to the `beatsaber-plugin-manager`
|
||||
workflow for download, lock update, planning, apply, and smoketest.
|
||||
|
||||
## Output
|
||||
@@ -84,3 +98,15 @@ Summarize in four groups:
|
||||
|
||||
Mention BeatMods/GitHub API errors separately from "no update found"; those are
|
||||
unknowns, not proof that the plugin is current.
|
||||
|
||||
## Journal
|
||||
|
||||
After the audit, add a new markdown file. Do not rewrite earlier journal files.
|
||||
|
||||
```text
|
||||
docs/notes/update-checks/<beat-saber-version>/<YYYY-MM-DD>.md
|
||||
```
|
||||
|
||||
Use `<YYYY-MM-DD>-<short-slug>.md` when that date already has an entry. Keep
|
||||
the note short: date, instance, the four summary groups, and any comparison
|
||||
that changed a recommendation. A version directory may hold many files.
|
||||
|
||||
@@ -50,7 +50,7 @@ dependency closure before downloading.
|
||||
- Download artifacts into the selected helper state directory, normally:
|
||||
|
||||
```bash
|
||||
<state_dir>/instances/<instance>/downloads/<plugin-id>/
|
||||
<state_dir>/cache/downloads/<instance>/<plugin-id>/
|
||||
```
|
||||
|
||||
- Record SHA-256 checksums for downloaded or built artifacts.
|
||||
|
||||
@@ -9,8 +9,12 @@ Use this policy when a task changes or verifies a live BSManager instance.
|
||||
the current duration in `docs/SMOKETEST.md` unless the user requested a
|
||||
different duration.
|
||||
- Do not rely on `timeout` to kill the full game process tree.
|
||||
- Prefer the documented foreground Proton launch with a background watchdog that
|
||||
- On Linux, prefer the documented foreground Proton launch with a background watchdog that
|
||||
sleeps for the smoke window, then terminates Beat Saber by process name.
|
||||
- On native Windows, launch `Beat Saber.exe --no-yeet fpfc` from the instance
|
||||
directory. Wait until `Logs/_latest.log` shows `MainSystemInit`, or about 20
|
||||
seconds, then stop the `Beat Saber` process. See the Windows section in
|
||||
`docs/SMOKETEST.md`.
|
||||
- After the run, confirm no Beat Saber process remains. If cleanup fails, say so
|
||||
and ask the user to close it manually.
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ checkout locations.
|
||||
|
||||
## Profiles
|
||||
|
||||
- Read `plugin-helper.local.toml` before choosing a configured profile:
|
||||
- `--state-dir .state` without a profile uses the `default` install id. A native Windows BSManager tree is the `windows` profile. When `plugin-helper.local.toml` is absent, pass `--config plugin-helper.windows.toml.example --profile windows`.
|
||||
- Read `plugin-helper.local.toml` before choosing a configured profile when that file exists:
|
||||
|
||||
```bash
|
||||
sed -n '1,220p' plugin-helper.local.toml
|
||||
|
||||
Reference in New Issue
Block a user