You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: rewrite README with Mermaid pipeline diagram, troubleshooting, and roadmap
Replace ASCII art flow chart with Mermaid graph LR for native GitHub
rendering. Add Requirements, Troubleshooting, Project Structure, and
Roadmap sections. Update CHANGELOG with R-12 and README rewrite entries.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ROS1 reached end-of-life in May 2025. Migrating a production codebase to ROS2 by hand is tedious and error-prone: API namespaces changed, CMakeLists.txt rules are different, launch files moved to Python, and hundreds of `ros::` calls need one-by-one replacement. ROSForge automates this work by combining a static knowledge base of known API mappings with an AI backend that handles the cases rules alone cannot cover. The result is a complete, confidence-scored migration in minutes rather than days.
9
+
ROS1 reached end-of-life in May 2025. Migrating a production codebase to ROS2 by hand is tedious and error-prone: API namespaces changed, CMakeLists.txt rules are different, launch files moved from XML to Python, and hundreds of `ros::` calls need one-by-one replacement.
10
+
11
+
ROSForge automates this work by combining a **static knowledge base** of known API mappings with an **AI backend** that handles the cases rules alone cannot cover. The result is a complete, confidence-scored migration in minutes rather than days.
10
12
11
13
## Features
12
14
@@ -19,45 +21,110 @@ ROS1 reached end-of-life in May 2025. Migrating a production codebase to ROS2 by
19
21
-**Static knowledge base** — built-in C++/Python API mappings, CMake rules, and launch conversion patterns
20
22
-**Cost estimation** — token and USD estimates shown before any API calls are made
21
23
-**Confidence scoring** — every output file is rated HIGH / MEDIUM / LOW; low-confidence files are flagged for manual review
24
+
-**CI/CD templates** — ready-made GitHub Actions and GitLab CI integration
25
+
26
+
## Requirements
27
+
28
+
-**Python 3.10+**
29
+
-**pip** (or [uv](https://docs.astral.sh/uv/))
30
+
- One of the following AI backends:
31
+
-[Claude CLI](https://docs.anthropic.com/en/docs/claude-code) or an Anthropic API key
32
+
-[Gemini CLI](https://github.com/google-gemini/gemini-cli) or a Google API key
33
+
- An OpenAI API key
34
+
- (Optional) `colcon` — required only if you use the auto-fix loop (`--max-fix-attempts`)
22
35
23
36
## Quick Start
24
37
25
38
```bash
26
-
# Install
39
+
#1. Install
27
40
pip install rosforge
28
41
29
-
#Set your preferred AI backend (stored in ~/.config/rosforge/config.toml)
30
-
rosforge config set engine.name gemini
42
+
#2. Configure your AI backend
43
+
rosforge config set engine.name claude
31
44
rosforge config set engine.mode cli
32
45
33
-
# Migrate a single ROS1 package
46
+
# 3. Analyze a package first (no code changes, no AI calls)
2.**Analyze** — resolves dependencies, scores risk, estimates cost, and decides per-file strategy (rule-based vs. AI-driven)
99
+
3.**Transform** — applies static knowledge base mappings first, then sends remaining files to the AI engine
100
+
4.**Review***(optional, `--interactive`)* — shows a diff for each file; press `a` to accept, `s` to skip, `q` to quit
101
+
5.**Validate***(optional, `--max-fix-attempts N`)* — runs `colcon build`; if it fails, feeds errors to the AI for auto-fix, up to N retries
102
+
6.**Report** — generates `migration_report.md` with a full changelog, warnings, and manual intervention suggestions
103
+
39
104
## Commands
40
105
41
106
| Command | Description |
42
107
|---|---|
43
108
|`rosforge migrate <path>`| Migrate a single ROS1 package to ROS2 |
44
109
|`rosforge migrate-workspace <path>`| Migrate all packages in a catkin workspace |
45
-
|`rosforge analyze <path>`| Analyze a package and report migration complexity without transforming|
46
-
|`rosforge config set <key> <value>`| Set a configuration value and persist it |
110
+
|`rosforge analyze <path>`| Analyze and report migration complexity (no code changes)|
111
+
|`rosforge config set <key> <value>`| Set a configuration value |
47
112
|`rosforge config get <key>`| Get a single configuration value |
48
-
|`rosforge config list`| Print all current configuration values as JSON |
113
+
|`rosforge config list`| Print all current settings as JSON |
49
114
|`rosforge config reset`| Reset configuration to defaults |
50
-
|`rosforge config path`| Show the path to the configuration file |
51
-
|`rosforge status`| Show the status of an in-progress or completed migration |
115
+
|`rosforge config path`| Show the config file path |
116
+
|`rosforge status`| Show the status of a completed migration |
117
+
118
+
Configuration is stored at `~/.rosforge/config.toml`.
52
119
53
120
## AI Engine Configuration
54
121
55
-
ROSForge supports three AI backends. Each can run in **cli**mode (calls a locally installed CLI tool, no API key required) or **api**mode (calls the provider's REST API directly, requires an API key).
122
+
ROSForge supports three AI backends. Each can run in **CLI mode** (calls a locally installed CLI tool, no API key required) or **API mode** (calls the provider's REST API, requires an API key).
56
123
57
-
### Claude
124
+
### Claude (Anthropic)
58
125
59
126
```bash
60
-
# CLI mode — requires the Anthropic Claude CLI installed and authenticated
127
+
# CLI mode — requires Claude CLI installed and authenticated
61
128
rosforge config set engine.name claude
62
129
rosforge config set engine.mode cli
63
130
@@ -68,10 +135,10 @@ rosforge config set engine.mode api
68
135
export ANTHROPIC_API_KEY=sk-ant-...
69
136
```
70
137
71
-
### Gemini
138
+
### Gemini (Google)
72
139
73
140
```bash
74
-
# CLI mode — requires the Google Gemini CLI installed and authenticated
141
+
# CLI mode — requires Gemini CLI installed and authenticated
75
142
rosforge config set engine.name gemini
76
143
rosforge config set engine.mode cli
77
144
@@ -118,17 +185,44 @@ Build the output with `colcon build` after migration, feed any errors back to th
Custom mappings take precedence over the built-in knowledge base. See the `version: 1` schema for supported keys: `api_mappings.cpp`, `api_mappings.python`, `package_mappings`, `cmake_mappings`.
222
+
129
223
### Skip confirmation
130
224
131
-
Skip the cost-estimate confirmation prompt (useful in CI):
225
+
Skip the cost-estimate confirmation prompt (useful in CI or scripted runs):
integration/ # Integration tests for cross-module workflows
419
+
e2e/ # End-to-end CLI tests
420
+
fixtures/ # Sample ROS1 packages for testing
421
+
```
422
+
423
+
## Roadmap
424
+
425
+
- [x] R-01~R-05: Core migration pipeline (v0.1.0)
426
+
- [x] R-06: Auto build verification & fix loop (v0.2.0)
427
+
- [x] R-07: Interactive migration mode (v0.2.0)
428
+
- [x] R-08: Batch workspace migration (v0.2.0)
429
+
- [x] R-09: Custom transformation rules (v0.2.0)
430
+
- [x] R-12: CI/CD integration templates (v0.2.0)
431
+
- [ ] R-10: Plugin API — community-contributed domain-specific strategies
432
+
- [ ] R-11: Web Dashboard — visual migration progress and diff viewer
433
+
279
434
## Contributing
280
435
281
-
Contributions are welcome. Please open an issue before submitting a pull request for significant changes. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
436
+
Contributions are welcome! Please open an issue before submitting a pull request for significant changes. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
0 commit comments