-
Notifications
You must be signed in to change notification settings - Fork 202
[OCPERT-210]Add OTE migration plugin #225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Important Review skippedReview was skipped as selected files did not have any reviewable changes. 💤 Files selected but had no reviewable changes (1)
You can disable this status message by setting the
WalkthroughAdds a new ote-migration plugin: marketplace and docs entries, a plugin manifest, README, and detailed migrate command documentation to automate OpenShift Tests Extension (OTE) migration for component repositories. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant CLI as "Claude CLI / Marketplace"
participant Plugin as "ote-migration"
participant Git as "Git / Remote Repo"
participant Toolchain as "Go toolchain / Build"
User->>CLI: invoke /ote-migration:migrate
CLI->>Plugin: forward prompts & options
Plugin->>Git: clone or update target repo
Plugin->>Plugin: create structure, generate files, migrate tests
Plugin->>Toolchain: run go mod, bindata, build & tests
Toolchain-->>Plugin: return build/test results
Plugin-->>Git: commit changes (optional)
Plugin-->>CLI: report migration status
CLI-->>User: display results & next steps
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (2 errors, 1 inconclusive)
✅ Passed checks (5 passed)
Comment |
|
need more test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (3)
plugins/ote-migration/commands/migrate.md (3)
2026-2080: Consolidate duplicate Troubleshooting sections.The "Troubleshooting" section appears twice in the file (monorepo strategy and single-module strategy). While some troubleshooting guidance may be strategy-specific, you have significant overlap that could be consolidated.
Suggested approach:
- Create a single "## Troubleshooting" section with subsections for each strategy
- Pull out common issues (dependency download failures, build failures, import path issues) into a shared section
- Add strategy-specific variations only where needed
Current duplicates:
- Lines ~2026-2078: Monorepo troubleshooting
- Lines ~2265-2312: Single-module troubleshooting
- Both include nearly identical sections for "If Dependency Download Was Interrupted" and "If Build Fails"
This reduces file length and maintenance burden.
Also applies to: 2265-2380
1-20: Document the YAML frontmatter fields.The frontmatter at lines 1-4 is minimal and clear, but for consistency with other command documentation, consider adding metadata about:
- Whether the command supports dry-run mode
- Prerequisites (requires git, Go installed, etc.)
- Expected output/success criteria
This helps users understand what to expect before running the migration.
18-42: Clarify the 8-phase workflow summary.While the detailed breakdown in each phase is excellent, the overview at lines 18-28 could be enhanced with:
- Estimated time for each phase
- Prerequisites for each phase (e.g., "Phase 3 requires git to be installed")
- Rollback strategy if migration fails at a specific phase
This helps users understand the workflow impact and recovery options.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to data retention organization setting
📒 Files selected for processing (6)
.claude-plugin/marketplace.json(1 hunks)PLUGINS.md(2 hunks)docs/data.json(1 hunks)plugins/ote-migration/.claude-plugin/plugin.json(1 hunks)plugins/ote-migration/README.md(1 hunks)plugins/ote-migration/commands/migrate.md(1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
plugins/ote-migration/commands/migrate.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
64-64: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
75-75: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
188-188: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
210-210: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
594-594: Hard tabs
Column: 32
(MD010, no-hard-tabs)
674-674: Hard tabs
Column: 1
(MD010, no-hard-tabs)
675-675: Hard tabs
Column: 1
(MD010, no-hard-tabs)
676-676: Hard tabs
Column: 1
(MD010, no-hard-tabs)
677-677: Hard tabs
Column: 1
(MD010, no-hard-tabs)
678-678: Hard tabs
Column: 1
(MD010, no-hard-tabs)
679-679: Hard tabs
Column: 1
(MD010, no-hard-tabs)
680-680: Hard tabs
Column: 1
(MD010, no-hard-tabs)
681-681: Hard tabs
Column: 1
(MD010, no-hard-tabs)
682-682: Hard tabs
Column: 1
(MD010, no-hard-tabs)
683-683: Hard tabs
Column: 1
(MD010, no-hard-tabs)
684-684: Hard tabs
Column: 1
(MD010, no-hard-tabs)
685-685: Hard tabs
Column: 1
(MD010, no-hard-tabs)
686-686: Hard tabs
Column: 1
(MD010, no-hard-tabs)
687-687: Hard tabs
Column: 1
(MD010, no-hard-tabs)
688-688: Hard tabs
Column: 1
(MD010, no-hard-tabs)
689-689: Hard tabs
Column: 1
(MD010, no-hard-tabs)
690-690: Hard tabs
Column: 1
(MD010, no-hard-tabs)
691-691: Hard tabs
Column: 1
(MD010, no-hard-tabs)
692-692: Hard tabs
Column: 1
(MD010, no-hard-tabs)
693-693: Hard tabs
Column: 1
(MD010, no-hard-tabs)
694-694: Hard tabs
Column: 1
(MD010, no-hard-tabs)
695-695: Hard tabs
Column: 1
(MD010, no-hard-tabs)
696-696: Hard tabs
Column: 1
(MD010, no-hard-tabs)
697-697: Hard tabs
Column: 1
(MD010, no-hard-tabs)
698-698: Hard tabs
Column: 1
(MD010, no-hard-tabs)
699-699: Hard tabs
Column: 1
(MD010, no-hard-tabs)
700-700: Hard tabs
Column: 1
(MD010, no-hard-tabs)
701-701: Hard tabs
Column: 1
(MD010, no-hard-tabs)
702-702: Hard tabs
Column: 1
(MD010, no-hard-tabs)
703-703: Hard tabs
Column: 1
(MD010, no-hard-tabs)
704-704: Hard tabs
Column: 1
(MD010, no-hard-tabs)
782-782: Hard tabs
Column: 1
(MD010, no-hard-tabs)
783-783: Hard tabs
Column: 1
(MD010, no-hard-tabs)
784-784: Hard tabs
Column: 1
(MD010, no-hard-tabs)
785-785: Hard tabs
Column: 1
(MD010, no-hard-tabs)
787-787: Hard tabs
Column: 1
(MD010, no-hard-tabs)
789-789: Hard tabs
Column: 1
(MD010, no-hard-tabs)
790-790: Hard tabs
Column: 1
(MD010, no-hard-tabs)
791-791: Hard tabs
Column: 1
(MD010, no-hard-tabs)
792-792: Hard tabs
Column: 1
(MD010, no-hard-tabs)
794-794: Hard tabs
Column: 1
(MD010, no-hard-tabs)
795-795: Hard tabs
Column: 1
(MD010, no-hard-tabs)
797-797: Hard tabs
Column: 1
(MD010, no-hard-tabs)
798-798: Hard tabs
Column: 1
(MD010, no-hard-tabs)
802-802: Hard tabs
Column: 1
(MD010, no-hard-tabs)
803-803: Hard tabs
Column: 1
(MD010, no-hard-tabs)
805-805: Hard tabs
Column: 1
(MD010, no-hard-tabs)
806-806: Hard tabs
Column: 1
(MD010, no-hard-tabs)
807-807: Hard tabs
Column: 1
(MD010, no-hard-tabs)
808-808: Hard tabs
Column: 1
(MD010, no-hard-tabs)
809-809: Hard tabs
Column: 1
(MD010, no-hard-tabs)
811-811: Hard tabs
Column: 1
(MD010, no-hard-tabs)
812-812: Hard tabs
Column: 1
(MD010, no-hard-tabs)
813-813: Hard tabs
Column: 1
(MD010, no-hard-tabs)
814-814: Hard tabs
Column: 1
(MD010, no-hard-tabs)
815-815: Hard tabs
Column: 1
(MD010, no-hard-tabs)
817-817: Hard tabs
Column: 1
(MD010, no-hard-tabs)
818-818: Hard tabs
Column: 1
(MD010, no-hard-tabs)
819-819: Hard tabs
Column: 1
(MD010, no-hard-tabs)
820-820: Hard tabs
Column: 1
(MD010, no-hard-tabs)
821-821: Hard tabs
Column: 1
(MD010, no-hard-tabs)
822-822: Hard tabs
Column: 1
(MD010, no-hard-tabs)
823-823: Hard tabs
Column: 1
(MD010, no-hard-tabs)
824-824: Hard tabs
Column: 1
(MD010, no-hard-tabs)
825-825: Hard tabs
Column: 1
(MD010, no-hard-tabs)
827-827: Hard tabs
Column: 1
(MD010, no-hard-tabs)
828-828: Hard tabs
Column: 1
(MD010, no-hard-tabs)
829-829: Hard tabs
Column: 1
(MD010, no-hard-tabs)
830-830: Hard tabs
Column: 1
(MD010, no-hard-tabs)
831-831: Hard tabs
Column: 1
(MD010, no-hard-tabs)
832-832: Hard tabs
Column: 1
(MD010, no-hard-tabs)
833-833: Hard tabs
Column: 1
(MD010, no-hard-tabs)
834-834: Hard tabs
Column: 1
(MD010, no-hard-tabs)
836-836: Hard tabs
Column: 1
(MD010, no-hard-tabs)
837-837: Hard tabs
Column: 1
(MD010, no-hard-tabs)
838-838: Hard tabs
Column: 1
(MD010, no-hard-tabs)
839-839: Hard tabs
Column: 1
(MD010, no-hard-tabs)
840-840: Hard tabs
Column: 1
(MD010, no-hard-tabs)
842-842: Hard tabs
Column: 1
(MD010, no-hard-tabs)
843-843: Hard tabs
Column: 1
(MD010, no-hard-tabs)
844-844: Hard tabs
Column: 1
(MD010, no-hard-tabs)
845-845: Hard tabs
Column: 1
(MD010, no-hard-tabs)
846-846: Hard tabs
Column: 1
(MD010, no-hard-tabs)
847-847: Hard tabs
Column: 1
(MD010, no-hard-tabs)
848-848: Hard tabs
Column: 1
(MD010, no-hard-tabs)
849-849: Hard tabs
Column: 1
(MD010, no-hard-tabs)
851-851: Hard tabs
Column: 1
(MD010, no-hard-tabs)
852-852: Hard tabs
Column: 1
(MD010, no-hard-tabs)
853-853: Hard tabs
Column: 1
(MD010, no-hard-tabs)
854-854: Hard tabs
Column: 1
(MD010, no-hard-tabs)
855-855: Hard tabs
Column: 1
(MD010, no-hard-tabs)
857-857: Hard tabs
Column: 1
(MD010, no-hard-tabs)
858-858: Hard tabs
Column: 1
(MD010, no-hard-tabs)
860-860: Hard tabs
Column: 1
(MD010, no-hard-tabs)
861-861: Hard tabs
Column: 1
(MD010, no-hard-tabs)
862-862: Hard tabs
Column: 1
(MD010, no-hard-tabs)
864-864: Hard tabs
Column: 1
(MD010, no-hard-tabs)
866-866: Hard tabs
Column: 1
(MD010, no-hard-tabs)
867-867: Hard tabs
Column: 1
(MD010, no-hard-tabs)
868-868: Hard tabs
Column: 1
(MD010, no-hard-tabs)
869-869: Hard tabs
Column: 1
(MD010, no-hard-tabs)
870-870: Hard tabs
Column: 1
(MD010, no-hard-tabs)
882-882: Hard tabs
Column: 1
(MD010, no-hard-tabs)
883-883: Hard tabs
Column: 1
(MD010, no-hard-tabs)
884-884: Hard tabs
Column: 1
(MD010, no-hard-tabs)
885-885: Hard tabs
Column: 1
(MD010, no-hard-tabs)
887-887: Hard tabs
Column: 1
(MD010, no-hard-tabs)
889-889: Hard tabs
Column: 1
(MD010, no-hard-tabs)
890-890: Hard tabs
Column: 1
(MD010, no-hard-tabs)
891-891: Hard tabs
Column: 1
(MD010, no-hard-tabs)
892-892: Hard tabs
Column: 1
(MD010, no-hard-tabs)
894-894: Hard tabs
Column: 1
(MD010, no-hard-tabs)
895-895: Hard tabs
Column: 1
(MD010, no-hard-tabs)
897-897: Hard tabs
Column: 1
(MD010, no-hard-tabs)
898-898: Hard tabs
Column: 1
(MD010, no-hard-tabs)
902-902: Hard tabs
Column: 1
(MD010, no-hard-tabs)
903-903: Hard tabs
Column: 1
(MD010, no-hard-tabs)
905-905: Hard tabs
Column: 1
(MD010, no-hard-tabs)
906-906: Hard tabs
Column: 1
(MD010, no-hard-tabs)
907-907: Hard tabs
Column: 1
(MD010, no-hard-tabs)
908-908: Hard tabs
Column: 1
(MD010, no-hard-tabs)
909-909: Hard tabs
Column: 1
(MD010, no-hard-tabs)
911-911: Hard tabs
Column: 1
(MD010, no-hard-tabs)
912-912: Hard tabs
Column: 1
(MD010, no-hard-tabs)
913-913: Hard tabs
Column: 1
(MD010, no-hard-tabs)
914-914: Hard tabs
Column: 1
(MD010, no-hard-tabs)
915-915: Hard tabs
Column: 1
(MD010, no-hard-tabs)
917-917: Hard tabs
Column: 1
(MD010, no-hard-tabs)
918-918: Hard tabs
Column: 1
(MD010, no-hard-tabs)
919-919: Hard tabs
Column: 1
(MD010, no-hard-tabs)
920-920: Hard tabs
Column: 1
(MD010, no-hard-tabs)
921-921: Hard tabs
Column: 1
(MD010, no-hard-tabs)
922-922: Hard tabs
Column: 1
(MD010, no-hard-tabs)
923-923: Hard tabs
Column: 1
(MD010, no-hard-tabs)
924-924: Hard tabs
Column: 1
(MD010, no-hard-tabs)
925-925: Hard tabs
Column: 1
(MD010, no-hard-tabs)
927-927: Hard tabs
Column: 1
(MD010, no-hard-tabs)
928-928: Hard tabs
Column: 1
(MD010, no-hard-tabs)
929-929: Hard tabs
Column: 1
(MD010, no-hard-tabs)
930-930: Hard tabs
Column: 1
(MD010, no-hard-tabs)
931-931: Hard tabs
Column: 1
(MD010, no-hard-tabs)
932-932: Hard tabs
Column: 1
(MD010, no-hard-tabs)
933-933: Hard tabs
Column: 1
(MD010, no-hard-tabs)
934-934: Hard tabs
Column: 1
(MD010, no-hard-tabs)
936-936: Hard tabs
Column: 1
(MD010, no-hard-tabs)
937-937: Hard tabs
Column: 1
(MD010, no-hard-tabs)
938-938: Hard tabs
Column: 1
(MD010, no-hard-tabs)
939-939: Hard tabs
Column: 1
(MD010, no-hard-tabs)
940-940: Hard tabs
Column: 1
(MD010, no-hard-tabs)
942-942: Hard tabs
Column: 1
(MD010, no-hard-tabs)
943-943: Hard tabs
Column: 1
(MD010, no-hard-tabs)
944-944: Hard tabs
Column: 1
(MD010, no-hard-tabs)
945-945: Hard tabs
Column: 1
(MD010, no-hard-tabs)
946-946: Hard tabs
Column: 1
(MD010, no-hard-tabs)
947-947: Hard tabs
Column: 1
(MD010, no-hard-tabs)
948-948: Hard tabs
Column: 1
(MD010, no-hard-tabs)
949-949: Hard tabs
Column: 1
(MD010, no-hard-tabs)
951-951: Hard tabs
Column: 1
(MD010, no-hard-tabs)
952-952: Hard tabs
Column: 1
(MD010, no-hard-tabs)
953-953: Hard tabs
Column: 1
(MD010, no-hard-tabs)
954-954: Hard tabs
Column: 1
(MD010, no-hard-tabs)
955-955: Hard tabs
Column: 1
(MD010, no-hard-tabs)
957-957: Hard tabs
Column: 1
(MD010, no-hard-tabs)
958-958: Hard tabs
Column: 1
(MD010, no-hard-tabs)
960-960: Hard tabs
Column: 1
(MD010, no-hard-tabs)
961-961: Hard tabs
Column: 1
(MD010, no-hard-tabs)
962-962: Hard tabs
Column: 1
(MD010, no-hard-tabs)
964-964: Hard tabs
Column: 1
(MD010, no-hard-tabs)
966-966: Hard tabs
Column: 1
(MD010, no-hard-tabs)
967-967: Hard tabs
Column: 1
(MD010, no-hard-tabs)
968-968: Hard tabs
Column: 1
(MD010, no-hard-tabs)
969-969: Hard tabs
Column: 1
(MD010, no-hard-tabs)
970-970: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1041-1041: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1042-1042: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1043-1043: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1050-1050: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1051-1051: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1052-1052: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1053-1053: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1054-1054: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1055-1055: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1059-1059: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1079-1079: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1080-1080: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1081-1081: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1088-1088: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1089-1089: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1090-1090: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1091-1091: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1092-1092: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1093-1093: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1097-1097: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1113-1113: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1118-1118: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1122-1122: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1123-1123: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1124-1124: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1125-1125: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1126-1126: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1139-1139: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1140-1140: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1141-1141: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1142-1142: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1151-1151: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1156-1156: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1157-1157: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1161-1161: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1162-1162: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1163-1163: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1164-1164: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1165-1165: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1179-1179: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1184-1184: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1189-1189: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1194-1194: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1198-1198: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1199-1199: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1200-1200: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1201-1201: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1202-1202: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1203-1203: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1222-1222: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1223-1223: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1224-1224: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1225-1225: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1226-1226: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1227-1227: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1231-1231: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1232-1232: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1237-1237: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1238-1238: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1239-1239: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1240-1240: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1241-1241: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1254-1254: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1256-1256: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1257-1257: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1258-1258: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1259-1259: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1261-1261: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1262-1262: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1263-1263: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1264-1264: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1266-1266: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1267-1267: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1268-1268: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1269-1269: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1270-1270: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1271-1271: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1272-1272: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1274-1274: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1275-1275: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1276-1276: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1277-1277: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1278-1278: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1279-1279: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1280-1280: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1281-1281: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1282-1282: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1283-1283: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1284-1284: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1285-1285: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1286-1286: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1287-1287: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1289-1289: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1295-1295: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1296-1296: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1297-1297: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1298-1298: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1307-1307: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1308-1308: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1309-1309: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1310-1310: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1311-1311: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1313-1313: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1319-1319: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1320-1320: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1321-1321: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1322-1322: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1323-1323: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1336-1336: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1337-1337: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1338-1338: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1339-1339: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1340-1340: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1341-1341: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1351-1351: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1352-1352: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1353-1353: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1354-1354: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1355-1355: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1356-1356: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1357-1357: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1358-1358: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1359-1359: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1360-1360: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1369-1369: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1370-1370: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1371-1371: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1372-1372: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1373-1373: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1374-1374: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1375-1375: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1376-1376: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1377-1377: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1378-1378: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1379-1379: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1380-1380: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1389-1389: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1398-1398: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1410-1410: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1411-1411: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1412-1412: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1413-1413: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1414-1414: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1415-1415: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1416-1416: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1417-1417: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1418-1418: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1419-1419: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1428-1428: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1588-1588: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1593-1593: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1632-1632: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1637-1637: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1785-1785: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1940-1940: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
2106-2106: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
2258-2258: Hard tabs
Column: 1
(MD010, no-hard-tabs)
2262-2262: Hard tabs
Column: 1
(MD010, no-hard-tabs)
2265-2265: Multiple headings with the same content
(MD024, no-duplicate-heading)
2381-2381: Multiple headings with the same content
(MD024, no-duplicate-heading)
2405-2405: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
plugins/ote-migration/README.md
5-5: Headings must start at the beginning of the line
(MD023, heading-start-left)
9-9: Headings must start at the beginning of the line
(MD023, heading-start-left)
11-11: Headings must start at the beginning of the line
(MD023, heading-start-left)
26-26: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
27-27: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
28-28: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
29-29: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
30-30: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
31-31: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
32-32: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
33-33: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
35-35: Headings must start at the beginning of the line
(MD023, heading-start-left)
🔇 Additional comments (4)
.claude-plugin/marketplace.json (1)
132-136: Marketplace entry correctly integrated.The plugin entry follows the established pattern and is properly positioned in the plugins array.
docs/data.json (1)
991-1006: Plugin metadata correctly registered in data.json.The entry follows the established structure with all required fields properly populated. The version 1.0.0 indicates this is considered a stable release compared to most other plugins.
PLUGINS.md (1)
24-24: Plugin documentation properly added to PLUGINS.md.The table of contents entry and plugin section follow the established conventions, with correct alphabetical positioning and consistent formatting with other plugin entries.
Also applies to: 255-262
plugins/ote-migration/.claude-plugin/plugin.json (1)
1-8: Plugin manifest complete and properly formatted.All metadata fields are present with consistent values across files. The author field, while using an email address, is valid though slightly unconventional (typically uses a name format).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
plugins/ote-migration/commands/migrate.md (1)
1832-1883: Consolidate duplicate "Troubleshooting" sections.The file contains three similar "Troubleshooting" sections with overlapping guidance:
- Lines 1832-1883 (monorepo strategy Troubleshooting)
- Lines 2071-2118 (single-module strategy Troubleshooting)
- Lines 2187-2210 (additional Troubleshooting in customization section)
These sections repeat common issues like dependency download failures, build failures, and fixture errors. Consolidate into a single "Troubleshooting" section with clear subsections for:
- Common Issues (applies to both strategies)
- Monorepo-specific problems
- Single-module-specific problems
This will reduce duplication and improve maintainability.
Also applies to: 2071-2118, 2187-2210
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to data retention organization setting
📒 Files selected for processing (1)
plugins/ote-migration/commands/migrate.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
plugins/ote-migration/commands/migrate.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
64-64: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
75-75: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
188-188: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
210-210: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
629-629: Hard tabs
Column: 32
(MD010, no-hard-tabs)
732-732: Hard tabs
Column: 1
(MD010, no-hard-tabs)
733-733: Hard tabs
Column: 1
(MD010, no-hard-tabs)
734-734: Hard tabs
Column: 1
(MD010, no-hard-tabs)
735-735: Hard tabs
Column: 1
(MD010, no-hard-tabs)
736-736: Hard tabs
Column: 1
(MD010, no-hard-tabs)
738-738: Hard tabs
Column: 1
(MD010, no-hard-tabs)
740-740: Hard tabs
Column: 1
(MD010, no-hard-tabs)
741-741: Hard tabs
Column: 1
(MD010, no-hard-tabs)
742-742: Hard tabs
Column: 1
(MD010, no-hard-tabs)
743-743: Hard tabs
Column: 1
(MD010, no-hard-tabs)
745-745: Hard tabs
Column: 1
(MD010, no-hard-tabs)
746-746: Hard tabs
Column: 1
(MD010, no-hard-tabs)
747-747: Hard tabs
Column: 1
(MD010, no-hard-tabs)
749-749: Hard tabs
Column: 1
(MD010, no-hard-tabs)
750-750: Hard tabs
Column: 1
(MD010, no-hard-tabs)
754-754: Hard tabs
Column: 1
(MD010, no-hard-tabs)
755-755: Hard tabs
Column: 1
(MD010, no-hard-tabs)
756-756: Hard tabs
Column: 1
(MD010, no-hard-tabs)
757-757: Hard tabs
Column: 1
(MD010, no-hard-tabs)
758-758: Hard tabs
Column: 1
(MD010, no-hard-tabs)
759-759: Hard tabs
Column: 1
(MD010, no-hard-tabs)
760-760: Hard tabs
Column: 1
(MD010, no-hard-tabs)
762-762: Hard tabs
Column: 1
(MD010, no-hard-tabs)
763-763: Hard tabs
Column: 1
(MD010, no-hard-tabs)
765-765: Hard tabs
Column: 1
(MD010, no-hard-tabs)
766-766: Hard tabs
Column: 1
(MD010, no-hard-tabs)
767-767: Hard tabs
Column: 1
(MD010, no-hard-tabs)
768-768: Hard tabs
Column: 1
(MD010, no-hard-tabs)
769-769: Hard tabs
Column: 1
(MD010, no-hard-tabs)
771-771: Hard tabs
Column: 1
(MD010, no-hard-tabs)
772-772: Hard tabs
Column: 1
(MD010, no-hard-tabs)
773-773: Hard tabs
Column: 1
(MD010, no-hard-tabs)
774-774: Hard tabs
Column: 1
(MD010, no-hard-tabs)
775-775: Hard tabs
Column: 1
(MD010, no-hard-tabs)
777-777: Hard tabs
Column: 1
(MD010, no-hard-tabs)
778-778: Hard tabs
Column: 1
(MD010, no-hard-tabs)
779-779: Hard tabs
Column: 1
(MD010, no-hard-tabs)
780-780: Hard tabs
Column: 1
(MD010, no-hard-tabs)
781-781: Hard tabs
Column: 1
(MD010, no-hard-tabs)
782-782: Hard tabs
Column: 1
(MD010, no-hard-tabs)
783-783: Hard tabs
Column: 1
(MD010, no-hard-tabs)
784-784: Hard tabs
Column: 1
(MD010, no-hard-tabs)
785-785: Hard tabs
Column: 1
(MD010, no-hard-tabs)
787-787: Hard tabs
Column: 1
(MD010, no-hard-tabs)
788-788: Hard tabs
Column: 1
(MD010, no-hard-tabs)
789-789: Hard tabs
Column: 1
(MD010, no-hard-tabs)
790-790: Hard tabs
Column: 1
(MD010, no-hard-tabs)
791-791: Hard tabs
Column: 1
(MD010, no-hard-tabs)
792-792: Hard tabs
Column: 1
(MD010, no-hard-tabs)
793-793: Hard tabs
Column: 1
(MD010, no-hard-tabs)
794-794: Hard tabs
Column: 1
(MD010, no-hard-tabs)
796-796: Hard tabs
Column: 1
(MD010, no-hard-tabs)
797-797: Hard tabs
Column: 1
(MD010, no-hard-tabs)
798-798: Hard tabs
Column: 1
(MD010, no-hard-tabs)
799-799: Hard tabs
Column: 1
(MD010, no-hard-tabs)
800-800: Hard tabs
Column: 1
(MD010, no-hard-tabs)
801-801: Hard tabs
Column: 1
(MD010, no-hard-tabs)
802-802: Hard tabs
Column: 1
(MD010, no-hard-tabs)
803-803: Hard tabs
Column: 1
(MD010, no-hard-tabs)
804-804: Hard tabs
Column: 1
(MD010, no-hard-tabs)
805-805: Hard tabs
Column: 1
(MD010, no-hard-tabs)
806-806: Hard tabs
Column: 1
(MD010, no-hard-tabs)
807-807: Hard tabs
Column: 1
(MD010, no-hard-tabs)
809-809: Hard tabs
Column: 1
(MD010, no-hard-tabs)
810-810: Hard tabs
Column: 1
(MD010, no-hard-tabs)
812-812: Hard tabs
Column: 1
(MD010, no-hard-tabs)
813-813: Hard tabs
Column: 1
(MD010, no-hard-tabs)
814-814: Hard tabs
Column: 1
(MD010, no-hard-tabs)
816-816: Hard tabs
Column: 1
(MD010, no-hard-tabs)
818-818: Hard tabs
Column: 1
(MD010, no-hard-tabs)
819-819: Hard tabs
Column: 1
(MD010, no-hard-tabs)
820-820: Hard tabs
Column: 1
(MD010, no-hard-tabs)
821-821: Hard tabs
Column: 1
(MD010, no-hard-tabs)
822-822: Hard tabs
Column: 1
(MD010, no-hard-tabs)
834-834: Hard tabs
Column: 1
(MD010, no-hard-tabs)
835-835: Hard tabs
Column: 1
(MD010, no-hard-tabs)
836-836: Hard tabs
Column: 1
(MD010, no-hard-tabs)
837-837: Hard tabs
Column: 1
(MD010, no-hard-tabs)
838-838: Hard tabs
Column: 1
(MD010, no-hard-tabs)
840-840: Hard tabs
Column: 1
(MD010, no-hard-tabs)
842-842: Hard tabs
Column: 1
(MD010, no-hard-tabs)
843-843: Hard tabs
Column: 1
(MD010, no-hard-tabs)
844-844: Hard tabs
Column: 1
(MD010, no-hard-tabs)
845-845: Hard tabs
Column: 1
(MD010, no-hard-tabs)
847-847: Hard tabs
Column: 1
(MD010, no-hard-tabs)
848-848: Hard tabs
Column: 1
(MD010, no-hard-tabs)
849-849: Hard tabs
Column: 1
(MD010, no-hard-tabs)
851-851: Hard tabs
Column: 1
(MD010, no-hard-tabs)
852-852: Hard tabs
Column: 1
(MD010, no-hard-tabs)
856-856: Hard tabs
Column: 1
(MD010, no-hard-tabs)
857-857: Hard tabs
Column: 1
(MD010, no-hard-tabs)
858-858: Hard tabs
Column: 1
(MD010, no-hard-tabs)
859-859: Hard tabs
Column: 1
(MD010, no-hard-tabs)
860-860: Hard tabs
Column: 1
(MD010, no-hard-tabs)
861-861: Hard tabs
Column: 1
(MD010, no-hard-tabs)
862-862: Hard tabs
Column: 1
(MD010, no-hard-tabs)
864-864: Hard tabs
Column: 1
(MD010, no-hard-tabs)
865-865: Hard tabs
Column: 1
(MD010, no-hard-tabs)
867-867: Hard tabs
Column: 1
(MD010, no-hard-tabs)
868-868: Hard tabs
Column: 1
(MD010, no-hard-tabs)
869-869: Hard tabs
Column: 1
(MD010, no-hard-tabs)
870-870: Hard tabs
Column: 1
(MD010, no-hard-tabs)
871-871: Hard tabs
Column: 1
(MD010, no-hard-tabs)
873-873: Hard tabs
Column: 1
(MD010, no-hard-tabs)
874-874: Hard tabs
Column: 1
(MD010, no-hard-tabs)
875-875: Hard tabs
Column: 1
(MD010, no-hard-tabs)
876-876: Hard tabs
Column: 1
(MD010, no-hard-tabs)
877-877: Hard tabs
Column: 1
(MD010, no-hard-tabs)
879-879: Hard tabs
Column: 1
(MD010, no-hard-tabs)
880-880: Hard tabs
Column: 1
(MD010, no-hard-tabs)
881-881: Hard tabs
Column: 1
(MD010, no-hard-tabs)
882-882: Hard tabs
Column: 1
(MD010, no-hard-tabs)
883-883: Hard tabs
Column: 1
(MD010, no-hard-tabs)
884-884: Hard tabs
Column: 1
(MD010, no-hard-tabs)
885-885: Hard tabs
Column: 1
(MD010, no-hard-tabs)
886-886: Hard tabs
Column: 1
(MD010, no-hard-tabs)
887-887: Hard tabs
Column: 1
(MD010, no-hard-tabs)
889-889: Hard tabs
Column: 1
(MD010, no-hard-tabs)
890-890: Hard tabs
Column: 1
(MD010, no-hard-tabs)
891-891: Hard tabs
Column: 1
(MD010, no-hard-tabs)
892-892: Hard tabs
Column: 1
(MD010, no-hard-tabs)
893-893: Hard tabs
Column: 1
(MD010, no-hard-tabs)
894-894: Hard tabs
Column: 1
(MD010, no-hard-tabs)
895-895: Hard tabs
Column: 1
(MD010, no-hard-tabs)
896-896: Hard tabs
Column: 1
(MD010, no-hard-tabs)
898-898: Hard tabs
Column: 1
(MD010, no-hard-tabs)
899-899: Hard tabs
Column: 1
(MD010, no-hard-tabs)
900-900: Hard tabs
Column: 1
(MD010, no-hard-tabs)
901-901: Hard tabs
Column: 1
(MD010, no-hard-tabs)
902-902: Hard tabs
Column: 1
(MD010, no-hard-tabs)
903-903: Hard tabs
Column: 1
(MD010, no-hard-tabs)
904-904: Hard tabs
Column: 1
(MD010, no-hard-tabs)
905-905: Hard tabs
Column: 1
(MD010, no-hard-tabs)
906-906: Hard tabs
Column: 1
(MD010, no-hard-tabs)
907-907: Hard tabs
Column: 1
(MD010, no-hard-tabs)
908-908: Hard tabs
Column: 1
(MD010, no-hard-tabs)
909-909: Hard tabs
Column: 1
(MD010, no-hard-tabs)
911-911: Hard tabs
Column: 1
(MD010, no-hard-tabs)
912-912: Hard tabs
Column: 1
(MD010, no-hard-tabs)
914-914: Hard tabs
Column: 1
(MD010, no-hard-tabs)
915-915: Hard tabs
Column: 1
(MD010, no-hard-tabs)
916-916: Hard tabs
Column: 1
(MD010, no-hard-tabs)
918-918: Hard tabs
Column: 1
(MD010, no-hard-tabs)
920-920: Hard tabs
Column: 1
(MD010, no-hard-tabs)
921-921: Hard tabs
Column: 1
(MD010, no-hard-tabs)
922-922: Hard tabs
Column: 1
(MD010, no-hard-tabs)
923-923: Hard tabs
Column: 1
(MD010, no-hard-tabs)
924-924: Hard tabs
Column: 1
(MD010, no-hard-tabs)
946-946: Hard tabs
Column: 1
(MD010, no-hard-tabs)
947-947: Hard tabs
Column: 1
(MD010, no-hard-tabs)
948-948: Hard tabs
Column: 1
(MD010, no-hard-tabs)
953-953: Hard tabs
Column: 1
(MD010, no-hard-tabs)
954-954: Hard tabs
Column: 1
(MD010, no-hard-tabs)
955-955: Hard tabs
Column: 1
(MD010, no-hard-tabs)
956-956: Hard tabs
Column: 1
(MD010, no-hard-tabs)
957-957: Hard tabs
Column: 1
(MD010, no-hard-tabs)
958-958: Hard tabs
Column: 1
(MD010, no-hard-tabs)
962-962: Hard tabs
Column: 1
(MD010, no-hard-tabs)
963-963: Hard tabs
Column: 1
(MD010, no-hard-tabs)
982-982: Hard tabs
Column: 1
(MD010, no-hard-tabs)
983-983: Hard tabs
Column: 1
(MD010, no-hard-tabs)
984-984: Hard tabs
Column: 1
(MD010, no-hard-tabs)
989-989: Hard tabs
Column: 1
(MD010, no-hard-tabs)
990-990: Hard tabs
Column: 1
(MD010, no-hard-tabs)
991-991: Hard tabs
Column: 1
(MD010, no-hard-tabs)
992-992: Hard tabs
Column: 1
(MD010, no-hard-tabs)
993-993: Hard tabs
Column: 1
(MD010, no-hard-tabs)
994-994: Hard tabs
Column: 1
(MD010, no-hard-tabs)
998-998: Hard tabs
Column: 1
(MD010, no-hard-tabs)
999-999: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1016-1016: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1017-1017: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1018-1018: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1019-1019: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1020-1020: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1029-1029: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1030-1030: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1034-1034: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1035-1035: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1036-1036: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1037-1037: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1054-1054: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1055-1055: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1056-1056: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1057-1057: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1062-1062: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1063-1063: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1067-1067: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1068-1068: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1069-1069: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1070-1070: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1089-1089: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1090-1090: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1091-1091: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1092-1092: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1093-1093: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1094-1094: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1098-1098: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1099-1099: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1104-1104: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1105-1105: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1106-1106: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1107-1107: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1108-1108: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1121-1121: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1123-1123: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1124-1124: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1125-1125: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1126-1126: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1128-1128: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1129-1129: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1130-1130: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1131-1131: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1133-1133: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1134-1134: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1135-1135: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1137-1137: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1138-1138: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1139-1139: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1140-1140: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1141-1141: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1142-1142: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1144-1144: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1145-1145: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1146-1146: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1147-1147: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1148-1148: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1149-1149: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1150-1150: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1152-1152: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1153-1153: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1154-1154: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1155-1155: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1156-1156: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1158-1158: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1159-1159: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1160-1160: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1161-1161: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1162-1162: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1163-1163: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1164-1164: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1165-1165: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1166-1166: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1167-1167: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1168-1168: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1169-1169: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1170-1170: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1171-1171: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1173-1173: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1179-1179: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1180-1180: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1181-1181: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1182-1182: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1191-1191: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1192-1192: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1193-1193: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1194-1194: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1195-1195: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1197-1197: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1203-1203: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1204-1204: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1205-1205: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1206-1206: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1207-1207: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1220-1220: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1221-1221: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1222-1222: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1223-1223: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1224-1224: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1225-1225: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1235-1235: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1236-1236: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1237-1237: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1238-1238: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1239-1239: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1240-1240: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1241-1241: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1242-1242: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1243-1243: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1244-1244: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1253-1253: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1254-1254: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1255-1255: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1256-1256: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1257-1257: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1258-1258: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1259-1259: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1260-1260: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1261-1261: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1262-1262: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1263-1263: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1264-1264: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1273-1273: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1282-1282: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1294-1294: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1295-1295: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1296-1296: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1297-1297: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1298-1298: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1299-1299: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1300-1300: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1301-1301: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1302-1302: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1303-1303: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1312-1312: Hard tabs
Column: 1
(MD010, no-hard-tabs)
1472-1472: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1477-1477: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1516-1516: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1521-1521: Hard tabs
Column: 35
(MD010, no-hard-tabs)
1608-1608: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
1755-1755: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
1912-1912: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
2064-2064: Hard tabs
Column: 1
(MD010, no-hard-tabs)
2068-2068: Hard tabs
Column: 1
(MD010, no-hard-tabs)
2071-2071: Multiple headings with the same content
(MD024, no-duplicate-heading)
2187-2187: Multiple headings with the same content
(MD024, no-duplicate-heading)
2211-2211: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (1)
plugins/ote-migration/commands/migrate.md (1)
580-595: The code already aligns with current OTE requirements. Line 592 correctly usesgo get github.com/onsi/ginkgo/v2@latest, which is the required version for modern OpenShift Tests Extension. The openshift-tests-extension package on line 590 is itself the OpenShift fork of the testing framework. No changes needed.Likely an incorrect or invalid review comment.
LuboTerifaj
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello @ming1013,
I've tested the command and have several points that need attention. Many are UX improvements that can be addressed later, but some critical items should be fixed in this PR (see "Next steps" below).
User Input Collection
Issue: Input collection is not deterministic, which worsens the tool's usability.
Working Directory Selection
- Missing context: No description explaining what the directory will be used for
- Inconsistent path formats: Options mix formats (e.g.,
/tmp/router-migrationvs~/router-ote) - Delayed custom path input: When selecting "Custom path", users should provide it immediately, not after choosing the option
- Current options:
- Current directory
/tmp/extension-name- Custom path (requires secondary input)
- Suggested: Allow direct custom path input without selecting an option first
Source Repository Path
- Unclear purpose: Option 2 suggests a path one level above the working directory
- Question: Should we offer this option if the source repository directory may differ from the working directory?
Test Folder Selection
- Ambiguity: Unclear whether this refers to source or target test folder
- Options should explicitly state: "Source: test/extended/component-name/" or "Target: ..."
- Incorrect default ordering:
test/extended/should be the first and default option- Current order (example with router):
router test/extended/router/All of test/extended/ Use entire test/extended/ directory
- Suggested order:
test/extended/(default)test/extended/router/
- Current order (example with router):
- Unrelated components: Options include components unrelated to the migration
- Should only list: relevant component names + custom option
Testdata Location
- Redundant option: "No testdata" option seems unnecessary. If no testdata exists, skip migration entirely
- Missing context: When showing "Same as test subfolder", display the actual subfolder path (similar to Test Folder selection)
- Missing default: No indication of recommended default value
General recommendation: Simplicity and readability are critical. Reduce options and clarify what each does.
Repository Operations
Remote Handling
- Issue: Tool uses incorrect remote when fetching (should verify
originvsupstream)
Target Repository Setup
- Missing option: No option to clone the target repository when using "Monorepo Strategy". Tool only asks:
"Could you please provide the path to your target component repository (the repository where we'll integrate the OTE framework)?"
- Checkout location: Target repository not checked out into a directory named after the component, which may cause conflicts when working on multiple migrations consecutively
Module Integration Strategies
Current options:
- Single-Module Strategy: Standalone directory outside any repository (does this make sense?)
- Monorepo Strategy: Standalone directory within target repository
Possible alternatives:
- Separate directory within target repository
- Existing test directory within target repository (e.g.,
test/e2e/ortest/extended/)
Recommendation: Simplicity is key - fewer options are better. We need to identify which approaches make sense while focusing on simplicity.
Note: We'll also need to handle scenarios where test/e2e/ or test/extended/ already exist.
Script Execution and Compatibility
Shell Compatibility
- Issue: Scripts don't always work properly in zsh on macOS
- Root cause: Long commands with arguments/pipes have parsing issues; some commands (e.g.,
timeout) are missing - Recommendation:
- Add validation to check for required tools before execution
- Either enforce bash or provide explicit zsh support
Execution Feedback
- Dependency errors: Console shows dependency errors during execution
- If expected: Add a note explaining they're expected
- If unexpected: Prompt user whether to continue, abort, or resolve the issue
- Missing context: Before each script runs, show a high-level overview of what it will do
Test Case Tagging Requirements
Required: Test case titles must include required tags
- LEVEL0 tags: All test cases must have appropriate LEVEL0 tags in their titles
- OTE tags: All test cases must have required OTE tags in their titles
Recommendation: Add validation step to verify tags are present before migration completes _(I know you're working on this)
Code Architecture
Current state:
- Self-contained and complete
- 2200+ lines make maintenance difficult
- Bash scripts and Go templates embedded in markdown (untestable)
- Code duplication between monorepo/single-module strategies
Suggestion: Consider hybrid architecture
- Extract complex logic (bash scripts, Go templates) into separate files for testability and reusability
- See Plugin Conventions: https://github.com/openshift-eng/ai-helpers/blob/main/AGENTS.md#plugin-conventions
Recommendation: Address this in a follow-up PR/Jira.
Conclusion
Overall, it's great to see the tool successfully migrate test cases. The process could be faster, many tasks could run automatically without explicit approvals, though this may be a limitation of Claude Code slash commands themselves.
Next steps:
Necessary changes in this PR:
- Add OTE tag validation (LEVEL0 and OTE tags in test case titles)
- Resolve conflicts with main branch
Should fix in this PR:
- Fix shell compatibility issues (tool validation, bash enforcement or zsh support)
- Fix remote handling (verify
originvsupstream) - Fix repository checkout location (component-named directory)
Follow-up improvements:
- Input collection UX (deterministic inputs, clearer options, better defaults)
- Repository operations (clone option for Monorepo Strategy)
- Execution feedback (dependency error handling, script descriptions)
- Code architecture improvements (extract scripts/templates for maintainability)
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: ming1013 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🤖 Fix all issues with AI agents
In `@plugins/ote-migration/README.md`:
- Line 411: Replace the hard tabs used for indentation on the lines around
"spec.Lifecycle = et.LifecycleInforming" (and the subsequent block at lines
427-431) with spaces to match the repository's Markdown style: convert each tab
to the project's preferred number of spaces (e.g., 2 spaces) so those indents
use spaces only, and then run the repo linter/formatter to ensure no other tabs
remain in the README.md.
- Line 59: Replace the bold inline text "**IMPORTANT: Identify Your Sig Tags**"
in the README with a proper markdown heading (e.g., "## IMPORTANT: Identify Your
Sig Tags" or "### IMPORTANT: Identify Your Sig Tags") so it passes markdown
linting; locate the exact string in README.md and change the surrounding markup
from bold to a heading level appropriate for the section.
- Line 275: Update the Markdown code fence around the block containing
"[sig-router][OTP] [Level0] Router functionality should handle basic routing
-LEVEL0-" to include a language identifier (e.g., use ```text or ```md) on the
opening backticks so linters and syntax highlighters recognize the block; locate
the code fence in README.md that wraps that exact line and change the opening
triple backticks to include the identifier while keeping the closing backticks
unchanged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@docs/data.json`:
- Around line 1114-1129: The entry for the "migrate" command in the
"ote-migration" plugin contains a placeholder "synopsis": "text" (and an empty
"argument_hint") which will surface to users; update the "synopsis" value to a
real usage string that matches the migrate command docs (see migrate command
name "migrate" and fields "synopsis" and "argument_hint") and, if applicable,
populate "argument_hint" with the expected argument syntax so help/index output
shows the correct usage instead of the literal placeholder.
Adds a plugin to automate OpenShift Tests Extension (OTE) migration for component repositories. The plugin handles the complete migration workflow including: - Repository setup and management - Directory structure creation - Test file and testdata migration - Automatic dependency vendoring - Code generation (go.mod, main.go, Makefile, fixtures.go) - Automatic FixturePath() migration and import updates - Build verification The plugin supports two directory strategies: - Monorepo: Integrate into existing repos with cmd/ and test/ - Single-module: Create isolated tests-extension directory This replaces the need for install.sh as plugins are installed globally through the marketplace and work in any repository.
- Update migrate.md with correct FixturePath signature (variadic) - Fix Ginkgo replace directive to use newer version - Add documentation for module replacement strategy - Clarify testdata directory structure and bindata path handling The migration tool now correctly: - Extracts all replace directives from openshift-tests-private - Uses variadic FixturePath to match compat_otp signature - Applies correct Ginkgo fork version for OTE compatibility
The migration tool now automatically uses GOTOOLCHAIN=auto when running go mod tidy, allowing Go to download the required toolchain version when dependencies need a newer Go version than what's installed. Changes: - All go mod tidy commands now use GOTOOLCHAIN=auto GOSUMDB=sum.golang.org - Added documentation explaining the Go version compatibility handling - Added comments explaining why these environment variables are needed This fixes errors like: go: go.mod requires go >= 1.24.6 (running go 1.24.3; GOTOOLCHAIN=local)
- Document component-specific test filtering by [sig-<extension-name>] tag - Explain automatic [OTP] and [Level0] tag additions with examples - Add detailed directory structure strategies (monorepo vs single-module) - Document dynamic dependency resolution from upstream - Document automatic Go toolchain management (GOTOOLCHAIN=auto) - Add before/after examples for test restructuring - Enhance key features section with new capabilities
- Fix [Level0] tag placement to Describe block after [OTP] - Change test directory strategy for monorepo when test/e2e exists - Simplify informing lifecycle feature - README reflects all changes
- Replace hard tabs with spaces in migrate.md - Add language specifiers to code fences - Consolidate duplicate Troubleshooting sections - Sync plugin documentation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@PLUGINS.md`:
- Line 25: Update the inconsistent capitalization of "Ote" to "OTE" in both the
index entry "[Ote Migration](`#ote-migration-plugin`)" and the corresponding
heading lines that define the plugin section (e.g., any heading like "# Ote
Migration Plugin" or similar occurrences around the OTE Migration section).
Replace "Ote" with "OTE" across the document (including the index at the top and
the plugin section headings) so the link anchor and heading text match
consistently.
- Fix markdown formatting and synopsis placeholder - Add checkpoint/resume system to handle interruptions - Save progress to .ote-migration-state.json after each phase - Allow resuming from last completed phase
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@plugins/ote-migration/README.md`:
- Around line 86-95: Update the fenced code block in
plugins/ote-migration/README.md that contains the console output starting with
"Previous Migration Detected" to include a language identifier by changing the
opening fence from ``` to ```text so the block is marked as plain text (this
satisfies markdownlint MD040); ensure the rest of the block content (lines
showing "Extension: router", "Last completed phase: 5", and the numbered
options) remains unchanged.
- Replace hard tabs with spaces in migrate.md - Add language specifiers to all code fences - Fix hardcoded 'origin' remote - use dynamic remote discovery - Add step to extract replace directives from openshift-tests-private - Update docs/data.json
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🤖 Fix all issues with AI agents
In `@plugins/ote-migration/README.md`:
- Around line 240-248: The README examples are inconsistent with the stated
behavior of automatically removing the "-LEVEL0-" suffix: update the example
test definitions (the g.It(...) example showing "[Level0] Router functionality
should handle basic routing -LEVEL0-") and the "Full test name visible in list"
string so they no longer include the "-LEVEL0-" suffix, ensuring the g.It(...)
description and the displayed full test name both show "[Level0] Router
functionality should handle basic routing" (or, if the suffix is actually
retained, change the sentence that says "Automatically removes `-LEVEL0-`
suffix" to reflect that it is not removed); search for occurrences of "-LEVEL0-"
and the g.It(...) example to correct them consistently.
- Around line 196-212: The example in the README shows only single-tag filtering
but the docs claim support for multiple sig tags; update the filter in the
BuildExtensionTestSpecsFromOpenShiftGinkgoSuite example to accept a
comma-separated list of tags and perform OR semantics by splitting the input
tags and checking each spec.Name for the presence of any "[sig-<tag>]" token
before appending to filteredSpecs (use the existing et.ExtensionTestSpec /
et.ExtensionTestSpecs types and the spec.Name field), or alternatively remove
the "multiple sig tags" wording from the README if multi-tag filtering is not
implemented.
- Around line 84-88: Update the README so the documented sig filter behavior
matches the actual filtering logic: either (A) change the code example that
currently shows filtering by [sig-<extension-name>] to demonstrate using
multiple user-provided tags with OR logic (e.g., show how user input
"router,network-edge" maps to filtering for [sig-router] OR [sig-network-edge]
and update the example command ./bin/<extension-name>-tests-ext list
accordingly), or (B) explicitly state that only the extension-name-derived tag
([sig-<extension-name>]) is used for filtering and that user-provided tags are
not applied to test selection; ensure all references to "sig filter tag(s)", the
example that uses [sig-<extension-name>], and the sentence "Tests must have the
[sig-<extension-name>] tag" are made consistent with the chosen option.
… mod tidy errors 2. Level0 tag prepending - Ensures Level0 tests are properly tagged 3. Root Makefile paths - Corrects delegation to tests-extension/Makefile
…od tidy' to Phase 6 (ensures test migration always runs);Add backup/rollback to Phase 5 (atomic test migration)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@plugins/ote-migration/README.md`:
- Around line 95-104: The README's fenced code blocks that show the "Phase 4
(go.mod generation)" ASCII trees are missing language identifiers and violate
markdownlint MD040; update each opening triple-backtick for those blocks to
include a language (e.g., change ``` to ```text) for the blocks around the
"Phase 4 (go.mod generation)" examples and apply the same change to the similar
blocks mentioned later in the file so all fenced code blocks in this README use
a language identifier.
|
Tested with latest code (new requirements) for single mode pass in PR: openshift/router#723 |
Adds a plugin to automate OpenShift Tests Extension (OTE) migration
for component repositories. The plugin handles the complete migration
workflow including:
The plugin supports two directory strategies:
This replaces the need for install.sh as plugins are installed
globally through the marketplace and work in any repository.
What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes
Special notes for your reviewer:
Checklist:
Single mode tested by: openshift/router#705
Monorepo tested by: openshift/cloud-credential-operator#954
Summary by CodeRabbit
New Features
Documentation
Bug Fixes
✏️ Tip: You can customize this high-level summary in your review settings.