@jrpool/kilotest 33.0.1 → 33.0.2
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/AI-TOOL.md +45 -154
- package/llms-full.txt +33 -6
- package/package.json +1 -1
package/AI-TOOL.md
CHANGED
|
@@ -45,8 +45,11 @@ The external actions that have been taken to support the use of Kilotest as an A
|
|
|
45
45
|
- A [request](https://rapidapi.com/studio/api_91f2ce07-2572-48bd-a34d-ff01ed6cd039/publish/general) to add Kilotest to the Rapid API Hub.
|
|
46
46
|
- An [issue](https://github.com/APIs-guru/openapi-directory/issues/2677) to add Kilotest to `openapi-directory`.
|
|
47
47
|
- A [pull request](https://github.com/w3c/wai-evaluation-tools-list/pull/1153) to add Kilotest to the WAI evaluation tools list.
|
|
48
|
-
- [Configuration of Claude Desktop](https://github.com/ivo-toby/mcp-openapi-server#option-1-using-with-claude-desktop-stdio-transport) on the local development host to connect Claude Desktop models to Kilotest tools.
|
|
49
48
|
- Deployment of an MCP server in HTTP mode on the Kilotest service host.
|
|
49
|
+
- Configuration of Claude Desktop on the local development host and the `claude.ai` web application to connect Claude Desktop models to the Kilotest MCP server. The configuration was performed in the UI of each platform with the addition of Kilotest as a _connector_. The user used the `Customize/Connectors/Add connector/Add custom connector` interface, providing these data before activating the `Add` button:
|
|
50
|
+
|
|
51
|
+
- Name: Kilotest
|
|
52
|
+
- Remote MCP server URL: `https://kilotest.com/mcp`
|
|
50
53
|
|
|
51
54
|
## Use cases
|
|
52
55
|
|
|
@@ -81,190 +84,78 @@ Another benefit is that subsequent increments can be defined incrementally rathe
|
|
|
81
84
|
|
|
82
85
|
In the first increment, the objective was to make Anthropic Claude models use Kilotest to help them answer questions from developers using the Claude Desktop application for use case 3, where the code in question is already deployed as a public web page.
|
|
83
86
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
```json
|
|
87
|
-
"mcpServers": {
|
|
88
|
-
"kilotest": {
|
|
89
|
-
"command": "npx",
|
|
90
|
-
"args": [
|
|
91
|
-
"-y",
|
|
92
|
-
"@ivotoby/openapi-mcp-server",
|
|
93
|
-
"--disable-abbreviation",
|
|
94
|
-
"true"
|
|
95
|
-
],
|
|
96
|
-
"env": {
|
|
97
|
-
"API_BASE_URL": "https://kilotest.com",
|
|
98
|
-
"OPENAPI_SPEC_PATH": "https://kilotest.com/openapi.yaml"
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
That configuration notifies models that Kilotest is available as an MCP server, but does not explain what tools it provides, what they are useful for, or how to use them.
|
|
87
|
+
A locally installed MCP server, `@ivotoby/openapi-mcp-server`, was used. It turned out to be incompatible with Claude Desktop, so even though connections to Kilotest were made and calls to its tools were submitted the responses did not arrive.
|
|
105
88
|
|
|
106
|
-
|
|
89
|
+
The model behavior motivated an architectural change in the MCP server and improvements in the naming and description of the Kilotest tools before the next increment.
|
|
107
90
|
|
|
108
|
-
|
|
91
|
+
#### Increment 2
|
|
109
92
|
|
|
110
|
-
Increment 2
|
|
93
|
+
Increment 2 repeated the exercise of increment 1 with the `claude.ai` web application instead of Claude Desktop, and with the improvements indicated by increment 1 made.
|
|
111
94
|
|
|
112
|
-
|
|
95
|
+
With Kilotest added as a custom connector, the user asked the platform, “I want to know whether the home page of the nonprofit organization named ‘Open Secrets’ has quality defects, such as with accissibility [_sic_] and usability.”
|
|
113
96
|
|
|
114
|
-
|
|
115
|
-
- Remote MCP server URL: `https://kilotest.com/mcp`
|
|
97
|
+
It was discovered that Claude Haiku 4.5 with Extended capability used Kilotest tools, but Claude Haiku 4.5 without Extended capability did not.
|
|
116
98
|
|
|
117
|
-
When the
|
|
99
|
+
When Kilotest was used, it was used appropriately for the task, but the planning was suboptimal, because the model initially stated an intention to recommend the web page for testing instead of first checking for an existing available report on it.
|
|
118
100
|
|
|
119
|
-
|
|
101
|
+
The output to the user was a mixture of Kilotest results with knowledge and judgments of the model. Kilotest results were presented with some selective pruning, interpretation, and advice on what to do.
|
|
120
102
|
|
|
121
|
-
|
|
103
|
+
The trial in increment 2 suggested some opportunities for further improvements:
|
|
122
104
|
|
|
123
|
-
|
|
105
|
+
- Clearer instructions about the sequencing of tool calls
|
|
106
|
+
- Addition of instructions to attribute the interpretive additions by the model to the model or its other sources rather than to Kilotest.
|
|
124
107
|
|
|
125
|
-
|
|
108
|
+
#### Increment 3
|
|
126
109
|
|
|
127
|
-
|
|
128
|
-
The user is asking about the quality of the home page for a nonprofit organization called "Open Secrets," specifically regarding accessibility and usability defects.
|
|
129
|
-
This is asking for a quality assessment of a web page. Looking at my available tools, I have access to Kilotest, which has tools for analyzing web page quality:
|
|
130
|
-
|
|
131
|
-
Kilotest:describeQualityOfOneWebPage — Returns data from a specified Kilotest report about issues of front-end quality
|
|
132
|
-
Kilotest:recommendQualityTestingOfOneWebPage — Recommends a web page for Kilotest to test for front-end quality
|
|
133
|
-
Kilotest:summarizeQualityOfAllTestedWebPages — Returns summary data from every available Kilotest report
|
|
110
|
+
After the above-described improvements were made, a similar exercise, with the home page of a company named “CMT Services”, was performed again in Claude Desktop. In this case Claude Haiku 4.5 succeeded in recognizing the relevance of Kilotest and used its tools, though imperfectly. Instead of using Kilotest to check for an existing report on the page, the model searched for it in a cached file with:
|
|
134
111
|
|
|
135
|
-
|
|
136
|
-
|
|
112
|
+
```bash
|
|
113
|
+
Bash
|
|
114
|
+
jq '.[] | .tested_web_page.description' /Users/pool/.claude/projects/-Users-pool-Documents/18b3821c-b60d-4f63-bf3f-542830ed3bc4/tool-results/toolu_012qMKW66d88vWjp8JKj5qNn.json 2>/dev/null | grep -i "cmt" || echo "CMT Services not found in tested pages"
|
|
137
115
|
```
|
|
138
116
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
The model then output:
|
|
142
|
-
|
|
143
|
-
`I can help you assess the quality of the Open Secrets home page using Kilotest, which specializes in finding accessibility and usability defects. Let me recommend their home page for testing.`
|
|
144
|
-
|
|
145
|
-
After contemplating this errant plan, the model then corrected its thinking and resumed with `Good! I now have access to the Kilotest tools. Let me first check if there's already a report on the Open Secrets home page by calling summarizeQualityOfAllTestedWebPages.`.
|
|
146
|
-
|
|
147
|
-
The thinking record continues with the Kilotest logo and `Summarize quality of all tested web pages`, the `annotations.title` property of the appropriate tool, followed by the complete output of that tool, and then:
|
|
117
|
+
Claude Haiku then incorrectly concluded: `CMT Services hasn't been tested yet. Let me search for their website so I can recommend it for quality testing.` The model asked the user for the URL and said:
|
|
148
118
|
|
|
149
119
|
```text
|
|
150
|
-
|
|
151
|
-
Identifier: 260519T1437-79l
|
|
152
|
-
Creation date: 2026-05-19T14:37:00.000Z (33 days ago from June 21)
|
|
153
|
-
URL: https://www.opensecrets.org/
|
|
154
|
-
Number of issues reported: 80
|
|
155
|
-
Number of HTML elements reported as exhibiting issues: 1631
|
|
156
|
-
Rule engines that reported issues: 9 (Accessibility Checker, Alfa, ASLint, Axe, Editoria11y, Html Checker API, HTML CodeSniffer, QualWeb, Testaro)
|
|
157
|
-
|
|
158
|
-
Now I should call the describeQualityOfOneWebPage tool to get the detailed information about these quality defects.
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
The model then output: `Great news! I found that Open Secrets' home page has already been tested by Kilotest. Let me get the detailed quality report for you.`
|
|
162
|
-
|
|
163
|
-
The thinking record continued with `Synthesized accessibility audit findings to assess website quality defects`, the Kilotest logo, the title of the next tool (`Describe the quality of one web page`), and the complete result of that tool call.
|
|
120
|
+
Once you provide the URL, I'll:
|
|
164
121
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
Perfect! Now I have a detailed report about the Open Secrets home page. Let me synthesize this information to provide a comprehensive answer to the user. The report shows:
|
|
169
|
-
|
|
170
|
-
Total issues: 80
|
|
171
|
-
18 highest priority issues
|
|
172
|
-
23 high priority issues
|
|
173
|
-
10 low priority issues
|
|
174
|
-
29 lowest priority issues
|
|
175
|
-
1,631 HTML elements with issues
|
|
176
|
-
|
|
177
|
-
Key defects include:
|
|
178
|
-
|
|
179
|
-
Images without text (12 elements) - major accessibility issue
|
|
180
|
-
Links without names (4 elements) - critical for accessibility
|
|
181
|
-
Duplicate IDs (689 elements!) - this is a huge problem
|
|
182
|
-
Elements that are focusable but hidden (14 elements)
|
|
183
|
-
Buttons without text (8 elements)
|
|
184
|
-
Poor contrast (60 elements)
|
|
185
|
-
Visible labels not in accessible names (39 elements)
|
|
186
|
-
Invalid roles (28 elements)
|
|
187
|
-
Various usability issues like poor focus indication, small targets, etc.
|
|
188
|
-
|
|
189
|
-
The most critical issues are those marked as "highest priority" which relate to WCAG 2.2 success criteria.
|
|
122
|
+
Recommend their home page for quality testing with Kilotest
|
|
123
|
+
Retrieve the quality report showing accessibility and usability defects
|
|
124
|
+
Provide you with a detailed analysis of any issues found
|
|
190
125
|
```
|
|
191
126
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
The final output to the user was:
|
|
195
|
-
|
|
196
|
-
```markdown
|
|
197
|
-
## Open Secrets Home Page Quality Assessment
|
|
198
|
-
|
|
199
|
-
Based on Kilotest's comprehensive testing of **https://www.opensecrets.org/**, the home page has **significant accessibility and usability defects**. Here's what was found:
|
|
200
|
-
|
|
201
|
-
### Overall Quality Summary
|
|
127
|
+
The user provided the URL, and Claude Haiku then submitted a recommendation to Kilotest to test the page. The submission was successful and, as expected, yielded an error message: `{"error":"A report about the page is already available"}`.
|
|
202
128
|
|
|
203
|
-
-
|
|
204
|
-
- **HTML Elements with Issues:** 1,631
|
|
205
|
-
- **Priority Breakdown:**
|
|
206
|
-
- 18 highest priority issues
|
|
207
|
-
- 23 high priority issues
|
|
208
|
-
- 10 low priority issues
|
|
209
|
-
- 29 lowest priority issues
|
|
129
|
+
The model drew the correct conclusion from this and (contradicting itself) announced: `Great news—there's already a quality report for CMT Services! Let me retrieve it for you.` The model did so and gave the user an appropriate rendition of the results, modulo attribution. The results were introduced with `The Kilotest analysis found 51 quality defects on the CMT Services home page, affecting 163 HTML elements. Here's a breakdown:`. Some mildly interpretive additions, such as calling “high-priority” issues “critical”, were made without attribution, making it easy for a user to infer that they were made by Kilotest tools rather than the model.
|
|
210
130
|
|
|
211
|
-
|
|
131
|
+
The same trial was repeated, with a different website, using Claude Sonnet 4.6 with Low effort. This model immediately checked for and found an already available report and used it in the production of output to the user. The output was somewhat less interpretive than that of Claude Haiku.
|
|
212
132
|
|
|
213
|
-
|
|
214
|
-
- Users cannot understand what images depict
|
|
215
|
-
- Violates WCAG 2.2 criterion 1.1.1
|
|
133
|
+
Increment 3 showed that, after the naming, instructions, and connector configuration were improved, the relatively inexpensive Claude models use Kilotest where appropriate.
|
|
216
134
|
|
|
217
|
-
|
|
218
|
-
- Users can't tell where links lead
|
|
219
|
-
- Impacts navigation understanding
|
|
135
|
+
The misbehavior of Claude Haiku suggested that further improvements in the instructions may improve the utilization of Kilotest, namely:
|
|
220
136
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
- Users may be pointed to wrong page sections
|
|
224
|
-
- Violates WCAG 2.2 criterion 4.1.1
|
|
137
|
+
- a warning not to use cached lists of available reports
|
|
138
|
+
- stronger advice to avoid implicitly attributing interpretations, judgments, and advice to Kilotest.
|
|
225
139
|
|
|
226
|
-
|
|
227
|
-
- Keyboard-only users cannot navigate properly
|
|
228
|
-
- Disrupts keyboard accessibility
|
|
140
|
+
#### Increment 4
|
|
229
141
|
|
|
230
|
-
|
|
231
|
-
- Users cannot understand button purposes
|
|
142
|
+
The first trial in which the user asked about a page **without** an available report repeated the conditions of Increment 3, except for the web page in question and the model. The model here was Claude Haiku in Extended mode, an option available with `claude.ai` but not Claude Desktop.
|
|
232
143
|
|
|
233
|
-
|
|
234
|
-
- Users can't understand how to use forms
|
|
144
|
+
The user asked: “I want to know whether the home page of Milgard Windows and Doors, at `www.milgard.com`, has quality defects, such as with accessibility and usability.”
|
|
235
145
|
|
|
236
|
-
|
|
237
|
-
- Content is difficult to read
|
|
238
|
-
- Impacts users with low vision
|
|
146
|
+
The model immediately:
|
|
239
147
|
|
|
240
|
-
|
|
148
|
+
- found Kilotest
|
|
149
|
+
- checked for an available report about the page
|
|
150
|
+
- found no report
|
|
151
|
+
- submitted a recommendation to test the page
|
|
241
152
|
|
|
242
|
-
|
|
243
|
-
- **Invalid Roles** (28 elements) — assistive technologies misdescribe content
|
|
244
|
-
- **Missing Submit Buttons** on forms (6 elements)
|
|
245
|
-
- **Nested Controls** (17 elements) — users cannot reliably click intended items
|
|
246
|
-
|
|
247
|
-
### Additional Readability Issues
|
|
248
|
-
|
|
249
|
-
- **Poor Focus Indication** (63 elements) — keyboard users can't see where they are
|
|
250
|
-
- **Small/Close Targets** (7 elements) — difficult to click on mobile or for users with motor disabilities
|
|
251
|
-
- **Low Line Height** (269 elements) — text is cramped and hard to read
|
|
252
|
-
- **Small Font Size** (2 elements)
|
|
253
|
-
- **Absolute Box Sizes** (121 elements) — prevents text enlargement for readability
|
|
254
|
-
|
|
255
|
-
### Test Coverage
|
|
256
|
-
|
|
257
|
-
Nine different accessibility testing engines detected issues, including Accessibility Checker (IBM), Axe (Deque), WAVE (Utah State University), and others. The WAVE tool timed out at 25 seconds, suggesting possible performance issues.
|
|
258
|
-
|
|
259
|
-
### Recommendations
|
|
260
|
-
The **duplicate ID problem** (689 instances) should be addressed first, as it's both widespread and critical to document structure. After that, focus on naming images, links, and form controls, which are foundational accessibility requirements.
|
|
261
|
-
```
|
|
153
|
+
The recommendation was successfully received by the Kilotest service.
|
|
262
154
|
|
|
263
|
-
|
|
155
|
+
During the workflow the model kept the user informed. After the last step, the model summarized the type of report that the user could expect and advised the user to check directly with the Kilotest UI at `https://kilotest.com/targets` in 24 to 48 hours for the results.
|
|
264
156
|
|
|
265
|
-
The
|
|
157
|
+
The behavior of Claude Haiku in Extended mode was nearly perfect. The naming of the page in the recommendation was “Milgard Windows and Doors home page”, whereas “Milgard Windows and Doors” would have followed the existing naming pattern. This deviation suggests adding a specific instruction to name home pages without anything more than the name of the organization.
|
|
266
158
|
|
|
267
|
-
|
|
159
|
+
The most notable fact was that Claude Haiku converted a long workflow to a short one by ending the output with a recommendation to the user to get the test results by self-service. The instructions to models presumed that the user and the model would jointly decide to maintain their relationship until the testing is completed and the model would then interpret the results for the user. Instead, Claude Haiku had enough imagination to suggest a viable workflow not even hinted at by the instructions.
|
|
268
160
|
|
|
269
|
-
|
|
270
|
-
- The possibility of incorrect attribution to Kilotest of the interpretive content provided by the model can be mitigated with disclaimers, such as “Kilotest makes no recommendations about methods or sequences of issue remediation”, or with advice to models to describe their interpretations as theirs.
|
|
161
|
+
This result suggested that the instructions should be revised to describe, as a valid option, a short workflow ending with a recommendation to the user to get the test results by self-service after the model submits a testing recommendation.
|
package/llms-full.txt
CHANGED
|
@@ -29,7 +29,11 @@ The tool that tests web pages for front-end quality has attributes that no other
|
|
|
29
29
|
|
|
30
30
|
The tools that report test results extract from reports statistics and details at various levels of granularity, as required by an agent to fulfill particular requests.
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
## What Kilotest does **not** do for language models
|
|
33
|
+
|
|
34
|
+
The Kilotest tools are (currently) overkill for help in answering specific questions (e.g., “Is the heading structure of this page OK?”) when no report on the page is available, because in such cases you must wait up to a day before testing is completed.
|
|
35
|
+
|
|
36
|
+
Kilotest tools are thin on advice. They give you mostly facts and educated guesses about facts. The reporting uses rough heuristics to classify quality issues into 4 “priorities”, and some rule engines in the Kilotest ensemble include remediation advice when diagnosing rule violations, but Kilotest reporting does not otherwise advise you about the methods, sequences, urgency, or side effects of defect remediation.
|
|
33
37
|
|
|
34
38
|
## How Kilotest integrates methods
|
|
35
39
|
|
|
@@ -87,25 +91,48 @@ Kilotest is implementing a richer suite of capabilities optimized for language m
|
|
|
87
91
|
- purpose: recommend quality testing of one web page about which no report is available
|
|
88
92
|
- path: `/api/testRecForm`
|
|
89
93
|
- payload properties
|
|
94
|
+
|
|
90
95
|
- `what`: description of the page to be tested
|
|
91
96
|
- `url`: URL of the page to be tested
|
|
92
97
|
- `why`: reason for testing the page
|
|
93
|
-
|
|
94
|
-
-
|
|
98
|
+
|
|
99
|
+
- possible responses:
|
|
100
|
+
|
|
101
|
+
- acknowledgment of a successful recommendation
|
|
102
|
+
- error message stating that a report about the recommended page is already available
|
|
103
|
+
- error message stating that the recommendation is invalid
|
|
104
|
+
|
|
105
|
+
- possible Kilotest manager actions after a recommendation:
|
|
106
|
+
|
|
107
|
+
- approval followed by the recommended testing
|
|
108
|
+
- rejection
|
|
109
|
+
|
|
110
|
+
- possible next step if your recommendation succeeds:
|
|
111
|
+
|
|
112
|
+
- You end the workflow by advising the user to check in approximately 1 day for the test results on the Kilotest website, starting at `https://kilotest.com/targets.html`, and drill down as desired for more detailed results. You offer to help interpret the results if needed.
|
|
113
|
+
- You continue the workflow by advising the user to resubmit the same request to you in approximately 1 day.
|
|
95
114
|
|
|
96
115
|
An [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml) is available.
|
|
97
116
|
|
|
98
|
-
|
|
117
|
+
## How to report results to users
|
|
118
|
+
|
|
119
|
+
When you use Kilotest tools, you are free to perform any appropriate interpretation and condensation of the results for presentation to users. However, users expect the sources of facts and interpretations to be truthfully represented. Do not meld facts from Kilotest tools with interpretations of your own with an implied attribution of both to Kilotest.
|
|
120
|
+
|
|
121
|
+
An example of a **poor** attribution is “Here are the results from Kilotest: …. The page is at risk of …. Among all the issues, … are critical and require immediate attention.”
|
|
122
|
+
|
|
123
|
+
An example of a **good** attribution is “Kilotest reported these issues: …. On the basis of these results, I conclude that there is a serious risk of …, and, if you are responsible for maintaining the page, I recommend ….”
|
|
124
|
+
|
|
125
|
+
## More information
|
|
99
126
|
|
|
100
127
|
More information about Kilotest features and internals:
|
|
101
128
|
|
|
102
|
-
|
|
129
|
+
### For language models and AI platforms
|
|
103
130
|
|
|
104
131
|
- [AI-TOOL file](https://github.com/jrpool/kilotest/blob/main/AI-TOOL.md)
|
|
105
132
|
- [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml)
|
|
106
133
|
- [Tool caller for testing](https://github.com/jrpool/kilotest/blob/main/researchAgent.js)
|
|
107
134
|
|
|
108
|
-
|
|
135
|
+
### General
|
|
109
136
|
|
|
110
137
|
- [Introduction to Kilotest](https://kilotest.com/)
|
|
111
138
|
- [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorial.html)
|