feat(install): add AdaL CLI install target

Following the hermes/openclaw (#2433) and kimi (#2441) adapter recipe.

What's included (adal-project adapter, project kind, ./.adal root, same
shape as kimi-project/joycode-project):
- scripts/lib/install-targets/adal-project.js — 10-line project-kind
  adapter targeting ./.adal
- Registry + helpers platform-ownership wiring
- adal target on the 5 shared modules (rules-core, agents-core,
  commands-core, platform-configs, workflow-quality) +
  SUPPORTED_INSTALL_TARGETS + legacy-compat module
- .adal in platform-configs paths
- Both schema enums (install-modules, ecc-install-config), npm files
  allowlist, installer help text, .adal/README.md stub

AdaL (adalagent.ai) is a terminal-based AI coding agent (by SylphAI)
built on AdalFlow, with native MCP support and project-scoped config
under ./.adal/ (skills, custom tools, memory) plus a root-level
AGENTS.md instructions file — matching the shape ECC already installs
into other AGENTS.md-based harnesses (Codex, OpenCode, Kimi).

Verified: full suite matches main's baseline (3334 passed, same
pre-existing failures unrelated to this change — OpenCode build/npm-pack
surface tests requiring build tooling not present in this sandbox);
catalog check passes (67 agents / 94 commands / 281 skills); dry-run
resolves Target: adal / Adapter: adal-project / root ./.adal with all 5
modules planned; doctor reports OK after a real install; uninstall
cleanly reverses all 458 operations.

Co-Authored-By: AdaL <adal@sylph.ai>
This commit is contained in:
Haoran Zhang
2026-08-29 13:40:56 -04:00
committed by haelyra
co-authored by AdaL
parent 7c2bc54be2
commit 1444239eec
10 changed files with 65 additions and 11 deletions
+22
View File
@@ -0,0 +1,22 @@
# ECC for AdaL CLI
This directory contains the ECC (Everything Claude Code) configuration for the AdaL CLI harness.
## What is installed
- `rules/ecc/` — shared coding rules and guidelines
- `skills/ecc/` — reusable skills
- `commands/` — slash commands
- `AGENTS.md` — agent instructions
## Manual install
```bash
bash ./install.sh --target adal --profile minimal
```
## Notes
- The `adal` target installs into the project-level `./.adal/` directory.
- AdaL's own config (`~/.adal/settings.json`, MCP servers, plugins) is **not** touched by ECC install.
- Use `npx ecc doctor --target adal` to check install health.
+16 -8
View File
@@ -19,7 +19,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [],
"defaultInstall": true,
@@ -47,7 +48,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [],
"defaultInstall": true,
@@ -75,7 +77,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [],
"defaultInstall": true,
@@ -121,7 +124,8 @@
"scripts/setup-package-manager.js",
".hermes",
".openclaw",
".kimi"
".kimi",
".adal"
],
"targets": [
"claude",
@@ -137,7 +141,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [],
"defaultInstall": true,
@@ -294,7 +299,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [
"platform-configs"
@@ -369,7 +375,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [
"skill-unified-memory"
@@ -627,7 +634,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
],
"dependencies": [
"platform-configs"
+1
View File
@@ -40,6 +40,7 @@
"url": "https://github.com/affaan-m/ECC/issues"
},
"files": [
".adal/",
".agents/",
".claude-plugin/",
".codex/",
+2 -1
View File
@@ -31,7 +31,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
]
},
"profile": {
+2 -1
View File
@@ -61,7 +61,8 @@
"zed",
"hermes",
"openclaw",
"kimi"
"kimi",
"adal"
]
}
},
+1
View File
@@ -47,6 +47,7 @@ Targets:
hermes - Install shared rules/skills/commands into ~/.hermes/
kimi - Install Kimi Code project instructions, skills, and MCP config into ./.kimi-code/ (ECC hooks not configured)
openclaw - Install shared rules/skills/commands into ~/.openclaw/
adal - Install shared rules/skills/commands into ./.adal/
Options:
--profile <name> Resolve and install a manifest profile
+8 -1
View File
@@ -5,7 +5,7 @@ const { getInstallTargetAdapter, planInstallTargetScaffold } = require('./instal
const { resolveInvocationEnvironment } = require('./invocation-environment');
const DEFAULT_REPO_ROOT = path.join(__dirname, '../..');
const SUPPORTED_INSTALL_TARGETS = ['claude', 'claude-project', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'joycode', 'qwen', 'zed', 'hermes', 'openclaw', 'kimi'];
const SUPPORTED_INSTALL_TARGETS = ['claude', 'claude-project', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'joycode', 'qwen', 'zed', 'hermes', 'openclaw', 'kimi', 'adal'];
const COMPONENT_FAMILY_PREFIXES = {
baseline: 'baseline:',
language: 'lang:',
@@ -99,6 +99,13 @@ const LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET = Object.freeze({
'platform-configs',
'workflow-quality',
],
adal: [
'rules-core',
'agents-core',
'commands-core',
'platform-configs',
'workflow-quality',
],
});
const LEGACY_LANGUAGE_ALIAS_TO_CANONICAL = Object.freeze({
c: 'c',
@@ -0,0 +1,10 @@
const { createInstallTargetAdapter } = require('./helpers');
module.exports = createInstallTargetAdapter({
id: 'adal-project',
target: 'adal',
kind: 'project',
rootSegments: ['.adal'],
installStatePathSegments: ['ecc-install-state.json'],
nativeRootRelativePath: '.adal',
});
+1
View File
@@ -16,6 +16,7 @@ const PLATFORM_SOURCE_PATH_OWNERS = Object.freeze({
'.codebuddy': 'codebuddy',
'.qwen': 'qwen',
'.zed': 'zed',
'.adal': 'adal',
});
function normalizeRelativePath(relativePath) {
+2
View File
@@ -1,3 +1,4 @@
const adalProject = require('./adal-project');
const antigravityProject = require('./antigravity-project');
const claudeHome = require('./claude-home');
const claudeProject = require('./claude-project');
@@ -29,6 +30,7 @@ const ADAPTERS = Object.freeze([
kimiProject,
qwenHome,
zedProject,
adalProject,
]);
function listInstallTargetAdapters() {