@ainova-systems/intelligence 0.11.0-rc.4 → 0.11.0-rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/cli/commands/add.sh +23 -1
  2. package/cli/commands/doctor.sh +28 -7
  3. package/cli/commands/init.sh +67 -21
  4. package/cli/commands/install.sh +55 -5
  5. package/cli/commands/migrate.sh +41 -9
  6. package/cli/commands/registry.sh +54 -35
  7. package/cli/commands/remove.sh +13 -1
  8. package/cli/commands/search.sh +12 -13
  9. package/cli/commands/status.sh +5 -4
  10. package/cli/commands/sync.sh +19 -1
  11. package/cli/commands/update.sh +23 -4
  12. package/cli/commands/upgrade.sh +50 -9
  13. package/cli/engine-package.yaml +14 -0
  14. package/cli/lib/cli-common.sh +37 -48
  15. package/cli/lib/manifest.sh +118 -0
  16. package/cli/lib/registry.sh +74 -39
  17. package/cli/lib/semver.sh +5 -2
  18. package/engine/agents/intelligence-operator.md +4 -4
  19. package/engine/docs/ADAPTERS.md +2 -1
  20. package/engine/docs/CLI.md +12 -13
  21. package/engine/docs/CONVENTIONS.md +5 -3
  22. package/engine/rules/intelligence-authoring.md +4 -4
  23. package/engine/scripts/ENGINE_SHA +1 -0
  24. package/engine/scripts/lib/common.sh +6 -2
  25. package/engine/scripts/sync.sh +1 -1
  26. package/engine/skills/intelligence-add-agent/SKILL.md +7 -7
  27. package/engine/skills/intelligence-add-rule/SKILL.md +5 -5
  28. package/engine/skills/intelligence-add-skill/SKILL.md +5 -5
  29. package/engine/skills/intelligence-extract-skill/SKILL.md +2 -2
  30. package/engine/skills/intelligence-install-adapter/SKILL.md +6 -6
  31. package/engine/skills/intelligence-learn-from-context/SKILL.md +1 -1
  32. package/engine/skills/intelligence-review-skills/SKILL.md +5 -5
  33. package/engine/skills/intelligence-sync/SKILL.md +5 -7
  34. package/engine/skills/intelligence-uninstall-adapter/SKILL.md +2 -2
  35. package/engine/skills/intelligence-update/SKILL.md +6 -0
  36. package/package.json +2 -3
  37. package/registry/index.yaml +0 -22
@@ -110,7 +110,8 @@ The engine ships artifacts of its own — the `intelligence-authoring` rule and
110
110
  | Token | Expands to |
111
111
  |---|---|
112
112
  | `<umbrella>` | repo-relative umbrella dir (e.g. `Intelligence`) |
113
- | `<module>` | repo-relative engine module (e.g. `Intelligence/sync`; CLI setup: `.intelligence/engine`) |
113
+ | `<module>` | repo-relative engine module (e.g. `Intelligence/sync`; CLI setup: `.intelligence/packages/@ainova-systems/sync`) |
114
+ | `<manifest>` | the project's config file name — vendored: `config.yaml`, CLI setup: `intelligence.yaml` (`IS_MANIFEST_NAME`) |
114
115
  | `<sync-cmd>` | the sync invocation — vendored: `bash <module>/scripts/sync.sh`, CLI setup: `intelligence sync` (`IS_SYNC_CMD`) |
115
116
 
116
117
  Values are exported by `sync.sh` (`IS_UMBRELLA_REL`, `IS_MODULE_REL`; `IS_SYNC_CMD` comes from the CLI in CLI mode), derived from the detected layout. Expansion covers frontmatter and body, so `paths: ["<umbrella>/**"]` reaches Claude's `paths:`, Cursor's `globs:` and Copilot's `applyTo:` carrying the project's real folder name. A file written without `finalize_output_file` ships a literal `<umbrella>` into an IDE — CI fails the build if any generated output still contains a token.
@@ -16,37 +16,35 @@ project/
16
16
  ├── intelligence.yaml # manifest, at the repo root (like package.json)
17
17
  ├── intelligence.lock # resolved package state — commit it
18
18
  ├── intelligence/ # the project's own rules/ agents/ skills/
19
- ├── .intelligence/ # gitignored store: packages/<name>/, engine/, backup/
19
+ ├── .intelligence/ # gitignored store: packages/<name>/, backup/
20
20
  ├── .claude/ .cursor/ … # generated by sync
21
21
  └── AGENTS.md
22
22
  ```
23
23
 
24
- No engine code lives in the project. The engine ships inside the npm package; its own rules, agents, meta-skills and docs are staged into `.intelligence/engine/` (re-staged whenever the bundled engine version changes) and reach the outputs as ordinary sources. After a fresh clone, `intelligence install` restores the whole store from the lock.
24
+ No engine code lives in the project. The engine's *scripts* ship inside the npm package; the engine's *content* — the authoring rule, both engine agents, every `intelligence-*` meta-skill and the docs — is the package **`@ainova-systems/sync`**: auto-added by `init` (opt out with `--bare`), visible in `list`/`search`, pinned exactly to the bundled engine version, and materialized from the npm bundle without network whenever the pin matches (only a cross-version install reaches git). `intelligence update` never moves it — `intelligence upgrade` does, together with the schema stamp. Removing it (`remove @ainova-systems/sync --force`) drops the meta-content from the outputs while the sync engine itself keeps working. After a fresh clone, `intelligence install` restores the whole store from the lock.
25
25
 
26
26
  ## Commands
27
27
 
28
28
  | Command | Does |
29
29
  |---|---|
30
- | `init [--targets a,b] [--no-sync]` | Detect tools by their marker dirs, write a minimal root manifest, `.gitignore` the store, skeleton `intelligence/`, first sync. `agents` + `claude` are always on. |
30
+ | `init [--targets a,b] [--dir d] [--bare] [--no-sync]` | Enable `agents` (the tool-neutral AGENTS.md) plus every tool DETECTED by repo markers (`.claude`/`CLAUDE.md`, `.cursor`, `.codex`, `.pi`, `.opencode`, `.github/instructions`) or named via `--targets` — a tool is never invented. Writes a minimal self-documenting root manifest, `.gitignore`s the store, installs `@ainova-systems/sync` (unless `--bare`), first sync. No dirs are created. |
31
31
  | `add <spec> [--name @s/n] [--no-sync]` | Resolve → fetch → wire sources → manifest entry → lock → sync. Specs: `@scope/name[@range]`, `github:org/repo[#path]`, `git+<url>[@ref][#path]`. |
32
- | `remove <name>` | Inverse of add: manifest, sources, lock, store. |
32
+ | `remove <name> [--force]` | Inverse of add: manifest, sources, lock, store. |
33
33
  | `install [--frozen] [--force]` | Restore the store exactly from the lock; resolve manifest packages the lock lacks (`--frozen` refuses instead, and fails on sha drift). |
34
34
  | `update [name]` | Re-resolve ranges, refetch what moved, rewrite the lock. `ref:`-pinned packages never move here. |
35
- | `upgrade` | Bring the project to this CLI's engine: restage engine content, apply v2 schema migrations, restamp `sync_version`, sync. |
35
+ | `upgrade` | Bring the project to this CLI's engine: apply v2 schema migrations, move the `@ainova-systems/sync` pin to the bundled version and reinstall it, restamp `sync_version`, sync. |
36
36
  | `sync [target]` | Run the bundled engine against the manifest. In a vendored (v1) project it delegates to that project's own engine. |
37
37
  | `list` / `status` / `doctor` | Inspect; doctor exits 1 on inconsistencies (unlocked packages, missing store, stale stamp, dead sources). |
38
- | `registry <list\|add @scope <url>\|remove @scope>` | Bind a scope to a registry repo — rare, once per organization. |
38
+ | `registry <list\|add <url> [--force]\|remove <url>>` | Manage the trust list of registries — rare, once per organization. `add` fails closed on a URL with no `index.yaml` (`--force` records it anyway). |
39
39
  | `migrate [--dry-run] [--force]` | Convert a vendored setup to the CLI setup. Transactional; see below. |
40
40
 
41
41
  ## Packages
42
42
 
43
43
  **A package's name is its identity everywhere**: the `packages:` key in the manifest, the store directory (`.intelligence/packages/@scope/name/` — npm's nesting), and the lock key. What a package provides is a convention: whichever of `rules/`, `agents/`, `skills/` exist at its top level get wired into the matching `sources:` sections by `add`.
44
44
 
45
- **Name → repo resolution**, first hit wins:
45
+ **Names are global.** The name is the trust anchor a developer reasons with — the same `@scope/name` means the same package in every project, every lock and every conversation. A registry never renames anything, and two versions of one name cannot coexist in a project: intelligence artifacts land in each tool's flat namespace (`.claude/skills/<name>/`, the `AGENTS.md` tables), so duplicates would collide file-by-file. Need pieces of two versions? That is a different package — fork it under a different name. Need to override one artifact? Put a same-named file in your own content dir; project sources are listed after package sources.
46
46
 
47
- 1. `registries:` in the manifest — a scope bound to a *registry repo*: any git repo holding an `index.yaml`. Private registries are therefore just private repos; git auth covers access.
48
- 2. The bundled default index (`registry/index.yaml`) — needed exactly when a name is not a repo (monorepos: `@ainova-systems/core` → `intelligence-dev-packs` at `packs/core`).
49
- 3. Convention: `@org/name` → `https://github.com/org/name.git`, content at the repo root. Zero infrastructure: any repo with the three dirs is already a package.
47
+ **Name → repo resolution: the trust list is the ONLY resolver.** `registries:` in the manifest holds registry repos (git repos with an `index.yaml`), consulted in order — the first to declare the name wins. There is deliberately **no built-in catalog and no `@org/name` → github guessing**: the CLI core knows no vendor, and a name nobody explicitly trusted never turns into an install from an invented URL. A name no trusted registry declares is refused with suggestions. Installs without a registry are always **explicit sources**: `github:org/repo`, `git+<url>[@ref][#path]`. Vendor defaults exist only as lines `init` seeds into the manifest — visible, reviewable, deletable (`doctor` still flags a name whose current resolution url no longer matches the lock).
50
48
 
51
49
  **Versions are git tags.** Ranges (`^1.2.0`, `~1.2.0`, exact, `latest`) match stable `x.y.z` tags (optional `v` prefix) listed via `git ls-remote` — no clone to resolve. `add` without a range picks the highest stable tag and records `^that`. A branch or commit pin is `ref:`, the escape hatch that ranges never touch. Prerelease-suffixed tags are invisible to ranges by design.
52
50
 
@@ -61,7 +59,7 @@ packages:
61
59
  "@ainova-systems/core":
62
60
  version: "^0.3.0" # or: ref: main / url: + path: (direct git specs)
63
61
  registries:
64
- "@acme": "https://github.com/acme/intelligence-registry.git"
62
+ - "https://github.com/acme/intelligence-registry.git"
65
63
  ```
66
64
 
67
65
  `project.intelligence_dir` names the content dir when it is not `intelligence/`. `sync_version` stays the frozen schema-contract key, stamped by the CLI with the bundled engine version — an npm prerelease suffix never reaches it.
@@ -75,14 +73,15 @@ The engine's CLI mode is an env contract, set by the dispatcher and honored only
75
73
  | `CONFIG_FILE` | `<root>/intelligence.yaml` |
76
74
  | `REPO_ROOT` | the project root |
77
75
  | `IS_UMBRELLA_REL` | content dir (`intelligence`) |
78
- | `IS_MODULE_REL` | `.intelligence/engine` |
76
+ | `IS_MODULE_REL` | `.intelligence/packages/@ainova-systems/sync` |
77
+ | `IS_MANIFEST_NAME` | `intelligence.yaml` (feeds the `<manifest>` token; vendored default `config.yaml`) |
79
78
  | `IS_SYNC_CMD` | `intelligence sync` (expanded for the `<sync-cmd>` token) |
80
79
  | `IS_PROTECTED_DIRS` | `<content-dir>:.intelligence` — restores output-path protection for a root manifest |
81
80
  | `IS_SUPPRESS_CLI_NOTE` | set to silence the vendored-flow recommendation note |
82
81
 
83
82
  ## migrate: vendored (v1) → CLI (v2)
84
83
 
85
- Fail-closed preconditions (clean worktree unless `--force`; no half-migrated state; project schema not newer than the engine; an older schema is first brought up by the engine's own migration chain). Then **stage** — the manifest is `config.yaml` transformed comment-preservingly (module sources → `.intelligence/engine/*`, `@pack/sub` references → store paths, `packs:` → `packages:` entries keeping their `ref:` pins), mirrored packs are *copied* from their mirrors (network untouched, sha carried from the `.pack` stamp), transient packs fetched — **verify** (staged sources exist; per-adapter `enabled`/`output` equality against the old config) — **commit**: store and manifest move in, a real sync must report `IS_STATUS=ok`, and only then are the vendored module, `config.yaml` (backed up to `.intelligence/backup/`) and the mirrors removed. Any earlier failure rolls back to an untouched project. `--dry-run` stages, verifies, prints, writes nothing.
84
+ Fail-closed preconditions (clean worktree unless `--force`; no half-migrated state; project schema not newer than the engine; an older schema is first brought up by the engine's own migration chain). Then **stage** — the manifest is `config.yaml` transformed comment-preservingly (module sources → the `@ainova-systems/sync` package store, `@pack/sub` references → store paths, `packs:` → `packages:` entries keeping their `ref:` pins), mirrored packs are *copied* from their mirrors (network untouched, sha carried from the `.pack` stamp), transient packs fetched — **verify** (staged sources exist; per-adapter `enabled`/`output` equality against the old config) — **commit**: store and manifest move in, a real sync must report `IS_STATUS=ok`, and only then are the vendored module, `config.yaml` (backed up to `.intelligence/backup/`) and the mirrors removed. Any earlier failure rolls back to an untouched project. `--dry-run` stages, verifies, prints, writes nothing.
86
85
 
87
86
  ## Developing and releasing the CLI
88
87
 
@@ -56,7 +56,8 @@ An artifact shipped *by the engine* cannot write the umbrella's name down — th
56
56
  | Token | Expands to | Example |
57
57
  |---|---|---|
58
58
  | `<umbrella>` | repo-relative umbrella dir | `Intelligence` |
59
- | `<module>` | repo-relative engine module | `Intelligence/sync` (CLI setup: `.intelligence/engine`) |
59
+ | `<module>` | repo-relative engine module | `Intelligence/sync` (CLI setup: `.intelligence/packages/@ainova-systems/sync`) |
60
+ | `<manifest>` | the project's config file, by name | vendored: `config.yaml`; CLI setup: `intelligence.yaml` |
60
61
  | `<sync-cmd>` | how a reader re-runs the sync | vendored: `bash Intelligence/sync/scripts/sync.sh`; CLI setup: `intelligence sync` |
61
62
 
62
63
  Expansion covers frontmatter and body alike, so `paths: ["<umbrella>/**"]` reaches Claude's `paths:`, Cursor's `globs:` and Copilot's `applyTo:` already carrying the project's real folder name. Project-authored artifacts may use the tokens too, but they have no reason to — they can simply name their own folders. `<sync-cmd>` exists because "run a sync" is spelled differently per setup: engine content says the token, and `IS_SYNC_CMD` (set by the CLI) picks the spelling; unset, it reproduces the vendored command string exactly.
@@ -408,12 +409,13 @@ Bash emits `IS_STATUS=<code> [IS_DETAIL=...]` on stdout and exits with the match
408
409
  |---|---|
409
410
  | `CONFIG_FILE` | `<root>/intelligence.yaml` (the root manifest) |
410
411
  | `REPO_ROOT` | project root |
411
- | `IS_UMBRELLA_REL` / `IS_MODULE_REL` | content dir (default `intelligence`) / `.intelligence/engine` |
412
+ | `IS_UMBRELLA_REL` / `IS_MODULE_REL` | content dir (default `intelligence`) / `.intelligence/packages/@ainova-systems/sync` |
413
+ | `IS_MANIFEST_NAME` | `intelligence.yaml` — feeds the `<manifest>` token (vendored default: `config.yaml`) |
412
414
  | `IS_SYNC_CMD` | `intelligence sync` (feeds the `<sync-cmd>` token) |
413
415
  | `IS_PROTECTED_DIRS` | colon-separated dirs `validate_output_path` must refuse — restores the source-tree protection a root manifest would otherwise disable |
414
416
  | `IS_SUPPRESS_CLI_NOTE` | silences the vendored-flow recommendation NOTE (stderr-only either way) |
415
417
 
416
- In CLI projects the `intelligence-sync` and `intelligence-update` meta-skills are not installed — `intelligence sync` / `intelligence update` replace them; the other meta-skills ship unchanged and reach outputs from `.intelligence/engine/skills`. `sync.sh` in CLI mode still never migrates: an outdated stamp exits `needs-update` and the CLI's own `upgrade` closes the gap. See `docs/CLI.md` for the full CLI surface.
418
+ In CLI projects the engine's content is the `@ainova-systems/sync` package (auto-added by `init`, pinned to the engine version, moved only by `intelligence upgrade`), so **every** meta-skill ships in both modes: `intelligence-sync` runs `<sync-cmd>` wherever it lands, and `intelligence-update` self-redirects to `intelligence upgrade` when it finds a root `intelligence.yaml`. `sync.sh` in CLI mode still never migrates: an outdated stamp exits `needs-update` and the CLI's own `upgrade` closes the gap. See `docs/CLI.md` for the full CLI surface.
417
419
 
418
420
  ## .gitignore Pattern
419
421
 
@@ -25,9 +25,9 @@ Three ways to shorten, in order of what they are worth:
25
25
 
26
26
  ## Source of truth
27
27
 
28
- Edit the sources listed in `config.yaml` — the `rules/`, `agents/` and `skills/` directories it names — and `config.yaml` itself. Everything else is derived: `.claude/`, `.cursor/`, `.github/{instructions,agents,skills}/`, `.codex/`, `.agents/skills/`, `.pi/`, `.opencode/` and `AGENTS.md` are **generated output**, and a hand edit there survives exactly until the next sync.
28
+ Edit the sources listed in `<manifest>` — the `rules/`, `agents/` and `skills/` directories it names — and `<manifest>` itself. A source that arrived from the engine or an installed package is not yours to edit either — it is replaced on the next update or install; change it in its own repository. Everything else is derived: `.claude/`, `.cursor/`, `.github/{instructions,agents,skills}/`, `.codex/`, `.agents/skills/`, `.pi/`, `.opencode/` and `AGENTS.md` are **generated output**, and a hand edit there survives exactly until the next sync.
29
29
 
30
- `<module>/` is the vendored engine. It owns its own rules, agents and meta-skills; `update.sh` replaces them wholesale, so a local edit there is lost at the next update. Fix it upstream instead.
30
+ `<module>/` is the engine's own content. It owns its own rules, agents and meta-skills, and every engine update replaces it wholesale, so a local edit there is lost. Fix it upstream instead.
31
31
 
32
32
  After any change: `<sync-cmd>`. A change that was not synced does not exist for any tool.
33
33
 
@@ -84,11 +84,11 @@ The verb just names the action — `add-`, `run-`, `review-`, `extract-`, `plan-
84
84
 
85
85
  Two verbs are told apart by what already exists. **`add-` puts one new member into a set that is already there** — a field on an existing type, a record among records, a component in the inventory the project keeps — so the noun names the member, and the number of files it takes to land is not the point. **`create-` brings the container itself into existence**, where nothing hosted it before. Neither verb describes how a skill is factored inside, so splitting a skill's internals never renames it.
86
86
 
87
- `intelligence-` is **reserved** for the engine's own artifacts. A project skill carrying that prefix is pruned by the updater — rename it.
87
+ `intelligence-` is **reserved** for the engine's own artifacts. A project skill carrying that prefix collides with engine ownership — everything under the prefix is the engine's to replace or remove on update — rename it.
88
88
 
89
89
  ### Shape
90
90
 
91
- - **A skill is executed, so it must not hardcode what can move.** Its steps are followed literally: a path, a command or a project name baked into a procedure breaks the moment the layout moves. Resolve them from a rule or from `config.yaml` instead. This does **not** apply to rules and agents — a rule's job is to *describe* the repository, so naming a path in prose is exactly right. Naming a path is description; baking one into a procedure is a defect waiting to fire.
91
+ - **A skill is executed, so it must not hardcode what can move.** Its steps are followed literally: a path, a command or a project name baked into a procedure breaks the moment the layout moves. Resolve them from a rule or from `<manifest>` instead. This does **not** apply to rules and agents — a rule's job is to *describe* the repository, so naming a path in prose is exactly right. Naming a path is description; baking one into a procedure is a defect waiting to fire.
92
92
  - **Keep everything the skill needs inside the skill's own folder.** The Agent Skills standard lets a skill ship `scripts/`, `references/` and `assets/` beside `SKILL.md`, and sync copies the whole directory, so a bundled helper travels with the skill to every tool. That is the default.
93
93
  - **Promote a helper out of the skill folder only when a second skill needs it** — then it belongs beside the source groups, and every skill resolves it the same way. The dividing line is reuse, not repetition: one skill's helper stays with that skill however often it runs.
94
94
  - **A helper is code.** It gets what code gets — a test, and a way to run it that does not assume one person's machine.
@@ -0,0 +1 @@
1
+ 3a5cd174c73bd3918ac0a01df8d54a6f3d98b485
@@ -42,13 +42,16 @@ finalize_output_file() {
42
42
  # `<sync-cmd>` is how engine content says "run a sync": vendored setups
43
43
  # expand it to the script invocation (built from $mod, so it reproduces the
44
44
  # exact pre-token string), the CLI overrides it via IS_SYNC_CMD
45
- # (`intelligence sync`).
45
+ # (`intelligence sync`). `<manifest>` names the project's config file the
46
+ # same way: `config.yaml` vendored, `intelligence.yaml` under the CLI
47
+ # (IS_MANIFEST_NAME).
46
48
  local sc="${IS_SYNC_CMD:-bash $mod/scripts/sync.sh}"
49
+ local mf="${IS_MANIFEST_NAME:-config.yaml}"
47
50
  local tmp_file="$target.tmp"
48
51
  # Literal (index-based) substitution, not gsub: a regex replacement would
49
52
  # give `&` in a path its special meaning, and POSIX awk has no way to pass a
50
53
  # replacement string verbatim.
51
- awk -v umb="$umb" -v mod="$mod" -v sc="$sc" '
54
+ awk -v umb="$umb" -v mod="$mod" -v sc="$sc" -v mf="$mf" '
52
55
  function repl(s, from, to, out, i) {
53
56
  out = ""
54
57
  while ((i = index(s, from)) > 0) {
@@ -60,6 +63,7 @@ finalize_output_file() {
60
63
  {
61
64
  sub(/\r$/, "")
62
65
  $0 = repl($0, "<sync-cmd>", sc)
66
+ $0 = repl($0, "<manifest>", mf)
63
67
  $0 = repl($0, "<module>", mod)
64
68
  $0 = repl($0, "<umbrella>", umb)
65
69
  print
@@ -94,7 +94,7 @@ if [ "${IS_CLI:-0}" = "1" ]; then
94
94
  # `/d/...`, and prefix comparisons downstream need one spelling.
95
95
  CONFIG_FILE="$(cd "$(dirname "$CONFIG_FILE")" && pwd)/$(basename "$CONFIG_FILE")"
96
96
  IS_UMBRELLA_REL="${IS_UMBRELLA_REL:-intelligence}"
97
- IS_MODULE_REL="${IS_MODULE_REL:-.intelligence/engine}"
97
+ IS_MODULE_REL="${IS_MODULE_REL:-.intelligence/packages/@ainova-systems/sync}"
98
98
  # Project-owned adapters keep their v1 home: <umbrella>/adapters/.
99
99
  INTELLIGENCE_DIR="$REPO_ROOT/$IS_UMBRELLA_REL"
100
100
  else
@@ -9,19 +9,19 @@ argument-hint: <domain> [description]
9
9
  ## Steps
10
10
 
11
11
  1. **Determine domain prefix** (the scope is required):
12
- - **Reuse the existing domain when one fits**: list `intelligence/agents/` and `intelligence/skills/`. If a domain prefix is already established for the target area (`backend-`, `frontend-`, `devops-`), use it. Introduce a new domain only when the scope is materially different from all existing ones.
12
+ - **Reuse the existing domain when one fits**: list `<umbrella>/agents/` and `<umbrella>/skills/`. If a domain prefix is already established for the target area (`backend-`, `frontend-`, `devops-`), use it. Introduce a new domain only when the scope is materially different from all existing ones.
13
13
  - **When no existing domain fits**, derive from repo structure:
14
- - Single / root project → use the project codename from `intelligence/config.yaml` → `project.name`
14
+ - Single / root project → use the project codename from `<manifest>` → `project.name`
15
15
  - Backend service / API component → `backend-`
16
16
  - Frontend / web / UI component → `frontend-`
17
17
  - Infrastructure, IaC, CI/CD, deployment → `devops-`
18
18
  - Shared library / common / cross-cutting code → `core-`
19
19
  - Test suites (e2e, integration) → `tests-`
20
- - Tool-internal (intelligence-sync itself) → `intelligence-`
20
+ - Tool-internal (intelligence-sync itself) → `intelligence-` (only inside the intelligence-sync repo — downstream projects must not use this prefix)
21
21
  - If the repo is a monorepo with named components (e.g., `apps/billing`, `services/auth`), prefer the component name as the domain (`billing-`, `auth-`).
22
22
  - **Every agent needs a domain prefix.** If the scope is unclear, ask the user before proceeding.
23
23
 
24
- 2. **Check existing agents**: Read `intelligence/agents/` to avoid duplicates. If an agent for this domain exists, ask user whether to update it instead.
24
+ 2. **Check existing agents**: Read `<umbrella>/agents/` to avoid duplicates. If an agent for this domain exists, ask user whether to update it instead.
25
25
 
26
26
  3. **Determine tier and access**:
27
27
  - Developer agents: `tier: heavy`, `access: full`
@@ -36,7 +36,7 @@ argument-hint: <domain> [description]
36
36
  - Build and test commands
37
37
  - Key conventions and forbidden patterns
38
38
 
39
- 5. **Create agent**: Write `intelligence/agents/<domain>-<role>.md` with frontmatter:
39
+ 5. **Create agent**: Write `<umbrella>/agents/<domain>-<role>.md` (create the directory if missing) with frontmatter:
40
40
  ```yaml
41
41
  ---
42
42
  name: <domain>-<role>
@@ -52,11 +52,11 @@ argument-hint: <domain> [description]
52
52
 
53
53
  6. **Write body** with sections: **Expertise** -> **Boundaries** -> **Build & Verify**
54
54
  - An agent is **thin**: who it is, where it stops, how it verifies. Everything else already reaches it.
55
- - **Do not tell the agent to read the rules.** Rules load on their own: Claude Code loads `.claude/rules/` into every custom subagent's startup context alongside `CLAUDE.md` (*Subagents → What loads at startup*), and Cursor / Copilot / Codex / Pi / opencode receive always-on rules inlined in `AGENTS.md`. A `Read intelligence/rules/<domain>.md before starting` line duplicates content the agent already has — double the tokens, and a second copy that drifts from the rule it copied.
55
+ - **Do not tell the agent to read the rules.** Rules load on their own: Claude Code loads `.claude/rules/` into every custom subagent's startup context alongside `CLAUDE.md` (*Subagents → What loads at startup*), and Cursor / Copilot / Codex / Pi / opencode receive always-on rules inlined in `AGENTS.md`. A `Read <umbrella>/rules/<domain>.md before starting` line duplicates content the agent already has — double the tokens, and a second copy that drifts from the rule it copied.
56
56
  - **Point at a rule, never restate it.** If you want to copy a rule into the agent, the rule is in the wrong place — move it, do not clone it.
57
57
  - **Do carry** what is genuinely the agent's own: its boundaries ("if the app is not running, stop — do not hand-write the output"), its verification commands, its definition of done.
58
58
  - All content must come from actual codebase analysis.
59
59
 
60
- 7. **Link existing skills**: Find skills in `intelligence/skills/` matching this domain prefix and add them to the agent's `skills:` frontmatter.
60
+ 7. **Link existing skills**: Find skills in `<umbrella>/skills/` matching this domain prefix and add them to the agent's `skills:` frontmatter.
61
61
 
62
62
  8. **Run `/intelligence-sync`** to distribute to all enabled IDE targets.
@@ -9,9 +9,9 @@ argument-hint: <name> [paths-glob]
9
9
  ## Steps
10
10
 
11
11
  1. **Determine rule name from domain** (the scope is required):
12
- - **Reuse the existing domain when one fits**: list `intelligence/rules/`. If a rule file covers the target area (e.g., `backend.md`, `frontend.md`), extend it. Introduce a new domain only when the scope is materially different from all existing rules.
12
+ - **Reuse the existing domain when one fits**: list `<umbrella>/rules/`. If a rule file covers the target area (e.g., `backend.md`, `frontend.md`), extend it. Introduce a new domain only when the scope is materially different from all existing rules.
13
13
  - **When no existing rule fits**, derive the filename from repo structure:
14
- - Single / root project → use the project codename from `intelligence/config.yaml` → `project.name` (e.g., `<codename>.md`)
14
+ - Single / root project → use the project codename from `<manifest>` → `project.name` (e.g., `<codename>.md`)
15
15
  - Backend service / API component → `backend.md`
16
16
  - Frontend / web / UI component → `frontend.md`
17
17
  - Infrastructure, IaC, CI/CD, deployment → `devops.md`
@@ -21,7 +21,7 @@ argument-hint: <name> [paths-glob]
21
21
  - If the repo is a monorepo with named components (e.g., `apps/billing`, `services/auth`), prefer the component name as the rule name (`billing.md`, `auth.md`).
22
22
  - **Rule filenames match the domain used by skills/agents.** If the scope is unclear, ask the user before proceeding.
23
23
 
24
- 2. **Check existing rules**: Read `intelligence/rules/` to detect overlapping scope — favor extending an existing rule over creating a new one.
24
+ 2. **Check existing rules**: Read `<umbrella>/rules/` to detect overlapping scope — favor extending an existing rule over creating a new one.
25
25
 
26
26
  3. **Determine scope**:
27
27
  - If paths glob provided — scoped rule with `paths:` frontmatter
@@ -34,7 +34,7 @@ argument-hint: <name> [paths-glob]
34
34
  - Build and test commands specific to this scope
35
35
  - Anti-patterns observed in code, each paired with the positive replacement that should adopt instead
36
36
 
37
- 5. **Create rule**: Write `intelligence/rules/<name>.md`:
37
+ 5. **Create rule**: Write `<umbrella>/rules/<name>.md` (create the directory if it does not exist — the sources list already covers it):
38
38
  ```yaml
39
39
  ---
40
40
  paths:
@@ -49,6 +49,6 @@ argument-hint: <name> [paths-glob]
49
49
  - Examples come from the actual codebase — reference real files
50
50
  - Every REQUIRED / Invariant / Pattern is backed by observed code
51
51
 
52
- 7. **Update config.yaml** if needed: Add source path to `sources.rules` if rule is in a new directory not yet listed.
52
+ 7. **Update `<manifest>` only when needed**: add the path to `sources.rules` only if the rule lives in a directory not already listed there — creating a pre-listed directory is enough.
53
53
 
54
54
  8. **Run `/intelligence-sync`** to distribute to all enabled IDE targets.
@@ -9,15 +9,15 @@ argument-hint: <domain> <verb-noun> [description]
9
9
  ## Steps
10
10
 
11
11
  1. **Determine domain prefix** (the scope is required):
12
- - **Reuse the existing domain when one fits**: list `intelligence/skills/` and `intelligence/agents/`. If a domain prefix is already established for the target area (`backend-`, `frontend-`, `devops-`), use it. Introduce a new domain only when the scope is materially different from all existing ones.
12
+ - **Reuse the existing domain when one fits**: list `<umbrella>/skills/` and `<umbrella>/agents/`. If a domain prefix is already established for the target area (`backend-`, `frontend-`, `devops-`), use it. Introduce a new domain only when the scope is materially different from all existing ones.
13
13
  - **When no existing domain fits**, derive from repo structure:
14
- - Single / root project → use the project codename from `intelligence/config.yaml` → `project.name`
14
+ - Single / root project → use the project codename from `<manifest>` → `project.name`
15
15
  - Backend service / API component → `backend-`
16
16
  - Frontend / web / UI component → `frontend-`
17
17
  - Infrastructure, IaC, CI/CD, deployment → `devops-`
18
18
  - Shared library / common / cross-cutting code → `core-`
19
19
  - Test suites (e2e, integration) → `tests-`
20
- - Tool-internal (intelligence-sync itself) → `intelligence-`
20
+ - Tool-internal (intelligence-sync itself) → `intelligence-` (only inside the intelligence-sync repo — downstream projects must not use this prefix)
21
21
  - If the repo is a monorepo with named components (e.g., `apps/billing`, `services/auth`), prefer the component name as the domain (`billing-`, `auth-`).
22
22
  - **Every skill needs a domain prefix.** If the scope is unclear, ask the user before proceeding.
23
23
 
@@ -28,13 +28,13 @@ argument-hint: <domain> <verb-noun> [description]
28
28
  - `run-` — executes an operation (tests, build, sync)
29
29
  - `review-` — read-only analysis
30
30
 
31
- 3. **Check for existing agent**: Find an agent in `intelligence/agents/` matching the domain
31
+ 3. **Check for existing agent**: Find an agent in `<umbrella>/agents/` matching the domain
32
32
  - If found — this skill will be linked to that agent
33
33
  - If not — ask user whether to create a new agent via `/intelligence-add-agent` first
34
34
 
35
35
  4. **Analyze codebase patterns**: Read existing implementations to extract the repeatable steps this skill should automate. Each step must come from actual code patterns, not generic knowledge.
36
36
 
37
- 5. **Create skill**: Write `intelligence/skills/<full-name>/SKILL.md` with frontmatter:
37
+ 5. **Create skill**: Write `<umbrella>/skills/<full-name>/SKILL.md` (create the directory if missing — no config edit needed) with frontmatter:
38
38
  ```yaml
39
39
  ---
40
40
  name: <full-name>
@@ -26,7 +26,7 @@ Both end at the same artifact format. Extract starts from observed behavior, so
26
26
  - Behavioral preference / constraint / pattern to default to → **rule** (use `intelligence-learn-from-context` for single preferences from session)
27
27
  - Knowledge area / persona / expertise scope → **agent**
28
28
 
29
- 4. **Determine domain prefix** (for skill / agent): reuse the existing domain when one fits — list `intelligence/skills/` and `intelligence/agents/`. Derive from repo structure only when no existing domain matches.
29
+ 4. **Determine domain prefix** (for skill / agent): reuse the existing domain when one fits — list `<umbrella>/skills/` and `<umbrella>/agents/`. Derive from repo structure only when no existing domain matches.
30
30
 
31
31
  5. **Determine naming** (for skill): `<domain>-<verb>-<noun>` with convention verbs — `add-` (one new member of a set that already exists), `create-` (the container itself, where nothing hosted it), `update-` (revise what is there), `run-` (execute), `review-` (read-only analysis).
32
32
 
@@ -38,7 +38,7 @@ Both end at the same artifact format. Extract starts from observed behavior, so
38
38
 
39
39
  ## Authoring guidance
40
40
 
41
- Follow the **Authoring Discipline** section in `docs/CONVENTIONS.md` when writing the artifact body — size budgets (<500 lines for SKILL.md body), imperative form, explain WHY, reserve absolute language for true invariants, lead with positive defaults.
41
+ Follow the **Authoring Discipline** section in `<module>/docs/CONVENTIONS.md` when writing the artifact body — size budgets (<500 lines for SKILL.md body), imperative form, explain WHY, reserve absolute language for true invariants, lead with positive defaults.
42
42
 
43
43
  ## Related skills
44
44
 
@@ -7,19 +7,19 @@ agent: intelligence-operator
7
7
 
8
8
  # Install Adapter
9
9
 
10
- The umbrella is whatever directory holds `config.yaml` (`intelligence/`, `Intelligence/`, a codename — never assume the name or casing); the engine module is the directory under it holding `scripts/sync.sh` (conventionally `sync/`).
10
+ The project's config is `<manifest>`; the content dir is `<umbrella>/` (never assume the name or casing); the engine's own files live under `<module>/` — these paths are localized to this project at sync time.
11
11
 
12
12
  ## Steps
13
13
 
14
- 1. Check whether target `$ARGUMENTS` is already enabled in `config.yaml` — if yes, report and stop.
14
+ 1. Check whether target `$ARGUMENTS` is already enabled in `<manifest>` — if yes, report and stop.
15
15
 
16
- 2. **Locate the adapter.** `sync.sh` discovers adapters in two places:
17
- - **Built-in**: `<module>/scripts/adapters/$ARGUMENTS.sh` — upstream-owned. `update.sh` replaces that whole directory on every engine update.
18
- - **Project-owned**: `<umbrella>/adapters/$ARGUMENTS.sh` — `update.sh` never touches it. A project adapter of the same name overrides the built-in.
16
+ 2. **Locate the adapter.** The sync discovers adapters in two places:
17
+ - **Built-in**: `<module>/scripts/adapters/$ARGUMENTS.sh` — upstream-owned. Every engine update replaces that whole directory.
18
+ - **Project-owned**: `<umbrella>/adapters/$ARGUMENTS.sh` — updates never touch it. A project adapter of the same name overrides the built-in.
19
19
 
20
20
  If neither exists, research the tool's prompt format (web search for its rules / agents / skills file layout), then copy `<module>/scripts/adapters/_template.sh` to **`<umbrella>/adapters/$ARGUMENTS.sh`** and implement `sync_to_$ARGUMENTS()`. Author it there, never inside the engine's `scripts/adapters/` — a file written there is deleted by the next engine update. Adapter contract: `<module>/docs/ADAPTERS.md`. An adapter that would serve every project is worth contributing upstream.
21
21
 
22
- 3. Update `config.yaml`:
22
+ 3. Update `<manifest>`:
23
23
  - Target exists with `enabled: false` → flip to `enabled: true`.
24
24
  - Target missing → add it under `targets:` with its `output:` path.
25
25
  - If the target reads always-on rules from `AGENTS.md` (`cursor`, `copilot`, `codex`, `pi`, `opencode`), `targets.agents` must be enabled too — sync fails closed otherwise.
@@ -21,7 +21,7 @@ The original negative pattern stays in the rule body as an illustrative example
21
21
 
22
22
  ## Phase A — Analyze (read-only)
23
23
 
24
- 1. **Read authoring conventions first.** Discover the paths, never assume them: the umbrella is the directory holding `config.yaml` (`intelligence/`, `Intelligence/`, a codename), and the engine module is the directory under it holding both `scripts/sync.sh` and `scripts/VERSION` (conventionally `sync/`). The meta-skills live in `<module>/skills/`, not directly under the umbrella. Load `<module>/skills/intelligence-add-rule/SKILL.md`, `<module>/skills/intelligence-add-skill/SKILL.md`, `<module>/skills/intelligence-add-agent/SKILL.md`, and `<module>/docs/CONVENTIONS.md` (Authoring Discipline section). This skill writes nothing on its own — it delegates to the add-* skills, which carry the authoring conventions.
24
+ 1. **Read authoring conventions first.** The paths below are localized to this project at sync time: `<umbrella>/` is the content dir, `<module>/` the engine's own files, `<manifest>` the config. The meta-skills live in `<module>/skills/`, not directly under the umbrella. Load `<module>/skills/intelligence-add-rule/SKILL.md`, `<module>/skills/intelligence-add-skill/SKILL.md`, `<module>/skills/intelligence-add-agent/SKILL.md`, and `<module>/docs/CONVENTIONS.md` (Authoring Discipline section). This skill writes nothing on its own — it delegates to the add-* skills, which carry the authoring conventions.
25
25
 
26
26
  2. **Capture the lesson** from session context or user input. Strip session-specific detail, keep the underlying pattern.
27
27
 
@@ -13,11 +13,11 @@ Name reflects the umbrella usage of "skills" for all AI artifacts (rules + agent
13
13
 
14
14
  ## Scope: what to read, and what to leave alone
15
15
 
16
- 1. **Resolve the layout — never assume folder names.** The umbrella is the directory holding `config.yaml`; the engine module is the directory under it holding `scripts/sync.sh` and `scripts/VERSION` (conventionally `sync/`). Read authoring conventions from `<module>/docs/CONVENTIONS.md` and the `intelligence-authoring` rule.
16
+ 1. **Resolve the layout — never assume folder names.** `<umbrella>/` is the content dir, `<module>/` the engine's own files, `<manifest>` the config — all localized to this project at sync time. Read authoring conventions from `<module>/docs/CONVENTIONS.md` and the `intelligence-authoring` rule.
17
17
 
18
- 2. **Enumerate from `config.yaml`, not from a guessed path.** The artifacts are exactly the directories listed under `sources.rules`, `sources.agents` and `sources.skills` — there may be several groups (e.g. a shared one and a project one), they may be nested, and an `@<pack>` (or inline `git+`) entry is a remote pack declared under `packs:`. Take the list from the config; a literal `intelligence/rules/` is wrong in any project that named things differently.
18
+ 2. **Enumerate from `<manifest>`, not from a guessed path.** The artifacts are exactly the directories listed under `sources.rules`, `sources.agents` and `sources.skills` — there may be several groups (e.g. a shared one and a project one), they may be nested, and a remote entry is a declared pack (vendored setups, `packs:`) or an installed package (CLI setups, `packages:`, content under `.intelligence/packages/`). Take the list from the config; a literal `intelligence/rules/` is wrong in any project that named things differently.
19
19
 
20
- 3. **Skip everything the engine owns.** Sources under `<module>/` (`<module>/rules`, `<module>/agents`, `<module>/skills/intelligence-*`) are upstream-owned: `update.sh` replaces them wholesale, so a local "fix" there is deleted at the next update. Never propose an edit to them. If one of them is genuinely wrong, or a generic check is missing from this skill, that is a **proposal to upstream** — say so in the report rather than patching locally.
20
+ 3. **Skip everything the engine owns.** Sources under `<module>/` (`<module>/rules`, `<module>/agents`, `<module>/skills/intelligence-*`) are upstream-owned: every engine update replaces them wholesale, so a local "fix" there is deleted at the next update. Never propose an edit to them. If one of them is genuinely wrong, or a generic check is missing from this skill, that is a **proposal to upstream** — say so in the report rather than patching locally.
21
21
 
22
22
  4. **Never read or edit generated output** (`.claude/`, `.cursor/`, `.github/`, `.codex/`, `.agents/`, `.pi/`, `.opencode/`, `AGENTS.md`). Sync owns those entirely; the finding always belongs to the source.
23
23
 
@@ -34,9 +34,9 @@ Name reflects the umbrella usage of "skills" for all AI artifacts (rules + agent
34
34
  | **Over the cap** | `SKILL.md` over 1000 lines, rule over 500, agent over 200 | `SPLIT` — two artifacts, or move detail into `references/<topic>.md` |
35
35
  | **Rule links to a rule** | A markdown link from one rule to another (`R1`) | `UNLINK` — name the rule instead: always-on rules are inlined into `AGENTS.md` and the scoped channels carry only scoped rules, so the link is dead in at least one output |
36
36
  | **Machine facts in a rule** | OS, shell, editor or a local absolute path (`R2`) | `MOVE` — these belong in a personal, gitignored `CLAUDE.md`; a rule is committed and read by everyone, including whoever is on another platform |
37
- | **Literal path or command in a skill** | A path *outside the skill's own folder* baked into a procedure (`R3`) | `PARAMETERIZE` — a skill is *executed*, so a literal path breaks the moment the layout moves; resolve it from a rule or from `config.yaml`. **Exempt:** the skill's own bundle (`references/`, `scripts/`, `assets/` — content is co-located with its skill by default); rules and agents (describing the repository is their job); an example inside an output-format block; the resolution step itself |
37
+ | **Literal path or command in a skill** | A path *outside the skill's own folder* baked into a procedure (`R3`) | `PARAMETERIZE` — a skill is *executed*, so a literal path breaks the moment the layout moves; resolve it from a rule or from `<manifest>`. **Exempt:** the skill's own bundle (`references/`, `scripts/`, `assets/` — content is co-located with its skill by default); rules and agents (describing the repository is their job); an example inside an output-format block; the resolution step itself |
38
38
  | **Skill with no verification** | Nothing at the end proves the procedure worked (`R4`) | `FLAG` — a procedure that proves nothing is a note, or just the work: give it a verification, or delete it |
39
- | **Reserved prefix** | A project artifact named `intelligence-*` | `RENAME` — the prefix belongs to the engine, and the updater prunes what matches it |
39
+ | **Reserved prefix** | A project artifact named `intelligence-*` | `RENAME` — the prefix belongs to the engine, which replaces or removes everything under it on update |
40
40
  | **Naming** | A skill that is not `<domain>-<verb>-<noun>`, or a domain invented rather than reused | `RENAME` — or introduce the new domain deliberately |
41
41
  | **Stale** | No edits in 6+ months and nothing cross-references it | `ARCHIVE` — move to `<umbrella>/_archive/` |
42
42
  | **Negative-framed judgement call** | "Never do X" where a positive default fits, outside safety / security / output-format | `REWRITE` — state the default; reserve NEVER for true must-nots |
@@ -5,14 +5,12 @@ agent: intelligence-operator
5
5
  context: fork
6
6
  ---
7
7
 
8
- Run the sync engine to transform rules, agents, and skills from the intelligence source directory to each enabled IDE's native format.
8
+ Run the sync engine to transform rules, agents, and skills from the intelligence sources to each enabled IDE's native format.
9
9
 
10
- > **Folder name:** `<intel>` is whatever holds your `config.yaml` — typically `intelligence/`, but may have been renamed (e.g. `Intelligence/`). The engine lives in the module subfolder `<intel>/sync/` and is self-locating, so any spelling works as long as you point bash at the right `sync/scripts/sync.sh` path.
11
- >
12
- > **sync.sh never migrates.** It is a pure synchronizer: on a pre-0.3.1 / non-modular layout or an un-applied schema it **fails closed** with `IS_STATUS=needs-update` (exit 6) and changes nothing. Migration is owned entirely by the `intelligence-update` flow — tell your agent *"Update intelligence-sync"* (or run `<intel>/sync/scripts/update.sh`) first, then re-run sync.
10
+ > **The sync never migrates.** It is a pure synchronizer: across an un-applied schema it **fails closed** with `IS_STATUS=needs-update` (exit 6) and changes nothing. Bringing the project up to the engine is the update flow's job — in a vendored setup tell your agent *"Update intelligence-sync"* (the `intelligence-update` skill); in a CLI setup (root `intelligence.yaml`) run `npm i -g @ainova-systems/intelligence@latest` and `intelligence upgrade` — then re-run sync.
13
11
 
14
12
  ## Steps
15
13
 
16
- 1. Run `bash <intel>/sync/scripts/sync.sh` (where `<intel>` is your intelligence source folder; default `intelligence`).
17
- 2. Review the output — verify rule, agent, and skill counts per target.
18
- 3. If warnings about unsynced directories appear, add the missing paths to `<intel>/config.yaml` under `sources:`.
14
+ 1. Run `<sync-cmd>`.
15
+ 2. Review the output — verify rule, agent, and skill counts per target, and that it ends with `IS_STATUS=ok`.
16
+ 3. If warnings about unsynced directories appear, add the missing paths under `sources:` in `<manifest>`.
@@ -7,11 +7,11 @@ agent: intelligence-operator
7
7
 
8
8
  # Uninstall Adapter
9
9
 
10
- The umbrella is whatever directory holds `config.yaml` (`intelligence/`, `Intelligence/`, a codename — never assume the name or casing); the engine module is the directory under it holding `scripts/sync.sh` (conventionally `sync/`).
10
+ The project's config is `<manifest>`; the content dir is `<umbrella>/` (never assume the name or casing); the engine's own files live under `<module>/` — these paths are localized to this project at sync time.
11
11
 
12
12
  ## Steps
13
13
 
14
- 1. Set `enabled: false` for the target in `config.yaml`.
14
+ 1. Set `enabled: false` for the target in `<manifest>`.
15
15
 
16
16
  2. **Remove only the paths the adapter owns — never the output root.** Several adapters write into a shared root that also holds files nobody generated: `.github/` holds `workflows/`, `.claude/` holds `settings.json`, `.opencode/` holds `opencode.json`. Deleting the root destroys hand-authored work, and no adapter ever does that on re-sync.
17
17
 
@@ -35,6 +35,12 @@ They never run shell commands by hand — you do.
35
35
 
36
36
  ## Steps
37
37
 
38
+ ### 0. Vendored setups only
39
+ If the project has a root `intelligence.yaml` (a CLI setup), **stop** — this
40
+ flow is vendored-only. There the engine ships inside the CLI package: run
41
+ `npm i -g @ainova-systems/intelligence@latest`, then `intelligence upgrade`,
42
+ and verify with `intelligence doctor`.
43
+
38
44
  ### 1. Locate the umbrella & discover the engine
39
45
  Find the dir containing `config.yaml` → `<umbrella>`. Then find the engine by
40
46
  role: search `<umbrella>` (one level deep) for a directory `<M>` with both
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainova-systems/intelligence",
3
- "version": "0.11.0-rc.4",
3
+ "version": "0.11.0-rc.6",
4
4
  "description": "Build, version and distribute AI agent intelligence across your organization — one CLI, versioned Intelligence Packages, and a sync engine for Claude Code, Cursor, Copilot, Codex, Pi and OpenCode.",
5
5
  "bin": {
6
6
  "intelligence": "bin/intelligence.js"
@@ -8,8 +8,7 @@
8
8
  "files": [
9
9
  "bin",
10
10
  "cli",
11
- "engine",
12
- "registry"
11
+ "engine"
13
12
  ],
14
13
  "engines": {
15
14
  "node": ">=18"
@@ -1,22 +0,0 @@
1
- # The default Intelligence Registry index, bundled with the CLI.
2
- #
3
- # Maps a package name to the git repo (and path inside it) the package lives
4
- # in. Needed exactly when a name is not the repo — monorepos like
5
- # intelligence-dev-packs. A name absent here falls through to the convention:
6
- # @org/name -> https://github.com/org/name.git, content at the repo root.
7
- # Organizations override or extend this per scope with `intelligence registry
8
- # add @scope <registry-repo-url>`.
9
- #
10
- # This copy travels inside the CLI package. The same index lives at
11
- # https://github.com/ainova-systems/intelligence-registry and can be bound
12
- # explicitly (`intelligence registry add @ainova-systems <url>`) to read the
13
- # newest entries without waiting for a CLI release.
14
- packages:
15
- "@ainova-systems/core":
16
- url: "https://github.com/ainova-systems/intelligence-dev-packs.git"
17
- path: "packs/core"
18
- description: "Engineering discipline for AI-first development: context engineering, artifact-derived status, review and diagnosis loops."
19
- "@ainova-systems/spec":
20
- url: "https://github.com/ainova-systems/intelligence-dev-packs.git"
21
- path: "packs/spec"
22
- description: "Spec-driven delivery: specifications, decision records, sliced execution."