Config Inheritance
aix allows you to inherit configuration from other sources using the extends field in ai.json. This enables organizations to maintain shared “base” configurations (with standard rules, skills, and MCP servers) while allowing individual projects to add their own.
The extends field accepts a string or an array of strings.
{ "extends": "github:my-org/ai-standards"}Multiple sources are supported. They are processed in order, with later configurations overriding earlier ones:
{ "extends": [ // 1. Base company standards "github:company/ai-base",
// 2. Team specific overrides "github:team-platform/ai-config",
// 3. Local file mixin "./configs/react-project.json" ]}The final configuration is the result of merging all extended configs into your project’s ai.json.
Source Types
Section titled “Source Types”aix supports extending from:
npm packages
Section titled “npm packages”{ "extends": "@company/aix-config" }The package must export an ai.json (or have one in its root).
Git repositories
Section titled “Git repositories”Use the shorthand syntax provider:user/repo:
{ "extends": "github:company/repo" }You can target a specific branch, tag, or commit hash:
{ "extends": "github:company/repo#v2.0.0" }If the config file is not at the root of the repo, use the path query param (not supported in shorthand yet, so use full URL or ensure it’s at root/ai.json for now).
Direct HTTP/HTTPS URLs to a JSON file:
{ "extends": "https://raw.githubusercontent.com/user/repo/main/ai.json" }Local paths
Section titled “Local paths”Relative paths to other JSON files:
{ "extends": "../shared/ai.json" }Merge Logic
Section titled “Merge Logic”When merging configurations:
- Object maps:
skills,mcp,rules, andpromptsare merged by key. Keys in yourai.jsonoverwrite keys fromextends. - Editors: Normalized to object form and deep-merged. Remote editor settings are merged into local ones per editor key.
- Metadata:
$schemaandextendsfrom the remote config win. - Disabling: You can disable an inherited item by setting it to
false. - Not inherited:
hooksandaixsettings are not inherited from extended configs.
Example: Disabling an inherited rule
Base config (github:company/base):
{ "rules": { "always-add-tests": { "content": "..." } }}Your config:
{ "extends": "github:company/base", "rules": { "always-add-tests": false }}Resolution Process
Section titled “Resolution Process”- references in
extendsare resolved and downloaded (cached in.aix/cache). - Configs are loaded in order.
- Recursive
extendsare resolved (a config can extend another config). - All configs are merged into a single “resolved” configuration.
- Your local
ai.jsonis applied last. ai.local.json(if present) is applied on top.
To see the final result of this process, run:
aix config show --resolved