luigidemasi opened a new issue, #104: URL: https://github.com/apache/camel-kit/issues/104
> Imported from [luigidemasi/camel-kit#244](https://github.com/luigidemasi/camel-kit/issues/244), opened by [Croway](https://github.com/Croway) on 2026-10-10. > Closed by commit [311f228](https://github.com/luigidemasi/camel-kit/commit/311f2282d1d0be215c6c5a825e4ef6484fbbcceb). --- ## Problem `camel-kit init --ai claude` writes this `CLAUDE.md` (template `camel-kit-core/src/main/resources/templates/claude/claude-md.md`, rendered by `ClaudeGenerator`; identical on 0.4.1 and current `main`): ```markdown # Camel-Kit — Claude Code See `AGENTS.md` for skill routing, iron laws, and project rules. Use `/camel-ship` (Technology Preview) directly for a controller-owned end-to-end run. Follow its generated project skill: eligible native stages use the dedicated read-only `camel-ship-worker` subagent, while the CLI owns oversight, catalog checks, candidate writes, validation and publication. Do not route Ship through the manual pipeline skills or substitute another subagent. ``` Two issues follow from it: 1. **It steers plain requests into Ship.** The only concrete instruction Claude Code gets in its project memory is "use `/camel-ship` directly". Ship is marked Technology Preview (luigidemasi/camel-kit#233) and is meant to be opt-in, but for a request like "migrate this Mule/TIBCO/BizTalk project to Camel" the CLAUDE.md reads as the default route, bypassing `/camel-start` / `/camel-migrate`. 2. **`AGENTS.md` is never loaded.** Claude Code only reads `AGENTS.md` automatically when the project has *no* `CLAUDE.md`. When a `CLAUDE.md` exists, only a `@AGENTS.md` import pulls it in; the Claude Code memory docs say of "a `CLAUDE.md` that tells Claude in words to read `AGENTS.md`": "Claude sees `AGENTS.md` only if it decides to open the file ... replace the sentence with an `@AGENTS.md` import". So the routing (`Integration work → /camel-start`) and the iron laws in `AGENTS.md` are not in context, while the Ship sentence is. ## Evidence In an evaluation of coding agents on legacy-to-Camel migration tasks (camel-kit 0.4.1, Claude Code 2.1.294 headless, Haiku), 7 of about 100 camel-kit sessions followed the steer: they invoked the `camel-ship` skill and then drove `camel-kit ship --backend claude-native` / `--submit` from Bash (4 to 33 calls per session). In most of them the agent did open `AGENTS.md` on its own in its first command, and still picked Ship: next to the explicit "use `/camel-ship` directly" in CLAUDE.md, `AGENTS.md` only lists `/camel-ship` among the direct skills, so nothing says Ship is opt-in. Sessions that skip that first look never see the routing at all. Effects, compared with sibling sessions on the same task and model that did not use Ship: - same final result at 2-3x the cost and time: e.g. 1.48 USD / 28 min / 154 tool calls vs 0.41-1.09 USD for the siblings; 2.2-3.0 USD and up to 279 tool calls on a TIBCO task where the siblings used 0.81-0.86 USD; - one session stopped after the Ship run without producing the migration (score 0.16); - Ship asks for confirmations, so these sessions needed several extra user turns; - none produced the regular camel-kit artifacts (`docs/camel-kit/<id>/migration-analysis.md` etc.); output went to `.camel-kit/ship/`. No Sonnet session took this route, so the steer mostly hurts smaller models, which follow CLAUDE.md literally. ## Proposal Make the generated `CLAUDE.md` a thin wrapper that imports `AGENTS.md` and keeps Ship opt-in, e.g.: ```markdown @AGENTS.md Use `/camel-ship` (Technology Preview) only when the user explicitly asks for Ship or an unattended controller-owned run. When running Ship, follow its project skill and the `camel-ship-worker` subagent rules. ``` The Ship-specific constraints ("do not route Ship through the manual pipeline skills ...") already live in the `camel-ship` skill and can stay there. The same "use Ship directly" wording appears in the Copilot instructions template (`templates/copilot/copilot-instructions.md`, changed in the same commit) and may deserve the same treatment. -- 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]
