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]

Reply via email to