@subbly/plugin-lint 0.0.3 → 0.0.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/CHANGELOG.md +12 -0
- package/package.json +5 -10
- package/src/rules.mjs +9 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @subbly/plugin-lint
|
|
2
2
|
|
|
3
|
+
## 0.0.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1efe820: The plugin slug `custom` is an error, as the builder refresh reserves it for user-created connectors and credentials. No other rule changes.
|
|
8
|
+
|
|
9
|
+
## 0.0.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 3a07f70: The `repository` field is gone from `package.json`. It pointed at a repo that does not exist. No rule changes.
|
|
14
|
+
|
|
3
15
|
## 0.0.3
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subbly/plugin-lint",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "The Subbly marketplace release gate, offline. Lints marketplace.json, plugin manifests, mcp.json, skills, agents and automations.",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "Subbly LTD <oleg@subbly.co> (https://www.subbly.co)",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "https://github.com/subbly/subbly-plugin-examples.git",
|
|
12
|
-
"directory": "packages/plugin-lint"
|
|
13
|
-
},
|
|
14
9
|
"publishConfig": {
|
|
15
10
|
"access": "public"
|
|
16
11
|
},
|
|
@@ -36,10 +31,10 @@
|
|
|
36
31
|
"README.md",
|
|
37
32
|
"CHANGELOG.md"
|
|
38
33
|
],
|
|
39
|
-
"scripts": {
|
|
40
|
-
"test": "node test/lint.test.mjs"
|
|
41
|
-
},
|
|
42
34
|
"engines": {
|
|
43
35
|
"node": ">=20"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"test": "node test/lint.test.mjs"
|
|
44
39
|
}
|
|
45
|
-
}
|
|
40
|
+
}
|
package/src/rules.mjs
CHANGED
|
@@ -51,6 +51,8 @@ export const DEFAULT_ENV_KEYS = [
|
|
|
51
51
|
'NEXT_PUBLIC_TERMS_CONDITIONS_URL',
|
|
52
52
|
]
|
|
53
53
|
|
|
54
|
+
const RESERVED_SLUG = 'custom'
|
|
55
|
+
|
|
54
56
|
const MISPLACED = ['agents', 'automations', 'scripts', 'instructions.md']
|
|
55
57
|
|
|
56
58
|
// The builder-maintained symlink to the installed version, the only stable
|
|
@@ -224,8 +226,13 @@ function lintMarketplaceManifest(root, report) {
|
|
|
224
226
|
|
|
225
227
|
let slug = null
|
|
226
228
|
if (check.string('marketplace/entry-slug', `${base}.slug`, entry.slug, { min: 1, max: 64, required: true })) {
|
|
227
|
-
if (
|
|
228
|
-
|
|
229
|
+
if (entry.slug === RESERVED_SLUG) {
|
|
230
|
+
report.error('marketplace/entry-slug', file, `${base}.slug: "${RESERVED_SLUG}" is reserved for user-created connectors and credentials`, at(`${base}.slug`))
|
|
231
|
+
} else if (SLUG_PATTERN.test(entry.slug)) {
|
|
232
|
+
slug = entry.slug
|
|
233
|
+
} else {
|
|
234
|
+
report.error('marketplace/entry-slug', file, `${base}.slug: ${SLUG_MESSAGE}`, at(`${base}.slug`))
|
|
235
|
+
}
|
|
229
236
|
}
|
|
230
237
|
|
|
231
238
|
if (slug) {
|