[PR #58] [MERGED] fix: no symlinks, so Windows clones get the skills #92

Closed
opened 2026-10-15 20:53:20 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rehan-remade/universal-modder/pull/58
Author: @rehan-remade
Created: 10/5/2026
Status: ✅ Merged
Merged: 10/5/2026
Merged by: @rehan-remade

Base: main ← Head: fix/no-symlinks


📝 Commits (2)

  • 2e5a63c fix: no symlinks, so Windows clones get the skills
  • 0a408c9 Merge main into fix/no-symlinks and refresh the skill copies

📊 Changes

58 files changed (+3799 additions, -10 deletions)

View changed files

➖ .agents/skills (+0 -1)
➕ .agents/skills/asset-pipeline/SKILL.md (+110 -0)
➕ .agents/skills/fal-assets/SKILL.md (+113 -0)
➕ .agents/skills/game-automation/SKILL.md (+98 -0)
➕ .agents/skills/game-recon/SKILL.md (+66 -0)
➕ .agents/skills/mashup-mods/SKILL.md (+124 -0)
➕ .agents/skills/mod-any-game/SKILL.md (+184 -0)
➕ .agents/skills/mod-any-game/references/case-studies.md (+142 -0)
➕ .agents/skills/mod-any-game/references/engines/bethesda.md (+44 -0)
➕ .agents/skills/mod-any-game/references/engines/big-frameworks.md (+73 -0)
➕ .agents/skills/mod-any-game/references/engines/dotnet-xna.md (+66 -0)
➕ .agents/skills/mod-any-game/references/engines/genie-aoe2.md (+45 -0)
➕ .agents/skills/mod-any-game/references/engines/godot.md (+37 -0)
➕ .agents/skills/mod-any-game/references/engines/minecraft.md (+59 -0)
➕ .agents/skills/mod-any-game/references/engines/misc-engines.md (+62 -0)
➕ .agents/skills/mod-any-game/references/engines/native.md (+57 -0)
➕ .agents/skills/mod-any-game/references/engines/retro-decomp.md (+61 -0)
➕ .agents/skills/mod-any-game/references/engines/source.md (+35 -0)
➕ .agents/skills/mod-any-game/references/engines/unity.md (+74 -0)
➕ .agents/skills/mod-any-game/references/engines/unreal.md (+55 -0)

...and 39 more files

📄 Description

What: remove the repo's five symlinks, so a Windows clone gets the skills. This is the root cause behind #13.

Git for Windows usually checks symlinks out as small text files. So in a Windows clone, every agent run inside the repo found no skills. The Gemini extension install could also fail ("Configuration file not found"), and Gemini printed "Failed to discover skills: ENOTDIR".

Why copies instead of config: I checked each agent's docs and source.

  • Codex, Gemini CLI and Cursor have no setting for an extra skills folder.
  • Claude Code has none either; its local-plugin route needs an absolute path, so it can't be committed.
  • Copilot's chat.agentSkillsLocations exists but is deprecated.
  • Every agent except Claude Code reads .agents/skills; Claude Code reads .claude/skills.

So:

  • .agents/skills (Codex, Gemini CLI, Copilot, Cursor, OpenCode) and .claude/skills (Claude Code) are real copies of skills/ (208 KB each). test_skill_copies_match fails while they differ and prints the one-line refresh command.
  • .gemini/skills and .github/skills are gone: Gemini and Copilot read .agents/skills. With both Gemini folders present, Gemini CLI 0.62 printed "Skill conflict detected" once per skill.
  • GEMINI.md is now a real file with the line @AGENTS.md (Gemini's import syntax), like CLAUDE.md.
  • skills/ stays the source, so the plugin and extension manifests are unchanged.
  • README, AGENTS.md, CLAUDE.md and CONTRIBUTING.md now describe the copies. CONTRIBUTING.md says to edit skills/ and how to refresh the copies.

Tested:

  • No symlinks remain in the index.
  • The new test passes, and fails with the fix-it message when a copy is edited.
  • Gemini CLI 0.62 in a trusted clone: main lists 10 skills with 10 "Skill conflict detected" warnings; this branch lists the same 10 from .agents/skills with none.

Merge order: merge this after #56 and #57, which edit files in skills/. Then refresh the copies on this branch (I'll do it), or run the command from the test. With this in, #55's workaround isn't needed anymore.

Checklist

  • uv run --with pytest pytest -q tests passes (49); um kb check --index and um publish check . pass
  • authored by: Claude Code (Opus 5.5) with @rehan-remade

Refs #13

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rehan-remade/universal-modder/pull/58 **Author:** [@rehan-remade](https://github.com/rehan-remade) **Created:** 10/5/2026 **Status:** ✅ Merged **Merged:** 10/5/2026 **Merged by:** [@rehan-remade](https://github.com/rehan-remade) **Base:** `main` ← **Head:** `fix/no-symlinks` --- ### 📝 Commits (2) - [`2e5a63c`](https://github.com/rehan-remade/universal-modder/commit/2e5a63c24f340d8ed5ac09841c12c5db4d83c5dc) fix: no symlinks, so Windows clones get the skills - [`0a408c9`](https://github.com/rehan-remade/universal-modder/commit/0a408c9e5ef1786bbac0b1877a00dca94359b5a6) Merge main into fix/no-symlinks and refresh the skill copies ### 📊 Changes **58 files changed** (+3799 additions, -10 deletions) <details> <summary>View changed files</summary> ➖ `.agents/skills` (+0 -1) ➕ `.agents/skills/asset-pipeline/SKILL.md` (+110 -0) ➕ `.agents/skills/fal-assets/SKILL.md` (+113 -0) ➕ `.agents/skills/game-automation/SKILL.md` (+98 -0) ➕ `.agents/skills/game-recon/SKILL.md` (+66 -0) ➕ `.agents/skills/mashup-mods/SKILL.md` (+124 -0) ➕ `.agents/skills/mod-any-game/SKILL.md` (+184 -0) ➕ `.agents/skills/mod-any-game/references/case-studies.md` (+142 -0) ➕ `.agents/skills/mod-any-game/references/engines/bethesda.md` (+44 -0) ➕ `.agents/skills/mod-any-game/references/engines/big-frameworks.md` (+73 -0) ➕ `.agents/skills/mod-any-game/references/engines/dotnet-xna.md` (+66 -0) ➕ `.agents/skills/mod-any-game/references/engines/genie-aoe2.md` (+45 -0) ➕ `.agents/skills/mod-any-game/references/engines/godot.md` (+37 -0) ➕ `.agents/skills/mod-any-game/references/engines/minecraft.md` (+59 -0) ➕ `.agents/skills/mod-any-game/references/engines/misc-engines.md` (+62 -0) ➕ `.agents/skills/mod-any-game/references/engines/native.md` (+57 -0) ➕ `.agents/skills/mod-any-game/references/engines/retro-decomp.md` (+61 -0) ➕ `.agents/skills/mod-any-game/references/engines/source.md` (+35 -0) ➕ `.agents/skills/mod-any-game/references/engines/unity.md` (+74 -0) ➕ `.agents/skills/mod-any-game/references/engines/unreal.md` (+55 -0) _...and 39 more files_ </details> ### 📄 Description **What:** remove the repo's five symlinks, so a Windows clone gets the skills. This is the root cause behind #13. Git for Windows usually checks symlinks out as small text files. So in a Windows clone, every agent run inside the repo found no skills. The Gemini extension install could also fail ("Configuration file not found"), and Gemini printed "Failed to discover skills: ENOTDIR". **Why copies instead of config:** I checked each agent's docs and source. - Codex, Gemini CLI and Cursor have no setting for an extra skills folder. - Claude Code has none either; its local-plugin route needs an absolute path, so it can't be committed. - Copilot's `chat.agentSkillsLocations` exists but is deprecated. - Every agent except Claude Code reads `.agents/skills`; Claude Code reads `.claude/skills`. So: - `.agents/skills` (Codex, Gemini CLI, Copilot, Cursor, OpenCode) and `.claude/skills` (Claude Code) are real copies of `skills/` (208 KB each). `test_skill_copies_match` fails while they differ and prints the one-line refresh command. - `.gemini/skills` and `.github/skills` are gone: Gemini and Copilot read `.agents/skills`. With both Gemini folders present, Gemini CLI 0.62 printed "Skill conflict detected" once per skill. - `GEMINI.md` is now a real file with the line `@AGENTS.md` (Gemini's import syntax), like `CLAUDE.md`. - `skills/` stays the source, so the plugin and extension manifests are unchanged. - README, AGENTS.md, CLAUDE.md and CONTRIBUTING.md now describe the copies. CONTRIBUTING.md says to edit `skills/` and how to refresh the copies. **Tested:** - No symlinks remain in the index. - The new test passes, and fails with the fix-it message when a copy is edited. - Gemini CLI 0.62 in a trusted clone: `main` lists 10 skills with 10 "Skill conflict detected" warnings; this branch lists the same 10 from `.agents/skills` with none. **Merge order:** merge this after #56 and #57, which edit files in `skills/`. Then refresh the copies on this branch (I'll do it), or run the command from the test. With this in, #55's workaround isn't needed anymore. **Checklist** - [x] `uv run --with pytest pytest -q tests` passes (49); `um kb check --index` and `um publish check .` pass - [x] authored by: Claude Code (Opus 5.5) with @rehan-remade Refs #13 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 20:53:20 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rehan-remade/universal-modder#92
No description provided.