release-skill 0.9.16 → 0.9.17

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 (164) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.kimi-plugin/plugin.json +1 -1
  5. package/.qoder-plugin/plugin.json +10 -0
  6. package/CHANGELOG.md +30 -0
  7. package/INSTALL.md +57 -9
  8. package/INSTALL.zh-CN.md +44 -7
  9. package/README.md +75 -31
  10. package/README.zh-CN.md +60 -29
  11. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  12. package/adapters/claude/bin/release-skill.bundle.mjs +1443 -672
  13. package/adapters/claude/schemas/release-plan.schema.json +1 -1
  14. package/adapters/claude/schemas/release-project.schema.json +1 -1
  15. package/adapters/claude/skills/release-finish/SKILL.md +14 -13
  16. package/adapters/claude/skills/release-help/SKILL.md +3 -3
  17. package/adapters/claude/skills/release-verify/SKILL.md +2 -2
  18. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  19. package/adapters/codex/bin/release-skill.bundle.mjs +1443 -672
  20. package/adapters/codex/schemas/release-plan.schema.json +1 -1
  21. package/adapters/codex/schemas/release-project.schema.json +1 -1
  22. package/adapters/codex/skills/release-finish/SKILL.md +14 -13
  23. package/adapters/codex/skills/release-help/SKILL.md +3 -3
  24. package/adapters/codex/skills/release-verify/SKILL.md +2 -2
  25. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  26. package/adapters/kimi/bin/release-skill.bundle.mjs +1443 -672
  27. package/adapters/kimi/schemas/release-plan.schema.json +1 -1
  28. package/adapters/kimi/schemas/release-project.schema.json +1 -1
  29. package/adapters/kimi/skills/release-finish/SKILL.md +14 -13
  30. package/adapters/kimi/skills/release-help/SKILL.md +3 -3
  31. package/adapters/kimi/skills/release-verify/SKILL.md +2 -2
  32. package/adapters/qoder/.qoder-plugin/plugin.json +10 -0
  33. package/adapters/qoder/bin/consumer-contract-vectors.json +110 -0
  34. package/adapters/qoder/bin/error-codes.json +161 -0
  35. package/adapters/qoder/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  36. package/adapters/qoder/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  37. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  38. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  39. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  40. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  41. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  42. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  43. package/adapters/qoder/bin/foundation-resource-binding.json +1 -0
  44. package/adapters/qoder/bin/kernel-protocol.json +60 -0
  45. package/adapters/qoder/bin/license-texts/Apache-2.0.txt +201 -0
  46. package/adapters/qoder/bin/license-texts/MIT.txt +21 -0
  47. package/adapters/qoder/bin/prebuild-manifest.json +79 -0
  48. package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  49. package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  50. package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  51. package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  52. package/adapters/qoder/bin/registry.json +347 -0
  53. package/adapters/qoder/bin/release-skill-local-finish.mjs +4 -0
  54. package/adapters/qoder/bin/release-skill.bundle.mjs +149446 -0
  55. package/adapters/qoder/bin/release-skill.mjs +54 -0
  56. package/adapters/qoder/bin/rules.json +104 -0
  57. package/adapters/qoder/bin/schemas/consumer-contract-vector.schema.json +149 -0
  58. package/adapters/qoder/data/hosts/claude/host-descriptor.json +45 -0
  59. package/adapters/qoder/data/hosts/codebuddy/host-descriptor.json +26 -0
  60. package/adapters/qoder/data/hosts/codex/host-descriptor.json +45 -0
  61. package/adapters/qoder/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  62. package/adapters/qoder/data/hosts/kimi-code/host-descriptor.json +36 -0
  63. package/adapters/qoder/data/hosts/qoder/host-descriptor.json +26 -0
  64. package/adapters/qoder/data/hosts/registry.json +13 -0
  65. package/adapters/qoder/data/hosts/workbuddy/host-descriptor.json +34 -0
  66. package/adapters/qoder/data/licensing/registry.json +211 -0
  67. package/adapters/qoder/data/licensing/schema.json +207 -0
  68. package/adapters/qoder/native/safe-write/binding.gyp +41 -0
  69. package/adapters/qoder/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  70. package/adapters/qoder/native/safe-write/prebuilds.json +24 -0
  71. package/adapters/qoder/native/safe-write/src/safe_write.cc +2032 -0
  72. package/adapters/qoder/schemas/.render-manifest.json +41 -0
  73. package/adapters/qoder/schemas/approval-record.schema.json +115 -0
  74. package/adapters/qoder/schemas/artifact-lock.schema.json +111 -0
  75. package/adapters/qoder/schemas/artifact-plan.schema.json +52 -0
  76. package/adapters/qoder/schemas/artifact-policy.schema.json +76 -0
  77. package/adapters/qoder/schemas/evidence-event-v2.schema.json +164 -0
  78. package/adapters/qoder/schemas/evidence-event.schema.json +89 -0
  79. package/adapters/qoder/schemas/postpublish-approval-record.schema.json +47 -0
  80. package/adapters/qoder/schemas/release-plan.schema.json +1996 -0
  81. package/adapters/qoder/schemas/release-project.schema.json +1613 -0
  82. package/adapters/qoder/schemas/release-run.schema.json +777 -0
  83. package/adapters/qoder/skills/release-assess/SKILL.md +60 -0
  84. package/adapters/qoder/skills/release-config/SKILL.md +150 -0
  85. package/adapters/qoder/skills/release-docs/SKILL.md +119 -0
  86. package/adapters/qoder/skills/release-finish/SKILL.md +141 -0
  87. package/adapters/qoder/skills/release-help/SKILL.md +153 -0
  88. package/adapters/qoder/skills/release-marketplace/SKILL.md +156 -0
  89. package/adapters/qoder/skills/release-prepare/SKILL.md +135 -0
  90. package/adapters/qoder/skills/release-publish/SKILL.md +91 -0
  91. package/adapters/qoder/skills/release-reconcile/SKILL.md +80 -0
  92. package/adapters/qoder/skills/release-setup/SKILL.md +131 -0
  93. package/adapters/qoder/skills/release-verify/SKILL.md +109 -0
  94. package/adapters/qoder/src/schemas/adapter-build-manifest.schema.json +41 -0
  95. package/adapters/qoder/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  96. package/adapters/qoder/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  97. package/adapters/qoder/src/schemas/adapter-source.schema.json +47 -0
  98. package/adapters/qoder/src/schemas/audit-baseline-pin.schema.json +163 -0
  99. package/adapters/qoder/src/schemas/declared-read-surface-result.schema.json +61 -0
  100. package/adapters/qoder/src/schemas/engineering-baseline.schema.json +77 -0
  101. package/adapters/qoder/src/schemas/executable-identity-observation.schema.json +162 -0
  102. package/adapters/qoder/src/schemas/filesystem-root-binding.schema.json +14 -0
  103. package/adapters/qoder/src/schemas/filesystem-tree-observation.schema.json +71 -0
  104. package/adapters/qoder/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  105. package/adapters/qoder/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  106. package/adapters/qoder/src/schemas/host-capability-fact.schema.json +31 -0
  107. package/adapters/qoder/src/schemas/host-descriptor.schema.json +137 -0
  108. package/adapters/qoder/src/schemas/host-operation-plan.schema.json +57 -0
  109. package/adapters/qoder/src/schemas/host-operation-receipt.schema.json +81 -0
  110. package/adapters/qoder/src/schemas/host-probe-result.schema.json +30 -0
  111. package/adapters/qoder/src/schemas/host-registry.schema.json +18 -0
  112. package/adapters/qoder/src/schemas/host-verification-request.schema.json +67 -0
  113. package/adapters/qoder/src/schemas/host-verification-result.schema.json +149 -0
  114. package/adapters/qoder/src/schemas/managed-file-lock.schema.json +77 -0
  115. package/adapters/qoder/src/schemas/migration-manifest.schema.json +412 -0
  116. package/adapters/qoder/src/schemas/observation-scope.schema.json +91 -0
  117. package/adapters/qoder/src/schemas/operation-request.schema.json +58 -0
  118. package/adapters/qoder/src/schemas/operation-result.schema.json +130 -0
  119. package/adapters/qoder/src/schemas/platform-difference-registry.schema.json +110 -0
  120. package/adapters/qoder/src/schemas/plugin-verification-request.schema.json +499 -0
  121. package/adapters/qoder/src/schemas/plugin-verification-result.schema.json +1217 -0
  122. package/adapters/qoder/src/schemas/profile-adoption-declaration.schema.json +111 -0
  123. package/adapters/qoder/src/schemas/profile-descriptor.schema.json +99 -0
  124. package/adapters/qoder/src/schemas/project-manifest.schema.json +67 -0
  125. package/adapters/qoder/src/schemas/project-profile.schema.json +25 -0
  126. package/adapters/qoder/src/schemas/public-boundary-declaration.schema.json +73 -0
  127. package/adapters/qoder/src/schemas/report-binding.schema.json +42 -0
  128. package/adapters/qoder/src/schemas/report-model.schema.json +308 -0
  129. package/adapters/qoder/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  130. package/adapters/qoder/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  131. package/adapters/qoder/src/schemas/source-authority-receipt.schema.json +31 -0
  132. package/adapters/qoder/src/schemas/state-event-envelope.schema.json +38 -0
  133. package/adapters/qoder/src/schemas/state-snapshot-metadata.schema.json +25 -0
  134. package/adapters/qoder/src/schemas/structured-scan-policy.schema.json +97 -0
  135. package/adapters/qoder/src/schemas/surface-scan-policy.schema.json +42 -0
  136. package/adapters/qoder/src/schemas/timeout-policy.schema.json +24 -0
  137. package/adapters/qoder/src/schemas/token-estimate-record.schema.json +75 -0
  138. package/adapters/qoder/src/schemas/token-estimate-result.schema.json +43 -0
  139. package/adapters/qoder/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  140. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  141. package/adapters/workbuddy/bin/release-skill.bundle.mjs +1443 -672
  142. package/adapters/workbuddy/schemas/release-plan.schema.json +1 -1
  143. package/adapters/workbuddy/schemas/release-project.schema.json +1 -1
  144. package/adapters/workbuddy/skills/release-finish/SKILL.md +14 -13
  145. package/adapters/workbuddy/skills/release-help/SKILL.md +3 -3
  146. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -2
  147. package/bin/release-skill-cli.mjs +124 -6
  148. package/bin/release-skill.bundle.mjs +1443 -672
  149. package/package.json +4 -2
  150. package/platform-manifest.json +70 -4
  151. package/references/02-project-config.md +9 -2
  152. package/schemas/release-plan.schema.json +1 -1
  153. package/schemas/release-project.schema.json +1 -1
  154. package/skills/release-finish/SKILL.md +14 -13
  155. package/skills/release-help/SKILL.md +3 -3
  156. package/skills/release-verify/SKILL.md +2 -2
  157. package/skills-src/release-finish/SKILL.md +14 -13
  158. package/skills-src/release-help/SKILL.md +3 -3
  159. package/skills-src/release-verify/SKILL.md +2 -2
  160. package/src/commands/post-release-local.mjs +360 -51
  161. package/src/commands/verify-records.mjs +467 -0
  162. package/src/core/postpublish.mjs +1 -1
  163. package/src/core/run.mjs +1 -1
  164. package/src/producers/build-adapters.mjs +36 -13
@@ -0,0 +1,110 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/platform-difference-registry.json",
4
+ "title": "PlatformDifferenceRegistry",
5
+ "description": "Platform difference registry (audit SG-08, clause PSG-02). Records how each supported platform differs across the seven mandatory dimensions: directory, manifest, discovery, invocation, internalIsolation, capabilityGaps, degradationConditions. Degradation entries may only express platform implementation differences or an unverified state; they must never lower the primary platform's status and must never loosen the common business semantics. Aligned with the audit-side platform-difference-registry contract; this foundation object freezes the same seven-dimension shape under the foundation envelope.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "kind",
11
+ "primaryPlatforms",
12
+ "requiredDimensions",
13
+ "platforms"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": { "const": 1 },
17
+ "kind": { "const": "skill-family.platform-difference-registry" },
18
+ "description": { "type": "string" },
19
+ "primaryPlatforms": {
20
+ "type": "array",
21
+ "minItems": 1,
22
+ "uniqueItems": true,
23
+ "items": { "type": "string", "minLength": 1 }
24
+ },
25
+ "requiredDimensions": {
26
+ "type": "array",
27
+ "minItems": 7,
28
+ "maxItems": 7,
29
+ "uniqueItems": true,
30
+ "items": {
31
+ "enum": [
32
+ "directory",
33
+ "manifest",
34
+ "discovery",
35
+ "invocation",
36
+ "internalIsolation",
37
+ "capabilityGaps",
38
+ "degradationConditions"
39
+ ]
40
+ }
41
+ },
42
+ "platforms": {
43
+ "type": "object",
44
+ "minProperties": 1,
45
+ "additionalProperties": { "$ref": "#/$defs/platformEntry" }
46
+ },
47
+ "registryDigest": {
48
+ "type": "string",
49
+ "pattern": "^[0-9a-f]{64}$",
50
+ "description": "sha256 hex of the canonical JSON of all top-level fields except registryDigest itself."
51
+ },
52
+ "thirdPartyNotes": { "type": "string" },
53
+ "thirdPartyContract": {
54
+ "type": "string",
55
+ "description": "Path or $id reference by which a third-party instance points at this contract."
56
+ }
57
+ },
58
+ "$defs": {
59
+ "platformEntry": {
60
+ "type": "object",
61
+ "additionalProperties": false,
62
+ "required": [
63
+ "platformId",
64
+ "primaryPlatform",
65
+ "directory",
66
+ "manifest",
67
+ "discovery",
68
+ "invocation",
69
+ "internalIsolation",
70
+ "capabilityGaps",
71
+ "degradationConditions"
72
+ ],
73
+ "properties": {
74
+ "platformId": { "type": "string", "minLength": 1 },
75
+ "primaryPlatform": { "type": "boolean" },
76
+ "lowersPrimaryPlatformStatus": {
77
+ "const": false,
78
+ "description": "Must be false: a difference entry may never lower the primary platform's status."
79
+ },
80
+ "loosensCommonBusinessSemantics": {
81
+ "const": false,
82
+ "description": "Must be false: a difference entry may never loosen the common business semantics."
83
+ },
84
+ "directory": { "type": "string", "minLength": 1 },
85
+ "manifest": { "$ref": "#/$defs/dimensionFact" },
86
+ "discovery": { "$ref": "#/$defs/dimensionFact" },
87
+ "invocation": { "$ref": "#/$defs/dimensionFact" },
88
+ "internalIsolation": { "$ref": "#/$defs/dimensionFact" },
89
+ "capabilityGaps": {
90
+ "type": "array",
91
+ "items": { "type": "string", "minLength": 1 }
92
+ },
93
+ "degradationConditions": {
94
+ "type": "array",
95
+ "items": { "type": "string", "minLength": 1 }
96
+ }
97
+ }
98
+ },
99
+ "dimensionFact": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "required": ["status"],
103
+ "properties": {
104
+ "status": { "type": "string", "minLength": 1 },
105
+ "format": { "type": "string" },
106
+ "mechanism": { "type": "string" }
107
+ }
108
+ }
109
+ }
110
+ }
@@ -0,0 +1,499 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/plugin-verification-request.json",
4
+ "title": "Plugin verification request",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "kind",
10
+ "operation",
11
+ "verificationSetId",
12
+ "goal",
13
+ "source",
14
+ "host",
15
+ "install"
16
+ ],
17
+ "properties": {
18
+ "schemaVersion": {
19
+ "const": 1
20
+ },
21
+ "kind": {
22
+ "const": "skill-family.plugin-verification-request"
23
+ },
24
+ "operation": {
25
+ "const": "plugin-verification"
26
+ },
27
+ "verificationSetId": {
28
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
29
+ },
30
+ "goal": {
31
+ "enum": [
32
+ "install-only",
33
+ "install-and-invoke",
34
+ "native-lifecycle"
35
+ ]
36
+ },
37
+ "source": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["type"],
41
+ "properties": {
42
+ "type": {
43
+ "enum": [
44
+ "local-staged",
45
+ "public-channel",
46
+ "local-marketplace"
47
+ ]
48
+ },
49
+ "candidateRef": {
50
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
51
+ },
52
+ "sourceManifestSha256": {
53
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
54
+ },
55
+ "membersDigest": {
56
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
57
+ },
58
+ "marketplaceId": {
59
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
60
+ },
61
+ "pluginId": {
62
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
63
+ },
64
+ "revisions": {
65
+ "type": "object",
66
+ "additionalProperties": false,
67
+ "required": ["v1", "v2"],
68
+ "properties": {
69
+ "v1": { "$ref": "#/$defs/marketplaceRevision" },
70
+ "v2": { "$ref": "#/$defs/marketplaceRevision" }
71
+ }
72
+ },
73
+ "channel": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": [
77
+ "marketplaceId",
78
+ "pluginId",
79
+ "version",
80
+ "sourceRef",
81
+ "locatorSha256"
82
+ ],
83
+ "properties": {
84
+ "marketplaceId": {
85
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
86
+ },
87
+ "pluginId": {
88
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
89
+ },
90
+ "version": {
91
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverVersion"
92
+ },
93
+ "sourceRef": {
94
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
95
+ },
96
+ "locatorSha256": {
97
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
98
+ }
99
+ }
100
+ }
101
+ },
102
+ "allOf": [
103
+ {
104
+ "if": {
105
+ "properties": { "type": { "const": "local-staged" } },
106
+ "required": ["type"]
107
+ },
108
+ "then": {
109
+ "required": ["candidateRef", "sourceManifestSha256", "membersDigest"],
110
+ "properties": {
111
+ "candidateRef": {}, "sourceManifestSha256": {}, "membersDigest": {},
112
+ "channel": false, "marketplaceId": false, "pluginId": false, "revisions": false
113
+ }
114
+ }
115
+ },
116
+ {
117
+ "if": {
118
+ "properties": { "type": { "const": "public-channel" } },
119
+ "required": ["type"]
120
+ },
121
+ "then": {
122
+ "required": ["candidateRef", "sourceManifestSha256", "membersDigest", "channel"],
123
+ "properties": {
124
+ "candidateRef": {}, "sourceManifestSha256": {}, "membersDigest": {}, "channel": {},
125
+ "marketplaceId": false, "pluginId": false, "revisions": false
126
+ }
127
+ }
128
+ },
129
+ {
130
+ "if": {
131
+ "properties": { "type": { "const": "local-marketplace" } },
132
+ "required": ["type"]
133
+ },
134
+ "then": {
135
+ "required": ["candidateRef", "marketplaceId", "pluginId", "revisions"],
136
+ "properties": {
137
+ "candidateRef": {}, "marketplaceId": {}, "pluginId": {}, "revisions": {},
138
+ "sourceManifestSha256": false, "membersDigest": false, "channel": false
139
+ }
140
+ }
141
+ }
142
+ ]
143
+ },
144
+ "host": {
145
+ "type": "object",
146
+ "additionalProperties": false,
147
+ "required": [
148
+ "hostId",
149
+ "descriptorSha256",
150
+ "driverId",
151
+ "driverVersion"
152
+ ],
153
+ "properties": {
154
+ "hostId": {
155
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/hostId"
156
+ },
157
+ "descriptorSha256": {
158
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
159
+ },
160
+ "driverId": {
161
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverId"
162
+ },
163
+ "driverVersion": {
164
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverVersion"
165
+ },
166
+ "cliVersion": {
167
+ "type": "string",
168
+ "minLength": 1,
169
+ "maxLength": 256
170
+ },
171
+ "executableSha256": {
172
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
173
+ }
174
+ }
175
+ },
176
+ "install": {
177
+ "type": "object",
178
+ "additionalProperties": false,
179
+ "required": [
180
+ "mode"
181
+ ],
182
+ "properties": {
183
+ "mode": {
184
+ "const": "fresh-tree"
185
+ },
186
+ "timeoutPolicy": {
187
+ "$ref": "https://contracts.skill-family.example/v1/timeout-policy.json"
188
+ },
189
+ "outputByteLimits": {
190
+ "$ref": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json#/$defs/outputByteLimits"
191
+ }
192
+ }
193
+ },
194
+ "auth": {
195
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/properties/auth"
196
+ },
197
+ "invocation": {
198
+ "type": "object",
199
+ "additionalProperties": false,
200
+ "required": [
201
+ "effectivePromptSha256",
202
+ "fixtureClosureDigest",
203
+ "protectedWorkspaceClosureDigest",
204
+ "timeoutPolicy",
205
+ "modelOverridePolicy",
206
+ "restrictions"
207
+ ],
208
+ "properties": {
209
+ "effectivePromptSha256": {
210
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
211
+ },
212
+ "fixtureClosureDigest": {
213
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
214
+ },
215
+ "protectedWorkspaceClosureDigest": {
216
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
217
+ },
218
+ "timeoutPolicy": {
219
+ "$ref": "https://contracts.skill-family.example/v1/timeout-policy.json"
220
+ },
221
+ "modelOverridePolicy": {
222
+ "const": "forbidden"
223
+ },
224
+ "restrictions": {
225
+ "type": "object",
226
+ "additionalProperties": false,
227
+ "properties": {
228
+ "approvalPolicy": {
229
+ "const": "deny-unattended"
230
+ },
231
+ "tools": {
232
+ "const": "skill-only"
233
+ },
234
+ "mcp": {
235
+ "const": "disabled"
236
+ },
237
+ "settingsSources": {
238
+ "const": "empty"
239
+ },
240
+ "sessionPersistence": {
241
+ "const": "disabled"
242
+ },
243
+ "history": {
244
+ "const": "fresh"
245
+ },
246
+ "browserIntegration": {
247
+ "const": "disabled"
248
+ },
249
+ "maxTurns": {
250
+ "type": "integer",
251
+ "minimum": 1,
252
+ "maximum": 100
253
+ },
254
+ "maxBudgetUsd": {
255
+ "type": "number",
256
+ "exclusiveMinimum": 0,
257
+ "maximum": 100
258
+ }
259
+ }
260
+ }
261
+ }
262
+ }
263
+ },
264
+ "allOf": [
265
+ {
266
+ "if": {
267
+ "anyOf": [
268
+ {
269
+ "type": "object",
270
+ "properties": { "goal": { "const": "install-and-invoke" } },
271
+ "required": ["goal"]
272
+ },
273
+ {
274
+ "type": "object",
275
+ "properties": { "goal": { "const": "native-lifecycle" } },
276
+ "required": ["goal"]
277
+ }
278
+ ]
279
+ },
280
+ "then": {
281
+ "type": "object",
282
+ "required": [
283
+ "invocation"
284
+ ],
285
+ "properties": {
286
+ "invocation": {}
287
+ }
288
+ },
289
+ "else": {
290
+ "type": "object",
291
+ "properties": {
292
+ "invocation": false
293
+ }
294
+ }
295
+ },
296
+ {
297
+ "if": {
298
+ "type": "object",
299
+ "properties": {
300
+ "source": {
301
+ "type": "object",
302
+ "properties": {
303
+ "type": {
304
+ "const": "public-channel"
305
+ }
306
+ },
307
+ "required": [
308
+ "type"
309
+ ]
310
+ }
311
+ },
312
+ "required": [
313
+ "source"
314
+ ]
315
+ },
316
+ "then": {
317
+ "type": "object",
318
+ "properties": {
319
+ "source": {
320
+ "type": "object",
321
+ "properties": {
322
+ "channel": {
323
+ "type": "object"
324
+ }
325
+ },
326
+ "required": [
327
+ "channel"
328
+ ]
329
+ },
330
+ "install": {
331
+ "type": "object",
332
+ "properties": {
333
+ "timeoutPolicy": {}
334
+ },
335
+ "required": [
336
+ "timeoutPolicy"
337
+ ]
338
+ }
339
+ }
340
+ },
341
+ "else": {
342
+ "type": "object",
343
+ "if": {
344
+ "properties": {
345
+ "source": {
346
+ "type": "object",
347
+ "properties": { "type": { "const": "local-staged" } },
348
+ "required": ["type"]
349
+ }
350
+ },
351
+ "required": ["source"]
352
+ },
353
+ "then": {
354
+ "properties": {
355
+ "source": {
356
+ "type": "object",
357
+ "properties": {
358
+ "channel": false
359
+ }
360
+ },
361
+ "install": {
362
+ "type": "object",
363
+ "properties": {
364
+ "timeoutPolicy": false,
365
+ "outputByteLimits": false
366
+ }
367
+ }
368
+ }
369
+ }
370
+ }
371
+ },
372
+ {
373
+ "if": {
374
+ "anyOf": [
375
+ {
376
+ "type": "object",
377
+ "properties": {
378
+ "goal": {
379
+ "const": "install-and-invoke"
380
+ }
381
+ },
382
+ "required": [
383
+ "goal"
384
+ ]
385
+ },
386
+ {
387
+ "type": "object",
388
+ "properties": {
389
+ "source": {
390
+ "type": "object",
391
+ "properties": {
392
+ "type": {
393
+ "const": "public-channel"
394
+ }
395
+ },
396
+ "required": [
397
+ "type"
398
+ ]
399
+ }
400
+ },
401
+ "required": [
402
+ "source"
403
+ ]
404
+ },
405
+ {
406
+ "type": "object",
407
+ "properties": { "goal": { "const": "native-lifecycle" } },
408
+ "required": ["goal"]
409
+ }
410
+ ]
411
+ },
412
+ "then": {
413
+ "type": "object",
414
+ "required": [
415
+ "auth"
416
+ ],
417
+ "properties": {
418
+ "auth": {},
419
+ "host": {
420
+ "type": "object",
421
+ "properties": {
422
+ "cliVersion": {},
423
+ "executableSha256": {}
424
+ }
425
+ }
426
+ },
427
+ "allOf": [
428
+ {
429
+ "if": {
430
+ "type": "object",
431
+ "properties": { "goal": { "const": "native-lifecycle" } },
432
+ "required": ["goal"]
433
+ },
434
+ "then": {
435
+ "type": "object",
436
+ "properties": {
437
+ "host": {
438
+ "type": "object",
439
+ "properties": { "cliVersion": false, "executableSha256": false }
440
+ }
441
+ }
442
+ },
443
+ "else": {
444
+ "type": "object",
445
+ "properties": {
446
+ "host": {
447
+ "type": "object",
448
+ "required": ["cliVersion", "executableSha256"],
449
+ "properties": { "cliVersion": {}, "executableSha256": {} }
450
+ }
451
+ }
452
+ }
453
+ }
454
+ ]
455
+ },
456
+ "else": {
457
+ "type": "object",
458
+ "properties": {
459
+ "auth": false,
460
+ "host": {
461
+ "type": "object",
462
+ "properties": {
463
+ "cliVersion": false,
464
+ "executableSha256": false
465
+ }
466
+ }
467
+ }
468
+ }
469
+ },
470
+ {
471
+ "if": {
472
+ "properties": { "goal": { "const": "native-lifecycle" } },
473
+ "required": ["goal"]
474
+ },
475
+ "then": {
476
+ "properties": {
477
+ "source": {
478
+ "type": "object",
479
+ "properties": { "type": { "const": "local-marketplace" } },
480
+ "required": ["type"]
481
+ }
482
+ },
483
+ "required": ["auth", "invocation"]
484
+ }
485
+ }
486
+ ],
487
+ "$defs": {
488
+ "marketplaceRevision": {
489
+ "type": "object",
490
+ "additionalProperties": false,
491
+ "required": ["version", "sourceManifestSha256", "membersDigest"],
492
+ "properties": {
493
+ "version": { "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverVersion" },
494
+ "sourceManifestSha256": { "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256" },
495
+ "membersDigest": { "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256" }
496
+ }
497
+ }
498
+ }
499
+ }