@ainova-systems/intelligence 0.18.0 → 0.19.0
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/init.sh +6 -1
- package/cli/commands/package.sh +8 -3
- package/cli/commands/source.sh +55 -16
- package/cli/intelligence +1 -1
- package/cli/internal/check.sh +64 -13
- package/cli/internal/package-add.sh +25 -4
- package/cli/internal/package-alias.sh +51 -0
- package/cli/internal/package-list.sh +16 -2
- package/cli/internal/package-remove.sh +3 -1
- package/cli/internal/package-update.sh +12 -4
- package/cli/lib/adapter-lifecycle.sh +5 -2
- package/cli/lib/cli-common.sh +4 -1
- package/cli/lib/gitignore.sh +128 -34
- package/cli/lib/manifest.sh +168 -20
- package/cli/lib/registry.sh +18 -13
- package/engine/ENGINE_SHA +1 -1
- package/engine/VERSION +1 -1
- package/engine/adapters/_template.sh +6 -2
- package/engine/adapters/agents.sh +3 -0
- package/engine/adapters/claude.sh +21 -10
- package/engine/adapters/codex.sh +8 -12
- package/engine/adapters/copilot.sh +46 -2
- package/engine/adapters/cursor.sh +6 -1
- package/engine/lib/adapter-contract.sh +17 -6
- package/engine/lib/common.sh +559 -59
- package/engine/sync.sh +9 -0
- package/package.json +1 -1
- package/packages/sync/references/adapters.md +39 -9
- package/packages/sync/references/conventions.md +46 -9
- package/packages/sync/references/onboarding-migration.md +3 -3
- package/packages/sync/skills/intelligence-learn-from-repository/SKILL.md +3 -2
- package/packages/sync/skills/intelligence-review-context/SKILL.md +2 -1
- package/packages/sync/skills/intelligence-update-context/SKILL.md +4 -2
- package/packages/sync/skills/intelligence-update-context/references/agents.md +7 -3
- package/packages/sync/skills/intelligence-update-context/references/skills.md +3 -1
package/engine/sync.sh
CHANGED
|
@@ -102,6 +102,15 @@ echo ""
|
|
|
102
102
|
load_targets_cache "$CONFIG_FILE"
|
|
103
103
|
load_yaml_lists "$CONFIG_FILE" rules agents skills ignore submodules
|
|
104
104
|
|
|
105
|
+
# A package reference that resolves to nothing is left out of every list, so
|
|
106
|
+
# nothing renders from it — but it is a manifest error, not a directory that
|
|
107
|
+
# does not exist yet, and it is named rather than skipped in silence.
|
|
108
|
+
while IFS=$'\037' read -r section src state _dir alias holders; do
|
|
109
|
+
[ -n "$section" ] || continue
|
|
110
|
+
source_reference_problem_var "$state" "$alias" "$holders"
|
|
111
|
+
echo "WARNING: sources.$section '$src' $IS_SOURCE_PROBLEM — skipped; 'intelligence status --check' reports it" >&2
|
|
112
|
+
done <<< "${IS_YL_UNRESOLVED:-}"
|
|
113
|
+
|
|
105
114
|
# Lint frontmatter across all source files (rules, agents, skills).
|
|
106
115
|
# Catches issues like unquoted colons that strict YAML consumers reject.
|
|
107
116
|
LINT_FILES=()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ainova-systems/intelligence",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
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"
|
|
@@ -70,8 +70,9 @@ sync_to_mytool() {
|
|
|
70
70
|
}
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
The contract accepts the configured repo-relative output path and
|
|
74
|
-
|
|
73
|
+
The contract accepts the configured repo-relative output path and, as an optional
|
|
74
|
+
second argument, the absolute path of `intelligence.yaml`. It emits only records
|
|
75
|
+
through these helpers:
|
|
75
76
|
|
|
76
77
|
| Record | Meaning |
|
|
77
78
|
|---|---|
|
|
@@ -83,6 +84,17 @@ records through these helpers:
|
|
|
83
84
|
| `adapter_contract_preserve <path>` | Settings or state preserved in place and included in the initial backup |
|
|
84
85
|
| `adapter_contract_ignore <pattern>` | Exact `.gitignore` pattern managed on enable/init |
|
|
85
86
|
| `adapter_contract_include <pattern>` | Exact negated `.gitignore` pattern managed on enable/init |
|
|
87
|
+
| `adapter_contract_unignore <pattern>` | Exact `.gitignore` pattern removed from the CLI-managed block on enable/init |
|
|
88
|
+
|
|
89
|
+
The manifest argument is for Git policy only: a target field may decide whether
|
|
90
|
+
generated output is ignored, as `targets.copilot.commit_output` does. Ownership
|
|
91
|
+
records never depend on it. The engine and the sync cache read ownership alone
|
|
92
|
+
and pass no manifest, so a contract given none declares its default policy;
|
|
93
|
+
init, enable and `status --check` pass it. `unignore` is how a configuration
|
|
94
|
+
withdraws a default `ignore` an earlier init or enable already wrote: the CLI
|
|
95
|
+
removes that exact line below its `# Intelligence generated state and tool
|
|
96
|
+
output` header, never a line the project wrote above it, and `status --check`
|
|
97
|
+
reports one still present.
|
|
86
98
|
|
|
87
99
|
All paths are repository-relative. The CLI refuses missing, malformed, unsafe,
|
|
88
100
|
or unsupported contracts before enabling or syncing an adapter. `owned` and
|
|
@@ -108,7 +120,14 @@ reads are not part of any contract.
|
|
|
108
120
|
For an existing `.vscodeignore`, `.npmignore`, or `.dockerignore`, enable/init
|
|
109
121
|
also excludes the configured adapter output plus its `owned`, `managed`, and
|
|
110
122
|
`legacy` paths from published or build artifacts. This packaging policy is
|
|
111
|
-
separate from the narrower Git policy expressed by `ignore` and
|
|
123
|
+
separate from the narrower Git policy expressed by `ignore`, `include` and
|
|
124
|
+
`unignore`.
|
|
125
|
+
|
|
126
|
+
The Copilot adapter ignores its four generated directories — `instructions/`,
|
|
127
|
+
`prompts/`, `agents/` and `skills/` under its output — like Cursor and Claude
|
|
128
|
+
Code ignore theirs, and never `.github/` itself. `targets.copilot.commit_output:
|
|
129
|
+
true` keeps them tracked for Copilot on github.com; the setting is defined in
|
|
130
|
+
[Generated output and version control](conventions.md#generated-output-and-version-control).
|
|
112
131
|
|
|
113
132
|
The engine calls:
|
|
114
133
|
|
|
@@ -120,7 +139,7 @@ The engine has already loaded `engine/lib/common.sh` before it sources the adapt
|
|
|
120
139
|
|
|
121
140
|
## Source model
|
|
122
141
|
|
|
123
|
-
`sources.rules`, `sources.agents` and `sources.skills` contain repo-relative directory paths. Packages have already been resolved, fetched and pinned by the CLI, so package content appears as an ordinary path under `.intelligence/packages/`. Adapters never perform network access or parse `packages:`.
|
|
142
|
+
`sources.rules`, `sources.agents` and `sources.skills` contain repo-relative directory paths. Packages have already been resolved, fetched and pinned by the CLI, so package content appears as an ordinary path under `.intelligence/packages/`. The manifest may name a package's directory by the package's full name or alias instead; `read_yaml_list` and `load_yaml_list` hand an adapter the store path either way, and leave out a reference that names nothing, so an adapter reads every source the same way. Adapters never perform network access or parse `packages:`.
|
|
124
143
|
|
|
125
144
|
Iterate a source section in manifest order:
|
|
126
145
|
|
|
@@ -146,7 +165,7 @@ Use the engine library instead of copying parsers or file-handling logic.
|
|
|
146
165
|
| Function | Purpose |
|
|
147
166
|
|---|---|
|
|
148
167
|
| `resolve_source_dir(repo_root, source)` | Resolve a manifest source to its local directory. |
|
|
149
|
-
| `read_yaml_list(config, section)` | Stream entries from `sources.<section
|
|
168
|
+
| `read_yaml_list(config, section)` | Stream entries from `sources.<section>`, package references as their store paths. |
|
|
150
169
|
| `load_yaml_list(config, section)` | Same list into `IS_YAML_LIST`, cached — no subprocess on repeat reads. |
|
|
151
170
|
| `get_frontmatter_value(key, file)` | Read a scalar from the first frontmatter block. |
|
|
152
171
|
| `frontmatter_index(keys, file...)` | Read several frontmatter scalars for many files in one pass (`\x1f`-separated rows; special key `paths#` counts `paths:` lines). |
|
|
@@ -155,8 +174,10 @@ Use the engine library instead of copying parsers or file-handling logic.
|
|
|
155
174
|
| `get_model(config, tool, tier)` | Resolve a `frontier`, `heavy`, `standard` or `light` model, including manifest overrides. |
|
|
156
175
|
| `get_model_default(tool, tier)` | Read the built-in model default. |
|
|
157
176
|
| `load_model_tiers(config, tool)` / `resolve_model_var(tier)` | Resolve the four standard tiers once, then map per file without subprocesses. |
|
|
158
|
-
| `
|
|
177
|
+
| `map_effort(tool, effort)` / `map_effort_var(tool, effort)` | The level a tool's native effort field receives for a neutral `effort:` (`IS_EFFORT`); empty when the value is absent or off the scale, or the tool has no field. |
|
|
178
|
+
| `copy_skill_bundle(src, dest)` | Copy `SKILL.md` and all resources safely, normalize Markdown, quote free-text frontmatter, and keep a valid `effort:` as written, as the shared skills tree does. |
|
|
159
179
|
| `copy_skill_bundle_dirs(dest_root, src...)` | Batch form: copy every skill directory into `dest_root/<name>` with one copy and one finalize pass. |
|
|
180
|
+
| `copy_skill_bundle_dirs_for(tool, dest_root, src...)` | The batch form for a tree one tool reads: `SKILL.md`'s `effort:` becomes that tool's level, or is removed when it has none. |
|
|
160
181
|
| `sync_open_skill_dirs(root, config, dest)` | Own and populate a shared Agent Skills directory such as `.agents/skills/`, deriving Codex's `agents/openai.yaml` for a skill with `disable-model-invocation: true`. |
|
|
161
182
|
| `finalize_output_file(file)` | Expand layout tokens and normalize line endings; required for every emitted text file. |
|
|
162
183
|
| `finalize_output_files(file...)` / `finalize_copy_files(dest, src...)` | Batch forms: finalize in place, or copy-and-finalize into a directory, in one process. |
|
|
@@ -164,7 +185,7 @@ Use the engine library instead of copying parsers or file-handling logic.
|
|
|
164
185
|
| `get_target_field(config, target, field)` | Read another field from the target configuration. |
|
|
165
186
|
| `repo_rel_link(root, path)` | Produce a stable repo-relative link for a committed output. |
|
|
166
187
|
|
|
167
|
-
`lint_frontmatter` is run across all inputs by the engine before adapters execute (batched as `lint_frontmatter_files`). It warns about common YAML hazards; adapters should not duplicate that pass.
|
|
188
|
+
`lint_frontmatter` is run across all inputs by the engine before adapters execute (batched as `lint_frontmatter_files`). It warns about common YAML hazards and about an `effort:` off the neutral scale, naming the source once; adapters should not duplicate that pass, and render such a value as absent without a second warning.
|
|
168
189
|
|
|
169
190
|
Prefer the batched forms inside per-file loops: a process spawn costs tens of milliseconds on Git Bash for Windows, so one-awk-per-file adapters turn large projects into minutes of process creation. The built-in adapters are the reference for the pattern.
|
|
170
191
|
|
|
@@ -216,7 +237,7 @@ Skills follow the [Agent Skills standard](https://agentskills.io). Copy each ski
|
|
|
216
237
|
copy_skill_bundle "$source_skill_dir" "$output_dir/skills/$skill_name"
|
|
217
238
|
```
|
|
218
239
|
|
|
219
|
-
Do not use plain `cp` for skill bundles. `copy_skill_bundle` preserves non-Markdown assets, avoids materializing symlink targets, normalizes Markdown, expands layout tokens and quotes `description` and `argument-hint` where strict YAML readers require strings.
|
|
240
|
+
Do not use plain `cp` for skill bundles. `copy_skill_bundle` preserves non-Markdown assets, avoids materializing symlink targets, normalizes Markdown, expands layout tokens and quotes `description` and `argument-hint` where strict YAML readers require strings. It renders `effort:` as the shared tree does; a tree only one tool reads uses `copy_skill_bundle_dirs_for <tool>`, so the copy carries that tool's level or no effort at all.
|
|
220
241
|
|
|
221
242
|
Antigravity, Codex, Pi and OpenCode share `.agents/skills/`. Any adapter writing that open-standard directory must call `sync_open_skill_dirs`; it is the single lifecycle owner for immediate skill subdirectories.
|
|
222
243
|
|
|
@@ -229,11 +250,20 @@ Source agents use tool-neutral fields:
|
|
|
229
250
|
name: backend-developer
|
|
230
251
|
description: "Implements backend features"
|
|
231
252
|
tier: heavy
|
|
253
|
+
effort: high
|
|
232
254
|
access: full
|
|
233
255
|
---
|
|
234
256
|
```
|
|
235
257
|
|
|
236
|
-
Map `tier` through `get_model`, not a hardcoded model name. Transform `access: full|readonly` into the target tool's native permission model. Preserve the body as the agent's instructions.
|
|
258
|
+
Map `tier` through `get_model`, not a hardcoded model name. Map `effort` through `map_effort_var` and emit the tool's own effort key only when it returns a level; never derive an effort from the tier, and never copy the source `effort:` line into a tool without a field. Transform `access: full|readonly` into the target tool's native permission model. Preserve the body as the agent's instructions.
|
|
259
|
+
|
|
260
|
+
| Built-in | `effort:` rendering | Evidence, checked 2026-10-07 |
|
|
261
|
+
|---|---|---|
|
|
262
|
+
| `claude` | `effort:` in agents and skills; `ultra` becomes `max` | [Subagents](https://code.claude.com/docs/en/sub-agents) and [skills](https://code.claude.com/docs/en/skills) accept `low`, `medium`, `high`, `xhigh`, `max`; [model configuration](https://code.claude.com/docs/en/model-config) falls back to the highest level the active model supports at or below the one set |
|
|
263
|
+
| `codex` | `model_reasoning_effort` in `.codex/agents/*.toml`, every level; no per-skill effort | The [configuration reference](https://learn.chatgpt.com/docs/config-file/config-reference) lists `low`, `medium`, `high`, `xhigh`, `max`, `ultra`, with availability depending on the model |
|
|
264
|
+
| `copilot`, `cursor` | none, in agents or in their own skill copies | No per-agent effort field is rendered, so the tool's own setting applies |
|
|
265
|
+
| `opencode`, `antigravity`, `pi` | none in agents | Same; their skills come from the shared tree |
|
|
266
|
+
| shared `.agents/skills/` | a valid level as written | The open-standard tree several tools read keeps the neutral value |
|
|
237
267
|
|
|
238
268
|
Built-ins currently emit Claude and Cursor Markdown, Copilot `.agent.md`, Codex TOML, Pi prompt templates and OpenCode Markdown subagents. Read the closest built-in adapter before implementing a new transformation.
|
|
239
269
|
|
|
@@ -71,6 +71,8 @@ sources:
|
|
|
71
71
|
- "intelligence/skills"
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
A package's directory may also be named by the package instead of its store path: `@ainova-systems/sync/rules` names folder `rules` of the package `packages:` declares as `@ainova-systems/sync`, and `sync:rules` names it through the alias that package declares (`intelligence package alias @ainova-systems/sync sync`). Both render exactly as the store path, and both are installed package content like it: edit that content in its source repository. The CLI writes store paths and never rewrites a reference a person wrote; an `@scope/name/...` entry for a package `packages:` does not declare is an ordinary project path.
|
|
75
|
+
|
|
74
76
|
Missing project-owned source directories are skipped, so a package-only project need not create empty `rules/`, `agents/` or `skills/` directories. Source order matters: later files with the same artifact name overwrite earlier ones. Package sources are wired before project sources so the project can override a package artifact deliberately.
|
|
75
77
|
|
|
76
78
|
Project-owned entries are managed with `intelligence source add|remove|list` rather than by hand — it validates the path against the way the engine resolves it and prints the resulting order. `add` appends by default; `--before <entry>` / `--after <entry>` place content that should behave like a package ahead of the project's own directories.
|
|
@@ -192,9 +194,25 @@ Do not instruct an agent to read rules or restate their content. Claude loads it
|
|
|
192
194
|
| `standard` | `sonnet` | `inherit` | `gpt-6.1-sol` | `anthropic/claude-sonnet-5-5` | `flash` | review, validation, analysis |
|
|
193
195
|
| `light` | `sonnet` | `inherit` | `gpt-6-luna` | `anthropic/claude-sonnet-5-5` | `flash` | lookups and simple formatting |
|
|
194
196
|
|
|
195
|
-
|
|
197
|
+
A tier selects the model only and never sets a reasoning effort — that is `effort:`, below. Where two tiers share a model they therefore render identical agents: `frontier` and `heavy` in Codex and Copilot. Claude's Haiku 4.5 is retiring with no successor announced, so `light` shares `standard`'s Sonnet in Claude and OpenCode; Cursor and Antigravity have fewer native levels than there are tiers, so several tiers share one value there too.
|
|
198
|
+
|
|
199
|
+
The vocabulary is tool-neutral. Adapters resolve it through `get_model()`. Override a default under `models.<tool>.<tier>` in `intelligence.yaml` only when the project needs a pin; sync reports drift when that override differs from the current default. Another tier name works only where `models.<tool>.<tier>` defines it; elsewhere — a typo, as a rule — the agent renders with an empty `model` and sync warns once per tool and tier.
|
|
200
|
+
|
|
201
|
+
### Effort mappings
|
|
202
|
+
|
|
203
|
+
`effort:` asks for a reasoning effort, independently of the model `tier` selects. The scale, lowest first, is `low`, `medium`, `high`, `xhigh`, `max`, `ultra`, matched exactly. Write it only where an agent or skill needs a level other than the tool's own setting: without it, no tool receives an effort.
|
|
204
|
+
|
|
205
|
+
| `effort:` | Claude agents and skills (`effort:`) | Codex agents (`model_reasoning_effort`) | Copilot, Cursor, OpenCode, Antigravity and Pi agents |
|
|
206
|
+
|---|---|---|---|
|
|
207
|
+
| `low`, `medium`, `high`, `xhigh`, `max` | the same level | the same level | not emitted |
|
|
208
|
+
| `ultra` | `max` | `ultra` | not emitted |
|
|
209
|
+
| absent, empty or off the scale | not emitted | not emitted | not emitted |
|
|
210
|
+
|
|
211
|
+
A level a tool lacks becomes the nearest lower level it has. Which levels a particular model supports is left to the tool: a manifest can override the model, and Claude Code itself falls back to the highest level the active model supports at or below the one requested. Tools without a per-agent effort field keep their own setting.
|
|
196
212
|
|
|
197
|
-
|
|
213
|
+
A value off the scale — `hiigh`, `High` — never fails a sync. Sync prints a `WARNING:` line naming the file, the value and the allowed levels — `sync --compact` and `init` show it too — and renders the artifact as if `effort:` were absent, because packages arrive from many sources and one author's typo must not block another team. An empty `effort:` is simply absent.
|
|
214
|
+
|
|
215
|
+
Skills take the same field. `.claude/skills/` receives Claude's level, the shared `.agents/skills/` tree keeps a valid level as written, and Copilot's and Cursor's skill copies carry none; an empty or off-scale value is removed from every copy. Codex has no per-skill effort.
|
|
198
216
|
|
|
199
217
|
### Access mappings
|
|
200
218
|
|
|
@@ -252,9 +270,9 @@ argument-hint: "<route-name>"
|
|
|
252
270
|
4. Report the changed route and verification.
|
|
253
271
|
```
|
|
254
272
|
|
|
255
|
-
Standard optional fields (`license`, `compatibility`, `metadata`, `allowed-tools`) and tool extensions pass through unchanged. A tool ignores fields it does not understand.
|
|
273
|
+
Standard optional fields (`license`, `compatibility`, `metadata`, `allowed-tools`) and tool extensions pass through unchanged. A tool ignores fields it does not understand. `effort:` is the exception: sync renders it per tool, as [Effort mappings](#effort-mappings) describes.
|
|
256
274
|
|
|
257
|
-
`disable-model-invocation: true` makes a skill one only the owner starts, as a slash command: use it for a procedure that changes versions, the lock or generated outputs, where an agent selecting it unasked is the failure. Claude Code, Cursor and Copilot read the field itself; Codex does not, so sync writes `agents/openai.yaml` with `allow_implicit_invocation: false` beside the skill in `.agents/skills/`. Keep the source to the field
|
|
275
|
+
`disable-model-invocation: true` makes a skill one only the owner starts, as a slash command: use it for a procedure that changes versions, the lock or generated outputs, where an agent selecting it unasked is the failure. Claude Code, Cursor and Copilot read the field itself; Codex does not, so sync writes `agents/openai.yaml` with `allow_implicit_invocation: false` beside the skill in `.agents/skills/`. Keep the source to the field. A skill that ships its own `agents/openai.yaml` keeps everything else in it: sync adds the policy when the file sets none, and refuses one that sets it otherwise or not as a plain `allow_implicit_invocation: false` directly under `policy:`.
|
|
258
276
|
|
|
259
277
|
These limits reject a skill instead of degrading it:
|
|
260
278
|
|
|
@@ -328,7 +346,7 @@ Every line enters a finite context budget. Prefer subtraction, consolidation and
|
|
|
328
346
|
|
|
329
347
|
`AGENTS.md` is regenerated by the `agents` adapter. Its optional static header is `targets.agents.header` in `intelligence.yaml`; generated rule, agent and skill sections follow it. Commit `AGENTS.md` when it is the project's shared canonical context.
|
|
330
348
|
|
|
331
|
-
By default, commit the manifest, lock, project-owned content
|
|
349
|
+
By default, commit the manifest, lock, project-owned content and `AGENTS.md`. Ignore the restorable package store and tool output owned by enabled adapters. `intelligence init` and `intelligence adapter enable` add these patterns without ignoring shared tool roots or settings, and re-running `intelligence init` in an existing project applies a policy that changed since it last ran:
|
|
332
350
|
|
|
333
351
|
```gitignore
|
|
334
352
|
# CLI-managed package store
|
|
@@ -363,9 +381,26 @@ GEMINI.md
|
|
|
363
381
|
# Generated OpenCode agents. Commands share a directory with hand-authored
|
|
364
382
|
# files, so they remain tracked unless the project chooses exact file ignores.
|
|
365
383
|
.opencode/agents/
|
|
384
|
+
|
|
385
|
+
# Generated Copilot content and its legacy root file. `.github/` also holds
|
|
386
|
+
# workflows, templates and hand-written files, so only these are ignored.
|
|
387
|
+
.github/instructions/
|
|
388
|
+
.github/prompts/
|
|
389
|
+
.github/agents/
|
|
390
|
+
.github/skills/
|
|
391
|
+
.github/copilot-instructions.md
|
|
366
392
|
```
|
|
367
393
|
|
|
368
|
-
Copilot output
|
|
394
|
+
Copilot output follows the same policy as Cursor and Claude Code: Copilot in the editor reads the generated files from disk after sync, so they are not committed. `.github/copilot-instructions.md` is treated like `CLAUDE.md` and `.cursorrules`: onboarding migrates it into project rules, and a copy left behind makes Copilot ignore `AGENTS.md`. Never ignore `.github/` wholesale. Copilot on github.com — code review and the coding agent — reads the repository instead of a sync; a project that wants it to see the rules, agents and skills sets `commit_output: true` on its Copilot target and runs `intelligence init`, which takes these five patterns back out of the CLI-managed block (lines above its header stay the project's own):
|
|
395
|
+
|
|
396
|
+
```yaml
|
|
397
|
+
targets:
|
|
398
|
+
copilot: { enabled: true, output: ".github", commit_output: true }
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
`commit_output` accepts `true` or `false`; omitting it means `false`, and any other value makes sync refuse. Turning it off again restores the patterns on the next `intelligence init`.
|
|
402
|
+
|
|
403
|
+
`AGENTS.md` stays committed by default: it is the tool-neutral fallback every tool reads, and a fresh clone has it only when it is committed, before anyone has synced.
|
|
369
404
|
|
|
370
405
|
Git tracking and release packaging are separate policies. When a project
|
|
371
406
|
already has `.vscodeignore`, `.npmignore`, or `.dockerignore`, the CLI appends a
|
|
@@ -377,9 +412,11 @@ files are not created.
|
|
|
377
412
|
An ignore rule does not untrack a file already in Git. After init or adapter
|
|
378
413
|
enable, the CLI reports each affected tracked path that remains in the
|
|
379
414
|
worktree with an exact `git rm --cached -- '<path>'` command; this preserves
|
|
380
|
-
the local file while removing it from the index.
|
|
381
|
-
|
|
382
|
-
|
|
415
|
+
the local file while removing it from the index. A project that committed its
|
|
416
|
+
Copilot output while the policy kept it tracked gets these commands for each
|
|
417
|
+
generated file the first time `intelligence init` adds the Copilot patterns.
|
|
418
|
+
Legacy root entry points quarantined into the initial backup are ordinary
|
|
419
|
+
worktree deletions to review and stage, not candidates for `git rm --cached`.
|
|
383
420
|
|
|
384
421
|
Before release, inspect the packager's actual file list. An npm `files`
|
|
385
422
|
allowlist can force inclusion despite `.npmignore`, and a Dockerfile-specific
|
|
@@ -50,7 +50,7 @@ Migrate meaning, not tool syntax:
|
|
|
50
50
|
| Root `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, Copilot root instructions | Split verified guidance by topic into rules; keep local machine preferences in a gitignored root file only when no adapter representation exists |
|
|
51
51
|
| `.claude/rules/*.md` | Rule; preserve valid `paths:` |
|
|
52
52
|
| `.cursor/rules/*.mdc` | Rule; rename `globs:` to `paths:` and remove `alwaysApply:` |
|
|
53
|
-
| Claude/Cursor/Copilot agents | Agent; map native model/readonly/tool fields back to `tier:` and `access:` |
|
|
53
|
+
| Claude/Cursor/Copilot agents, Codex `.codex/agents/*.toml` | Agent; map native model/readonly/tool fields back to `tier:` and `access:`, and a native effort level (`effort:`, `model_reasoning_effort`) back to `effort:` |
|
|
54
54
|
| Claude/Cursor/Copilot skills or commands | Skill when the procedure is repeated, multi-step, stable, and verifiable; otherwise a rule or no artifact |
|
|
55
55
|
| Pi/OpenCode/Codex prompt artifacts | Rule, agent, or skill according to responsibility, after removing tool-specific wrappers |
|
|
56
56
|
|
|
@@ -78,8 +78,8 @@ the enabled adapters. Treat CLI-reported tracked ignored paths that still exist
|
|
|
78
78
|
locally as unresolved until the user approves the exact `git rm --cached`
|
|
79
79
|
commands. A quarantined tracked legacy path is already a worktree deletion;
|
|
80
80
|
review and stage that deletion normally instead of using `git rm --cached`. Preserve
|
|
81
|
-
`AGENTS.md`, `.github
|
|
82
|
-
roots in Git, while excluding development-only Intelligence content from
|
|
81
|
+
`AGENTS.md`, hand-written `.github/` files, shared settings, and unrelated files
|
|
82
|
+
under shared tool roots in Git, while excluding development-only Intelligence content from
|
|
83
83
|
published artifacts. Inspect the packager's actual file list before release;
|
|
84
84
|
do not infer package or Docker context contents from Git status.
|
|
85
85
|
|
|
@@ -100,8 +100,9 @@ explains itself well.
|
|
|
100
100
|
`IS_STATUS=ok`, a clean final check, and no `onboarding is pending` header
|
|
101
101
|
after accepted migration.
|
|
102
102
|
11. Report what was created, updated, removed, or deliberately kept. Remind the
|
|
103
|
-
user to commit source, manifest, lock
|
|
104
|
-
|
|
103
|
+
user to commit source, manifest, lock and `AGENTS.md` changes, plus Copilot's
|
|
104
|
+
`.github/` output only when `targets.copilot.commit_output` is `true`. Keep or
|
|
105
|
+
remove the initial backup only by separate user approval.
|
|
105
106
|
|
|
106
107
|
## Later learning
|
|
107
108
|
|
|
@@ -16,7 +16,8 @@ go through `intelligence-update-context`; this skill owns their review criteria.
|
|
|
16
16
|
1. Read `<manifest>` and enumerate its configured rule, agent, and skill sources.
|
|
17
17
|
Read the `intelligence-authoring` rule and
|
|
18
18
|
`<module>/references/conventions.md`. Review project-owned sources; an installed
|
|
19
|
-
package finding
|
|
19
|
+
package finding — an entry naming a package's directory, however spelled —
|
|
20
|
+
belongs upstream. In a package's own repository, review its
|
|
20
21
|
authoritative source tree. Do not audit generated output prose. Its byte count
|
|
21
22
|
is the metadata-only exception.
|
|
22
23
|
2. Record source line and byte counts, and git history when available: first
|
|
@@ -15,8 +15,10 @@ the same procedure. Updating the layer can create a new artifact.
|
|
|
15
15
|
|
|
16
16
|
1. Read `<manifest>` and resolve its `sources.rules`, `sources.agents`, and
|
|
17
17
|
`sources.skills` directories. `<content-dir>` names the project's content
|
|
18
|
-
directory; `<module>` is installed package content
|
|
19
|
-
|
|
18
|
+
directory; `<module>` is installed package content, and so is every entry
|
|
19
|
+
naming a package's directory by store path, full name or alias. Read the
|
|
20
|
+
`intelligence-authoring` rule and `<module>/references/conventions.md`, which
|
|
21
|
+
defines those spellings.
|
|
20
22
|
Edit project-owned sources, never installed packages or generated output.
|
|
21
23
|
When working in a package's own repository, use its authoritative source tree.
|
|
22
24
|
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
difficulty justifies the most capable and most expensive model. Check the
|
|
9
9
|
target's actual permission mapping when external read tools are required.
|
|
10
10
|
If native read-only restrictions exclude those tools, use `full` only with a
|
|
11
|
-
clear read-only boundary in the body.
|
|
11
|
+
clear read-only boundary in the body. The tier selects the model only: add
|
|
12
|
+
`effort:` (`low`, `medium`, `high`, `xhigh`, `max`, `ultra`) only when the
|
|
13
|
+
role needs a reasoning effort other than the tool's own setting, as the
|
|
14
|
+
authoring conventions' effort mappings describe.
|
|
12
15
|
3. Keep the body thin: Expertise, Boundaries, and Build & Verify. Carry its own
|
|
13
16
|
completion criteria and limitations. Reference constraints by name instead
|
|
14
17
|
of copying rules, and put reusable procedures in skills.
|
|
@@ -27,7 +30,8 @@ skills:
|
|
|
27
30
|
```
|
|
28
31
|
|
|
29
32
|
Quote free-text YAML strings and escape embedded quotes; malformed scalars can
|
|
30
|
-
prevent discovery. Verify every skill binding resolves, the tier and
|
|
31
|
-
the supported vocabulary, and the body defines a role rather than a
|
|
33
|
+
prevent discovery. Verify every skill binding resolves, the tier, effort and
|
|
34
|
+
access use the supported vocabulary, and the body defines a role rather than a
|
|
35
|
+
checklist; sync warns about an effort it does not recognize and ignores it.
|
|
32
36
|
Apply the agent size and description limits from the authoring conventions,
|
|
33
37
|
then return to the shared sync and verification steps.
|
|
@@ -26,7 +26,9 @@ agent: <existing-agent>
|
|
|
26
26
|
---
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
Omit optional fields that do not apply. Add
|
|
29
|
+
Omit optional fields that do not apply. Add `effort:` only when the procedure
|
|
30
|
+
needs a reasoning effort other than the session's, using the scale in the
|
|
31
|
+
authoring conventions' effort mappings. Add the skill to its matching agent's
|
|
30
32
|
`skills:` list when that agent is project-owned; propose an upstream change for
|
|
31
33
|
a package-owned agent instead of editing the installed copy. Verify bindings,
|
|
32
34
|
relative resource links, executable steps, and final success criteria. Apply the
|