Skip to content
Back to skills

Port Project

ASecurity

Port a game or codebase to another engine or language with ReversePort — Godot, Unity, Unreal, three.js (web) and Godot C#, or language to language — unit by unit in dependency order, with API maps, converted scenes and coordinates, and a verified result. Use for "port my game to…", "move this project from Unity to Godot", "make a web version", "convert this code to TypeScript/C#/C++".

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 13, 2026
ai-agentstypescriptgoc++c#nodeapi

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 13, 2026

npx -y skills add laaielichter/reverseport --skill port-project --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Port Project?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Port Project
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/laaielichter-port-project/badge)](https://www.skillsdirectory.com/skills/laaielichter-port-project)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: port-project
description: Port a game or codebase to another engine or language with ReversePort — Godot, Unity, Unreal, three.js (web) and Godot C#, or language to language — unit by unit in dependency order, with API maps, converted scenes and coordinates, and a verified result. Use for "port my game to…", "move this project from Unity to Godot", "make a web version", "convert this code to TypeScript/C#/C++".
---

# Port a project

The source is read-only; the port goes into a separate output project. Work in dependency order so every file you
write can use the real names of what it depends on.

## 0. Understand and decide

```text
re_scan {path}                         → engine, version, languages, entry points
re_graph {path}                        → cycles (port those files together), externals (need replacements)
port_map {from, to}                    → conventions (axes, units, lifecycle) and the API map with pitfalls
```

Tell the user the plan in a few lines: target, what converts automatically (scenes, transforms, assets, project
skeleton), what needs real porting work (scripts, shaders, UI, physics tuning), and risks (`risky` units, cycles,
engine features with no equivalent). Ask before starting when the target or scope is unclear.

## 1. Plan

```text
port_plan {source, to:"unity"|"godot"|"godot-csharp"|"unreal"|"threejs"|<language>, name?, output?, include?, exclude?}
```

Creates the output project with a scaffold (three.js: Vite + TypeScript + game loop; Unreal: .uproject + module;
Godot: project.godot; Godot C#: .csproj; Unity: the scene-builder editor script) and PORT-PLAN.md.

## 2. Loop

```text
port_copy_assets {planId}                       → textures, audio, models, fonts in one go
port_unit {planId}                              → next unit: source, symbols, apiHints (line numbers), conventions,
                                                   naming rules, dependencies with their ported symbols, checklist
  scenes:  port_scene {planId, unit}            → converted automatically; read its notes
  code:    write the port yourself, then
           port_write {planId, unit, files:[{path, content}], notes?}
           → fix every leftover and missingFromSource it reports before moving on
port_status {planId}                            → progress
```

Porting code well:

- Translate behaviour, not syntax. Use the target engine's idioms from the map (events instead of signals,
  serialized references instead of node paths, coroutines/timers instead of awaits…).
- Every position, direction, rotation, speed or distance crosses a coordinate system: use `port_convert`
  (Unreal is centimeters and Z-up; Unity mirrors Z; three.js matches Godot).
- Keep public names recognisable (PascalCase/snake_case per target) so `port_verify` can match them.
- Cannot port something yet? Write a `PORT:` comment that says what is missing and use `status:"partial"`.
- Large files: port in parts, but write the whole file in one port_write (files can hold up to 8 MiB).

## 3. Finish

Use the port-verify skill. Then tell the user exactly how to open the result (Unity: copy `Assets/` into a project,
run Tools ▸ ReversePort ▸ Build prefabs and scenes from specs; Godot: open the folder; three.js: `npm install && npm run
dev`; Unreal: right-click the .uproject → Generate project files, build), and what is left for them.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.