Part of #430.
Task
Implement cora install CLI subcommand.
Spec
cora install # Auto-detect + configure all
cora install --agents claude,cline # Specific agents
cora install --dry-run # Show what would change, don't write
cora install --uninstall # Remove Cora entries
cora install --list # Show detected agents + status
Implementation
- New command:
src/commands/install_cmd.rs
- Agent detection module: check config paths
- Config read/write: JSON (serde_json) + YAML (serde_yaml)
- Binary resolution:
which cora → absolute path
- Idempotent: skip if entry already exists
Agent Detection Logic
fn detect_agents() -> Vec<Agent> {
let home = dirs::home_dir();
let agents = [
Agent { name: "claude", path: home.join(".claude/settings.json"), format: Format::Json },
Agent { name: "cursor", path: home.join(".cursor/mcp.json"), format: Format::Json },
// ...
];
agents.into_iter().filter(|a| a.path.exists()).collect()
}
Acceptance
cora install --list shows detected agents
cora install --dry-run prints planned changes
cora install writes config without breaking existing entries
cora install --uninstall removes entries cleanly
Est: 3-4 days
Part of #430.
Task
Implement
cora installCLI subcommand.Spec
Implementation
src/commands/install_cmd.rswhich cora→ absolute pathAgent Detection Logic
Acceptance
cora install --listshows detected agentscora install --dry-runprints planned changescora installwrites config without breaking existing entriescora install --uninstallremoves entries cleanlyEst: 3-4 days