feat(install): add Cline as a first-class runtime (#1991) (#2032)

Cline was documented as a supported runtime but was absent from
bin/install.js. This adds full Cline support:

- Registers --cline CLI flag and adds 'cline' to --all list
- Adds getDirName/getConfigDirFromHome/getGlobalDir entries (CLINE_CONFIG_DIR env var respected)
- Adds convertClaudeToCliineMarkdown() and convertClaudeAgentToClineAgent()
- Wires Cline into copyWithPathReplacement(), install(), writeManifest(), finishInstall()
- Local install writes to project root (like Claude Code), not .cline/ subdirectory
- Generates .clinerules at install root with GSD integration rules
- Installs get-shit-done engine and agents with path/brand replacement
- Adds Cline as option 4 in interactive menu (13-runtime menu, All = 14)
- Updates banner description to include Cline
- Exports convertClaudeToCliineMarkdown and convertClaudeAgentToClineAgent for testing
- Adds tests/cline-install.test.cjs with 17 regression tests
- Updates multi-runtime-select, copilot-install, kilo-install tests for new option numbers

Fixes #1991

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-04-10 11:47:22 -04:00
committed by GitHub
parent 14c3ef5b1f
commit aa3e9cfaf4
5 changed files with 359 additions and 74 deletions

View File

@@ -139,8 +139,8 @@ describe('Source code integration (Copilot)', () => {
assert.ok(src.includes('--copilot'), 'help text has --copilot option');
});
test('CLI-02: promptRuntime runtimeMap has Copilot as option 6', () => {
assert.ok(src.includes("'6': 'copilot'"), 'runtimeMap has 6 -> copilot');
test('CLI-02: promptRuntime runtimeMap has Copilot as option 7', () => {
assert.ok(src.includes("'7': 'copilot'"), 'runtimeMap has 7 -> copilot');
});
test('CLI-02: promptRuntime allRuntimes array includes copilot', () => {