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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 QA Automation Pack contributors
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 Automation Pack
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 Automation Pack contributors. Use it commercially, fork it, modify it.
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
  {
2
2
  "name": "qa-engineer",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "A vendor-neutral Agent Skills pack that teaches AI coding agents to work like senior QA automation engineers.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  # @qa-engineer/installer
2
2
 
3
- Copy-based installer for the QA Automation 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.**
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 Automation Pack installation.
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 Automation Pack',
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 Automation Pack',
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 Automation Pack',
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 Automation Pack',
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 Automation Pack doctor — ${VERSION}`);
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 Automation Pack skills into Agent Skills discovery paths
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 Automation Pack is fully operational.');
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 Automation Pack');
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 Automation Pack skills, following its procedure.\n` +
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 Automation Pack to the request below, following its procedure.\n\n` +
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 Automation Pack to the current request, following its procedure.\n`,
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 Automation Pack to the request below, following its procedure.\n\n` +
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
  };
@@ -14,7 +14,7 @@ export function createUi({ quiet = false, json = false } = {}) {
14
14
 
15
15
  return {
16
16
  log,
17
- intro(message = 'Welcome to QA Automation Pack') {
17
+ intro(message = 'Welcome to QA Engineer Pack') {
18
18
  if (quiet || json) return;
19
19
  p.intro(message);
20
20
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qa-engineer/installer",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "The qa-engineer installer: agent detection, copy-based install, lockfile integrity, and wrapper generation.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -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 Automation Pack install lockfile",
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 Automation Pack project configuration",
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 Automation Pack",
3
+ "projectName": "QA Engineer Pack",
4
4
  "tagline": "AI-First Deterministic QA Engineering Platform",
5
5
  "author": "Abisheik",
6
6
  "website": "https://abisheik.dev",
@@ -1,6 +1,6 @@
1
1
  # QA Router
2
2
 
3
- The public entry point for the QA Automation 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.
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
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: qa
3
3
  description: >-
4
- Entry point for the QA Automation Pack that routes a request to the
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 Automation Pack skill format and a
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 Automation 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.",
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"],