@hellraisercenobit/ai-engineering-gate 0.8.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.
Files changed (100) hide show
  1. package/README.md +82 -0
  2. package/agents/design-pattern-reviewer.md +40 -0
  3. package/agents/modern-typescript-reviewer.md +24 -0
  4. package/agents/testing-pattern-reviewer.md +23 -0
  5. package/bin/ai-engineering-gate.mjs +6 -0
  6. package/contracts/axi/axi-standard.md +273 -0
  7. package/contracts/axi/pin.json +36 -0
  8. package/contracts/members.json +58 -0
  9. package/contracts/schemas/arbitration.schema.json +45 -0
  10. package/contracts/schemas/decision-envelope.schema.json +215 -0
  11. package/contracts/schemas/declaration.schema.json +190 -0
  12. package/contracts/schemas/dispute.schema.json +67 -0
  13. package/contracts/schemas/evidence-append.schema.json +72 -0
  14. package/contracts/schemas/gate-output.schema.json +296 -0
  15. package/contracts/schemas/marker.schema.json +75 -0
  16. package/contracts/schemas/review-envelope.schema.json +378 -0
  17. package/contracts/schemas/verdict-record.schema.json +191 -0
  18. package/contracts/suite-contract.md +270 -0
  19. package/dist/ai-engineering-gate.mjs +2762 -0
  20. package/package.json +47 -0
  21. package/skills/engineering/review-design-patterns/LICENSE +6 -0
  22. package/skills/engineering/review-design-patterns/SKILL.md +196 -0
  23. package/skills/engineering/review-design-patterns/agents/openai.yaml +3 -0
  24. package/skills/engineering/review-design-patterns/references/smell-signatures.md +117 -0
  25. package/skills/engineering/review-design-patterns/review-design-patterns.yaml +25 -0
  26. package/skills/engineering/review-modern-typescript/LICENSE +21 -0
  27. package/skills/engineering/review-modern-typescript/SKILL.md +88 -0
  28. package/skills/engineering/review-modern-typescript/agents/openai.yaml +3 -0
  29. package/skills/engineering/review-modern-typescript/references/smell-signatures.md +36 -0
  30. package/skills/engineering/review-modern-typescript/review-modern-typescript.yaml +22 -0
  31. package/skills/engineering/review-testing-patterns/SKILL.md +108 -0
  32. package/skills/engineering/review-testing-patterns/agents/openai.yaml +4 -0
  33. package/skills/engineering/review-testing-patterns/references/compiler-profile.mjs +103 -0
  34. package/skills/engineering/review-testing-patterns/references/smell-signatures.md +30 -0
  35. package/skills/engineering/review-testing-patterns/review-testing-patterns.yaml +23 -0
  36. package/skills/engineering/transpose-design-patterns/LICENSE +6 -0
  37. package/skills/engineering/transpose-design-patterns/SKILL.md +231 -0
  38. package/skills/engineering/transpose-design-patterns/agents/openai.yaml +3 -0
  39. package/skills/engineering/transpose-design-patterns/references/arbitration.schema.json +45 -0
  40. package/skills/engineering/transpose-design-patterns/references/decision-envelope.schema.json +215 -0
  41. package/skills/engineering/transpose-design-patterns/references/declaration.schema.json +190 -0
  42. package/skills/engineering/transpose-design-patterns/references/design-decision-record.schema.json +731 -0
  43. package/skills/engineering/transpose-design-patterns/references/dispute.schema.json +67 -0
  44. package/skills/engineering/transpose-design-patterns/references/evidence-append.schema.json +72 -0
  45. package/skills/engineering/transpose-design-patterns/references/marker.schema.json +75 -0
  46. package/skills/engineering/transpose-design-patterns/references/pattern-catalog.md +305 -0
  47. package/skills/engineering/transpose-design-patterns/references/record.example.json +120 -0
  48. package/skills/engineering/transpose-design-patterns/references/review-envelope.schema.json +378 -0
  49. package/skills/engineering/transpose-design-patterns/references/suite-contract.md +270 -0
  50. package/skills/engineering/transpose-design-patterns/references/transpose-angular.md +224 -0
  51. package/skills/engineering/transpose-design-patterns/references/transpose-php.md +561 -0
  52. package/skills/engineering/transpose-design-patterns/references/transpose-quarkus.md +283 -0
  53. package/skills/engineering/transpose-design-patterns/references/transpose-react.md +256 -0
  54. package/skills/engineering/transpose-design-patterns/references/transpose-vanilla.md +204 -0
  55. package/skills/engineering/transpose-design-patterns/references/transpose-vue.md +234 -0
  56. package/skills/engineering/transpose-design-patterns/transpose-design-patterns.yaml +24 -0
  57. package/skills/engineering/transpose-modern-typescript/LICENSE +21 -0
  58. package/skills/engineering/transpose-modern-typescript/SKILL.md +90 -0
  59. package/skills/engineering/transpose-modern-typescript/agents/openai.yaml +3 -0
  60. package/skills/engineering/transpose-modern-typescript/references/arbitration.schema.json +45 -0
  61. package/skills/engineering/transpose-modern-typescript/references/catalog.md +38 -0
  62. package/skills/engineering/transpose-modern-typescript/references/collections.md +50 -0
  63. package/skills/engineering/transpose-modern-typescript/references/compatibility.md +61 -0
  64. package/skills/engineering/transpose-modern-typescript/references/decision-envelope.schema.json +215 -0
  65. package/skills/engineering/transpose-modern-typescript/references/decision-record.schema.json +830 -0
  66. package/skills/engineering/transpose-modern-typescript/references/declaration.schema.json +190 -0
  67. package/skills/engineering/transpose-modern-typescript/references/dispute.schema.json +67 -0
  68. package/skills/engineering/transpose-modern-typescript/references/evidence-append.schema.json +72 -0
  69. package/skills/engineering/transpose-modern-typescript/references/idioms.md +74 -0
  70. package/skills/engineering/transpose-modern-typescript/references/marker.schema.json +75 -0
  71. package/skills/engineering/transpose-modern-typescript/references/platform.md +147 -0
  72. package/skills/engineering/transpose-modern-typescript/references/record.example.json +172 -0
  73. package/skills/engineering/transpose-modern-typescript/references/record.md +37 -0
  74. package/skills/engineering/transpose-modern-typescript/references/review-envelope.schema.json +378 -0
  75. package/skills/engineering/transpose-modern-typescript/references/suite-contract.md +270 -0
  76. package/skills/engineering/transpose-modern-typescript/references/types.md +97 -0
  77. package/skills/engineering/transpose-modern-typescript/transpose-modern-typescript.yaml +22 -0
  78. package/skills/engineering/transpose-testing-patterns/SKILL.md +96 -0
  79. package/skills/engineering/transpose-testing-patterns/agents/openai.yaml +4 -0
  80. package/skills/engineering/transpose-testing-patterns/references/arbitration.schema.json +45 -0
  81. package/skills/engineering/transpose-testing-patterns/references/catalog.md +218 -0
  82. package/skills/engineering/transpose-testing-patterns/references/decision-envelope.schema.json +215 -0
  83. package/skills/engineering/transpose-testing-patterns/references/decision-record.schema.json +857 -0
  84. package/skills/engineering/transpose-testing-patterns/references/declaration.schema.json +190 -0
  85. package/skills/engineering/transpose-testing-patterns/references/detect-adapter.mjs +98 -0
  86. package/skills/engineering/transpose-testing-patterns/references/dispute.schema.json +67 -0
  87. package/skills/engineering/transpose-testing-patterns/references/doubles-data.md +45 -0
  88. package/skills/engineering/transpose-testing-patterns/references/evidence-append.schema.json +72 -0
  89. package/skills/engineering/transpose-testing-patterns/references/journal-event.schema.json +115 -0
  90. package/skills/engineering/transpose-testing-patterns/references/marker.schema.json +75 -0
  91. package/skills/engineering/transpose-testing-patterns/references/record.example.json +230 -0
  92. package/skills/engineering/transpose-testing-patterns/references/record.md +25 -0
  93. package/skills/engineering/transpose-testing-patterns/references/review-envelope.schema.json +378 -0
  94. package/skills/engineering/transpose-testing-patterns/references/suite-contract.md +270 -0
  95. package/skills/engineering/transpose-testing-patterns/references/tdd.md +62 -0
  96. package/skills/engineering/transpose-testing-patterns/references/transpose-codeception.md +84 -0
  97. package/skills/engineering/transpose-testing-patterns/references/transpose-karma-jasmine-angular.md +73 -0
  98. package/skills/engineering/transpose-testing-patterns/references/transpose-vitest.md +111 -0
  99. package/skills/engineering/transpose-testing-patterns/references/typescript.md +42 -0
  100. package/skills/engineering/transpose-testing-patterns/transpose-testing-patterns.yaml +23 -0
@@ -0,0 +1,50 @@
1
+ # Collections, memory and consumption
2
+
3
+ ## MT-06 - Match the collection to its operations
4
+
5
+ **Intent/use:** choose object/Record for a known shape, Array for ordered positional data,
6
+ Map for dynamic associations and Set for membership/uniqueness. Examine repeated scans
7
+ that can share a maintained index.
8
+ **Alternatives/trade-offs:** a one-shot small scan can be clearer and cheaper; index build
9
+ and updates cost time and memory. Map/Set use SameValueZero and object identity; ordinary
10
+ object keys coerce non-symbols to strings. Account for insertion order, duplicate policy
11
+ (first/last/all), missing values and JSON boundaries.
12
+ **Avoid:** claiming universal speed or guaranteed constant time; rebuilding an index per
13
+ lookup; replacing a closed exhaustive typed table with an unchecked dynamic Map.
14
+ **Invariants:** keys, duplicate/order policy, outputs and updates stay consistent. Average
15
+ Map access is sublinear by specification, not a promise of a particular implementation.
16
+ **Sources/support:** [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map),
17
+ [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set).
18
+ Verify newer methods separately.
19
+
20
+ ## MT-07 - Match retention to ownership
21
+
22
+ **Intent/use:** WeakMap/WeakSet suit metadata or membership tied to caller-owned object
23
+ lifetimes when keys must not be retained solely by the association.
24
+ **Alternatives/trade-offs:** Map/Set plus explicit deletion for enumeration, size, eviction
25
+ or deterministic ownership. Bounded strong caches need expiry/eviction and invalidation.
26
+ **Avoid:** enumerating weak collections, relying on collection timing, testing by forced GC,
27
+ or claiming weak keys clean listeners/connections. Other strong references can retain keys.
28
+ Weak-key types beyond objects require a separate compatibility check.
29
+ **Invariants:** get/set/has/delete behavior is observable without GC; resource cleanup is
30
+ explicit; no false enumeration, persistence or deterministic finalization guarantees.
31
+ **Sources/support:** [WeakMap](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap),
32
+ [WeakSet](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet).
33
+
34
+ ## MT-08 - Produce only what is consumed
35
+
36
+ **Intent/use:** iterable/iterator protocols, function*, yield/yield* and async generators
37
+ can avoid a full intermediate result when only a prefix is consumed. Use for await...of
38
+ for asynchronous production; evaluate iterator helpers only where supported.
39
+ **Alternatives/trade-offs:** arrays serve replay, random access and small bounded results.
40
+ Generators defer side effects/errors and are usually consumed once per iterator. Streams
41
+ add backpressure and cancellation semantics (MT-10).
42
+ **Avoid:** making synchronous yield a UI-scheduling claim; hidden retained resources;
43
+ changing iteration error timing without consent; materializing immediately without benefit.
44
+ **Invariants:** counter shows no unrequested production; early break/return closes a
45
+ started iterator and reaches appropriate finally cleanup; exhaustion/error/replay contract
46
+ is explicit. A generator abandoned without close does not promise deterministic cleanup.
47
+ **Sources/support:** [generators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*),
48
+ [iteration protocols](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols),
49
+ [for await...of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of).
50
+ Check compiler downlevel iteration and runtime symbols/helpers separately.
@@ -0,0 +1,61 @@
1
+ # Compatibility and modules
2
+
3
+ ## MT-22 - Match emitted modules to their consumers
4
+
5
+ **Intent/use:** import type for type-only dependencies where appropriate; explicit ESM/CJS
6
+ and module resolution choices aligned with package consumers. Consider import defer only
7
+ where compiler, emit, bundler and executing loader actually support its semantics.
8
+ **Alternatives/trade-offs:** preserve deliberate side-effect imports, existing loaders or
9
+ library distribution contracts. A compiler preset such as node20 describes specific module
10
+ behavior, not a promise that any deployed Node supports every new API.
11
+ **Avoid:** deleting runtime side effects by converting an import blindly, choosing a new
12
+ TS option independently of the build chain, importing browser globals into server startup.
13
+ **Invariants:** emitted entry points load on actual consumers; required effects still run;
14
+ type-only boundaries and package exports are correct.
15
+ **Sources/support:** [TS modules](https://www.typescriptlang.org/docs/handbook/modules/reference.html),
16
+ [TS config](https://www.typescriptlang.org/tsconfig/),
17
+ [import defer](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-9.html).
18
+ Check current stable compiler documentation when adopting a newer feature.
19
+
20
+ ## MT-23 - Prove support across the deployment path
21
+
22
+ **Intent/use:** every proposed idiom/API needs a project-specific support decision.
23
+ Separate four layers: (1) parser/compiler syntax, (2) lib/type declarations, (3) emitted
24
+ code and bundler/transforms, (4) actual runtime/platform. Passing tsc proves neither (3)
25
+ nor (4). target/lib changes do not install runtime implementations.
26
+ **Alternatives/trade-offs:** retain compatible code, use an existing library, or propose an
27
+ explicitly costed polyfill/fallback when the user scope supports it. Do not silently raise
28
+ targets or add polyfills.
29
+ **Avoid:** a fixed TS minimum for all projects, a preview recommended as stable, npm version
30
+ treated as market share, or browser support used as Node/Bun/Deno evidence.
31
+ **Invariants:** identify exact supported targets and dated evidence for the feature; verify
32
+ all required contexts (browser/worker/server/SSR), platform prerequisites and fallback paths.
33
+ Unknown required targets remain an unresolved prerequisite for dependent adoption.
34
+
35
+ ## Build the profile
36
+
37
+ Read the project lockfile and compiler command/version, tsconfig inheritance and relevant
38
+ strictness, target/lib/module/moduleResolution, package engines/type/exports, bundler,
39
+ Browserslist or equivalent product target policy, CI and deployment runtimes. Record
40
+ unknowns explicitly. In a library, inspect consumer support, not just the maintainer machine.
41
+
42
+ Sources of evidence: project files, runtime feature probes, official runtime release/API
43
+ docs, TypeScript release/config docs, and MDN compatibility data for the exact feature.
44
+ Record source, checked date, claim and targets covered. A single local browser probe only
45
+ proves that browser/version, not the whole supported fleet.
46
+
47
+ Baseline distinguishes newly available from widely available (30 months after interoperability
48
+ in its browser set). A page saying a capability has existed across browsers since March
49
+ 2024 does not mean it was already Baseline widely available in March 2024. Object.groupBy
50
+ and Promise.withResolvers are useful examples to re-check, not permanent universal support
51
+ assertions. Baseline is not a substitute for actual product targets.
52
+
53
+ Use stable modern features supported by the project. This repository's smoke compiler is
54
+ locked for reproducibility and is not a language baseline imposed by the skills. Recheck
55
+ stable releases and their actual toolchain support when upgrading the fixture dependency.
56
+
57
+ **Sources:** [Baseline definition](https://web.dev/baseline),
58
+ [MDN compatibility data](https://github.com/mdn/browser-compat-data),
59
+ [TypeScript releases](https://www.typescriptlang.org/docs/handbook/release-notes/overview.html),
60
+ [Node API documentation](https://nodejs.org/api/), [Bun](https://bun.sh/docs),
61
+ [Deno](https://docs.deno.com/runtime/).
@@ -0,0 +1,215 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/hellraisercenobit/skills/blob/main/contracts/schemas/decision-envelope.schema.json",
4
+ "title": "Decision record envelope 1.0.0",
5
+ "description": "The outer shape every dimension's decision record shares. Enforcement validates a record against this envelope and against the dimension's own schema; the dimension-specific body stays opaque here. Applicability is not a record field: it lives in the declaration.",
6
+ "type": "object",
7
+ "required": [
8
+ "dimension",
9
+ "schemaVersion",
10
+ "catalogVersion",
11
+ "contractVersions",
12
+ "need",
13
+ "scope",
14
+ "base",
15
+ "revision",
16
+ "cites",
17
+ "plans"
18
+ ],
19
+ "properties": {
20
+ "dimension": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "schemaVersion": {
25
+ "type": "string",
26
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
27
+ },
28
+ "catalogVersion": {
29
+ "type": "string",
30
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
31
+ },
32
+ "contractVersions": {
33
+ "description": "The contract versions this record's member supports.",
34
+ "type": "array",
35
+ "minItems": 1,
36
+ "uniqueItems": true,
37
+ "items": {
38
+ "type": "string",
39
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
40
+ }
41
+ },
42
+ "need": {
43
+ "type": "string",
44
+ "minLength": 1
45
+ },
46
+ "scope": {
47
+ "type": "array",
48
+ "minItems": 1,
49
+ "items": {
50
+ "type": "string",
51
+ "minLength": 1
52
+ }
53
+ },
54
+ "base": {
55
+ "type": "string",
56
+ "minLength": 1
57
+ },
58
+ "revision": {
59
+ "$ref": "#/$defs/revision"
60
+ },
61
+ "cites": {
62
+ "description": "Artifacts and evidence sources that exist when the record is validated. A dangling path refuses the record; every cited path is hashed with the revision.",
63
+ "type": "array",
64
+ "items": {
65
+ "$ref": "#/$defs/citation"
66
+ }
67
+ },
68
+ "plans": {
69
+ "description": "Artifacts the record commits to produce. Not checked when the record is written, so a record can precede the first affected write; required to exist before a review begins, is filed or is dispatched.",
70
+ "type": "array",
71
+ "items": {
72
+ "$ref": "#/$defs/plan"
73
+ }
74
+ }
75
+ },
76
+ "$defs": {
77
+ "citation": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": [
81
+ "path",
82
+ "checkedAt",
83
+ "claim",
84
+ "covers"
85
+ ],
86
+ "properties": {
87
+ "path": {
88
+ "description": "A repository-relative path, or a path under the task's evidence. Both are checked for existence.",
89
+ "type": "string",
90
+ "minLength": 1
91
+ },
92
+ "checkedAt": {
93
+ "type": "string",
94
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
95
+ },
96
+ "claim": {
97
+ "type": "string",
98
+ "minLength": 1
99
+ },
100
+ "covers": {
101
+ "type": "array",
102
+ "minItems": 1,
103
+ "items": {
104
+ "type": "string",
105
+ "minLength": 1
106
+ }
107
+ },
108
+ "searched": {
109
+ "description": "Paths consulted and not found. Present when the citation supports a claim of unknown about a checkable fact.",
110
+ "type": "array",
111
+ "minItems": 1,
112
+ "items": {
113
+ "type": "string",
114
+ "minLength": 1
115
+ }
116
+ }
117
+ }
118
+ },
119
+ "plan": {
120
+ "type": "object",
121
+ "additionalProperties": false,
122
+ "required": [
123
+ "path",
124
+ "role"
125
+ ],
126
+ "properties": {
127
+ "path": {
128
+ "type": "string",
129
+ "minLength": 1
130
+ },
131
+ "role": {
132
+ "description": "A role the dimension defines. Testing patterns uses `test` and `production` so a replay knows which files stand alone.",
133
+ "type": "string",
134
+ "minLength": 1
135
+ }
136
+ }
137
+ },
138
+ "revision": {
139
+ "type": "object",
140
+ "additionalProperties": false,
141
+ "required": [
142
+ "number",
143
+ "previous",
144
+ "reason"
145
+ ],
146
+ "properties": {
147
+ "number": {
148
+ "type": "integer",
149
+ "minimum": 1
150
+ },
151
+ "previous": {
152
+ "type": [
153
+ "string",
154
+ "null"
155
+ ],
156
+ "minLength": 1
157
+ },
158
+ "reason": {
159
+ "type": "string",
160
+ "minLength": 1
161
+ },
162
+ "changed": {
163
+ "description": "The cited paths this revision changed. Enforcement verifies their hashes differ from the previous revision's snapshot; absent, at least one cited path must differ.",
164
+ "type": "array",
165
+ "minItems": 1,
166
+ "uniqueItems": true,
167
+ "items": {
168
+ "type": "string",
169
+ "minLength": 1
170
+ }
171
+ },
172
+ "addresses": {
173
+ "description": "Finding identifiers this revision closes. A judgment finding is closed by a revision that cites it together with a moved state.",
174
+ "type": "array",
175
+ "minItems": 1,
176
+ "uniqueItems": true,
177
+ "items": {
178
+ "type": "string",
179
+ "minLength": 1
180
+ }
181
+ }
182
+ },
183
+ "allOf": [
184
+ {
185
+ "if": {
186
+ "properties": {
187
+ "number": {
188
+ "type": "integer",
189
+ "minimum": 2
190
+ }
191
+ },
192
+ "required": [
193
+ "number"
194
+ ]
195
+ },
196
+ "then": {
197
+ "properties": {
198
+ "previous": {
199
+ "type": "string",
200
+ "minLength": 1
201
+ }
202
+ }
203
+ },
204
+ "else": {
205
+ "properties": {
206
+ "previous": {
207
+ "type": "null"
208
+ }
209
+ }
210
+ }
211
+ }
212
+ ]
213
+ }
214
+ }
215
+ }