@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 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",
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 (SLUG_PATTERN.test(entry.slug)) slug = entry.slug
228
- else report.error('marketplace/entry-slug', file, `${base}.slug: ${SLUG_MESSAGE}`, at(`${base}.slug`))
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) {