@bastani/atomic 0.9.16-alpha.6 → 0.9.16-alpha.8
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 +19 -0
- package/dist/builtin/intercom/CHANGELOG.md +6 -0
- package/dist/builtin/intercom/README.md +4 -4
- package/dist/builtin/intercom/broker/broker.ts +617 -22
- package/dist/builtin/intercom/broker/client-message-validation.ts +9 -0
- package/dist/builtin/intercom/broker/client.ts +200 -10
- package/dist/builtin/intercom/broker/pending-send-registry.ts +4 -0
- package/dist/builtin/intercom/broker/send-handler.ts +90 -36
- package/dist/builtin/intercom/broker/send-signature.ts +20 -8
- package/dist/builtin/intercom/group.ts +85 -0
- package/dist/builtin/intercom/index.bundle.mjs +680 -53
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/session-target.ts +54 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +18 -3
- package/dist/builtin/intercom/source-ownership.ts +31 -0
- package/dist/builtin/intercom/types.ts +115 -0
- package/dist/builtin/mcp/index.bundle.mjs +109 -35
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +6 -0
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/skills/qlty/SKILL.md +123 -0
- package/dist/builtin/subagents/skills/qlty/references/coding-with-ai-agents.md +64 -0
- package/dist/builtin/subagents/skills/qlty/references/commands.md +291 -0
- package/dist/builtin/subagents/skills/qlty/references/plugins-and-extensions.md +228 -0
- package/dist/builtin/subagents/skills/qlty/references/quickstart.md +110 -0
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +173 -51
- package/dist/builtin/web-access/index.bundle.mjs +109 -35
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +23 -0
- package/dist/builtin/workflows/README.md +40 -37
- package/dist/builtin/workflows/builtin/adversarial-verification.js +13 -0
- package/dist/builtin/workflows/builtin/{shared-prompts.ts → chunk-0x6e303p.js} +137 -133
- package/dist/builtin/workflows/builtin/chunk-29wrp38a.js +199 -0
- package/dist/builtin/workflows/builtin/chunk-2dqb5s2q.js +602 -0
- package/dist/builtin/workflows/builtin/chunk-4febxsv4.js +264 -0
- package/dist/builtin/workflows/builtin/chunk-5n10x7j2.js +69730 -0
- package/dist/builtin/workflows/builtin/chunk-5wgwscd0.js +4 -0
- package/dist/builtin/workflows/builtin/chunk-6fqs7c01.js +155 -0
- package/dist/builtin/workflows/builtin/chunk-7430zyas.js +126 -0
- package/dist/builtin/workflows/builtin/chunk-7at6dnkr.js +33 -0
- package/dist/builtin/workflows/builtin/chunk-82ha8p41.js +175 -0
- package/dist/builtin/workflows/builtin/chunk-bfkmzv9h.js +156 -0
- package/dist/builtin/workflows/builtin/chunk-c53y8bdh.js +345 -0
- package/dist/builtin/workflows/builtin/chunk-cdtd3m3w.js +529 -0
- package/dist/builtin/workflows/builtin/chunk-cg9tmks0.js +206 -0
- package/dist/builtin/workflows/builtin/chunk-hdpj1dkw.js +2447 -0
- package/dist/builtin/workflows/builtin/chunk-hzzn6adg.js +221 -0
- package/dist/builtin/workflows/builtin/chunk-nqr34qp3.js +1061 -0
- package/dist/builtin/workflows/builtin/chunk-qwzvgxnq.js +404 -0
- package/dist/builtin/workflows/builtin/chunk-qx2ptjs3.js +215 -0
- package/dist/builtin/workflows/builtin/chunk-v04c5qmd.js +1207 -0
- package/dist/builtin/workflows/builtin/chunk-wpckd35c.js +12 -0
- package/dist/builtin/workflows/builtin/chunk-x2ghn0je.js +4110 -0
- package/dist/builtin/workflows/builtin/chunk-zf28603f.js +1080 -0
- package/dist/builtin/workflows/builtin/classify-and-act.js +12 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +10 -0
- package/dist/builtin/workflows/builtin/generate-and-filter.js +12 -0
- package/dist/builtin/workflows/builtin/goal.js +16 -0
- package/dist/builtin/workflows/builtin/index.js +49 -0
- package/dist/builtin/workflows/builtin/loop-until-done.js +12 -0
- package/dist/builtin/workflows/builtin/open-claude-design.js +11 -0
- package/dist/builtin/workflows/builtin/ralph.js +16 -0
- package/dist/builtin/workflows/builtin/steering-context.d.ts +6 -0
- package/dist/builtin/workflows/builtin/steering-context.js +7 -0
- package/dist/builtin/workflows/builtin/tournament.js +13 -0
- package/dist/builtin/workflows/package.json +10 -7
- package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +41 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +1250 -428
- package/dist/builtin/workflows/src/{index.bundle.mjs → index.js} +956 -427
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +403 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +327 -0
- package/dist/builtin/workflows/src/shared/budget.d.ts +67 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +60 -0
- package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.d.ts +21 -0
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +12 -5
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +2 -0
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +2 -0
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -0
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/builtin-install-layout.d.ts +1 -1
- package/dist/core/builtin-install-layout.d.ts.map +1 -1
- package/dist/core/builtin-install-layout.js +1 -1
- package/dist/core/builtin-install-layout.js.map +1 -1
- package/dist/core/codex-fast-mode.d.ts +10 -7
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.js +31 -13
- package/dist/core/codex-fast-mode.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +35 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +6 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/model-runtime.d.ts +2 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +4 -0
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +1 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +8 -0
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +5 -5
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-storage.d.ts +2 -0
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-storage.js +4 -2
- package/dist/core/session-manager-storage.js.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +6 -1
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +8 -9
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +4 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +69 -10
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +18 -2
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +33 -5
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +8 -4
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +13 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/intercom.md +15 -6
- package/docs/packages.md +2 -2
- package/docs/providers.md +8 -3
- package/docs/quickstart.md +3 -2
- package/docs/rpc.md +21 -4
- package/docs/settings.md +6 -4
- package/docs/skills.md +4 -0
- package/docs/subagents.md +1 -1
- package/docs/usage.md +1 -1
- package/docs/workflows.md +112 -239
- package/npm-shrinkwrap.json +32 -32
- package/package.json +9 -13
- package/dist/builtin/workflows/ambient.d.ts +0 -61
- package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +0 -26
- package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +0 -391
- package/dist/builtin/workflows/builtin/adversarial-verification.ts +0 -34
- package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +0 -14
- package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +0 -108
- package/dist/builtin/workflows/builtin/classify-and-act.ts +0 -40
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +0 -14
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +0 -96
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +0 -37
- package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +0 -41
- package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +0 -90
- package/dist/builtin/workflows/builtin/generate-and-filter.ts +0 -31
- package/dist/builtin/workflows/builtin/goal-artifacts.ts +0 -64
- package/dist/builtin/workflows/builtin/goal-convergence.ts +0 -87
- package/dist/builtin/workflows/builtin/goal-ledger.ts +0 -139
- package/dist/builtin/workflows/builtin/goal-models.ts +0 -72
- package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +0 -94
- package/dist/builtin/workflows/builtin/goal-prompts.ts +0 -211
- package/dist/builtin/workflows/builtin/goal-reducer.ts +0 -176
- package/dist/builtin/workflows/builtin/goal-reports.ts +0 -76
- package/dist/builtin/workflows/builtin/goal-reverify.ts +0 -305
- package/dist/builtin/workflows/builtin/goal-review.ts +0 -139
- package/dist/builtin/workflows/builtin/goal-runner.ts +0 -504
- package/dist/builtin/workflows/builtin/goal-schemas.ts +0 -89
- package/dist/builtin/workflows/builtin/goal-types.ts +0 -164
- package/dist/builtin/workflows/builtin/goal.ts +0 -78
- package/dist/builtin/workflows/builtin/index.ts +0 -16
- package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +0 -87
- package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +0 -282
- package/dist/builtin/workflows/builtin/loop-until-done.ts +0 -51
- package/dist/builtin/workflows/builtin/open-claude-design-live-protocol.ts +0 -305
- package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +0 -337
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +0 -347
- package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +0 -313
- package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +0 -311
- package/dist/builtin/workflows/builtin/open-claude-design.ts +0 -57
- package/dist/builtin/workflows/builtin/pattern-artifact-root.ts +0 -28
- package/dist/builtin/workflows/builtin/progress-scoring.ts +0 -230
- package/dist/builtin/workflows/builtin/ralph-core.ts +0 -449
- package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +0 -100
- package/dist/builtin/workflows/builtin/ralph-models.ts +0 -183
- package/dist/builtin/workflows/builtin/ralph-review-gate.ts +0 -103
- package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +0 -100
- package/dist/builtin/workflows/builtin/ralph-runner.ts +0 -455
- package/dist/builtin/workflows/builtin/ralph.ts +0 -82
- package/dist/builtin/workflows/builtin/review-convergence.ts +0 -229
- package/dist/builtin/workflows/builtin/selection-math.ts +0 -156
- package/dist/builtin/workflows/builtin/steering-context.ts +0 -51
- package/dist/builtin/workflows/builtin/tournament-prompts.ts +0 -70
- package/dist/builtin/workflows/builtin/tournament-runner.ts +0 -400
- package/dist/builtin/workflows/builtin/tournament.ts +0 -73
- package/dist/builtin/workflows/builtin/verification-criteria.ts +0 -330
- package/dist/builtin/workflows/builtin/verification-prompts.ts +0 -206
- package/dist/builtin/workflows/builtin/verification-usage.ts +0 -44
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Plugins and Linter Extensions
|
|
2
|
+
|
|
3
|
+
> **Sources** (retrieved 2026-08-26): <https://docs.qlty.sh/cli/concepts/plugins.md> and
|
|
4
|
+
> <https://docs.qlty.sh/cli/linter-extensions.md>.
|
|
5
|
+
> Copied from those pages. Text and TOML examples are unchanged; MDX `<Note>`, `<Warning>`, and
|
|
6
|
+
> `<CodeGroup>` wrappers are rendered as Markdown blockquotes and separate code blocks, and
|
|
7
|
+
> relative links are expanded to absolute URLs. Full `qlty.toml` reference:
|
|
8
|
+
> <https://docs.qlty.sh/cli/qlty-toml.md>.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Plugins
|
|
13
|
+
|
|
14
|
+
Qlty integrates with linters, auto-formatters, security scanners, and other static analysis tools as plugins.
|
|
15
|
+
|
|
16
|
+
> **Note:** Looking for plugin-specific configuration options, supported versions, or invocation
|
|
17
|
+
> details? Each plugin lives in its own folder under
|
|
18
|
+
> [qltysh/qlty/qlty-plugins](https://github.com/qltysh/qlty/tree/main/qlty-plugins) on GitHub —
|
|
19
|
+
> check the plugin's `plugin.toml` and `README.md` for specifics.
|
|
20
|
+
|
|
21
|
+
Each plugin consists of two components:
|
|
22
|
+
|
|
23
|
+
1. A plugin definition in a TOML configuration file
|
|
24
|
+
2. A results parser implemented in Rust
|
|
25
|
+
|
|
26
|
+
Here is a simplified example plugin definition for [Ruff](https://github.com/astral-sh/ruff):
|
|
27
|
+
|
|
28
|
+
```toml
|
|
29
|
+
# plugin.toml for ruff
|
|
30
|
+
config_version = "0"
|
|
31
|
+
|
|
32
|
+
[plugins.definitions.ruff]
|
|
33
|
+
runtime = "python"
|
|
34
|
+
package = "ruff"
|
|
35
|
+
file_types = ["python"]
|
|
36
|
+
version_command = "ruff version"
|
|
37
|
+
config_files = ["ruff.toml"]
|
|
38
|
+
issue_url_format = "https://docs.astral.sh/ruff/rules/${rule}"
|
|
39
|
+
|
|
40
|
+
[plugins.definitions.ruff.drivers.lint]
|
|
41
|
+
script = "ruff check --exit-zero --output-format sarif --output-file ${tmpfile} ${target}"
|
|
42
|
+
success_codes = [0]
|
|
43
|
+
output = "tmpfile"
|
|
44
|
+
output_format = "sarif"
|
|
45
|
+
batch = true
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Gitleaks supports outputting results in the [SARIF](https://sarifweb.azurewebsites.net/) standard format, so a custom results parser is not needed. For tools which do not support SARIF, a results parser is implemented within the Qlty CLI and referenced by name.
|
|
49
|
+
|
|
50
|
+
### Auto-Formatters
|
|
51
|
+
|
|
52
|
+
Auto-formatters are a special type of plugin because they *rewrite* files rather than outputting findings. Therefore, they do not require results parsers.
|
|
53
|
+
|
|
54
|
+
Here is an example of a plugin definition for the [shfmt](https://github.com/mvdan/sh) auto-formatter:
|
|
55
|
+
|
|
56
|
+
```toml
|
|
57
|
+
# plugin.toml for shfmt
|
|
58
|
+
config_version = "0"
|
|
59
|
+
|
|
60
|
+
[plugins.definitions.shfmt]
|
|
61
|
+
package = "mvdan.cc/sh/v${major_version}/cmd/shfmt"
|
|
62
|
+
runtime = "go"
|
|
63
|
+
file_types = ["shell"]
|
|
64
|
+
version_command = "shfmt --version"
|
|
65
|
+
affects_cache = [".editorconfig"]
|
|
66
|
+
|
|
67
|
+
[plugins.definitions.shfmt.drivers.format]
|
|
68
|
+
script = "shfmt -w -s ${target}"
|
|
69
|
+
success_codes = [0, 1]
|
|
70
|
+
output = "rewrite"
|
|
71
|
+
cache_results = true
|
|
72
|
+
batch = true
|
|
73
|
+
driver_type = "formatter"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Note the specification of `output = "rewrite"` and `driver_type = "formatter"`.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Linter Extensions
|
|
81
|
+
|
|
82
|
+
Linter extensions are additional packages or plugins that extend the functionality of base linter tools that Qlty uses. Depending on the linter, extensions can add:
|
|
83
|
+
|
|
84
|
+
* Additional rule sets
|
|
85
|
+
* Custom rules
|
|
86
|
+
* Language support
|
|
87
|
+
* Framework-specific checks
|
|
88
|
+
* Additional parsers
|
|
89
|
+
|
|
90
|
+
For example, ESLint has numerous plugins like `eslint-plugin-react`, `eslint-plugin-security`, and `eslint-plugin-jest` that add specialized rules for React development, security checks, and Jest testing, respectively.
|
|
91
|
+
|
|
92
|
+
### Supported Package Managers
|
|
93
|
+
|
|
94
|
+
Qlty supports linter extensions through the following package managers:
|
|
95
|
+
|
|
96
|
+
* **NPM** (Node.js) - For JavaScript/TypeScript tools like ESLint, Stylelint, etc.
|
|
97
|
+
* **RubyGems** (Ruby) - For Ruby tools like RuboCop, Standard, etc.
|
|
98
|
+
* **PIP** (Python) - For Python tools like Ruff, Pylint, Bandit, etc.
|
|
99
|
+
* **Composer** (PHP) - For PHP tools like PHP\_CodeSniffer, PHPStan, etc.
|
|
100
|
+
|
|
101
|
+
### Managing linter extensions
|
|
102
|
+
|
|
103
|
+
Qlty provides two mutually exclusive ways to configure linter extensions in your `qlty.toml` file: `extra_packages` and `package_file`.
|
|
104
|
+
|
|
105
|
+
#### `extra_packages`
|
|
106
|
+
|
|
107
|
+
The `extra_packages` property allows you to explicitly list additional packages that should be installed alongside the main linter package (including their versions).
|
|
108
|
+
|
|
109
|
+
```toml
|
|
110
|
+
# qlty.toml
|
|
111
|
+
[[plugin]]
|
|
112
|
+
name = "eslint"
|
|
113
|
+
version = "8.57.0"
|
|
114
|
+
extra_packages = [
|
|
115
|
+
"eslint-plugin-react@7.33.2",
|
|
116
|
+
"eslint-plugin-jest@27.6.0"
|
|
117
|
+
]
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This works best when your project contains a very limited set of extra packages (1-2), but does not scale well for moderate to complex projects.
|
|
121
|
+
|
|
122
|
+
**Pros:**
|
|
123
|
+
|
|
124
|
+
* Simple, direct specification
|
|
125
|
+
* Version pinning
|
|
126
|
+
* Works without existing package files
|
|
127
|
+
|
|
128
|
+
**Cons:**
|
|
129
|
+
|
|
130
|
+
* Duplicates existing dependency management (e.g. package.json)
|
|
131
|
+
* May diverge from project dependencies
|
|
132
|
+
* Supports external packages only (not, e.g. in Project packages)
|
|
133
|
+
|
|
134
|
+
#### `package_file`
|
|
135
|
+
|
|
136
|
+
The `package_file` property allows you to reference a package manager file (like `package.json` or `Gemfile`) to manage dependencies. Depending on your use case, you can point the `package_file` either at your project's main package file or at a specific file that contains the linter-related packages.
|
|
137
|
+
|
|
138
|
+
```toml
|
|
139
|
+
# Project package file
|
|
140
|
+
[[plugin]]
|
|
141
|
+
name = "eslint"
|
|
142
|
+
version = "8.57.0"
|
|
143
|
+
package_file = "package.json"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
```toml
|
|
147
|
+
# Linter package file
|
|
148
|
+
[[plugin]]
|
|
149
|
+
name = "eslint"
|
|
150
|
+
version = "8.57.0"
|
|
151
|
+
package_file = ".qlty/configs/package.json"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Pros:**
|
|
155
|
+
|
|
156
|
+
* Take advantage of package manager's dependency resolution
|
|
157
|
+
* Consistent with project dependencies (if pointing to the main package file)
|
|
158
|
+
|
|
159
|
+
**Cons:**
|
|
160
|
+
|
|
161
|
+
* Project's main package file contains many dependencies
|
|
162
|
+
|
|
163
|
+
##### `package_filters`
|
|
164
|
+
|
|
165
|
+
When using `package_file`, you can use `package_filters` to selectively include only specific packages from the package file. This will cause Qlty to *filter* the packages in the package file and only install the ones that match the filters.
|
|
166
|
+
|
|
167
|
+
This is most useful when you are pointing the `package_file` directive to your project's main package file, and you want to install only the linter-related packages. This can be used to speed up the installation of linters.
|
|
168
|
+
|
|
169
|
+
> **Warning:** You can achieve the same goal as package\_filters by using a separate package file
|
|
170
|
+
> which only contains linter dependencies. Because a separate package file's dependencies can be
|
|
171
|
+
> fully resolved using a lock file, we prefer this option.
|
|
172
|
+
|
|
173
|
+
```toml
|
|
174
|
+
# qlty.toml
|
|
175
|
+
[[plugin]]
|
|
176
|
+
name = "eslint"
|
|
177
|
+
version = "8.57.0"
|
|
178
|
+
package_file = "package.json"
|
|
179
|
+
package_filters = ["eslint"]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The `package_filters` option can offer a performance speed up or workaround issues installing the app dependencies at the tradeoff of additional complexity.
|
|
183
|
+
|
|
184
|
+
### Lock files
|
|
185
|
+
|
|
186
|
+
Package lock files (like `package-lock.json`, `Gemfile.lock`, `yarn.lock`) can impact how Qlty installs and manages linter extensions:
|
|
187
|
+
|
|
188
|
+
* When using `package_file`, Qlty respects the locked versions for reliability
|
|
189
|
+
* When using `package_file` with `package_filters`, the lock files are ignored
|
|
190
|
+
* For `extra_packages`, lock files are not used and specific versions are installed directly
|
|
191
|
+
|
|
192
|
+
### Limitations
|
|
193
|
+
|
|
194
|
+
Qlty currently does not support:
|
|
195
|
+
|
|
196
|
+
* **Private linter extensions** - Extensions from private Git repositories or private package registries that require authentication
|
|
197
|
+
* **Git-based dependencies** - Extensions referenced directly as Git repositories
|
|
198
|
+
* **Local file dependencies outside the repository** - Extensions referenced from paths outside the repository
|
|
199
|
+
|
|
200
|
+
### Troubleshooting
|
|
201
|
+
|
|
202
|
+
1. **Version conflicts**
|
|
203
|
+
|
|
204
|
+
If you see errors like "Dependency conflict" or "Incompatible versions", try:
|
|
205
|
+
|
|
206
|
+
* Aligning versions between your package file and extra\_packages
|
|
207
|
+
* Using `package_filters` to selectively include compatible packages
|
|
208
|
+
|
|
209
|
+
2. **Missing extensions**
|
|
210
|
+
|
|
211
|
+
If a linter reports missing plugins or rules:
|
|
212
|
+
|
|
213
|
+
* Verify the extension is correctly specified in `extra_packages` or `package_file`.
|
|
214
|
+
* Check for typos in package names.
|
|
215
|
+
* Ensure compatible versions are specified.
|
|
216
|
+
|
|
217
|
+
3. **Slow performance**
|
|
218
|
+
|
|
219
|
+
If linter installation becomes slow with extensions:
|
|
220
|
+
|
|
221
|
+
* Use either `package_filters` to filter installations, or create a separate package file for linter-related packages.
|
|
222
|
+
|
|
223
|
+
4. **Configuration issues**
|
|
224
|
+
|
|
225
|
+
If the linter can't find the extension configuration:
|
|
226
|
+
|
|
227
|
+
* Ensure your configuration file correctly references the extensions.
|
|
228
|
+
* Check that the extension is properly installed.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Getting Started with the Qlty CLI
|
|
2
|
+
|
|
3
|
+
> **Source:** <https://docs.qlty.sh/cli/quickstart.md> (retrieved 2026-08-26).
|
|
4
|
+
> Copied from the upstream page. Text is unchanged; the page's MDX wrappers (`<Steps>`,
|
|
5
|
+
> `<CodeGroup>`, `<Accordion>`) and its embedded video iframes are rendered as plain Markdown
|
|
6
|
+
> headings and code blocks. Fetch the live page via <https://docs.qlty.sh/llms.txt> when in doubt.
|
|
7
|
+
|
|
8
|
+
## 1. Install the CLI
|
|
9
|
+
|
|
10
|
+
First, install our CLI onto your local machine:
|
|
11
|
+
|
|
12
|
+
```shell
|
|
13
|
+
# macOS & Linux
|
|
14
|
+
curl https://qlty.sh | sh
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```shell
|
|
18
|
+
# Windows
|
|
19
|
+
powershell -c "iwr https://qlty.sh | iex"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Qlty CLI supports macOS and Linux on X64 and ARM64, with Windows support in development.
|
|
23
|
+
|
|
24
|
+
### Alternative: Installing with verification
|
|
25
|
+
|
|
26
|
+
We provide GitHub attestations powered by Sigstore that allow you to verify the authenticity of the Qlty CLI before installing it.
|
|
27
|
+
|
|
28
|
+
**Prerequisites:** [GitHub CLI (`gh`)](https://cli.github.com/manual/installation) must be installed.
|
|
29
|
+
|
|
30
|
+
**Example (macOS Apple Silicon):**
|
|
31
|
+
|
|
32
|
+
```shell
|
|
33
|
+
# Download the archive from https://github.com/qltysh/qlty/releases
|
|
34
|
+
curl -LO https://github.com/qltysh/qlty/releases/latest/download/qlty-aarch64-apple-darwin.tar.xz
|
|
35
|
+
|
|
36
|
+
# Verify the attestation
|
|
37
|
+
gh attestation verify --owner qltysh qlty-aarch64-apple-darwin.tar.xz
|
|
38
|
+
|
|
39
|
+
# Unpack and install
|
|
40
|
+
tar -xJf qlty-aarch64-apple-darwin.tar.xz
|
|
41
|
+
sudo mv qlty-aarch64-apple-darwin/qlty /usr/local/bin/
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
For other platforms, download the appropriate archive from [GitHub releases](https://github.com/qltysh/qlty/releases).
|
|
45
|
+
|
|
46
|
+
Learn more: [GitHub artifact attestations documentation](https://docs.github.com/en/actions/concepts/security/artifact-attestations)
|
|
47
|
+
|
|
48
|
+
## 2. Initialize your repository
|
|
49
|
+
|
|
50
|
+
From your Git repository, run:
|
|
51
|
+
|
|
52
|
+
```shell
|
|
53
|
+
qlty init
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
This will generate a baseline configuration based on the file types within your project and store it as `.qlty/qlty.toml` in your repository.
|
|
57
|
+
|
|
58
|
+
You can find more plugins with `qlty plugins list` and enable them with `qlty plugins enable [plugin]`.
|
|
59
|
+
|
|
60
|
+
## 3. Identify code smells and review quality metrics
|
|
61
|
+
|
|
62
|
+
Check the code quality (for [supported programming languages](https://docs.qlty.sh/languages.md)):
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Scan for code smells like duplication
|
|
66
|
+
qlty smells --all
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Review a summary of quality metrics
|
|
71
|
+
qlty metrics --all --max-depth=2 --sort complexity --limit 10
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 4. Lint your project
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Run linters on changed files on your current branch
|
|
78
|
+
qlty check
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Run linters on all files
|
|
83
|
+
qlty check --all
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Run only the shellcheck linter on all files
|
|
88
|
+
qlty check --all --filter=shellcheck
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Run linters on the web/ folder
|
|
93
|
+
qlty check web/
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 5. Auto-format your code
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Auto-format changed files on your current branch
|
|
100
|
+
qlty fmt
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## System requirements
|
|
104
|
+
|
|
105
|
+
> **Source:** <https://docs.qlty.sh/cli/system-requirements.md> (retrieved 2026-08-26).
|
|
106
|
+
|
|
107
|
+
The Qlty CLI runs on macOS and Linux on X64 and ARM64. Note that the quickstart page and the
|
|
108
|
+
system-requirements page disagree about Windows: the quickstart says "Windows support is in
|
|
109
|
+
development" while the system-requirements table lists Windows 11+ on X86 as supported. Verify
|
|
110
|
+
Windows behavior against the live docs rather than relying on either statement.
|