@ainova-systems/intelligence 0.11.0-rc.3 → 0.11.0-rc.5
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.
- package/cli/commands/add.sh +17 -0
- package/cli/commands/doctor.sh +28 -7
- package/cli/commands/init.sh +51 -20
- package/cli/commands/install.sh +9 -3
- package/cli/commands/migrate.sh +11 -2
- package/cli/commands/registry.sh +53 -26
- package/cli/commands/remove.sh +13 -1
- package/cli/commands/search.sh +8 -7
- package/cli/commands/status.sh +5 -4
- package/cli/commands/sync.sh +19 -1
- package/cli/commands/update.sh +4 -0
- package/cli/commands/upgrade.sh +50 -9
- package/cli/lib/cli-common.sh +28 -47
- package/cli/lib/manifest.sh +79 -0
- package/cli/lib/registry.sh +77 -14
- package/cli/lib/semver.sh +5 -2
- package/engine/agents/intelligence-operator.md +4 -4
- package/engine/docs/ADAPTERS.md +2 -1
- package/engine/docs/CLI.md +14 -11
- package/engine/docs/CONVENTIONS.md +5 -3
- package/engine/rules/intelligence-authoring.md +4 -4
- package/engine/scripts/ENGINE_SHA +1 -0
- package/engine/scripts/lib/common.sh +6 -2
- package/engine/skills/intelligence-add-agent/SKILL.md +7 -7
- package/engine/skills/intelligence-add-rule/SKILL.md +5 -5
- package/engine/skills/intelligence-add-skill/SKILL.md +5 -5
- package/engine/skills/intelligence-extract-skill/SKILL.md +2 -2
- package/engine/skills/intelligence-install-adapter/SKILL.md +6 -6
- package/engine/skills/intelligence-learn-from-context/SKILL.md +1 -1
- package/engine/skills/intelligence-review-skills/SKILL.md +5 -5
- package/engine/skills/intelligence-sync/SKILL.md +5 -7
- package/engine/skills/intelligence-uninstall-adapter/SKILL.md +2 -2
- package/engine/skills/intelligence-update/SKILL.md +6 -0
- package/package.json +1 -1
- package/registry/index.yaml +4 -0
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
14
|
+
1. Check whether target `$ARGUMENTS` is already enabled in `<manifest>` — if yes, report and stop.
|
|
15
15
|
|
|
16
|
-
2. **Locate the adapter.**
|
|
17
|
-
- **Built-in**: `<module>/scripts/adapters/$ARGUMENTS.sh` — upstream-owned.
|
|
18
|
-
- **Project-owned**: `<umbrella>/adapters/$ARGUMENTS.sh` —
|
|
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
|
|
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.**
|
|
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.**
|
|
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
|
|
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:
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
> **
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
"version": "0.11.0-rc.5",
|
|
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"
|
package/registry/index.yaml
CHANGED
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
# explicitly (`intelligence registry add @ainova-systems <url>`) to read the
|
|
13
13
|
# newest entries without waiting for a CLI release.
|
|
14
14
|
packages:
|
|
15
|
+
"@ainova-systems/sync":
|
|
16
|
+
url: "https://github.com/ainova-systems/intelligence-sync.git"
|
|
17
|
+
path: "intelligence/sync"
|
|
18
|
+
description: "The engine's own content: authoring rule, engine agents and the intelligence-* meta-skills. Auto-installed by init; pinned to the engine version."
|
|
15
19
|
"@ainova-systems/core":
|
|
16
20
|
url: "https://github.com/ainova-systems/intelligence-dev-packs.git"
|
|
17
21
|
path: "packs/core"
|