From fb0a8bd6fc8da3418e4bf0f93435d9d3fc0dac0c Mon Sep 17 00:00:00 2001 From: hatayama Date: Fri, 24 Jul 2026 19:28:30 +0900 Subject: [PATCH 1/4] fix: Tighten v3 migration skill guidance The skill predates newer V3 commands, so token-level searches now collide with valid V3 syntax: --wait-for-domain-reload is a positive flag on execute-dynamic-code and --include-inactive on find-game-objects. Document those collisions in a dedicated reference section, tell agents to resolve defaults for unlisted first-party booleans via "uloop --help", and drop the repo-internal maintainer note that shipped to third-party projects where SkillTargetInstaller and skills.go do not exist. --- .../Skill/SKILL.md | 9 ++++++-- .../Skill/references/first-party-v2-to-v3.md | 23 +++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/SKILL.md b/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/SKILL.md index 100e39c33..2fbf5840d 100644 --- a/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/SKILL.md +++ b/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/SKILL.md @@ -5,8 +5,6 @@ description: Migrate only uloop V2 CLI option syntax in agent skills, Markdown, # V3 CLI Invocation Migration -Agent-facing CLI migration candidates live in this skill. Installed-skill cleanup names stay in `SkillTargetInstaller` / `skills.go` `deprecatedSkillNames`. - Use this skill to update V2-era `uloop` CLI option syntax to V3 syntax in agent-facing docs and automation. @@ -46,6 +44,13 @@ Prefer `rg` for searches when available. If `rg` is unavailable, use the best av - For first-party tools, use the reference table. `compile`, `run-tests`, `get-hierarchy`, `record-input`, and `replay-input` have special renamed negative flags. +- For first-party boolean options that are not in the reference tables, run + `uloop --help` and apply the boolean rules to the printed + default: `default: enabled` means the V3 default is true, and + `default: disabled` means it is false. +- Some option names are valid V3 syntax on one command and V2 leftovers on + another. Match every hit to its `uloop` command before editing; the + reference lists the known same-name collisions. - A valid edit is limited to replacing, adding, or removing a `uloop` option token and the boolean value attached to that option in the same invocation. - Preserve surrounding Markdown, shell, and PowerShell formatting. Do not diff --git a/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md b/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md index 382e9f7c7..0564eece5 100644 --- a/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md +++ b/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md @@ -1,7 +1,5 @@ # First-Party V2 to V3 CLI Migration -Agent-facing CLI migration candidates live here. Installed-skill cleanup names stay in `SkillTargetInstaller` / `skills.go` `deprecatedSkillNames`. - Use this reference as the canonical option migration map. Search results are only candidates. Edit a match only after the surrounding context proves it is a V2 `uloop` invocation. @@ -23,6 +21,9 @@ Prefer `rg` when available, but any repository search tool is acceptable. - Search `uloop` first and inspect command examples, shell scripts, PowerShell scripts, and agent skills. - Search boolean-looking CLI syntax: `--` plus nearby `true` or `false`, including `--flag true`, `--flag=false`, and inline Markdown command examples. - Search renamed first-party option names: `wait-for-domain-reload`, `reload-external-scene-changes`, `force-recompile`, `save-before-run`, `show-overlay`, `include-components`, `include-inactive`, and `compile-only`. +- Treat renamed-option hits as command-scoped. `wait-for-domain-reload` and + `include-inactive` also exist as valid V3 positive flags on other + commands; check Same-Name Options on Other Commands before editing them. - Search removed or renamed first-party commands only to report them as out-of-scope command migration candidates: `get-project-info`, `get-version`, `unity-search`, `execute-menu-item`, `get-menu-items`, @@ -42,6 +43,11 @@ Prefer `rg` when available, but any repository search tool is acceptable. | `--flag false` | use the V3 negative option when the V3 default is true | | `--flag=false` | use the V3 negative option when the V3 default is true | +For first-party boolean options that are not listed in Special First-Party +Options, run `uloop --help`. Every V3 flag is printed with its +default: `default: enabled` means the V3 default is true, and +`default: disabled` means it is false. + For third-party tools, inspect the current tool schema or docs before choosing the replacement. Do not infer third-party negative flags from first-party conventions. ## Special First-Party Options @@ -67,6 +73,19 @@ For third-party tools, inspect the current tool schema or docs before choosing t | `uloop execute-dynamic-code` | `--compile-only true` | `--compile-only` | | `uloop execute-dynamic-code` | `--compile-only false` | remove | +## Same-Name Options on Other Commands + +These option names appear in the table above for one command but are valid +V3 syntax on another command. Never migrate them by token match alone. + +| Option | Migrate on | Leave unchanged on | +| --- | --- | --- | +| `wait-for-domain-reload` | `uloop compile` (see Special First-Party Options) | `uloop execute-dynamic-code`, where bare `--wait-for-domain-reload` is a valid V3 default-false flag | +| `include-inactive` | `uloop get-hierarchy` (see Special First-Party Options) | `uloop find-game-objects`, where bare `--include-inactive` is a valid V3 default-false flag | + +Bare `--force-recompile` on `uloop compile` and bare `--compile-only` on +`uloop execute-dynamic-code` are already valid V3 syntax and need no edit. + ## Removed First-Party Commands | V2 command | V3 handling | From e13214d6be12509c3643e4911826c0daaceabe78 Mon Sep 17 00:00:00 2001 From: hatayama Date: Fri, 24 Jul 2026 19:28:35 +0900 Subject: [PATCH 2/4] chore: Keep skill cleanup list pointers in code comments The maintainer note removed from the installed migration skill still matters to maintainers, so restate it where the cleanup lists live: the dispatcher's deprecatedSkillNames and the Unity-side SkillTargetInstaller now reference each other and the skill source. --- .../Editor/Infrastructure/SkillSetup/SkillTargetInstaller.cs | 4 ++++ cli/dispatcher/internal/dispatcher/skills.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Packages/src/Editor/Infrastructure/SkillSetup/SkillTargetInstaller.cs b/Packages/src/Editor/Infrastructure/SkillSetup/SkillTargetInstaller.cs index fbea0d44f..be80e15a6 100644 --- a/Packages/src/Editor/Infrastructure/SkillSetup/SkillTargetInstaller.cs +++ b/Packages/src/Editor/Infrastructure/SkillSetup/SkillTargetInstaller.cs @@ -10,6 +10,10 @@ namespace io.github.hatayama.UnityCliLoop.Infrastructure /// internal static class SkillTargetInstaller { + // Cleanup names for previously installed skill directories. Keep them here + // and in the dispatcher's deprecatedSkillNames (cli/dispatcher/internal/ + // dispatcher/skills.go); agent-facing V2-to-V3 CLI migration guidance lives + // in Packages/src/TemporarySkills~/v3-cli-invocation-migration. private static readonly string[] DeprecatedSkillNames = { "uloop-wait-for-pause-point", diff --git a/cli/dispatcher/internal/dispatcher/skills.go b/cli/dispatcher/internal/dispatcher/skills.go index 4b81394db..0c91cda22 100644 --- a/cli/dispatcher/internal/dispatcher/skills.go +++ b/cli/dispatcher/internal/dispatcher/skills.go @@ -65,6 +65,10 @@ func buildDefaultSkillTargetIDs() []string { return ids } +// deprecatedSkillNames lists previously installed skill directory names that +// skills install/uninstall runs clean up. Keep cleanup names here and in the +// Unity-side SkillTargetInstaller; agent-facing V2-to-V3 CLI migration +// guidance lives in Packages/src/TemporarySkills~/v3-cli-invocation-migration. var deprecatedSkillNames = []string{ "uloop-wait-for-pause-point", "uloop-capture-window", From 9ab53d4bf4932f58c1fc552496244e1f1d5ea31c Mon Sep 17 00:00:00 2001 From: hatayama Date: Fri, 24 Jul 2026 19:28:38 +0900 Subject: [PATCH 3/4] fix: Align migration wizard prompt with report-only removed commands The copyable AI prompt said "Migrate ... removed commands" while the skill itself treats removed commands as report-only unless the user explicitly asks. Reword the prompt so it no longer overrides the skill's rule. --- .../Presentation/Setup/ThirdPartyToolMigrationWizardText.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Packages/src/Editor/Presentation/Setup/ThirdPartyToolMigrationWizardText.cs b/Packages/src/Editor/Presentation/Setup/ThirdPartyToolMigrationWizardText.cs index ce518435b..81cd81890 100644 --- a/Packages/src/Editor/Presentation/Setup/ThirdPartyToolMigrationWizardText.cs +++ b/Packages/src/Editor/Presentation/Setup/ThirdPartyToolMigrationWizardText.cs @@ -26,7 +26,8 @@ internal static class ThirdPartyToolMigrationWizardText "for V3.\n\n" + "Scope:\n" + "- Check SKILL.md, Markdown, POSIX shell scripts, and PowerShell scripts.\n" + - "- Migrate V2 boolean arguments, renamed first-party options, and removed commands.\n" + + "- Migrate V2 boolean arguments and renamed first-party options.\n" + + "- Report removed commands as migration candidates. Do not rewrite or delete them.\n" + "- Read nearby context before editing. Do not change C# snippets, enum/member references, regex match properties, DTO properties, or non-uloop JSON.\n" + "- After editing, summarize changed files, remaining candidates, and any commands I should verify manually."; internal const string MigrationNotCheckedText = "C# source migration status has not been checked."; From 12a8ed7025f322f4ae34071b4805e10757e0a875 Mon Sep 17 00:00:00 2001 From: hatayama Date: Fri, 24 Jul 2026 19:39:30 +0900 Subject: [PATCH 4/4] fix: Clarify that only bare same-name flags are exempt from migration "Leave unchanged on" could be read as skipping value-bearing V2 forms like "--wait-for-domain-reload true" on execute-dynamic-code. State that only the already-bare flag is exempt and value-bearing forms still follow the Boolean Argument Rules. Addresses CodeRabbit review. --- .../Skill/references/first-party-v2-to-v3.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md b/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md index 0564eece5..62b131343 100644 --- a/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md +++ b/Packages/src/TemporarySkills~/v3-cli-invocation-migration/Skill/references/first-party-v2-to-v3.md @@ -76,9 +76,12 @@ For third-party tools, inspect the current tool schema or docs before choosing t ## Same-Name Options on Other Commands These option names appear in the table above for one command but are valid -V3 syntax on another command. Never migrate them by token match alone. +V3 syntax on another command. Never migrate them by token match alone. On the +other command, only the already-bare flag is exempt: value-bearing forms such +as `--flag true` or `--flag=false` still follow the Boolean Argument Rules +against that command's default. -| Option | Migrate on | Leave unchanged on | +| Option | Migrate on | Also valid V3 on | | --- | --- | --- | | `wait-for-domain-reload` | `uloop compile` (see Special First-Party Options) | `uloop execute-dynamic-code`, where bare `--wait-for-domain-reload` is a valid V3 default-false flag | | `include-inactive` | `uloop get-hierarchy` (see Special First-Party Options) | `uloop find-game-objects`, where bare `--include-inactive` is a valid V3 default-false flag |