luigidemasi opened a new issue, #105: URL: https://github.com/apache/camel-kit/issues/105
> Imported from [luigidemasi/camel-kit#245](https://github.com/luigidemasi/camel-kit/issues/245), opened by [Croway](https://github.com/Croway) on 2026-10-10. > Closed by commit [018d896](https://github.com/luigidemasi/camel-kit/commit/018d896de95fe27b00135348e8cea1a8b67f03ac). --- ## Problem `camel-migrate` has only one way to reach working code: analysis, a design package the user approves, then `camel-plan` and `camel-execute` with sub-agent dispatch and two-stage review. When the request already contains complete requirements and asks for the running application ("migrate this, put routes in `camel/`, start it, write `MIGRATION.md`"), the skill itself tells the agent it cannot do that: `skills/camel-migrate/SKILL.md` (0.4.1, lines 32-37): ``` IRON LAW 3: NO CODE WITHOUT PLAN. This skill produces analysis, business requirements, design spec, and operational runbook updates. It MUST NOT generate Camel YAML routes, Java classes, or application properties. Implementation is strictly reserved for `camel-execute`, after the design is approved and `camel-plan` has generated the implementation plan. ``` plus "Complete the Design Phase" step 6 (present the four documents and "request the pipeline's single explicit package approval") and step 7 (auto-invoke `camel-plan`). `skills/shared/iron-laws.md` (lines 60-84) repeats it: "NEVER GENERATE IMPLEMENTATION ARTIFACTS BEFORE THE USER HAS APPROVED THE DESIGN SPEC AND A TASK-BASED IMPLEMENTATION PLAN HAS BEEN GENERATED" and "Skills like `camel-migrate` ... MUST NOT generate final routes or application code". The only non-interactive route is `camel-kit ship --ask never`, which still runs the full pipeline. ## Evidence In an evaluation of coding agents (Claude Code and IBM Bob) on legacy-to-Camel migrations with camel-kit 0.4.1: - 12 of 12 Claude Code sessions (Haiku 5.5 and Sonnet 5.5) whose prompt *started with* `/camel-migrate` read the skill and declined it; none wrote `docs/camel-kit/`. Their own words: "I did not run the `/camel-migrate` pipeline (the design package, approval gates, `camel-plan` and `camel-execute`). TASK.md asks directly for the runnable application and `MIGRATION.md`, and the skill's Iron Law 3 says it does not generate YAML. So I did the migration directly"; "`/camel-migrate` normally runs a design-approval pipeline and blocks YAML generation until approval. I did not run that pipeline." - IBM Bob loads `camel-migrate` as its first call in most camel-kit sessions, then immediately writes its own plan ("Analyse the source artifacts", "Look up required Camel 4 components/EIPs via MCP", "Write camel/*.yaml route files", "Validate routes", "Run the application") and never produces the design package. Its scores match Bob with the Camel MCP server alone: the skill adds tokens, not outcome. - An older model that did follow the pipeline to the end (two sessions) did not produce better applications. So for this kind of request the skill is either ignored or followed at high cost, and the useful parts (vendor detection, the vendor mapping guides, MCP verification, the runtime safety gate) are skipped along with the gates. ## Proposal Add a first-class direct mode to `camel-migrate`, selected when the request names concrete deliverables (route files, properties, a run check, a migration note) and the remaining questions can be answered from the source, or when the caller passes it explicitly: 1. Steps 0-4 as today (boundary, scan, vendor/version, analysis summary), unknowns recorded as assumptions instead of a blocking confirmation. 2. Write the source-to-Camel mapping table (and assumptions) into `MIGRATION.md` (or the user's named file) instead of the four-document package. 3. Implement the routes and properties directly, applying Iron Laws 1 and 2 (catalog verification, constitution rules). 4. Validate (`camel_validate_yaml_dsl` / `camel validate`) and run the application, fixing until it starts cleanly. Keep the current approval gate and plan/execute chain as the default for interactive use, and scope Iron Law 3 in `iron-laws.md` and the camel-migrate HARD-RULE to that mode, so the two documents stop contradicting a direct request. Keeping the direct mode in the first ~20 K of SKILL.md (now 30 K) would also help agents that truncate skill output. Related: luigidemasi/camel-kit#243 (skill discoverability in Claude Code). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
