qa-engineer 0.9.0 → 0.9.1
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/LICENSE +1 -1
- package/README.md +2 -2
- package/package.json +1 -1
- package/packages/installer/README.md +1 -1
- package/packages/installer/lib/commands/doctor.mjs +6 -6
- package/packages/installer/lib/commands/install.mjs +1 -1
- package/packages/installer/lib/commands/onboard.mjs +2 -2
- package/packages/installer/lib/core/wrappers.mjs +4 -4
- package/packages/installer/lib/ui/theme.mjs +1 -1
- package/packages/installer/package.json +1 -1
- package/packages/installer/schemas/qa-lock.schema.json +1 -1
- package/packages/installer/schemas/qa.config.schema.json +1 -1
- package/shared/analysis/lib/qa_analysis/branding.json +1 -1
- package/skills/qa/README.md +1 -1
- package/skills/qa/SKILL.md +1 -1
- package/skills/qa-example/SKILL.md +1 -1
- package/skills/qa-example/contracts/self-check-report.schema.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2026 QA
|
|
3
|
+
Copyright (c) 2026 QA Engineer Pack contributors
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# QA
|
|
1
|
+
# QA Engineer Pack
|
|
2
2
|
|
|
3
3
|
> Teach your AI coding assistant to work like a senior QA engineer — and stop it from telling you tests pass when they don't.
|
|
4
4
|
|
|
@@ -503,6 +503,6 @@ One volunteer maintainer, no SLA. [MAINTAINERS.md](MAINTAINERS.md) says what tha
|
|
|
503
503
|
|
|
504
504
|
## Licence
|
|
505
505
|
|
|
506
|
-
[MIT](LICENSE) © QA
|
|
506
|
+
[MIT](LICENSE) © QA Engineer Pack contributors. Use it commercially, fork it, modify it.
|
|
507
507
|
|
|
508
508
|
Designed and developed by [Abisheik](https://abisheik.dev).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @qa-engineer/installer
|
|
2
2
|
|
|
3
|
-
Copy-based installer for the QA
|
|
3
|
+
Copy-based installer for the QA Engineer Pack. Installs Agent Skills into `.agents/skills/` and `.claude/skills/`, writes `qa-lock.json`, and generates thin slash wrappers for agents that need them. **No skill code runs at install time.**
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
@@ -30,7 +30,7 @@ export async function runDoctor(argv, { log } = {}) {
|
|
|
30
30
|
if (opts.help) {
|
|
31
31
|
logger.result(`Usage: qa doctor [--project <dir>] [--json]
|
|
32
32
|
|
|
33
|
-
Diagnose environment and QA
|
|
33
|
+
Diagnose environment and QA Engineer Pack installation.
|
|
34
34
|
Each failure includes an exact repair command.`);
|
|
35
35
|
return EXIT.OK;
|
|
36
36
|
}
|
|
@@ -90,7 +90,7 @@ Each failure includes an exact repair command.`);
|
|
|
90
90
|
if (validation) {
|
|
91
91
|
for (const c of validation.checks) {
|
|
92
92
|
checklist.push({
|
|
93
|
-
section: 'QA
|
|
93
|
+
section: 'QA Engineer Pack',
|
|
94
94
|
id: c.id,
|
|
95
95
|
ok: c.ok,
|
|
96
96
|
message: c.message,
|
|
@@ -99,14 +99,14 @@ Each failure includes an exact repair command.`);
|
|
|
99
99
|
}
|
|
100
100
|
} else {
|
|
101
101
|
checklist.push({
|
|
102
|
-
section: 'QA
|
|
102
|
+
section: 'QA Engineer Pack',
|
|
103
103
|
id: 'lockfile',
|
|
104
104
|
ok: false,
|
|
105
105
|
message: 'no qa-lock.json',
|
|
106
106
|
hint: 'run: qa install',
|
|
107
107
|
});
|
|
108
108
|
checklist.push({
|
|
109
|
-
section: 'QA
|
|
109
|
+
section: 'QA Engineer Pack',
|
|
110
110
|
id: 'skills',
|
|
111
111
|
ok: false,
|
|
112
112
|
message: 'skills not installed',
|
|
@@ -124,7 +124,7 @@ Each failure includes an exact repair command.`);
|
|
|
124
124
|
const packages = bundlePackagesForSkill(bundledSkill);
|
|
125
125
|
const result = verifyImports({ pythonBin: python.bin, libDir: resolvedLib, packages });
|
|
126
126
|
checklist.push({
|
|
127
|
-
section: 'QA
|
|
127
|
+
section: 'QA Engineer Pack',
|
|
128
128
|
id: 'engine-imports',
|
|
129
129
|
ok: result.ok,
|
|
130
130
|
message: result.ok ? 'bundled engine runs cleanly' : `engine check failed: ${result.stderr}`,
|
|
@@ -160,7 +160,7 @@ Each failure includes an exact repair command.`);
|
|
|
160
160
|
};
|
|
161
161
|
|
|
162
162
|
if (!opts.json) {
|
|
163
|
-
logger.step(`QA
|
|
163
|
+
logger.step(`QA Engineer Pack doctor — ${VERSION}`);
|
|
164
164
|
logger.step(`project ${root}`);
|
|
165
165
|
let section = '';
|
|
166
166
|
for (const item of checklist) {
|
|
@@ -271,7 +271,7 @@ export async function runInstall(argv, { log } = {}) {
|
|
|
271
271
|
if (opts.help) {
|
|
272
272
|
logger.result(`Usage: qa install [--agent <id>]... [--force] [--dry-run] [--yes] [--json] [--project <dir>]
|
|
273
273
|
|
|
274
|
-
Copy QA
|
|
274
|
+
Copy QA Engineer Pack skills into Agent Skills discovery paths
|
|
275
275
|
(.agents/skills/ and .claude/skills/ when applicable), write qa-lock.json,
|
|
276
276
|
and generate thin slash wrappers for agents that need them.`);
|
|
277
277
|
return EXIT.OK;
|
|
@@ -65,7 +65,7 @@ async function guidedFirstRun(ui, { skip }) {
|
|
|
65
65
|
);
|
|
66
66
|
await ui.confirm('Continue when done', { initialValue: true });
|
|
67
67
|
|
|
68
|
-
ui.success('Your QA
|
|
68
|
+
ui.success('Your QA Engineer Pack is fully operational.');
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
export async function runOnboard(argv, { log } = {}) {
|
|
@@ -90,7 +90,7 @@ Options:
|
|
|
90
90
|
const ui = createUi({ quiet: nonInteractive && !opts.json, json: opts.json });
|
|
91
91
|
|
|
92
92
|
if (!nonInteractive) {
|
|
93
|
-
ui.intro('Welcome to QA
|
|
93
|
+
ui.intro('Welcome to QA Engineer Pack');
|
|
94
94
|
ui.logLine('Scanning your environment...');
|
|
95
95
|
} else if (!opts.json) {
|
|
96
96
|
logger.step('Scanning environment (non-interactive)...');
|
|
@@ -25,7 +25,7 @@ const RENDERERS = {
|
|
|
25
25
|
`# ${GENERATED_MARKER}\n` +
|
|
26
26
|
`description = ${quote(desc)}\n` +
|
|
27
27
|
'prompt = """\n' +
|
|
28
|
-
`Apply the ${name} skill from the QA
|
|
28
|
+
`Apply the ${name} skill from the QA Engineer Pack skills, following its procedure.\n` +
|
|
29
29
|
'Treat the following as the user request:\n\n' +
|
|
30
30
|
'{{args}}\n' +
|
|
31
31
|
'"""\n',
|
|
@@ -39,7 +39,7 @@ const RENDERERS = {
|
|
|
39
39
|
`description: ${quote(desc)}\n` +
|
|
40
40
|
'---\n' +
|
|
41
41
|
`<!-- ${GENERATED_MARKER} -->\n\n` +
|
|
42
|
-
`Apply the \`${name}\` skill from the QA
|
|
42
|
+
`Apply the \`${name}\` skill from the QA Engineer Pack to the request below, following its procedure.\n\n` +
|
|
43
43
|
'$ARGUMENTS\n',
|
|
44
44
|
}),
|
|
45
45
|
|
|
@@ -51,7 +51,7 @@ const RENDERERS = {
|
|
|
51
51
|
`description: ${quote(desc)}\n` +
|
|
52
52
|
'---\n' +
|
|
53
53
|
`<!-- ${GENERATED_MARKER} -->\n\n` +
|
|
54
|
-
`Apply the \`${name}\` skill from the QA
|
|
54
|
+
`Apply the \`${name}\` skill from the QA Engineer Pack to the current request, following its procedure.\n`,
|
|
55
55
|
}),
|
|
56
56
|
|
|
57
57
|
// Antigravity workflow (Markdown). Format is not yet verified against primary
|
|
@@ -64,7 +64,7 @@ const RENDERERS = {
|
|
|
64
64
|
`description: ${quote(desc)}\n` +
|
|
65
65
|
'---\n' +
|
|
66
66
|
`<!-- ${GENERATED_MARKER} -->\n\n` +
|
|
67
|
-
`Apply the \`${name}\` skill from the QA
|
|
67
|
+
`Apply the \`${name}\` skill from the QA Engineer Pack to the request below, following its procedure.\n\n` +
|
|
68
68
|
'$ARGUMENTS\n',
|
|
69
69
|
}),
|
|
70
70
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "urn:qa-pack:config:qa-lock:1",
|
|
4
|
-
"title": "QA
|
|
4
|
+
"title": "QA Engineer Pack install lockfile",
|
|
5
5
|
"description": "qa-lock.json records exactly what was installed and a hash per file, so an install can be verified, updated, or removed without guessing. Written by the installer; not hand-edited.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "urn:qa-pack:config:qa-config:1",
|
|
4
|
-
"title": "QA
|
|
4
|
+
"title": "QA Engineer Pack project configuration",
|
|
5
5
|
"description": "The optional qa.config.json written at a project root. Every field has a documented default; the file exists only to override those defaults. See docs/architecture/ADR-0015-configuration-contract.md.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "The single source of truth for product attribution in human-readable reports. Every renderer reads this file; no branding string is hardcoded anywhere else in the repository, and scripts/check-branding.mjs fails if one appears. Changing the footer means editing this file only.",
|
|
3
|
-
"projectName": "QA
|
|
3
|
+
"projectName": "QA Engineer Pack",
|
|
4
4
|
"tagline": "AI-First Deterministic QA Engineering Platform",
|
|
5
5
|
"author": "Abisheik",
|
|
6
6
|
"website": "https://abisheik.dev",
|
package/skills/qa/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# QA Router
|
|
2
2
|
|
|
3
|
-
The public entry point for the QA
|
|
3
|
+
The public entry point for the QA Engineer Pack. Type `/qa` with a request and it routes you to the skill that owns the task — so you never have to memorize the command surface. It does no QA work itself; it classifies intent and hands off.
|
|
4
4
|
|
|
5
5
|
## Invocation
|
|
6
6
|
|
package/skills/qa/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qa
|
|
3
3
|
description: >-
|
|
4
|
-
Entry point for the QA
|
|
4
|
+
Entry point for the QA Engineer Pack that routes a request to the
|
|
5
5
|
right QA skill. Use when you are unsure which QA command fits, when you
|
|
6
6
|
open with /qa and no specific task, or when a request spans several QA
|
|
7
7
|
skills and needs directing to the correct one.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qa-example
|
|
3
3
|
description: >-
|
|
4
|
-
Reference implementation of the QA
|
|
4
|
+
Reference implementation of the QA Engineer Pack skill format and a
|
|
5
5
|
lightweight installation self-check. Use when validating that pack
|
|
6
6
|
skills are correctly installed, discoverable, and readable in an
|
|
7
7
|
agent, or when learning the pack's skill format from a working
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "urn:qa-pack:contract:qa-example:self-check-report:1",
|
|
4
4
|
"title": "qa-example self-check report",
|
|
5
|
-
"description": "Asserts the readability state of an installed QA
|
|
5
|
+
"description": "Asserts the readability state of an installed QA Engineer Pack skill: whether the skill's own references and contract could be read end to end. Classification is action-oriented: pass requires nothing, degraded means specific files need reinstalling, fail means the installation is untrustworthy and should be redone.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": ["contract", "skill", "generatedAt", "summary", "classification", "evidence"],
|