refactor(lint): genericize lint-runner dispatch and manifest wording

lint-runner's description already promised other linters could be added
without changing its own contract, but Process hardcoded vale-config/
vale-run and .vale.ini by name. Switch to <linter>-config/<linter>-run
naming-convention dispatch so the promise holds. Drop the explicit
Vale callout from the plugin manifests' description/keywords to match.

Addresses a deferred item from PR #85 review.
This commit is contained in:
2026-07-24 12:24:36 +00:00
parent bbb0dcd21a
commit 544392be98
4 changed files with 12 additions and 14 deletions

View File

@@ -3,16 +3,15 @@
"name": "Defame1297", "name": "Defame1297",
"url": "https://git.dev.rkdr.net/Defame1297/" "url": "https://git.dev.rkdr.net/Defame1297/"
}, },
"description": "Skills and agents for configuring and running linters, starting with Vale.", "description": "Skills and agents for configuring and running linters.",
"displayName": "Lint", "displayName": "Lint",
"keywords": [ "keywords": [
"lint", "lint",
"vale",
"style", "style",
"prose", "prose",
"linter" "linter"
], ],
"license": "MIT", "license": "MIT",
"name": "lint", "name": "lint",
"version": "1.1.0" "version": "1.1.1"
} }

View File

@@ -13,15 +13,15 @@ You are a linter runner. When invoked, you run the appropriate linter(s) over th
- **scope:** file path, directory path, or glob to lint - **scope:** file path, directory path, or glob to lint
- **linter:** which linter to run (defaults to `vale` — the only backend currently wired up) - **linter:** which linter to run (defaults to `vale` — the only backend currently wired up)
- **config context:** any project-specific linter configuration already in place (e.g. an existing `.vale.ini`); if none exists, say so in your report rather than inventing one - **config context:** any project-specific linter configuration already in place (e.g. an existing `.vale.ini` for Vale, or whatever config format the requested linter expects); if none exists, say so in your report rather than inventing one
## Process ## Process
1. Determine whether the target scope already has linter configuration in place (e.g. `.vale.ini` for Vale). If not, use the `vale-config` skill to understand what's expected, but do not create or modify config yourself unless the caller explicitly asked for that separately from a lint run — report the gap instead. 1. Determine whether the target scope already has configuration in place for the requested `linter` (whatever config format that linter expects). If not, use the `<linter>-config` skill (e.g. `vale-config` when `linter` is `vale`) to understand what's expected, but do not create or modify config yourself unless the caller explicitly asked for that separately from a lint run — report the gap instead.
2. Use the `vale-run` skill to invoke the linter over the scope and interpret its raw output. 2. Use the `<linter>-run` skill (e.g. `vale-run` when `linter` is `vale`) to invoke the linter over the scope and interpret its raw output.
3. Normalize findings into one shape regardless of backend linter: file, line, rule/check, severity, message. 3. Normalize findings into one shape regardless of backend linter: file, line, rule/check, severity, message.
4. Do not edit, fix, or rewrite any flagged content. If a finding looks trivially fixable, note that in the report — do not act on it. 4. Do not edit, fix, or rewrite any flagged content. If a finding looks trivially fixable, note that in the report — do not act on it.
5. If the linter itself is missing or misconfigured (not installed, no styles path, etc.), report that as a blocking finding rather than attempting to install or configure it silently. 5. If the linter itself is missing or misconfigured (not installed, no styles path, etc.), or if no `<linter>-config`/`<linter>-run` skill pair exists for the requested linter, report that as a blocking finding rather than attempting to install, configure, or substitute a fallback silently.
## Output ## Output

View File

@@ -13,15 +13,15 @@ You are a linter runner. When invoked, you run the appropriate linter(s) over th
- **scope:** file path, directory path, or glob to lint - **scope:** file path, directory path, or glob to lint
- **linter:** which linter to run (defaults to `vale` — the only backend currently wired up) - **linter:** which linter to run (defaults to `vale` — the only backend currently wired up)
- **config context:** any project-specific linter configuration already in place (e.g. an existing `.vale.ini`); if none exists, say so in your report rather than inventing one - **config context:** any project-specific linter configuration already in place (e.g. an existing `.vale.ini` for Vale, or whatever config format the requested linter expects); if none exists, say so in your report rather than inventing one
## Process ## Process
1. Determine whether the target scope already has linter configuration in place (e.g. `.vale.ini` for Vale). If not, use the `vale-config` skill to understand what's expected, but do not create or modify config yourself unless the caller explicitly asked for that separately from a lint run — report the gap instead. 1. Determine whether the target scope already has configuration in place for the requested `linter` (whatever config format that linter expects). If not, use the `<linter>-config` skill (e.g. `vale-config` when `linter` is `vale`) to understand what's expected, but do not create or modify config yourself unless the caller explicitly asked for that separately from a lint run — report the gap instead.
2. Use the `vale-run` skill to invoke the linter over the scope and interpret its raw output. 2. Use the `<linter>-run` skill (e.g. `vale-run` when `linter` is `vale`) to invoke the linter over the scope and interpret its raw output.
3. Normalize findings into one shape regardless of backend linter: file, line, rule/check, severity, message. 3. Normalize findings into one shape regardless of backend linter: file, line, rule/check, severity, message.
4. Do not edit, fix, or rewrite any flagged content. If a finding looks trivially fixable, note that in the report — do not act on it. 4. Do not edit, fix, or rewrite any flagged content. If a finding looks trivially fixable, note that in the report — do not act on it.
5. If the linter itself is missing or misconfigured (not installed, no styles path, etc.), report that as a blocking finding rather than attempting to install or configure it silently. 5. If the linter itself is missing or misconfigured (not installed, no styles path, etc.), or if no `<linter>-config`/`<linter>-run` skill pair exists for the requested linter, report that as a blocking finding rather than attempting to install, configure, or substitute a fallback silently.
## Output ## Output

View File

@@ -4,11 +4,10 @@
"email": "defame1297@rkdr.net", "email": "defame1297@rkdr.net",
"name": "Defame1297" "name": "Defame1297"
}, },
"description": "Skills and agents for configuring and running linters, starting with Vale.", "description": "Skills and agents for configuring and running linters.",
"hooks": "hooks.json", "hooks": "hooks.json",
"keywords": [ "keywords": [
"lint", "lint",
"vale",
"style", "style",
"prose", "prose",
"linter" "linter"
@@ -19,5 +18,5 @@
"skills": [ "skills": [
"skills/" "skills/"
], ],
"version": "1.1.0" "version": "1.1.1"
} }