DryLake Agent Portability
Move AI agent instructions between Claude Code, Cursor, Codex, and other AI coding tools without rewriting them by hand.
DryLake scans your workspace and home directory for the agent and rule files used by today's AI coding tools, validates them, and translates them to the format each tool expects. Build the prompt once, ship it everywhere.


Why use it?
- One source of truth for
AGENTS.md, CLAUDE.md, Cursor rules, Claude skills, and Codex configs.
- Stop hand-editing the same instructions in five different formats every time something changes.
- Catch broken or unsupported rules before they reach the agent at runtime.
- Reuse skills and agents across teammates, repos, and machines.
30-second start
- Install the extension.
- Open the Command Palette and run
Xupra DryLake: Scan Workspace to preview what DryLake found.
- Run
Xupra DryLake: Connect if you want to sync to a workspace and translate to other targets.
- Run
Xupra DryLake: Import Workspace to upload the detected files.
- Run
Xupra DryLake: Check Compatibility or Xupra DryLake: Export Preview to see the translated output for each target.
No account is required for the local scan and preview.
DryLake automatically detects:
AGENTS.md and CLAUDE.md at the repo root and at the home-directory level (~/.codex/AGENTS.md, ~/.claude/CLAUDE.md).
- Claude skills:
.claude/skills/**/SKILL.md and ~/.claude/skills/**/SKILL.md.
- Claude sub-agents:
.claude/agents/**/*.md and ~/.claude/agents/**/*.md.
- Cursor rules:
.cursor/rules/**/*.mdc and ~/.cursor/rules/**/*.mdc.
- Cursor skills:
.cursor/skills/**/SKILL.md and ~/.cursor/skills/**/SKILL.md.
- Codex agents:
.codex/agents/**/*.toml and ~/.codex/agents/**/*.toml.
- Codex skills:
.codex/skills/**/SKILL.md and ~/.codex/skills/**/SKILL.md.
- Generic skills under
.agents/skills/**/SKILL.md.
You can add custom patterns with xupra.additionalScanPatterns.
Supported targets
DryLake currently scans, validates, previews, and writes files for Codex, Claude Code, Claude Agents, and Cursor.
Privacy and file handling
- The local scan runs entirely inside VS Code. Nothing is uploaded until you run
Import Workspace or Export Preview.
- DryLake reads only the file types listed under Supported inputs plus any patterns you add to
xupra.additionalScanPatterns. It never scans *.py or other source code.
- Built-in excludes always skip
node_modules, .git, .next, dist, build, out, coverage, storage, .venv, __pycache__, and other heavy or sensitive directories.
- Add your own patterns to
xupra.scan.exclude to keep additional paths out of the scan. The defaults already exclude .env files and secrets/ folders.
- When you run
Import Workspace the matched files are sent to your configured xupra.baseUrl so you can compare, translate, and share them. You can review the file list in the Workspace view before importing.
- Sign out at any time with
Xupra DryLake: Sign Out.
Troubleshooting
- Browser sign-in does not return to VS Code: run
Xupra DryLake: Connect again, or use Xupra DryLake: Paste Extension Token for the manual fallback.
- A file you expected was not detected: confirm it matches one of the patterns above, or add it to
xupra.additionalScanPatterns.
- A path you do not want imported keeps appearing: add a glob to
xupra.scan.exclude.
- Need to start over: run
Xupra DryLake: Sign Out, then Xupra DryLake: Connect.
Contributing and local extension development
Source: https://gitlab.com/gmkdigitalmedia1/drylake
Build locally:
cd extensions/xupra-drylake-vscode
node esbuild.mjs
npx --yes @vscode/vsce@latest package --allow-star-activation
Issues and feature requests: https://gitlab.com/gmkdigitalmedia1/drylake/-/issues