plugins/dev-utils/skills/symlink-manager/SKILL.md
Create, audit, repair, and document cross-platform symlinks that work correctly on both Windows and macOS/Linux. Use this skill whenever the user mentions symlinks, symbolic links, junction points, .gitconfig symlinks, broken links after git pull, cross-platform path issues, or needs help with ln -s equivalents on Windows. Also trigger when the user reports that files are missing or wrong after switching between Mac and Windows machines using Git. This skill solves the common problem where symlinks committed on macOS show up as plain text files on Windows (and vice versa) because of Git's core.symlinks setting or missing Developer Mode / elevated permissions. **IMPORTANT FOR WINDOWS USERS:** Developer Mode must be enabled before creating symlinks. Without it, Git will check out symlinks as plain-text files or hardlinks, breaking cross-platform workflows.
npx skillsauth add richfrem/agent-plugins-skills symlink-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Git symlinks break across platforms because:
| Issue | macOS/Linux | Windows |
|---|---|---|
| Git setting | core.symlinks=true (default) | core.symlinks=false (default, unless Dev Mode enabled) |
| Link type | ln -s symlink | NTFS symlink or Junction Point or Hardlink |
| Permissions | Any user | Requires Developer Mode or admin elevation |
| Git behaviour | Stores as symlink object | Stores as plain text file containing the target path |
When core.symlinks=false, Git checks out a symlink as a plain text file whose contents are the target path. When you then git pull on the other machine, that text file arrives instead of a real link — silent, no error.
When core.symlinks=false and Developer Mode is disabled, symlinks can be accidentally replaced with hardlinks. Hardlinks cannot be committed as symlinks to Git, so they break the cross-platform workflow:
Solution: Always use real symlinks, never hardlinks. Enable Developer Mode on Windows first, then use /create-sym-link command to create proper symlinks that Git recognizes.
Run the diagnosis script first. It checks:
git config core.symlinks (local + global)python ./scripts/symlink_manager.py diagnose
On Windows (needs Developer Mode enabled first, or run as admin):
git config core.symlinks true
git rm --cached -r . # unstage everything
git reset --hard # re-checkout with symlinks honoured
On macOS / Linux (usually already correct):
git config --get core.symlinks # should say "true"
Add a .gitattributes line to lock symlinks in the repo:
* text=auto
*.symlink -text
For cross-platform teams: Use the Python script — it automatically handles OS differences without requiring bash, PowerShell, or .sh scripts.
Use the /create-sym-link command in Claude Code for an interactive workflow:
/create-sym-link
This prompts for source and destination paths and uses the Python symlink manager.
Or use the Python script directly (works on Windows, macOS, and Linux):
# Create a single symlink (automatically detects OS)
python ./scripts/symlink_manager.py create --src plugins/plugin-manager/scripts/plugin_installer.py --dst plugins/plugin-manager/skills/plugin-installer/scripts/plugin_installer.py
# Re-create ALL links from the manifest
python ./scripts/symlink_manager.py restore
# Audit: list broken or missing links
python ./scripts/symlink_manager.py audit
# Full diagnosis of the environment
python ./scripts/symlink_manager.py diagnose
The Python script automatically:
Critical: If symlinks were created as hardlinks or plain-text files:
rm plugins/plugin-manager/skills/*/scripts/plugin_installer.pygit config core.symlinks true/create-sym-link command or python ./scripts/symlink_manager.py create ...git add -A && git commit -m "fix: replace hardlinks with proper symlinks"If you have multiple text-file stand-ins in a folder hierarchy, use the bulk fixer:
# Scan folder, generate inventory, and fix all broken symlinks
python ./scripts/bulk_symlink_fixer.py plugins/plugin-manager/skills/maintain-plugins/scripts
The bulk fixer:
symlink_manager.py create in a loop to fix each oneCommit symlinks.json to the repo. On a fresh checkout (or after a git pull breaks links on Windows), any developer runs:
python ./scripts/symlink_manager.py restore
…and all links are recreated correctly for their platform.
git config --global core.symlinks true after enabling Developer Mode.core.symlinks=false inherited from a shared config.git config --list --show-origin | grep symlinks to see where the setting comes from.references/troubleshooting.md — Common error messages and fixesscripts/symlink_manager.py — The cross-platform Python script.agent/rules/symlink-cross-platform.md — Repository-wide symlink best practices and requirementsreferences/ADRs/. Always consult them for standards on shared scripts, cross-plugin dependencies, symlinking patterns and loose coupling to avoid repeating yourself.Read references/troubleshooting.md when the user reports specific error messages.
data-ai
Task management agent. Auto-invoked for task creation, status tracking, and kanban board operations using Markdown files across lane directories. V2 enforces Kanban Sovereignty constraints preventing manual task file edits.
development
Interactively prepares a targeted Red Team Review package. It conducts a brief discovery interview to determine the threat model, generates a strict security auditor prompt, compiles a manifest of relevant project files, and bundles them into a single Markdown artifact or ZIP archive ready for an external LLM (like Grok, ChatGPT, or Gemini) or a human reviewer.
tools
Reduces AI agent context bloat across three dimensions: (1) duplicate skill deduplication — clears stale agent directory copies since the IDE already reads from plugins/ directly; (2) instruction file optimization — rewrites CLAUDE.md, GEMINI.md, or .github/copilot-instructions.md to under ~80 lines, keeping only rules that directly change agent behaviour; (3) session token efficiency — guidance on cheap subagent delegation, context compounding across turns, and session hygiene. Trigger with "optimize context", "reduce context bloat", "deduplicate skills", "trim CLAUDE.md", "trim GEMINI.md", "fix my context usage", "why are my skills loading twice", "how do I reduce token usage", or "clean up agent directories".
testing
Specialized Quality Assurance Operator for documentation link integrity and scans. Automatically handles automated link validation, auditing, fixing, and repairing broken documentation links and docs paths across repositories, with guidance on when to commit changes.