neo-agent-skills 0.1.76 → 0.1.78
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.
|
@@ -166,6 +166,7 @@ Expand these audits only when their trigger fires; otherwise omit them rather th
|
|
|
166
166
|
- **📜 Source-of-Authority Audit:** review cites operator or peer authority for a demand.
|
|
167
167
|
- **🔌 Wire-Format Compatibility Audit:** PR alters JSON-RPC notification schemas, payload envelopes, native API wire formats, event payloads, tool signatures, or database schemas.
|
|
168
168
|
- **🧠 Turn-Memory / Substrate-Load Audit:** PR modifies files in `/turn-memory-pre-flight` IN-SCOPE list. Verify the author documented the decision-tree application and load-effect audit in the PR body; if missing, load `audits/loading-runtime-effect.md` and use its Required Action template.
|
|
169
|
+
- **📸 Before/After Audit:** PR targets `neomjs/neo-stage`. The body embeds at least one before (base) and one after (head) screenshot of what it changes; a missing pair is Request Changes, since the operator merges no Stage PR without one.
|
|
169
170
|
|
|
170
171
|
---
|
|
171
172
|
|
package/README.md
CHANGED
|
@@ -90,7 +90,7 @@ npx --no-install neo-agent-skills-substrate-size
|
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
Measures what a seat actually **loads** per turn — `AGENTS.md`, `.agents/ANTIGRAVITY_RULES.md`,
|
|
93
|
-
`.claude/CLAUDE.md` — against a **
|
|
93
|
+
`.claude/CLAUDE.md` — against a **23,800-byte** per-file limit, and fails the check on a breach.
|
|
94
94
|
|
|
95
95
|
Loaded bytes, not file bytes: symlinks resolve through `realpathSync` (an `lstat` on a symlinked
|
|
96
96
|
`CLAUDE.md` reports **12** — the length of `../AGENTS.md`), and whole-line `@path` imports are summed
|
|
@@ -206,7 +206,7 @@ in the set declares it. A peer working in several repositories loads that one fi
|
|
|
206
206
|
repository's own rules.
|
|
207
207
|
|
|
208
208
|
Both callers get the same refusals: an undeclared repository or audience, two sections claiming one
|
|
209
|
-
numbered rule, and output over the **
|
|
209
|
+
numbered rule, and output over the **23,800-byte** budget. The bin writes `--out`, or stdout. The
|
|
210
210
|
import writes nothing: Fleet puts the text into each seat's harness home with its own safe write.
|
|
211
211
|
|
|
212
212
|
## What is in the package
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neo-agent-skills",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.78",
|
|
4
4
|
"description": "Install the workflow substrate a cross-model AI team actually runs on: ticket intake, PR review gates, lane coordination and guards, versioned as a package. The skills Neo.mjs maintainers load every session — materialized into your repo, not copied.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,22 +19,22 @@ import {parseArgs} from 'node:util';
|
|
|
19
19
|
import {fileURLToPath} from 'node:url';
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Per-file budget, in bytes — Antigravity's
|
|
22
|
+
* Per-file budget, in bytes — Antigravity's empirical `<RULE[/abs/path]>` content limit.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Antigravity caps each `<RULE[/abs/path]>\n` block at 24,000 decimal bytes including the path
|
|
25
|
+
* wrapper (24,270 B file - 354 B truncated = 23,916 B content + 84 B wrapper); 23,800 B leaves a
|
|
26
|
+
* 200 B wrapper budget. Breach remedy: move granular instruction into `.agents/skills/`.
|
|
27
27
|
*
|
|
28
28
|
* @member {Number} PER_FILE_LIMIT_BYTES
|
|
29
29
|
*/
|
|
30
|
-
export const PER_FILE_LIMIT_BYTES =
|
|
30
|
+
export const PER_FILE_LIMIT_BYTES = 23800;
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* The per-turn entry points, each naming the harness that loads it.
|
|
34
34
|
*
|
|
35
35
|
* The number's substrate is per-harness, and inheriting one harness's constant into another's
|
|
36
|
-
* contract is how correct-looking arithmetic governs the wrong seat. `
|
|
37
|
-
*
|
|
36
|
+
* contract is how correct-looking arithmetic governs the wrong seat. `23800` is Antigravity's
|
|
37
|
+
* content ceiling (`24,000` B `<RULE[path]>` cap minus wrapper). The Claude seat's own cap is an operator-stated constraint whose semantics —
|
|
38
38
|
* what it is measured over — remain unconfirmed, because the experiment that would settle them
|
|
39
39
|
* needs a fresh authenticated seat and has not run. Until it does, that row is checked against the
|
|
40
40
|
* inherited number and `limitConfirmed: false` says so out loud, so the next reader inherits a
|
|
@@ -35,14 +35,14 @@ const
|
|
|
35
35
|
WRAPPER_CLOSE = '</neo_core_overrides>';
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* @summary The byte budget a harness enforces on one turn-loaded file.
|
|
38
|
+
* @summary The byte budget a harness enforces on one turn-loaded file (24,000 B Antigravity `<RULE[path]>` cap minus 200 B wrapper margin).
|
|
39
39
|
*
|
|
40
40
|
* Shared with `check-substrate-size.mjs` by value rather than by import: that script measures a
|
|
41
41
|
* CALLER tree and ships its limit so a pull request cannot widen the budget it is judged by. A
|
|
42
42
|
* generator that imported the number would let a source change move it.
|
|
43
43
|
* @member {Number}
|
|
44
44
|
*/
|
|
45
|
-
export const PER_FILE_LIMIT_BYTES =
|
|
45
|
+
export const PER_FILE_LIMIT_BYTES = 23800;
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* @summary Removes final LF runs without trimming any other whitespace or line separator.
|
|
@@ -155,7 +155,7 @@ export function assemble({audience, preamble, repos, sections}) {
|
|
|
155
155
|
const previous = blocks[blocks.length - 1],
|
|
156
156
|
// A numbered item renders with its DECLARED number, never its position. Dropping one
|
|
157
157
|
// rule from a repository must not renumber the rest, because cross-references name
|
|
158
|
-
// them by number ("§critical_gates
|
|
158
|
+
// them by number ("§critical_gates item 4") from other files this generator cannot see.
|
|
159
159
|
rendered = section.listNumber === null ? section.body : `${section.listNumber}. ${section.body}`;
|
|
160
160
|
|
|
161
161
|
if (section.listGroup && previous?.listGroup === section.listGroup) {
|