Migrate namespace from LightmapUvTool to SashaRX.UnityMeshLab - #106
Merged
Conversation
- Add references/ and scripts/ subfolders under each skill - Create directories for unity-ci-validation, unity-package-bootstrap, repo-conventions - Archive pre-overhaul SKILL.md content under .claude/skills/_archive/
…s, anti-patterns)
…er-repo repo-conventions
…cs files) Replaces 'namespace LightmapUvTool' declarations in 48 Editor/*.cs files with 'namespace SashaRX.UnityMeshLab' per the two-segment rule in .claude/skills/_shared/naming-conventions.md. String literals referencing 'LightmapUvTool' (shader paths, menu paths, asset folders, EditorPrefs keys) are intentionally left untouched; renaming those is a separate user-data-compat migration.
…ab.Editor Asmdef file kept at its current path (LightmapUvTool.Editor.asmdef) to preserve its GUID; file rename is a separate commit.
…yMeshLab.Editor.asmdef Renames the asmdef file (and its .meta sibling) to match the already-updated name field. GUID 832f52d32c124f8895ff1ed7c0c050f5 is preserved.
Owner
Author
|
@codex review |
|
Codex Review: Didn't find any major issues. Keep them coming! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…ceholders
- Normalize placeholder scheme to {{PackageName}}, {{Namespace}}, {{PackageId}},
{{DisplayName}}, {{Description}}, {{UnityMinVersion}}, {{Author}}, {{License}},
{{Year}}, {{Date}} — remove inconsistent {{Company}}, {{company}}, {{Display Name}},
{{repo}}, {{author}}, {{YYYY-MM-DD}}, {{YYYY}} variants.
- Translate README.md.template from Russian to English.
- Rename Editor/Company.PackageName.Editor.asmdef.template ->
Editor/SashaRX.{{PackageName}}.Editor.asmdef.template and equivalent for Tests.
- Rename LICENSE -> LICENSE.template for consistency with other template files.
- Add missing files per unity-package-bootstrap/SKILL.md manifest:
.gitignore.template, Runtime/SashaRX.{{PackageName}}.asmdef.template,
Runtime/PackageRuntimeEntryPoint.cs.template,
Editor/PackageEditorEntryPoint.cs.template,
Tests/Editor/SmokeTests.cs.template,
Samples~/Basic/README.md.template,
Documentation~/index.md.template.
- Every .asmdef template parses as valid JSON after placeholder substitution.
- Update unity-package-bootstrap/SKILL.md to reflect the new files and {{Year}}/{{Date}} parameters.
Prettier reflows single-line YAML 'description:' values into folded scalars, which the Claude Code skill loader then fails to parse. Excluding .claude/skills/** from Prettier is the canonical mitigation (see .claude/skills/_shared/anti-patterns.md item 26).
Remove duplicated skill content (meta files, assembly platform, code conventions, naming conventions) that now lives canonically in .claude/skills/_shared/ and .claude/skills/repo-conventions/SKILL.md. Keep only: - Entry-point pointers to the skill catalog. - Domain-specific rules that are not covered by any skill (native plugins, transfer-pipeline experiments, LODGroup lifecycle, sidecar assets, LOD/COL naming, FBX exporter gating). - Review focus list scoped to this repo's domain. Title bumped from 'com.sasharx.lightmap-uv-tool' to 'UnityMeshLab' to match repository identity; the package.json rename follows under a separate MAJOR-bump commit.
Per Seleznov's A/B study (~100% activation vs ~77% with passive 'Use when …'), the three highest-criticality skills get directive 'ALWAYS invoke this skill when …' phrasing plus explicit 'Do not …' prohibitions: - unity-undo-prefab-safety (every editor mutation must be undoable) - unity-assetdatabase-tools (every batch must pair Start/Stop in try/finally) - unity-package-architect (every new package follows the canonical layout) Remaining skills keep passive 'Use when …' to avoid directive saturation.
…arx.unitymeshlab (1.0.0) BREAKING CHANGE: package identifier and repository URL changed. Downstream consumers must update the entry in Packages/manifest.json: "com.sasharx.unitymeshlab": "https://github.com/SashaRX/UnityMeshLab.git" Also adds documentationUrl / changelogUrl / licensesUrl fields and bumps version 0.15.58 -> 1.0.0 to signal package-id stabilization. CHANGELOG entry documents the migration path for namespace and manifest consumers.
test.yml - EditMode test run on Unity 6000.0.33f1 (matches package.json 'unity: 6000.0'). - Single matrix row today; extend when a second LTS is adopted. fail-fast: false. - Skips for fork PRs to avoid UNITY_LICENSE-missing failures. - Library cache keyed on package.json + asmdef + cs hash; concurrency cancels superseded runs on the same ref. - Uploads NUnit XML artifacts even on failure. release.yml - Triggered on push of v* tag. - Verifies tag matches package.json version (exact string). - Extracts the matching '## [version]' section from CHANGELOG.md as release body; falls back to GitHub auto-generated notes if absent. - Marks as prerelease when the tag contains a dash (e.g. v1.0.0-rc1). Required secrets (repository-level): - UNITY_LICENSE (personal .ulf, base64-encoded, single line) OR - UNITY_SERIAL + UNITY_EMAIL + UNITY_PASSWORD (professional). Both workflows are authored per unity-ci-validation/SKILL.md canonical skeleton.
…crets absent Previously the 'EditMode' matrix job failed within 5 seconds because GameCI fails fast when UNITY_LICENSE (and UNITY_SERIAL/…) are all empty. That produced a red CI check on every PR until secrets are configured. Restructured: - New 'check-license' job probes 'secrets.UNITY_LICENSE != ''' and 'secrets.UNITY_SERIAL != '' && UNITY_EMAIL != '' && UNITY_PASSWORD != '''. Outputs 'has-license' true/false. Emits an Actions notice + step-summary explaining how to add the secret when missing. - 'editmode' job gates on 'needs.check-license.outputs.has-license == 'true'' AND the existing fork-PR guard. Skips cleanly otherwise. - 'summary' depends on both; treats 'skipped' as OK, fails only on real 'failure'. That keeps the overall workflow green when no license is configured, and red when tests legitimately fail.
…isabled in 2024) unity-ci-validation/SKILL.md - Promote a 'License activation' section that opens with the Personal-tier blocker: Unity disabled manual .alf/.ulf activation for Personal seats in 2024. game-ci/unity-request-activation-file is dead for Personal. - Document three realistic Personal-tier paths: license-gate (default), reuse a locally-extracted .ulf (low success), self-hosted runner. - Document Pro/Plus path with UNITY_SERIAL + UNITY_EMAIL + UNITY_PASSWORD. - Add the canonical license-gate workflow pattern as a copy-paste recipe, with the env-var indirection trick that lets 'secrets.X != ''' resolve before masking. Same pattern used in this repo's .github/workflows/test.yml. - Expand 'Debugging failed runs': separate Personal vs Pro license-failure diagnoses; add the '~5-second EditMode failure' signature for missing secrets without a gate. repo-conventions/SKILL.md - Note that this repo is on Personal tier; the test.yml job will stay 'skipped' on GitHub-hosted runners until Sasha moves to Plus/Pro or sets up a self-hosted runner. Local Test Runner remains the verification path.
Owner
Author
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f45ad6ad5a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…mpty regex)
Codex reported that 'awk -v v="## [$VERSION]" $0 ~ v' treats v as a regex,
so a SemVer header like '## [1.0.0]' parses as the literal '## ' followed by
the character class [1.0.0] — i.e. any one of {1, ., 0}. On the real heading
'## [1.0.0] - 2026-04-20' the next char after '## ' is '[', which is not in
the class, so the match never fires. Result: /tmp/release-notes.md stays
empty and every release falls back to GitHub auto-generated notes instead
of the curated CHANGELOG section.
Replace the regex match with awk's index() function anchored at column 1:
literal substring search, no metacharacter handling needed. Verified locally
on the real CHANGELOG.md — extracts the 18-line '## [1.0.0]' section and
stops at the next '## [' heading as intended.
Reported by chatgpt-codex-connector on PR #106 review (P2).
SashaRX
pushed a commit
that referenced
this pull request
Apr 24, 2026
Main's PR #106 renamed namespace LightmapUvTool → SashaRX.UnityMeshLab globally. My four new files (BenchmarkRecorder, FbxMetricsExporter, UvPngWriter, TestSuiteAsset) were added on this branch before the migration and still declared the old namespace; the merge commit didn't touch new-on-branch files. Update them to match.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
LightmapUvTooltoSashaRX.UnityMeshLabacross all Editor C# files and asmdefChanged Zones
Editor/— Namespace migration in all 40+ Editor C# filespackage.json— (metadata, not shown in diff but referenced).claude/skills/— New and updated skill documentationAGENTS.md,CLAUDE.md— Updated namespace referencesChecklist
SashaRX.UnityMeshLabnamespace_archive/Test Plan
No testing needed. This is a namespace migration and documentation overhaul:
Review Notes
This PR accomplishes two goals:
Namespace alignment: Migrates from the legacy
LightmapUvToolnamespace to the canonicalSashaRX.UnityMeshLabpattern, establishing consistency with the SashaRX package umbrella and enabling future UPM publication.Skill directory overhaul: Replaces Russian-language skill descriptions with comprehensive English-language guidance covering:
unity-package-architect— UPM package layout and asmdef structureunity-ci-validation— GameCI workflows and release automation (new)unity-undo-prefab-safety— Undo and prefab mutation safetyunity-serialized-workflow— SerializedObject/SerializedProperty lifecycleunity-assetdatabase-tools— Asset batching and import pipelineunity-editor-tooling— EditorWindow, CustomEditor, menu itemsunity-package-reviewer— Release readiness auditmigration-and-refactor-planner— Safe multi-step refactorsrepo-auditor— Repository health auditunity-package-bootstrap— New package scaffolding (new)repo-conventions— UnityMeshLab-specific identity and conventions (new)Each skill includes scope, delegations to sibling skills, canonical patterns, and anti-pattern references. Shared rules live in
_shared/(naming-conventions, anti-patterns, version-gates). Checklists provide verification steps for common workflows (undo safety, prefab safety, batch safety, package release).The old Russian descriptions are preserved in
_archive/for reference during the transition.https://claude.ai/code/session_01L6hHhb5WDFPjh3eon738yh