@hiver/skills 1.0.7 → 1.0.9

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.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/collections/common/skills/discuss-problem/SKILL.md +4 -0
  3. package/collections/extension/agents/build-feature.md +2 -1
  4. package/collections/extension/agents/build-milestone.md +2 -1
  5. package/collections/extension/skills/build-component/SKILL.md +75 -1
  6. package/collections/extension/skills/build-component/palette/colors.md +76 -0
  7. package/collections/extension/skills/build-component/references/v2-components.md +100 -0
  8. package/collections/extension/skills/build-component/references/v2-usage-examples.md +23 -0
  9. package/collections/extension/skills/build-component/typography/variants.md +27 -14
  10. package/collections/mobile/skills/version-bump-up/SKILL.md +66 -0
  11. package/collections/qa-skills/README.md +103 -0
  12. package/collections/qa-skills/qa-suite-guide.html +760 -0
  13. package/collections/qa-skills/skills/hiver-explore/SKILL.md +413 -0
  14. package/collections/qa-skills/skills/hiver-explore/references/spec-template.md +204 -0
  15. package/collections/qa-skills/skills/playwright-gen/SKILL.md +280 -0
  16. package/collections/qa-skills/skills/playwright-gen/references/codegen-conventions.md +100 -0
  17. package/collections/qa-skills/skills/playwright-gen/references/step-mapping.md +137 -0
  18. package/collections/qa-skills/skills/qa-api-author/SKILL.md +204 -0
  19. package/collections/qa-skills/skills/qa-api-author/references/api-areas.md +112 -0
  20. package/collections/qa-skills/skills/qa-api-run/SKILL.md +178 -0
  21. package/collections/qa-skills/skills/qa-bugs/SKILL.md +82 -0
  22. package/collections/qa-skills/skills/qa-eval/SKILL.md +123 -0
  23. package/collections/qa-skills/skills/qa-eval/references/deterministic-checks.md +89 -0
  24. package/collections/qa-skills/skills/qa-kit/SKILL.md +228 -0
  25. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/INDEX.md +31 -0
  26. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/INDEX.md +90 -0
  27. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/account-security.md +44 -0
  28. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/apps-integrations.md +43 -0
  29. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/automate-workflows.md +65 -0
  30. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/collaborate.md +36 -0
  31. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/customer-relationships.md +20 -0
  32. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/getting-started.md +31 -0
  33. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/hiver-ai.md +79 -0
  34. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/multichannel-support.md +82 -0
  35. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/reporting-analytics.md +35 -0
  36. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/self-service.md +23 -0
  37. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/sla-policies.md +30 -0
  38. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/hig/troubleshooting.md +27 -0
  39. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/INDEX.md +45 -0
  40. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/account-security.md +13 -0
  41. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/apps-integrations.md +15 -0
  42. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/automate-workflows.md +26 -0
  43. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/collaborate.md +11 -0
  44. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/customer-relationships.md +9 -0
  45. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/getting-started.md +21 -0
  46. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/hiver-ai.md +13 -0
  47. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/identity-access.md +23 -0
  48. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/multichannel-support.md +47 -0
  49. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/reporting-analytics.md +13 -0
  50. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/self-service.md +11 -0
  51. package/collections/qa-skills/skills/qa-kit/knowledge-base/hiver/omni/sla-policies.md +12 -0
  52. package/collections/qa-skills/skills/qa-kit/references/clickup-ticket.md +163 -0
  53. package/collections/qa-skills/skills/qa-kit/references/eval.md +117 -0
  54. package/collections/qa-skills/skills/qa-kit/references/flow-capture.md +147 -0
  55. package/collections/qa-skills/skills/qa-kit/references/handoff-contract.md +159 -0
  56. package/collections/qa-skills/skills/qa-kit/references/hiver-context.md +99 -0
  57. package/collections/qa-skills/skills/qa-kit/references/tracker-format.md +123 -0
  58. package/collections/qa-skills/skills/qa-kit/references/triage-guide.md +105 -0
  59. package/collections/qa-skills/skills/qa-ui-author/SKILL.md +208 -0
  60. package/collections/qa-skills/skills/qa-ui-author/references/test-areas.md +132 -0
  61. package/collections/qa-skills/skills/qa-ui-run/SKILL.md +183 -0
  62. package/collections/web/agents/build-feature.md +2 -2
  63. package/collections/web/agents/build-milestone.md +2 -2
  64. package/collections/web/skills/build-component/SKILL.md +54 -13
  65. package/collections/web/skills/build-component/palette/colors.md +76 -0
  66. package/collections/web/skills/build-component/references/v2-components.md +100 -0
  67. package/collections/web/skills/build-component/references/v2-usage-examples.md +23 -0
  68. package/collections/web/skills/build-component/typography/variants.md +27 -14
  69. package/package.json +1 -1
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: qa-eval
3
+ description: Hiver QA eval and judge — grades the output quality of each agent in a pipeline run against per-agent rubrics, assigns PASS / DEGRADED / FAIL, and writes trace/report.md showing where quality broke. Independent and warn-and-continue. Trigger on qa-eval, grade this run, evaluate the run, check the QA output quality, run the judge.
4
+ ---
5
+ # qa-eval — the output-quality judge
6
+
7
+ You are the **independent inspector** for a QA pipeline run. Every other agent produced an artefact
8
+ and filed a *step record* about it. Your job is to open each artefact, judge it against a **rubric**,
9
+ and say — per agent — whether the output is **PASS / DEGRADED / FAIL**, and where in the pipeline the
10
+ output quality first broke.
11
+
12
+ You are read-only on artefacts. You do **not** fix anything, re-run stages, or block the pipeline.
13
+ You **warn and report.**
14
+
15
+ **Read before you start:**
16
+ - `../qa-kit/references/eval.md` — the rubrics ([B]locking / [Q]uality),
17
+ the step-record schema, and the PASS / DEGRADED / FAIL definitions. This is your grading key.
18
+ - `../qa-kit/references/handoff-contract.md` — the run directory layout.
19
+ - `references/deterministic-checks.md` (in this skill) — the exact commands for the objective checks.
20
+
21
+ Two hard rules:
22
+ 1. **Independence.** Derive each verdict from the artefact itself. Use the agent's `self_check` only
23
+ as a hint to double-check — never as the verdict.
24
+ 2. **Warn, never block.** A FAIL is a loud flag in the report, not a stop. The human decides what to
25
+ do about it.
26
+
27
+ ---
28
+
29
+ ## PHASE 0 — Resolve the run
30
+
31
+ 1. If the user named a run directory, use it. Otherwise read `qa-output/.current-run` → `$RUN_DIR`.
32
+ If neither exists, ask the user which run to grade and stop.
33
+ 2. `ls "$RUN_DIR/steps/"` — these are the step records to grade. If it's empty, report "nothing to
34
+ grade (no step records filed)" and stop.
35
+ 3. Append a line to `$RUN_DIR/logs/qa-eval.jsonl` noting the grading run started.
36
+
37
+ ---
38
+
39
+ ## PHASE 1 — Gather
40
+
41
+ For each `steps/*.json`, load it and note: `skill`, `phase`, `output.artifact` (the file to open),
42
+ `input`, and `self_check`. Build the list in **pipeline order** (hiver-explore → qa-kit → author →
43
+ run → bugs → playwright-gen) so the report reads top-to-bottom like the flow.
44
+
45
+ Also note **expected-but-missing** steps: if the handoff.json shows a track ran (e.g. classification
46
+ was `mixed`) but there's no `qa-api-*` step record, flag that stage as **NO RECORD** — the stage
47
+ either didn't run or forgot to file. Treat NO RECORD as a FAIL-level gap in the rollup.
48
+
49
+ ---
50
+
51
+ ## PHASE 2 — Grade each step
52
+
53
+ For each step record, in order:
54
+
55
+ 1. **Find its rubric** in `eval.md` (the row for that `skill`). Each rubric item is tagged
56
+ **[B]locking** or **[Q]uality**.
57
+ 2. **Deterministic checks first** — run the commands in `references/deterministic-checks.md` for the
58
+ objective [B] items (placeholder scan, tracker column conformance, screenshot-exists, spec
59
+ compiles, etc.). These are exact; don't eyeball them.
60
+ 3. **Judgement checks** — for the subjective items (classification correctness, coverage adequacy,
61
+ observation quality, assertion↔Expected mapping), open the artefact with `Read` and reason against
62
+ the rubric. Be specific about *what* is wrong, not just *that* something is.
63
+ 4. **Decide the verdict** (per `eval.md`):
64
+ - **FAIL** — one or more **[B]** items violated. Name each blocking defect.
65
+ - **DEGRADED** — all [B] satisfied, but one or more **[Q]** items missed. Name the gaps.
66
+ - **PASS** — all [B] and most [Q] satisfied.
67
+ 5. **Write the verdict back** into that `steps/<skill>-<phase>.json` — set `verdict` to
68
+ `{ "grade": "PASS|DEGRADED|FAIL", "defects": ["..."], "checked": ["deterministic items run"] }`.
69
+ You are the only one who fills `verdict`.
70
+
71
+ If an artefact referenced by a step record is **missing**, that step is an automatic **FAIL**
72
+ ("artefact not found — cannot verify").
73
+
74
+ ---
75
+
76
+ ## PHASE 3 — Write the report
77
+
78
+ Write `$RUN_DIR/trace/report.md`:
79
+
80
+ ```
81
+ Run <run-id> — output quality
82
+ <skill> <phase> <PASS|DEGRADED|FAIL> <one-line defect, or "—">
83
+ ...
84
+ Rollup: output quality broke at <first FAIL: skill/phase>. Root defect: <...>.
85
+ (If no FAIL: "all stages PASS/DEGRADED — no blocking defects.")
86
+ Missing stages: <NO RECORD list, or "none">
87
+ Policy: warn-and-continue — pipeline was not halted.
88
+ Counts: <n> PASS · <n> DEGRADED · <n> FAIL · <n> NO RECORD
89
+ ```
90
+
91
+ Order rows in pipeline order. The **rollup names the FIRST FAIL** — that is where the workflow's
92
+ output quality broke. Keep each defect line concrete and short.
93
+
94
+ ---
95
+
96
+ ## PHASE 4 — Tell the user
97
+
98
+ Print a compact summary to chat (the table + the rollup line) and the path to `report.md`. Then:
99
+
100
+ - If everything is PASS/DEGRADED: say so plainly.
101
+ - If there's a FAIL: state where it broke and **suggest** (don't perform) the fix — e.g. "re-run
102
+ qa-ui-run for TC-14,17,19 to capture the missing verdicts." Never re-run it yourself; never edit
103
+ the artefact.
104
+
105
+ That's it. You graded the outputs, wrote the report, and left every artefact untouched.
106
+
107
+ ---
108
+
109
+ ## When you run
110
+
111
+ - **Automatically** at the end of a pipeline — the last track/automation skill invokes you. It is
112
+ **safe to re-run**: you simply re-grade whatever step records exist now and rewrite `report.md`. In
113
+ a mixed run you may be invoked twice; the last invocation (with all step records present) is the
114
+ authoritative report.
115
+ - **On demand** — the user asks to grade a run.
116
+
117
+ ## CODE QUALITY RULES
118
+ - Never modify any artefact (tracker, spec, tickets, specs). Read-only except for `verdict` in the
119
+ step records and `trace/report.md` + your action log.
120
+ - Never invoke another skill or re-run a stage. You judge; you don't fix.
121
+ - Never block. FAIL is a report line, not a halt.
122
+ - If a rubric item is genuinely ambiguous for a feature, say so in the defect text rather than
123
+ guessing a hard FAIL.
@@ -0,0 +1,89 @@
1
+ # Deterministic checks — exact commands for the objective rubric items
2
+
3
+ These are the checks qa-eval runs by **command**, not by eyeballing. Each returns a clear pass/fail
4
+ so the [B]locking items are graded exactly. Run them from the repo root; `$RUN_DIR` is the resolved
5
+ run directory. Reserve model judgement for the subjective items only.
6
+
7
+ ---
8
+
9
+ ## spec.md (hiver-explore)
10
+ - **No unfilled placeholders** — must return nothing:
11
+ ```bash
12
+ grep -nE '<[^>]+>' "$SPEC" | grep -vE '```' || echo "OK: no placeholders"
13
+ ```
14
+ - **Every claim tagged** — there should be no bullet describing behaviour without a `[D]`/`[L]`/`[D+L]`
15
+ tag. Spot-check with:
16
+ ```bash
17
+ grep -nE '^\s*[-*]' "$SPEC" | grep -vE '\[(D|L|D\+L|D≠L)\]' | head
18
+ ```
19
+ Lines returned are candidates for a missing tag (not all are violations — judge headers vs claims).
20
+
21
+ ## tracker.xlsx (qa-ui-author / qa-api-author, and results columns for -run)
22
+ Use python + openpyxl (already a project dep). Template:
23
+ ```bash
24
+ python3 - "$TRACKER" <<'PY'
25
+ import sys, openpyxl
26
+ wb = openpyxl.load_workbook(sys.argv[1]); ws = wb.worksheets[0]
27
+ rows = list(ws.iter_rows(values_only=True))
28
+ header = [str(c or '') for c in rows[0]]
29
+ print("COLUMNS:", header)
30
+ # 1) required columns present (UI): TC ID, Test Case, Priority, Pre-conditions, Test Steps, Expected Result
31
+ # 1b) API block: Method, Endpoint, Auth/Role, Expected Status, Expected Response
32
+ # 2) placeholder text left in any cell
33
+ bad = [(i+2, c) for i,r in enumerate(rows[1:]) for c in r if isinstance(c,str) and c.strip().startswith('<') and c.strip().endswith('>')]
34
+ print("PLACEHOLDER CELLS:", bad[:10])
35
+ # 3) rows missing Priority or Expected (blank required cells)
36
+ print("ROW COUNT:", len(rows)-1)
37
+ PY
38
+ ```
39
+ - **[B] required columns present** — check `COLUMNS` against the list in the comment (UI vs API block).
40
+ - **[B] no placeholder cells** — `PLACEHOLDER CELLS` must be empty.
41
+ - **[Q] case count vs effort** — compare `ROW COUNT` to the effort in handoff.json (smoke ~8–12,
42
+ standard ~20–40, exhaustive = full). Under-count for the effort → DEGRADED.
43
+
44
+ ## Testing-1 verdicts (qa-ui-run / qa-api-run)
45
+ Every non-`⏭️` case must have a verdict in the "Initial Behaviour – Testing 1" column.
46
+ ```bash
47
+ python3 - "$TRACKER" <<'PY'
48
+ import sys, openpyxl
49
+ wb = openpyxl.load_workbook(sys.argv[1]); ws = wb.worksheets[0]
50
+ rows = list(ws.iter_rows(values_only=True)); header=[str(c or '') for c in rows[0]]
51
+ col = next((i for i,h in enumerate(header) if 'Testing 1' in h), None)
52
+ missing = [r[0] for r in rows[1:] if col is not None and (r[col] in (None,'') )]
53
+ print("MISSING TESTING-1 VERDICTS:", missing)
54
+ PY
55
+ ```
56
+ - **[B]** `MISSING TESTING-1 VERDICTS` must be empty (or only `⏭️`-marked cases). Any TC with no
57
+ verdict → FAIL ("we don't actually know if it passed").
58
+
59
+ ## screenshots (qa-ui-run)
60
+ For each `❌`/`⚠️` case, an evidence file must exist:
61
+ ```bash
62
+ ls "$RUN_DIR/screenshots/" 2>/dev/null
63
+ ```
64
+ - **[B]** every failing/partial case named in the step record has a matching file. Missing → FAIL.
65
+
66
+ ## playwright spec (playwright-gen)
67
+ - **[B] compiles / is runnable** — must list tests without error:
68
+ ```bash
69
+ cd ~/Documents/poc-playwright && npx playwright test "$SPEC" --list
70
+ ```
71
+ - **[B] no hallucinated page-object methods** — every `page.<method>()` the spec calls must exist:
72
+ ```bash
73
+ # extract called methods, then confirm each is defined in pages/*.page.ts
74
+ grep -oE '\.[a-zA-Z]+\(' "$SPEC" | sort -u
75
+ grep -rn "methodName" ~/Documents/poc-playwright/pages/ | head
76
+ ```
77
+ Any called method not found in a page object → FAIL.
78
+
79
+ ## ClickUp ticket (qa-bugs)
80
+ Judged from the `qa-bugs` step record (which lists the tickets it filed):
81
+ - **[B]** each ticket has Steps-to-Reproduce, Expected, Actual, and an attached screenshot/evidence.
82
+ - **[B]** each ticket maps to a TC that is actually ❌/⚠️ in the tracker.
83
+ These are content checks — read the step record + the ticket body; confirm the fields are non-empty.
84
+
85
+ ---
86
+
87
+ **Rule of thumb:** if a check can be decided by a command (present/absent, empty/non-empty,
88
+ compiles/doesn't), run the command. Only use model judgement for "is this *correct/adequate*" —
89
+ classification correctness, coverage, observation quality.
@@ -0,0 +1,228 @@
1
+ ---
2
+ name: qa-kit
3
+ description: Hiver QA orchestrator and single front door — gathers inputs (PR/branch, PRD/Confluence spec, Figma), triages the change from the code diff plus a QA interview, classifies it (UI / API / new-API / mixed), sizes the effort (smoke / standard / exhaustive), and routes to the right track. Uses hiver-explore when there is no spec. Trigger on qa this feature, create test cases, test plan, help me test, qa kit, start qa, test this PR, qa this change.
4
+ dependencies: [hiver-explore, qa-ui-author, qa-ui-run, qa-api-author, qa-api-run, qa-bugs, playwright-gen, qa-eval]
5
+ ---
6
+ # qa-kit — Hiver QA Orchestrator
7
+
8
+ You are the **front door** for Hiver testing. QA engineers come to you to test that a feature
9
+ *works*. You drive the workflow to a set of standardized artefacts — so everyone on the team
10
+ produces the same thing in the same format. You don't write the cases yourself; you **triage and
11
+ route** to the specialist tracks, passing them a clean handoff.
12
+
13
+ **Read before starting:**
14
+ - `references/triage-guide.md` — how to classify a change (UI / API / new-API / mixed) and infer
15
+ impacted services from a diff. This is your core logic.
16
+ - `references/hiver-context.md` — Hiver concepts (SM, HIG/Omni, Admin/Agent, personas, extension).
17
+
18
+ > Shared references (`hiver-context.md`, `tracker-format.md`, `clickup-ticket.md`) live in this
19
+ > folder and are read by `qa-ui-author` and `qa-api-author` too. Keep them here as the single source of truth.
20
+
21
+ ---
22
+
23
+ ## The workflow (show this to the user at the start)
24
+
25
+ ```
26
+ you are here ► qa-kit (orchestrator)
27
+ 0 intake → 1 triage → 2 effort + route
28
+ ┌──────────────────┴───────────────────┐
29
+ no spec? ──► hiver-explore │ │
30
+ (build a spec) │ │
31
+ UI / mixed ▼ │ API / new-API / mixed ▼
32
+ ┌───────────────────┐ │ ┌───────────────────┐
33
+ │ qa-ui-author │ │ │ qa-api-author │
34
+ │ → qa-ui-run │ │ │ → qa-api-run │
35
+ │ → qa-bugs │ │ │ → qa-bugs │
36
+ └─────────┬─────────┘ │ └───────────────────┘
37
+ ▼ passing cases
38
+ ┌───────────────────┐
39
+ │ playwright-gen │ specs → run → results
40
+ └───────────────────┘
41
+
42
+ qa-eval grades every agent's output at pipeline end → trace/report.md
43
+ ```
44
+
45
+ | Track (routed to) | When | The chain produces |
46
+ |---|---|---|
47
+ | `hiver-explore` | No PRD/Confluence spec exists | A Confluence-style markdown spec |
48
+ | `qa-ui-author` → `qa-ui-run` → `qa-bugs` | UI surface (or mixed) | Word plan + Excel tracker (author) · browser first pass + results (run) · ClickUp tickets (bugs) |
49
+ | `qa-api-author` → `qa-api-run` → `qa-bugs` | API / new-API (or mixed) | API tracker (author) · staging execution (run) · ClickUp tickets (bugs) |
50
+ | `playwright-gen` | After `qa-ui-run`, automate passing cases | Runnable `.spec.ts` + Allure report + tracker results |
51
+ | `qa-eval` | Auto at pipeline end | Output-quality report (PASS/DEGRADED/FAIL) → `trace/report.md` |
52
+
53
+ qa-kit routes to `qa-ui-author` / `qa-api-author`; each track then chains internally to its run + bugs stages.
54
+
55
+ Open with a one-line orientation, e.g.: *"I'll gather what I need, triage the change, and route you to the right track."*
56
+
57
+ ---
58
+
59
+ ## PHASE 0 — Intake
60
+
61
+ ### Resolve or mint the run (Phase-1 contract)
62
+
63
+ Read `../qa-kit/references/handoff-contract.md` (esp. §6) and `.../eval.md`
64
+ first. Before intake, establish the run:
65
+
66
+ - If `qa-output/.current-run` exists (hiver-explore already minted it), read it → `$RUN_DIR`, then
67
+ read `$RUN_DIR/handoff.json`. Its `spec_path`, `feature`, `product`, `qa_owner` may already be
68
+ filled — **don't re-ask for what's there.**
69
+ - Otherwise you are the entry point: mint the run —
70
+ ```bash
71
+ RUN_ID="<slug>-$(date +%Y%m%d-%H%M)"; RUN_DIR="qa-output/<slug>/$RUN_ID"
72
+ mkdir -p "$RUN_DIR"/{steps,logs,handoffs,trace,screenshots}; echo "$RUN_DIR" > qa-output/.current-run
73
+ ```
74
+
75
+ Open your action log at `$RUN_DIR/logs/qa-kit.jsonl` and append a line per meaningful action
76
+ (diff read, classification decided, route chosen).
77
+
78
+ **Ask who the QA owner is** (once, up front): *"Who's running this QA pass? I'll record you as the
79
+ QA owner."* It flows into the Triage Summary, the handoffs, and the tracker. If they don't answer,
80
+ **don't block** — record `qa_owner: unspecified` and carry on; it can be filled in later.
81
+
82
+ Then collect what's available. Don't demand everything — work with what you get and note gaps, but
83
+ **ask generously**: it's cheaper to ask an extra question now than to re-triage later. Ask each of
84
+ the inputs below, and follow up on anything vague.
85
+
86
+ | Input | Required | If missing |
87
+ |---|---|---|
88
+ | **QA owner** (who's testing) | Preferred | Ask once. If unanswered, record `qa_owner: unspecified` and proceed — **don't block**. |
89
+ | What's being tested | YES | Feature name or one-line description of the change. |
90
+ | A spec: PRD / Confluence text / `hiver-explore` markdown | Strongly preferred | If none exists, offer `hiver-explore` (see "No-spec path"). |
91
+ | Spec source: **Atlassian MCP** *or* **pasted PRD** | One of the two | Atlassian MCP pulls the Confluence/Jira spec automatically, but it's **optional** — if it's not connected, just have the QA **paste the PRD/Confluence text** (or point to a `hiver-explore` markdown). Either path is first-class. |
92
+ | GitHub PR link **or** local branch name | Strongly preferred | "Share the PR link or branch — I'll read the diff to classify the change. Without it I'll triage from the spec + your input only." |
93
+ | **Figma link** | Ask every time | "Do you have a Figma link? Please share it — it helps the UI track catch states the spec misses." Ask even for API-looking changes; confirm 'none' explicitly rather than assuming. |
94
+ | Product: HIG / Omni / Both | YES | Infer from the diff/spec, then confirm (see triage-guide). |
95
+
96
+ **Getting the spec — two equal paths, never block on either.** You need the spec *content*; you do
97
+ NOT need any particular tool to get it.
98
+ - If the **Atlassian MCP is connected**, use it to pull the Confluence page / Jira story
99
+ automatically (a lightweight call like `atlassianUserInfo` confirms it's live).
100
+ - If it's **not connected, do NOT pause** — just ask the QA to **paste the PRD / Confluence text
101
+ directly**, or point you at a `hiver-explore` markdown spec. This is a first-class path, not a
102
+ fallback.
103
+
104
+ Only if you have *neither* a connector *nor* any pasted text, note the spec gap and proceed on the
105
+ diff + interview (and offer `hiver-explore`). Never stall a run waiting for a connector.
106
+
107
+ **Product detection:** infer from (a) which repo/paths the PR touches, (b) any `OMNI`/`HIG` tenant
108
+ flags in the diff, (c) the spec's "Plans" field — then **confirm with the QA**. Don't silently guess.
109
+
110
+ ---
111
+
112
+ ## PHASE 1 — Triage (combine ALL sources)
113
+
114
+ This is the heart of the orchestrator. Use **`references/triage-guide.md`**. Combine four sources —
115
+ none alone is enough:
116
+
117
+ 1. **Code diff** (if a PR/branch was given) — the ground truth of what changed:
118
+ - PR: `gh pr view <url-or-number> --json files,title,body` then `gh pr diff <url-or-number>`
119
+ - Local branch: `git diff <base>...<branch>` (base is usually `master`/`main`)
120
+ - These are read-only. Classify changed paths per the triage-guide path→track map.
121
+ 2. **QA interview** — ask the engineer what they think changed and where the risk is. They often know
122
+ context the diff doesn't show. **Ask thoroughly — don't stop at one or two questions.** Cover, as
123
+ relevant:
124
+ - What is the change meant to do, in one line? What problem does it solve?
125
+ - Which part is most likely to break? Where would *you* look first?
126
+ - Is this a new feature, a change to existing behaviour, or a fix?
127
+ - Who is the user — Admin, Agent, or both? Any plan gating (HIG / Omni / Both)?
128
+ - What existing behaviour could this affect (regression risk / adjacent features)?
129
+ - Any third-party apps, integrations, or migrations involved?
130
+ - What test data / accounts / SMs are needed to exercise it?
131
+ - Anything explicitly out of scope for this pass?
132
+ - Is there a Jira ticket or acceptance criteria I should pull via the Atlassian connector?
133
+
134
+ Keep it conversational, but surface everything you're unsure about now rather than after routing.
135
+ 3. **Spec / PRD** — intended behaviour, scope, plans, analytics.
136
+ 4. **Figma** — UI states and flows the spec may omit (UI/mixed changes only).
137
+
138
+ Produce a **Triage Summary** and wait for confirmation:
139
+
140
+ ---
141
+ **QA owner:** [name]
142
+ **Change:** [feature / one-liner]
143
+ **Product:** HIG / Omni / Both *(how determined: diff paths / tenant flag / spec)*
144
+ **Classification:** UI · API · new-API · **mixed** *(pick one)*
145
+ **Why:** [the diff/spec signals that led here — e.g. "touches web/ components + hot-api-mono controller"]
146
+ **Impacted services / areas:** [e.g. `hot-api-mono: channels controller`, `web: right-panel`, `sync-engine`]
147
+ **Key risks:** [from diff + interview — what's most likely to break / highest blast radius]
148
+ **Inputs on hand:** spec [pasted / MCP / none] · PR/branch [yes/no] · Figma [yes/no]
149
+ **Gaps:** [missing inputs or undefined behaviour]
150
+ ---
151
+
152
+ If the QA disagrees with the classification, adjust before routing.
153
+
154
+ ---
155
+
156
+ ## PHASE 2 — Effort Level & Routing Plan
157
+
158
+ Ask the effort level (this flows to the sub-skills and sizes the suite):
159
+
160
+ | Effort | Includes | Use when |
161
+ |---|---|---|
162
+ | **Smoke** | P0 only — "the ~10 that matter" | Hotfix / small change / time-boxed |
163
+ | **Standard** (default) | P0 + P1 | Most features |
164
+ | **Exhaustive** | P0 + P1 + P2 + edge cases | High-risk / release-gating |
165
+
166
+ Then state the **Routing Plan** and confirm:
167
+ - UI change → `qa-ui-author`
168
+ - API / new-API → `qa-api-author`
169
+ - **mixed** → both (`qa-ui-author` for the UI surface, `qa-api-author` for the endpoints)
170
+
171
+ Example: *"Classification: mixed, Standard effort. I'll run qa-ui-author for the right-panel UI and qa-api-author
172
+ for the new `POST /channels` endpoint. Both will use the shared tracker format. Go?"*
173
+
174
+ ---
175
+
176
+ ## PHASE 3 — Handoff & Route
177
+
178
+ Write the machine handoff to **disk** (see `handoff-contract.md` §6), then invoke the sub-skill.
179
+ Do NOT rely on a chat block — the downstream skill reads the file and must not re-ask for anything
180
+ in the cargo.
181
+
182
+ For each track in the routing plan:
183
+
184
+ 1. **Step record** → `$RUN_DIR/steps/qa-kit-triage.json`: `input` (spec, PR, figma), `output`
185
+ `{ "artifact": "handoff.json", "summary": "<classification> · <product> · <effort>" }`,
186
+ `self_check` (classification matches the diff? product confirmed with QA?), `verdict: null`.
187
+ 2. **Handoff** → `$RUN_DIR/handoff.json` with `from: qa-kit`, `to: <qa-ui-author | qa-api-author>`, and
188
+ the cargo: `{ qa_owner, feature, slug, product, classification, effort, impacted_services, risks,
189
+ spec_path, pr, figma, changed_endpoints, live_observations, cases: [], open_questions }`. Copy to
190
+ `$RUN_DIR/handoffs/qa-kit-to-<track>.json`.
191
+ 3. Append the routing decision to `$RUN_DIR/logs/qa-kit.jsonl`.
192
+ 4. Invoke the sub-skill (Skill tool: `skill: qa-ui-author` / `qa-api-author`). It reads `.current-run` →
193
+ `handoff.json`.
194
+
195
+ Then print a one-line human summary, e.g. *"Routed: mixed → qa-ui-author + qa-api-author · standard · run
196
+ qa-output/hiver-notes/hiver-notes-20260710-1010"*.
197
+
198
+ - **Mixed:** write one `handoff.json` per track (`to` differs) and invoke in sequence. Both tracks
199
+ write into the **same run dir** and the **same `tracker.xlsx`** (UI vs API column blocks / sheets).
200
+ - After routing, your job is done unless the user returns with bug confirmations or wants the other
201
+ track. **`qa-eval` runs automatically at the very end of the pipeline** (see `eval.md`).
202
+
203
+ ---
204
+
205
+ ## No-spec path
206
+
207
+ If there's no PRD/Confluence spec and the feature is documented on help.hiverhq.com:
208
+
209
+ 1. Tell the user: *"There's no spec — I'll run `hiver-explore` first to build one, then come back and
210
+ triage."*
211
+ 2. Invoke `hiver-explore` (Skill tool). It writes a markdown spec at
212
+ `…/poc-playwright/knowledgebase-claude/features/<slug>.md`.
213
+ 3. Use that file as the spec input and resume Phase 1.
214
+
215
+ If the feature is brand-new and not on help.hiverhq.com either, tell the user you can triage from the
216
+ PR diff + their interview alone, but the spec gap will show up as open questions.
217
+
218
+ ---
219
+
220
+ ## Notes
221
+
222
+ - This skill uses plain relative `references/…` for its own files. Sibling skills (`qa-ui-author`, `qa-api-author`,
223
+ `hiver-explore`) reach these shared files via `../qa-kit/references/…`,
224
+ which Claude Code expands to the plugin's install path at runtime. Don't add new absolute paths.
225
+ - Don't duplicate test-writing logic here — that lives in `qa-ui-author` / `qa-api-author`. This skill only
226
+ triages and routes. If you find yourself writing test cases, you're in the wrong skill.
227
+ - Keep the artefact format identical across tracks by always deferring to
228
+ `references/tracker-format.md` and `references/clickup-ticket.md`.
@@ -0,0 +1,31 @@
1
+ # Hiver Domain Knowledge Base
2
+
3
+ Structured domain context for the QA skills, split into **two product trees** because Hiver ships two
4
+ distinct products with different help centers, segments, and behaviour:
5
+
6
+ | Tree | Product | When to use |
7
+ |---|---|---|
8
+ | [**hig/**](hig/INDEX.md) | **Hiver in Gmail (HIG)** — Gmail-native, extension in Gmail, email + integrations | The change is on the Gmail product / classic shared-inbox-in-Gmail |
9
+ | [**omni/**](omni/INDEX.md) | **Hiver Omni** — multi-channel (email + chat + Slack + voice + WhatsApp + tickets/web forms), on Gmail **or** Outlook, with SSO/SCIM | The change is on Omni, any non-email channel, Outlook, or identity/SSO |
10
+
11
+ ## How the skills pick a tree
12
+
13
+ 1. **Triage sets the product** (HIG / Omni / Both) — see `../../skills/qa-kit/references/triage-guide.md`.
14
+ 2. Read the matching tree's `INDEX.md`, then the relevant segment file for concepts, roles, and the
15
+ connection map (seeds Section E regression + the Risk Register).
16
+ 3. For **Both**, read the HIG segment file plus the Omni file's "differences" section.
17
+ 4. This KB is a **map, not a manual** — for deep, current, screen-accurate behaviour run `hiver-explore`.
18
+ Every **(unverified)** flag means "confirm live before relying on it."
19
+
20
+ ## Product cheat-sheet
21
+
22
+ - **HIG** = Gmail only; no live chat/Slack/voice/WhatsApp channels; visual surface is the Gmail-injected extension.
23
+ - **Omni** = Gmail **or** Outlook; adds live chat, Slack, voice (Aircall), WhatsApp, tickets, web forms, omnichannel search, My Work; adds **Identity & access (SSO/SCIM)**; per-channel analytics.
24
+ - **Shared across both** (behave the same unless a file says otherwise): assignment, status, tags, views, SLA, automations, notes/drafts, email templates, analytics core, CRM/PM integrations, roles & permissions, billing, security model.
25
+
26
+ ## Provenance
27
+
28
+ Section/article **taxonomy and counts** were captured **live** from both help-center views (the SPA
29
+ blocks WebFetch, so it was read via the browser) — authoritative. **Feature descriptions** were
30
+ reconstructed from the search index, grounded in cited doc URLs; anything search couldn't confirm is
31
+ flagged **(unverified)**. Captured Jul 2026 — re-verify against the live help center over time.
@@ -0,0 +1,90 @@
1
+ # Hiver in Gmail (HIG) — Knowledge Base Index
2
+
3
+ > This is the **HIG (Gmail)** product tree. For the multi-channel product see
4
+ > [`../omni/INDEX.md`](../omni/INDEX.md); to choose a tree, see [`../INDEX.md`](../INDEX.md).
5
+
6
+ A structured domain model of **Hiver in Gmail**, mirroring the **real segmentation of
7
+ help.hiverhq.com** (its 12 top-level sections in the Gmail view, captured live Jul 2026). Gives the QA
8
+ skills baseline domain context: the feature taxonomy, the product matrix, and the **cross-feature
9
+ connection map** for reasoning about regression blast radius.
10
+
11
+ ## How the skills should use this
12
+
13
+ - **`qa-kit` / `qa-ui` / `qa-api`** — read the relevant segment file for a feature's concepts, roles,
14
+ product availability, and connections. Use the **connection map** below to seed Section E
15
+ (regression) and the triage Risk Register.
16
+ - **This KB is a *map*, not a manual.** Feature-level (concepts + relationships), deliberately not
17
+ step-by-step. For deep, current, screen-accurate behaviour, run **`hiver-explore`** — it drives the
18
+ live UI and reads the full article. Every **(unverified)** flag means "confirm via `hiver-explore`."
19
+ - **Provenance:** the section/article taxonomy and counts were captured from the live help center
20
+ (JS-rendered SPA, read via browser). Feature descriptions were reconstructed from the search index
21
+ (WebFetch can't read the SPA body), grounded in real doc URLs cited per feature. Page-body details
22
+ search didn't surface are marked **(unverified)**.
23
+
24
+ ## Segments (mirror help.hiverhq.com's 12 sections)
25
+
26
+ | # | Segment file | Help section (slug) | Sub-cats / articles |
27
+ |---|---|---|---|
28
+ | 1 | [getting-started.md](getting-started.md) | Getting started (`/getting-started`) | 3 / 12 |
29
+ | 2 | [multichannel-support.md](multichannel-support.md) | Offer multi-channel support (`/offer-multi-channel-support`) | 8 / 33 |
30
+ | 3 | [automate-workflows.md](automate-workflows.md) | Automate workflows (`/automate-workflows`) | 1 / 17 |
31
+ | 4 | [sla-policies.md](sla-policies.md) | Manage SLA policies (`/manage-sla-policies`) | 4 |
32
+ | 5 | [collaborate.md](collaborate.md) | Collaborate with your team (`/collaborate-with-your-team`) | 2 / 9 |
33
+ | 6 | [hiver-ai.md](hiver-ai.md) | Hiver AI (`/hiver-ai`) | 2 / 16 |
34
+ | 7 | [self-service.md](self-service.md) | Enable self-service (`/enable-self-service`) | 2 / 8 |
35
+ | 8 | [customer-relationships.md](customer-relationships.md) | Manage customer relationships (`/manage-customer-relationships`) | 1 / 4 |
36
+ | 9 | [reporting-analytics.md](reporting-analytics.md) | Reporting and analytics (`/reporting-and-analytics`) | 2 / 12 |
37
+ | 10 | [apps-integrations.md](apps-integrations.md) | Apps and integrations (`/apps-and-integrations`) | 6 / 21 |
38
+ | 11 | [account-security.md](account-security.md) | Account and security (`/account-and-security`) | 3 / 7 |
39
+ | 12 | [troubleshooting.md](troubleshooting.md) | Troubleshooting Hiver issues (`/troubleshooting`) | 2 / 9 |
40
+
41
+ ## Products
42
+
43
+ - **HIG (Hiver in Gmail)** — Gmail-native; extension injected into Gmail. Default docs.
44
+ - **Omni** — multi-channel (email + live chat + WhatsApp + voice + SMS + social); runs on Gmail and
45
+ Outlook clients. Docs use `?product=hiver-omni`.
46
+ - **Outlook** — Hiver for Outlook client. Docs use `?product=hiver-for-outlook`.
47
+
48
+ Legend for the matrix: ✓ documented · ~ referenced/partial · ? unverified · — n/a
49
+
50
+ | Segment | HIG | Omni | Outlook |
51
+ |---|:---:|:---:|:---:|
52
+ | Getting started / setup | ✓ | ✓ | ✓ |
53
+ | Multi-channel: email | ✓ | ✓ | ✓ |
54
+ | Multi-channel: live chat / WhatsApp / voice | — | ✓ | ~ |
55
+ | Automate workflows | ✓ | ✓ | ✓ |
56
+ | SLA policies | ✓ | ~ | ? |
57
+ | Collaborate (notes/drafts/approvals) | ✓ | ✓ | ~ |
58
+ | Hiver AI | ? | ~ | ? |
59
+ | Self-service (help center / portal) | ? | ✓ | ? |
60
+ | Customer relationships (contacts/CSAT) | ✓ | ~ | ? |
61
+ | Reporting & analytics | ✓ | ✓ | ? |
62
+ | Apps & integrations | ✓ | ✓ | ? |
63
+ | Account & security | ✓ | ✓ | ✓ |
64
+
65
+ ## Cross-feature connection map (regression blast radius)
66
+
67
+ Answers "if I change X, what else might break?" — seeds Section E and the Risk Register.
68
+
69
+ - **Assignment** ↔ Auto-assignment (round robin / responder), Views (Unassigned/Mine/Team), Automations, Notifications, collision reduction, OOO, Analytics (workload/users).
70
+ - **Conversation status** ↔ Views (Pending/Closed), Bulk actions, Automations (auto-close), SLA, Conversations report, AI Thank-you Detector (reopen behaviour).
71
+ - **Tags** ↔ Views (Any/All), Bulk actions, Automations (auto-tag), AI Tagging (AI Triage), Linked Conversations, Tags report.
72
+ - **SLA policies** ↔ Business Hours (timers), Automations (escalation), Overdue/Due Soon views, SLA notifications, SLA report, SLA permissions.
73
+ - **Business Hours** ↔ Auto Responder, SLA timers, Analytics accuracy.
74
+ - **Automations** ↔ Assignment, Status, Tags, SLA/escalation, Round Robin, API Calls, AI Extract/Tasks — broad blast radius.
75
+ - **Email templates** ↔ Shared drafts, compose/reply, Auto Responder, Harvey AI (suggestions).
76
+ - **Notes / @mentions** ↔ Shared drafts, Collaboration Space, notifications, Slack.
77
+ - **Hiver AI** ↔ Ask AI ↔ Knowledge Base (self-service); AI Tagging ↔ Tags; AI Sentiment ↔ Sentiment report; AI Extract/Tasks ↔ Automations; all gated by the Hiver AI add-on.
78
+ - **Integrations (Apps / Custom Connectors)** ↔ per-Shared-Inbox scoping, conversation sidebar/widget, Hiver Contacts, Custom Objects/Fields; auth differs per app (ClickUp one-click; Asana per-user; Jira dedicated; API key Admin-only).
79
+ - **Roles & permissions** ↔ almost everything — gate feature access, SLA/tag/template housekeeping, billing, feature toggles. Broad blast radius by default.
80
+ - **Shared Mailbox setup** ↔ the root primitive; Users & Groups, Business Hours, notifications, automations, SLA, and (Omni) all channels attach to it.
81
+ - **Omni channels (chat / WhatsApp / voice)** ↔ auto-assignment, Hiver Contacts, channel-specific analytics, CSAT; **Custom Dashboards exclude chat**; Live Chat has separate analytics.
82
+
83
+ ## Standing QA caveats worth testing (surfaced during KB build)
84
+
85
+ - **Collision alerts** are documented only for Hiver **Chat**; a real-time *email* collision banner is unverified.
86
+ - **Bulk actions** cap at **50 emails**.
87
+ - **Scheduled analytics exports** are **Enterprise-only**; exportable columns are plan-dependent.
88
+ - **Custom roles** cap at **6 on Elite**; the plan ladder is Growth / Pro / Elite.
89
+ - **Emails are not stored on Hiver servers**; access is OAuth 2.0; cards on Stripe (PCI) — security cases.
90
+ - **"Canned responses"** = Email Templates; **native "Tasks"** = Asana/PM integrations; **"merge conversation"** has no doc; **AI usage dashboard** and **AI Tasks in Automations** have no dedicated docs — treat all as clarify-with-PM / verify-live.
@@ -0,0 +1,44 @@
1
+ # Account & Security
2
+
3
+ > Segment `/account-and-security` — 3 sub-categories, 7 articles. Also the home of admin/roles
4
+ > concepts referenced across the suite. **Provenance:** taxonomy captured live (Jul 2026); detail
5
+ > from the search index. **(unverified)** items need a `hiver-explore` live-UI pass.
6
+
7
+ **Sub-categories:** Security and privacy (3) · Billing (2) · Delete your account (2)
8
+
9
+ ### Roles & Permissions
10
+ - **What it is:** Each user has exactly **one role** that applies across all Shared Inboxes they belong to. Four default roles + custom roles (Elite).
11
+ - **Key concepts:** **Member** (respond to conversations, default), **Admin** (create/configure inboxes, users, roles, account + billing), **Shared Mailbox Admin** (configure their inboxes), **Supervisor** (analytics + housekeeping: delete tags, manage templates). **Custom roles up to 6 (Elite).** Path: Admin Panel → Users & Roles → Roles. Only Admins assign roles.
12
+ - **Roles:** Admin. **Product:** HIG, Omni; Outlook **(unverified)**.
13
+ - **Connected features:** User management, Shared Inbox settings, SLA permissions, feature toggles, Billing.
14
+ - **Source:** https://help.hiverhq.com/account-management/roles-and-permissions
15
+
16
+ ### User Management & Shared Inbox setup
17
+ - **What it is:** Add/manage users (Admin Panel → Users & Roles → Add Users: email, role, Shared Inboxes → invite). Shared Inbox is the core primitive most features attach to (setup, advanced settings, display name, business-hours template, notifications). Users & Groups organize membership for routing.
18
+ - **Roles:** Admin + Shared Mailbox Admin. **Product:** HIG, Omni, Outlook.
19
+ - **Connected features:** Roles, Business Hours, automations, SLA, all channels (Omni), Okta provisioning.
20
+ - **Source:** https://help.hiverhq.com/account-management/create-and-manage-user-accounts · https://help.hiverhq.com/shared-mailbox-management/setting-up-a-shared-mailbox
21
+
22
+ ### Security & Privacy
23
+ - **What it is:** **Emails are not stored on Hiver's servers.** Access via **OAuth 2.0** with explicit delegated permissions per user/mailbox; Hiver never accesses a mailbox unless authorized and **never stores passwords**. Card details are stored on **Stripe (PCI DSS)**, not by Hiver.
24
+ - **Key concepts:** no email storage, OAuth 2.0, delegated permissions, no password storage, Stripe/PCI, mailbox permissions/scopes (Microsoft Admin Center approval for Outlook).
25
+ - **Roles:** both (per-user authorization). **Product:** HIG (Gmail OAuth), Omni/Outlook (Microsoft OAuth).
26
+ - **Connected features:** Gmail/Microsoft OAuth, Shared Mailbox, Billing (Stripe), Data Export.
27
+ - **Source:** https://help.hiverhq.com/security-privacy/do-you-store-my-emails-on-your-servers · https://help.hiverhq.com/account-and-settings/mailbox-permissions-required-by-hiver?product=hiver-omni
28
+
29
+ ### Billing (plans & payment)
30
+ - **What it is:** Manage subscription. Plans: **Growth / Pro / Elite** (trial grants all Elite features; Elite → up to 6 custom roles). Admin Panel → Settings → Account → Upgrade plan → choose team size → billing address + card. Only Admins manage billing.
31
+ - **Roles:** Admin only. **Product:** **(unverified per-product)**.
32
+ - **Connected features:** Roles (custom-role caps + Admin gate), licenses/users, Security (Stripe), feature toggles.
33
+ - **Source:** https://help.hiverhq.com/billing-and-payment/purchase-your-hiver-subscription
34
+
35
+ ### Delete Account & Data Export
36
+ - **What it is:** Request account deletion via Admin Panel. Users can **export the data Hiver stores** — only a role with Shared Mailbox settings access can export.
37
+ - **Roles:** Admin (delete); export needs Shared Mailbox settings permission. **Product:** **(unverified per-product)**.
38
+ - **Connected features:** Data export, Roles & permissions, Security & privacy.
39
+ - **Source:** https://help.hiverhq.com/account-management/delete-hiver-account · https://help.hiverhq.com/account-management/hiver-data-export
40
+
41
+ ### Feature toggles & Mailbox permissions
42
+ - **What they are:** Account-wide **enable/disable** of specific features (account-settings permission). **Mailbox permissions** documents the Google/Microsoft OAuth scopes Hiver requires.
43
+ - **Roles:** Admin. **Product:** HIG, Omni, Outlook.
44
+ - **Source:** https://help.hiverhq.com/account-management/enabling-or-disabling-specific-feature