Skip to content

Qa engineering requirements skills#129

Merged
isolomatov-gd merged 22 commits into
mainfrom
qa-engineering-requirements-skills
Jul 13, 2026
Merged

Qa engineering requirements skills#129
isolomatov-gd merged 22 commits into
mainfrom
qa-engineering-requirements-skills

Conversation

@sveto

@sveto sveto commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Earlier drafts scattered QA-engineering modes across general-purpose skills and a standalone scenarios-generation skill — coupling unrelated skills to QA specifics and duplicating conventions. This PR consolidates the whole QA-engineering flow into a single active skill, qa-knowledge, which owns both the active mode routing and the shared reference material it reads on demand. testing stays a general-purpose test-writing skill (untouched here), and no QA modes bleed into general-purpose skills anymore. The standalone scenarios-generation skill is dropped.

Key changes

qa-knowledge — the single active QA-engineering skill

  • Now active (disable-model-invocation: false, user-invocable: true); runs the QA flow over the knowledge base it owns and emits into the provided artifact contract (never invents shape or path).
  • <mode_selection> router: pick exactly one of six modes by deliverable, with a no-clean-match fallback (name the closest mode and confirm, never silently pick).
  • Six modes: code_analysis, synthesis, gap_analysis, scenario_design, implementation_modes, and test_execution_triage.
  • <dependencies>: reverse-engineering is a prereq for code_analysis; coding / debugging / sensitive-data used at point of use; QA paths & identifiers acquired from qa-structure.
  • <core_concepts>: lazy point-of-use loading, per-value honesty, total coverage, fail-closed redaction.
  • <validation_checklist>: a per-mode self-check for all six modes.
  • <resources>: a point-of-use router over assets (artifact skeletons) and references (conventions/catalogs), loaded via READ SKILL FILE, never all at once.

qa-knowledge references (9 new)

analysis-modes, gap-analysis-catalogs, gwt-spec, implementation-examples, synthesis-catalogs, test-execution-triage, testrail-format, testrail-export, vendor-fork-guide — the shared reference material each mode reads on demand. TMS format/export are vendor bindings (TestRail shipped) with a vendor-fork-guide for retargeting.

Also included

  • coding-agents-prompt-authoring: added a <rosetta_canonical_lists> pointer section (the docs/definitions/*.md lists to consult when the target IS Rosetta) and tightened the prompt-classification definitions (skills/subagents are dynamically loaded on demand).
  • data-collection vendor bindings: removed redundant "base SKILL.md owns the general method" meta-comments (dedup, no behavior change).
  • qa-structure, qa-knowledge assets: minor convention/path fixes; test-spec-template now points to gwt-spec instead of restating the ATC format (DRY).
  • docs/definitions/skills.md: dropped scenarios-generation.

Note for Github Bot

Cross-skill convention (READ SKILL FILE / typed aliases) and the two-location template sync are handled elsewhere. Not touching workflows in this PR — the QA workflows (api-qa / ui-qa / testgen flows) that consume these skills are repointed in a follow-up PR.

@sveto sveto marked this pull request as ready for review July 7, 2026 19:00
@github-actions github-actions Bot added the enhancement New feature or request label Jul 7, 2026
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: This PR adds the QA/TG skills layer by introducing a new scenarios-generation skill and extending five existing skills (debugging, requirements-authoring, requirements-use, reverse-engineering, testing) with additive QA-specific modes using the progressive-disclosure pattern (thin SKILL.md + verbose references loaded on demand). All changes are inert until explicitly invoked by a QA/TG flow.

Findings:

[Instruction Quality — Medium] scenarios-generation/SKILL.md is missing required frontmatter fields disable-model-invocation and user-invocable. Per docs/schemas/skill.md, both must be set explicitly; every other skill touched in this PR sets them. Omission leaves platform-dependent default behavior on a model-invocable skill.

Fix: add disable-model-invocation: false and user-invocable: true to the frontmatter.

[Instruction Quality — Medium] scenarios-generation/references/testrail-export.md defines its own destructive-write approval protocol (a/b/c prompt, re-ask, default-cancel) that diverges from the centralized HITL gate in bootstrap-hitl-questioning.md. Two competing approval vocabularies can leave an agent unsure which governs a live TestRail write.

Fix: defer to the bootstrap HITL gate explicitly ("apply HITL per bootstrap-hitl-questioning.md before this write") rather than re-deriving fallback/ambiguity-handling semantics locally.

[Architecture — Medium] None of the new modes are wired into any r3 workflow phase (aqa-flow-*, testgen-flow-*). Each mode's contract relies on "the calling phase" supplying artifact shape, taxonomy, and output path — but no phase currently does. Not a regression (all existing paths confirmed untouched), but the QA/TG skills layer isn't reachable from QA workflows yet.

Suggestion: open a follow-up PR to wire aqa-flow-*/testgen-flow-* phases; call this out in the PR description so it isn't mistaken for complete delivery.

[Low] Naming of the two new requirements-authoring reference files is inverted — requirement-catalogs.md holds the general authoring catalogs; authoring-catalogs.md holds only synthesis-mode schemas. Low risk (SKILL.md links by explicit path), but could mislead future maintainers.

Suggestion: rename to e.g. synthesis-schemas.md in a later pass.

Positive observations:

  • The "additive, existing paths untouched" claim holds — all removals traced to DRY consolidation into pre-existing assets (no information loss).
  • Evidence-labeling (Confirmed/Assumption/Unknown) in debugging and test-execution-triage is precise and well-grounded.
  • scenarios-generation per-value honesty rules and no-silent-drop coverage contracts are strong safety patterns.
  • Removal of stale resource references (requirements-flow, requirements-use-flow) is correct — those workflows do not exist in r3.
  • All <validation_checklist> and <pitfalls> sections updated to cover the new modes.

Suggestions (optional):

  • Address the scenarios-generation/SKILL.md frontmatter gap before merge (trivial one-liner).
  • Track the workflow-wiring follow-up as a separate PR to keep this one reviewable.
  • Consider renaming authoring-catalogs.mdsynthesis-schemas.md to match its content.

Automated triage by Rosetta agent

@sveto sveto closed this Jul 7, 2026
@sveto sveto reopened this Jul 7, 2026
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: Adds scenarios-generation (new skill) and QA/TG mode extensions to debugging, reverse-engineering, testing, requirements-authoring, and requirements-use — preparing the skills layer for upcoming API-QA / UI-QA / TestGen flows. The batch is well-hardened overall; one schema regression requires a fix before merge.

Findings:

  • [Schema violation] instructions/r3/core/skills/requirements-authoring/assets/ra-requirement-unit.xml — the PR strips the required YAML frontmatter (name/description fields) and replaces them with a bare markdown header. This violates docs/schemas/template.md and is inconsistent with sibling assets (ra-change-log.md, ra-intent-capture.md, ra-validation-rubric.md) which still carry frontmatter. Recommend restoring it.
  • [Consistency] instructions/r3/core/skills/requirements-authoring/SKILL.md new <validation> block — thinner than sibling modes added in this same PR: missing an explicit stop/escalate rule for critical rubric failures, and the reference-loading phrasing (asset ... (ACQUIRE FROM KB)) doesn't match the On entering... ACQUIRE <path> FROM KB pattern used by the other new modes (debugging, reverse-engineering, testing) in this changeset. Recommend aligning phrasing and adding the escalation gate for consistency.
  • [Positive] scenarios-generation/SKILL.md and its references are well-hardened: per-value honesty enforced, no-silent-drop coverage contract, redaction routed to sensitive-data, vendor binding resolved upstream (never hardcoded), and destructive TestRail writes gated through USE SKILL hitl. Model pattern for the rest of the batch.

Suggestions:

  • Restore YAML frontmatter to ra-requirement-unit.xml (minimal name/description fields satisfy the schema and match siblings)
  • Align <validation> mode's ACQUIRE phrasing with the other new modes in this PR for consistency

Automated triage by Rosetta agent

@sveto sveto closed this Jul 7, 2026
@sveto sveto reopened this Jul 7, 2026
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: This PR carves the QA/TestGen skills layer out of a larger branch into a focused, reviewable PR — adding scenarios-generation as a new skill and extending requirements-authoring, requirements-use, debugging, reverse-engineering, and testing with additive QA-specific modes. All additions are inert until a QA/TG task explicitly enters them.

Instruction-Quality Review (triggered because PR modifies instructions/r*/**):

Findings — REQUIRED (must fix before merge):

[REQUIRED-1] requirements-authoring/SKILL.md loads its three new reference files via relative markdown links (e.g. [references/quality-principles.md](references/quality-principles.md)) instead of ACQUIRE … FROM KB. Every other skill in the repo uses ACQUIRE … FROM KB for progressive disclosure. In MCP/KB mode the files live in the knowledge base, not on disk — the relative links silently fail and agents draft requirements without the EARS/schema/synthesis rules.

  • Fix: replace the three markdown links and any cross-reference links in the new reference files with ACQUIRE \requirements-authoring/references/.md` FROM KB, consistent with debugging, reverse-engineering, testing, scenarios-generation`, etc.

[REQUIRED-2] requirements-authoring/SKILL.md and requirements-use/SKILL.md each have a duplicate root-level tags: key in their YAML frontmatter (one on line 4, another at line 15). Duplicate YAML keys are invalid; a tolerant parser silently drops the first value (losing intended KB tags), a strict one hard-errors and fails the publish.

  • Fix: merge both tag lists into a single root tags: key.

Findings — SUGGESTIONS:

[SUGGESTION-1] requirements-authoring/references/authoring-catalogs.md and requirement-catalogs.md have swapped names relative to their content: authoring-catalogs.md holds synthesis schemas, requirement-catalogs.md holds general authoring catalogs. authoring-catalogs.md line 3 also incorrectly says the general catalogs "live inline in SKILL.md" (they live in requirement-catalogs.md). This is a maintenance trap and will misdirect agents looking for general authoring rules during synthesis mode.

[SUGGESTION-2] requirements-authoring/SKILL.md line 34 references ACQUIRE \questions.md` FROM KBbut no such file exists; the Q&A capability is thequestioningskill.requirements-use/SKILL.mduses "use questions flow" for the same concept — inconsistent. Recommend replacing withUSE SKILL `questioning``.

[SUGGESTION-3] coding-agents-prompt-authoring/SKILL.md frontmatter model: field contains claude-4.8-opus-high and gemini-3.1-pro-high, which do not match the canonical model IDs defined in docs/schemas/skill.md (claude-opus-4-8, gemini-3.1-pro-preview). The schema explicitly warns against non-canonical IDs.

[SUGGESTION-4] coding-agents-prompt-authoring/references/pa-rosetta.md was updated to reference HITL via the hitl skill, but pa-rosetta-intro-for-AI.md still describes bootstrap-hitl-questioning as an always-injected bootstrap. The two mandatory reference files now contradict each other on HITL bootstrapping, which will confuse agents authoring Rosetta prompts.

Positive highlights:

  • scenarios-generation is the strongest part of the PR: fail-closed destructive-write safeguard, explicit HITL gate via USE SKILL hitl, per-value honesty rule, no-silent-drop coverage, config-resolved vendor binding (no hardcoded TMS vendor), and mandatory redaction throughout.
  • debugging evidence labels, reverse-engineering analysis modes, requirements-use gap_analysis, and testing implementation modes all use correct ACQUIRE … FROM KB progressive disclosure, hard stop-and-report on missing inputs, and read-only/write separation.

Overall assessment: PASS WITH SUGGESTIONS — the two REQUIRED items (reference loading style and duplicate tags: key) should be fixed before merge. The four suggestions are low-risk consistency improvements. The new QA/TestGen skill layer is well-engineered and safe to merge once the required fixes are addressed.

Automated triage by Rosetta agent

@omaiesh omaiesh requested a review from mkuznietsov July 8, 2026 08:55

@isolomatov-gd isolomatov-gd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many and critical issues

Comment thread instructions/r3/core/skills/debugging/references/test-execution-triage.md Outdated
Comment thread instructions/r3/core/skills/requirements-authoring/SKILL.md Outdated
Comment thread instructions/r3/core/skills/requirements-authoring/SKILL.md
Comment thread instructions/r3/core/skills/requirements-authoring/SKILL.md Outdated
Comment thread instructions/r3/core/skills/requirements-use/SKILL.md Outdated
Comment thread instructions/r3/core/skills/scenarios-generation/SKILL.md Outdated
sveto and others added 2 commits July 9, 2026 20:13
rm yaml-style frontmatter from skill reference file

Co-authored-by: Igor Solomatov <isolomatov@griddynamics.com>

@isolomatov-gd isolomatov-gd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Majority of your changes must go to testing or your new qa-* skill (actually ALL of them will go to ONE proper skill).
Not requirements, not reverse-engineering, etc.

Comment thread instructions/r3/core/skills/scenarios-generation/SKILL.md Outdated
Comment thread instructions/r3/core/skills/requirements-authoring/SKILL.md
Comment thread instructions/r3/core/skills/requirements-authoring/SKILL.md Outdated
Comment thread instructions/r3/core/skills/requirements-use/references/gap-analysis-catalogs.md Outdated
Comment thread instructions/r3/core/skills/qa-knowledge/references/analysis-modes.md Outdated
Comment thread instructions/r3/core/skills/requirements-use/SKILL.md Outdated
@sveto sveto closed this Jul 10, 2026
@sveto sveto reopened this Jul 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: This PR adds a comprehensive QA engineering skills layer to Rosetta, introducing synthesis, gap analysis, scenario design (GWT/TestRail), implementation examples, and test execution triage modes as progressive-disclosure references under qa-knowledge. It also overhauls testing/SKILL.md with a 6-mode dispatcher, refactors requirements-authoring to use an XML schema, and relocates canonical lists in coding-agents-prompt-authoring.

This PR modifies instructions/r3/** and was evaluated as an instruction-quality review per triage policy. A dedicated Rosetta prompt quality reviewer subagent was spawned and loaded pa-rosetta.md, pa-patterns.md, pa-hardening.md, pa-schemas.md.

Instruction-Quality Assessment: NEEDS WORK — no blocking safety issues; merge after addressing the DRY/boundary findings below.


Findings:

  • [MEDIUM] Cross-skill deep-linking / duplicated routing (testing/SKILL.md ~lines 91–204 and qa-knowledge/SKILL.md lines 47–55): testing/SKILL.md hardcodes paths into qa-knowledge's private references, while qa-knowledge's router embeds testing's internal mode names such as testing <gap_analysis> and <scenario_design>. The mode→file map now lives in two skills and must be hand-kept in sync — a known drift risk (pa-hardening.md forbids cross-skill deep linking). Recommendation: let qa-knowledge's router be the single source; testing references the skill, not the individual paths.

  • [MEDIUM] testing skill description exceeds frontmatter budget (testing/SKILL.md line 3): new description is ~40 tokens; docs/schemas/skill.md mandates 25 tokens max. Over-budget descriptions degrade reliable auto-selection. Recommend compressing, e.g. "Engineer tests end-to-end: synthesize/gap-analyze requirements, design specs/TMS cases, implement isolated tests, triage failures.".

  • [MEDIUM] SRP tension: synthesis mode overlaps requirements-authoring (testing/SKILL.md lines 18–20, 95–103): <synthesis> emits a full requirements document (user stories, FRs, NFRs, constraints, risks). Without a disambiguating note, an agent may pick testing when requirements-authoring is correct. Recommendation: qualify <synthesis> as a QA/test-target artifact and add a one-liner: "For formal system requirements, use requirements-authoring, not this mode."

  • [MEDIUM] sensitive-data under-weighted in <dependencies> (testing/SKILL.md lines 22–28): listed as USE but redaction is treated as fail-closed safety-critical throughout the reference files (testrail-export.md, gap-analysis-catalogs.md). Recommend elevating to MUST USE SKILL sensitive-data.

  • [MEDIUM] Requirement-unit template duplicated; no legacy enum migration (requirements-authoring/SKILL.md ~lines 232–256 vs assets/ra-requirement-unit.xml lines 38–40): the full <req> template appears byte-identical in two places (DRY violation). The new enum NotStarted|Implemented|Planned|ToBeModified|ToBeRemoved supersedes Implemented|Todo|Modify with no old→new mapping provided. Recommendation: keep template only in the asset; add a one-line legacy-value mapping to the update instruction.

  • [LOW] Rosetta-specific block added to always-resident SKILL.md (coding-agents-prompt-authoring/SKILL.md lines 133–142): <rosetta_canonical_lists> moved from the lazily-loaded pa-rosetta.md into the top-level SKILL.md, loading on every prompt-authoring task including non-Rosetta targets. The scope guard is clear and safe; suggest adding a back-pointer in pa-rosetta.md so the Rosetta reference remains self-complete.

  • [LOW] Inconsistent reference-file formats across new qa-knowledge/references/ files: analysis-modes.md uses YAML frontmatter, test-execution-triage.md uses an XML root tag, remaining files use plain # headers. Recommend standardizing to one convention.

Verified safe:

  • scenarios-generation removal from docs/definitions/skills.md: zero remaining references in the instruction tree — clean deletion.
  • TestRail destructive-write gate (testrail-export.md): fail-closed on dedup-scan failure, explicit a/b/c approval via hitl skill, cancellation as safe default, mandatory pre-write redaction, and "never degrade the gate" rule — well-designed.
  • All 9 lazy ACQUIRE FROM KB references resolve to files present in this PR. No dangling pointers.
  • <mode_selection> dispatcher is unambiguous with an explicit ask-fallback for unmapped cases.

Suggestions:

  • The PR description table still lists scenarios-generation as a new standalone skill while the diff removes it from the canonical list. Clarify in the description whether it is now consolidated into scenario_design mode within testing.
  • Address the two-location template sync risk before the next edit cycle touches ra-requirement-unit.

Automated triage by Rosetta agent

@sveto sveto closed this Jul 10, 2026
@sveto sveto reopened this Jul 10, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Jul 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: This PR centralizes QA-engineering modes into the testing skill and adds a qa-knowledge reference library (9 new files), removing QA coupling from general-purpose skills and consolidating duplicated worked examples. The consolidation intent is sound and several DRY refactors are well-executed.

⚠️ This PR modifies instructions/r3/** files — full instruction-quality review was performed per triage policy.


Instruction-Quality Findings

🔴 MUST — Progressive-disclosure violation (misplaced canonical lists)

File: instructions/r3/core/skills/coding-agents-prompt-authoring/SKILL.md — new <rosetta_canonical_lists> block

The 5-item canonical-list guidance (docs/definitions/{workflows,templates,agents,skills,rules}.md) was moved from references/pa-rosetta.md (a file loaded only for Rosetta-targeted prompts) into the base SKILL.md, which loads unconditionally on every prompt-authoring invocation. This inverts the skill's own stated design principle ("checklist/best-practices/pitfalls are maintained in references/* to keep this file small"). The in-block "skip for any other system" instruction is a runtime workaround for a load-time problem — tokens are spent regardless. It also duplicates content still present in references/pa-rosetta-intro-for-AI.md (lines 25–29).

Suggestion: Move the block back into pa-rosetta.md only; replace it with a single-line pointer in SKILL.md if needed.

🔴 MUST — Skill names its calling workflow (sibling-awareness violation)

File: instructions/r3/core/skills/testing/SKILL.md<implementation_modes> General mode

"Serves coding-flow's always-on Tests step and any direct unit-test request."

A skill must not reference the workflow or subagent that invokes it. Beyond the boundary violation, no step literally named "Tests step" was found in coding-flow.md. The cross-reference is both architecturally incorrect and factually unverified.

Suggestion: Replace with workflow-agnostic language: "a plain unit-test request with no QA-flow artifacts".

🔴 MUST — Cross-skill deep-linking into qa-knowledge private internals

File: instructions/r3/core/skills/testing/SKILL.md<dependencies>, <code_analysis>, <synthesis>, <gap_analysis>, <scenario_design>, <implementation_modes>, <test_execution_triage>, <resources> (8+ locations)

testing/SKILL.md directly ACQUIREs qa-knowledge/references/*.md and qa-knowledge/assets/*.md paths, bypassing USE SKILL qa-knowledge. This violates skill folder isolation: "Do not cross skills folder isolation: Everything inside is internal private skill knowledge. No deep linking to private content of another skill." The inline justification baked into the file ("a stable public contract, not private internals. This is the sanctioned library-skill consumption pattern.") is itself a violation of the no-meta-notes rule.

Suggestion: Route via USE SKILL qa-knowledge and let its router resolve assets, OR codify the library-skill ACQUIRE exception once in pa-schemas.md/pa-rosetta.md rather than justifying it inline.

🟡 SHOULD — Taxonomy/enum mismatch across gwt-spec.md and test-spec-template.md

The Scenario Taxonomy Catalog defines 5 buckets: Happy Path, Validation/Negative, Auth, Resource (404/409/412), Edge/Boundary. However, the ATC Template's **Type** enum lists only "Happy Path / Negative / Auth / Edge Case / Error Handling" — no Resource entry, and Error Handling has no matching taxonomy bucket. The test-spec-template.md Type Breakdown counters (4 entries) similarly do not match the 5-bucket taxonomy.

Suggestion: Add Resource to the ATC Type enum (or explicitly fold it into Negative with a note), and align test-spec-template.md counters.

🟡 SHOULD — Frontmatter description exceeds token budget

File: instructions/r3/core/skills/testing/SKILL.md

The new description ("To engineer tests end-to-end — synthesize requirements, analyze gaps, design scenarios/specs/cases, implement thorough isolated tests (80%+ coverage), and triage failures.") is likely over the <30 tokens frontmatter budget.

Suggestion: Tighten to ≤30 tokens while retaining the multi-mode scope signal.


Positive Observations

  • qa-knowledge/SKILL.md router table correctly adds accurate one-line entries for all 9 new reference files — no orphaned or missing rows.
  • gap-finding-templates.md and test-spec-template.md DRY refactors correctly consolidate worked examples without silently dropping contracts — the verbatim-quote discipline is preserved in gap-analysis-catalogs.md "Authoring discipline" section.
  • requirements-authoring/SKILL.md .md.xml fix corrects a verified stale reference.
  • The new mode contracts in testing/SKILL.md are rigorous: explicit stop conditions, no-silent-drop rules, testrail-export.md's destructive-write confirmation gate, and gap-marker discipline throughout are all well-implemented.

Suggestions

  1. Move <rosetta_canonical_lists> back to pa-rosetta.md; single-line pointer in SKILL.md if needed
  2. Remove coding-flow/"Tests step" name-drop; use workflow-agnostic description
  3. Centralize the library-skill ACQUIRE exception in pa-schemas.md or route through USE SKILL qa-knowledge
  4. Reconcile Resource category across gwt-spec.md ATC Type enum and test-spec-template.md counters
  5. Tighten testing/SKILL.md frontmatter description to ≤30 tokens

Automated triage by Rosetta agent

@sveto sveto closed this Jul 10, 2026
@sveto sveto reopened this Jul 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: This PR centralizes QA-engineering modes (synthesis, gap analysis, GWT scenario design, TestRail export, code analysis, test execution triage) into testing/SKILL.md and a new qa-knowledge reference library, removing QA concerns from general-purpose skills. The individual QA content is well-crafted, but the PR ships a second, parallel implementation of capabilities already present in testgen-flow, and includes one self-declared architecture exception requiring ratification.

Findings:

  • [CRITICAL] Duplicate implementation / content drift: The new qa-knowledge/references/ files (synthesis, gap-analysis, GWT spec, TestRail export) re-implement capabilities already present in the existing testgen-flow-* workflow phases. The two copies already disagree: testgen-flow-test-case-export.md maps P0→priority_id:1 while the new testrail-export.md maps P0→priority_id:4 — the opposite mapping for the same TestRail target. This drift will compound unless testgen-flow delegates to USE SKILL testing / qa-knowledge, or the split is explicitly documented as intentional.

  • [MAJOR] Self-declared, ungoverned cross-skill deep-linking exception: testing/SKILL.md <dependencies> states this is the "sanctioned library-skill consumption pattern" (naming 9 specific internal reference paths of qa-knowledge), but no such exception is documented in pa-hardening.md or pa-patterns.md, and no other skill in the repo exercises it. This self-asserted precedent should be ratified in the canonical prompt-authoring references before merge.

  • [MAJOR] Missing output path for \<synthesis\> mode: Unlike the sibling scenario_design / code_analysis modes (which each ship a canonical artifact path via their asset templates), \<synthesis\> says "emit into the provided skeleton" but defines no default path and synthesis-catalogs.md fixes all 10 section headers itself. A direct user invocation with no calling workflow has no supplied path, contradicting the "never invent artifact shapes or paths" core concept. A canonical default path (matching the plans/... pattern) or an explicit "workflow-only" restriction is needed.

  • [MINOR] Frontmatter description exceeds 30-token budget: testing/SKILL.md's new description is markedly longer than the 30-token pa-hardening.md limit. Trim to mode names only; detail already lives in \<when_to_use_skill\>.

  • [MINOR] Schema inconsistency in reference file: qa-knowledge/references/analysis-modes.md is the only reference file with a skill-style YAML frontmatter; all 10 siblings open with a plain heading. Drop the frontmatter to match siblings.

  • [MINOR] DRY — "never silently drop" rule duplicated: The analysis-boundary / silent-drop rule is independently authored in both qa-knowledge/SKILL.md \<anti_patterns\> and testing/SKILL.md \<pitfalls\> with diverging wording. Keep the rule in one place and cross-reference.

  • [NIT] Unrelated change bundled in scope: The requirements-authoring/SKILL.md + ra-requirement-unit.xml extension-fix is unrelated to QA engineering and reduces atomicity/revertability of the PR.

Suggestions:

  • Reconcile testgen-flow with the new testing skill by delegating shared phases to USE SKILL testing, or document the intentional parallel-track decision and fix the TestRail priority mapping contradiction immediately.
  • Add a named "library-skill" exception to pa-hardening.md (qualified by disable-model-invocation: true in the skill frontmatter) to govern the cross-skill deep-linking pattern used here.
  • Add a canonical output path for \<synthesis\> mode (e.g. plans/qa-synthesis-{IDENTIFIER}/requirements.md) or restrict it to workflow-only with an explicit guard.
  • The PR note "Two-location template sync risk — will be addressed in a follow-up PR" should be tracked and not left open-ended.

Automated triage by Rosetta agent

@isolomatov-gd isolomatov-gd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix testing/SKILL.md

Comment thread instructions/r3/core/skills/testing/SKILL.md
@sveto sveto closed this Jul 11, 2026
@sveto sveto reopened this Jul 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Rosetta Triage Review

Summary: This PR activates the qa-knowledge skill with 6 QA engineering modes (code_analysis, synthesis, gap_analysis, scenario_design, implementation_modes, test_execution_triage) backed by 9 new reference files (failure catalogs, GWT/TestRail formats, triage guide). It also performs small DRY cleanups in coding-agents-prompt-authoring, data-collection bindings, qa-structure references, and removes the defunct scenarios-generation skill entry.

Instruction Quality Review (changes touch instructions/r3/** — treated as instruction-quality review per triage policy):

MUST FIX:

  • Vendor-fork router contradicts its own guide (qa-knowledge/SKILL.md <resources>, lines 78–79 + references/vendor-fork-guide.md): The <resources> router hardcodes READ SKILL FILE references/testrail-format.md and references/testrail-export.md, but vendor-fork-guide.md explicitly states the router must use references/<vendor>-format.md / references/<vendor>-export.md so that correctly-named forks (Zephyr/Xray/qTest/Polarion) are loaded automatically without a router edit. As written, forking per the guide's instructions will silently NOT be picked up — the router still resolves to TestRail. Fix: generalize the two router rows to references/<vendor>-format.md / references/<vendor>-export.md resolved from project config, as the guide prescribes.

SHOULD FIX:

  • Non-canonical cross-skill phrasing (qa-knowledge/SKILL.md <dependencies> line 3): "ACQUIRE QA paths / identifiers / state from qa-structure" should be USE SKILL \qa-structure`ACQUIRE ... FROM KB` is reserved for loading a specific file, not invoking a skill by name (per Rosetta alias table).
  • <rosetta_canonical_lists> is now always-loaded (coding-agents-prompt-authoring/SKILL.md): the pointer was previously lazy-loaded via pa-rosetta.md only when the target IS Rosetta. Promoting it into the base SKILL.md loads it unconditionally for every prompt-authoring task, working against progressive disclosure. Consider keeping the canonical-list pointer only in pa-rosetta.md.
  • testrail-export.md Step 2 bypasses HITL skill: Step 7's confirmation gate correctly delegates to USE SKILL \hitl`for the destructive-write approval, but Step 2 (section_id prompt) embeds a custom prompt template directly instead of routing throughhitl/questioning`. Inconsistent within the same file.

NICE TO HAVE:

  • vendor-fork-guide.md adopts a per-file-per-vendor fork strategy (vs. data-collection's single-file capability-abstraction approach). Both are defensible, but a one-line rationale would prevent a future reader from inadvertently "fixing" it toward false consistency with data-collection.

Positive observations:

  • Mode routing is airtight: <mode_selection>, <resources> router, and <validation_checklist> map 1:1 across all 6 modes — no orphaned or dangling entries.
  • Consistent fail-closed redaction discipline: stated once in <anti_patterns>, reinforced with concrete pre-emit validation greps in every new reference file.
  • The TestRail destructive-write gate (dedup pre-scan + explicit a/b/c HITL + "cancellation is safe default") is a well-designed, concrete safety mechanism.
  • Per-value honesty / gap-marker discipline enforced with worked examples across synthesis, gap-analysis, GWT, and TestRail-format catalogs.
  • vendor-fork-guide.md ships a genuine self-validation grep and correctly applies YAGNI ("no shared parent until 3rd vendor").
  • DRY cleanups in coding-agents-prompt-authoring, data-collection, and docs/definitions/skills.md are clean and low-risk.

Code quality: No obvious bugs or unsafe patterns beyond the findings above. Test coverage: N/A (instruction files). Documentation: PR body clearly explains the consolidation rationale and deferred workflow repointing.

Automated triage by Rosetta agent

@github-actions

Copy link
Copy Markdown
Contributor

📋 Prompt Quality Validation Report

❌ Validation Failed

The full markdown report and raw JSON output are available in the workflow artifacts for 5 days.


Files With Issues

  • instructions/r3/core/skills/coding-agents-prompt-authoring/SKILL.md: 1 issue(s)
  • instructions/r3/core/skills/coding-agents-prompt-authoring/references/pa-rosetta.md: 1 issue(s)
  • instructions/r3/core/skills/data-collection/references/documentation-vendor-binding.md: 1 issue(s)
  • instructions/r3/core/skills/qa-knowledge/SKILL.md: 5 issue(s)
  • instructions/r3/core/skills/qa-knowledge/assets/test-spec-template.md: 1 issue(s)
  • instructions/r3/core/skills/qa-knowledge/references/gap-analysis-catalogs.md: 1 issue(s)
  • instructions/r3/core/skills/qa-knowledge/references/synthesis-catalogs.md: 1 issue(s)
  • instructions/r3/core/skills/qa-knowledge/references/test-execution-triage.md: 1 issue(s)
  • instructions/r3/core/skills/qa-knowledge/references/vendor-fork-guide.md: 2 issue(s)

📄 instructions/r3/core/skills/coding-agents-prompt-authoring/SKILL.md

⚠️ Issues Found

Severity Gate Details
Medium Single Responsibility Problem:
The PR inlines a Rosetta-only <rosetta_canonical_lists> block directly into the always-loaded SKILL.md entry file, which mildly tensions the skill's own stated principle that checklists live in references/* to keep the entry file small.
Reason:
Minor: a Rosetta-specific block is now read on every invocation including non-Rosetta targets, though the guard makes the skip cheap.
Solution:
Optional: keep the enumerated list in pa-rosetta.md and leave only a short conditional pointer in SKILL.md. Acceptable as-is since the block is 9 lines and explicitly guarded to skip for non-Rosetta targets.

📄 instructions/r3/core/skills/coding-agents-prompt-authoring/references/pa-rosetta.md

⚠️ Issues Found

Severity Gate Details
Medium Reference Integrity Problem:
The canonical-lists block moved out of pa-rosetta.md into the skill's always-loaded SKILL.md entry. The hardening reference pa-hardening.md still says only 'MUST READ SKILL FILE references/pa-rosetta.md and validate prompt uses it' and was not updated, so a late review/hardening pass that loads pa-rosetta.md at point of use no longer finds the canonical-list requirement there.
Reason:
The canonical-list compliance check may not re-surface at review time; the skill's own principle is that distance and context compaction destroy reliability.
Solution:
Add a one-line back-reference in pa-rosetta.md's 'Instructions Folder Structure' section pointing to SKILL.md's <rosetta_canonical_lists> block, or update pa-hardening.md's Rosetta check to also re-check that block.

📄 instructions/r3/core/skills/data-collection/references/documentation-vendor-binding.md

⚠️ Issues Found

Severity Gate Details
Medium Conflict Resolution Problem:
The cross-vendor sentence dropped '; the phase owns merging the documentation section with the ticket section' -- the new text ends at 'already present in context', leaving no statement of who merges the documentation output with the ticket output when both bindings run together.
Reason:
SKILL.md only says cross-vendor aggregation is 'handled externally' in generic terms; without the binding-level restatement naming the two sections, an agent reading only this binding could attempt to merge the documentation section into the ticket section itself, duplicating or conflicting with whatever does own that merge.
Solution:
Keep a short ownership clause after the search-terms sentence, e.g. '; this binding does not merge sections -- that happens outside this binding', or point explicitly to the SKILL-level aggregation line.

📄 instructions/r3/core/skills/qa-knowledge/SKILL.md

⚠️ Issues Found

Severity Gate Details
High Safety Boundaries Problem:
The frontmatter flip to user-invocable/model-invocable removes the structural guarantee that scenario_design (which can drive a destructive TMS export) and correction (which writes code) only run after the owning workflow's upstream review/approval phases. The 'Standalone (no phase)' branch only tells the agent to ask the user for bindings and paths; it does not re-impose those upstream approvals.
Reason:
Without it, a user or the model can trigger a TMS export or a code fix from data that never passed the review the multi-phase workflow exists to enforce -- though each destructive mode (testrail-export, correction) still keeps its own inner HITL gate, which limits the blast radius.
Solution:
In standalone mode, before scenario_design / correction / synthesis proceed, have the agent confirm the upstream artifact (e.g. an approved requirements doc) exists and was reviewed, or state plainly that going standalone waives the phase-level checks. Also reconcile the frontmatter with the skill's README 'Invariants -- do not change' section.
High Rosetta Problem:
qa-knowledge's new <mode_selection> makes the skill behave like a mode-dispatch workflow (7 mutually exclusive deliverables, each with its own validation checklist) rather than the narrower 'reusable knowledge loaded on demand' skill classification; nothing in the diff reconsiders whether this should be a workflow with phases instead.
Reason:
Keeping prompt types within their defined classification prevents architecture drift where a skill quietly grows into a pipeline coordinator, a role Rosetta reserves for workflows.
Solution:
Re-evaluate against the Skill vs Workflow classification: if the 7 modes are independent multi-step deliverables, model qa-knowledge (or parts of it) as a workflow with phase files instead of stretching the skill schema.
High Conflict Resolution Problem:
The frontmatter flip (disable-model-invocation: true→false, user-invocable: false→true) directly contradicts the skill's own README.md, whose 'Invariants — do not change' section states: 'disable-model-invocation: true / user-invocable: false must stay: this skill is a routed helper, not a user-facing command.' README.md was not updated in this diff.
Reason:
Leaving a documented 'do not change' invariant silently broken creates a false record of the skill's contract for maintainers deciding what is safe to edit later.
Solution:
Update qa-knowledge/README.md's description and invariants section to match the new user-invocable, active-skill status, and fix qa-structure/README.md's 'Like qa-knowledge, it is helper-only' line, which is now also stale.
High Single Responsibility Problem:
The new <mode_selection> packs 7 distinct QA deliverables into one skill -- code_analysis, synthesis, gap_analysis, scenario_design, implementation_modes, test_execution_triage, correction -- each with its own validation-checklist row and router entries.
Reason:
A skill this wide is harder to review and keep coherent; the healthy range is 1-2 responsibilities, and folding a multi-phase pipeline into one skill blurs the skill-vs-workflow boundary even though the router mitigates runtime cost.
Solution:
Split into 2-3 narrower skills grouped by natural boundary (e.g. analysis/synthesis vs authoring vs execution/correction), or convert qa-knowledge into a workflow with per-mode phase files, keeping the skill itself to 1-2 responsibilities.
Medium Failure Handling Problem:
The user-invocable flip combines badly with <mode_selection>'s multi-phase rule 'run the earliest, stop; the next phase re-invokes.' In a standalone user invocation there is no next phase to re-invoke, so a user asking for a deliverable spanning several modes gets the earliest mode's output and a dead stop with no continuation guidance.
Reason:
Otherwise the same change that makes the skill user-invocable leaves a user stranded mid-pipeline, undermining the reliability the mode router is meant to provide.
Solution:
Add one line to <mode_selection> or core_concepts for the standalone path: after finishing the earliest mode, tell the user which mode to re-invoke next (or that they must re-invoke per mode).

📄 instructions/r3/core/skills/qa-knowledge/assets/test-spec-template.md

⚠️ Issues Found

Severity Gate Details
Medium Structural Coherence Problem:
The intro line still reads '(Outer fence = 4 backticks so the inner 3-backtick example doesn't terminate it.)' but the diff removed the only inner 3-backtick fenced block (the worked ATC example) and replaced it with a plain-text pointer to references/gwt-spec.md. No nested 3-backtick fence remains inside the skeleton.
Reason:
A stale technical justification pointing at content that no longer exists can mislead a future editor into preserving or reintroducing fence nesting that is no longer necessary.
Solution:
Delete the '(Outer fence = 4 backticks...)' parenthetical, since it no longer describes anything in the file.

📄 instructions/r3/core/skills/qa-knowledge/references/gap-analysis-catalogs.md

⚠️ Issues Found

Severity Gate Details
Medium Rosetta Problem:
The line pointing to the sibling asset uses '(ACQUIRE FROM KB)' where the rest of the qa-knowledge family uses 'READ SKILL FILE assets/gap-finding-templates.md'. ACQUIRE...FROM KB is a valid Rosetta verb and the target resolves, so this is an alias-consistency slip, not a broken reference.
Reason:
Minor consistency: mixed alias forms for the same operation add small cognitive load; behavior is unaffected.
Solution:
For a same-skill sibling asset, prefer 'READ SKILL FILE assets/gap-finding-templates.md' to match the rest of qa-knowledge.

📄 instructions/r3/core/skills/qa-knowledge/references/synthesis-catalogs.md

⚠️ Issues Found

Severity Gate Details
Medium Example Grounding Problem:
All ten output schemas (user-stories, functional/non-functional requirements, constraints, dependencies, assumptions, risks, traceability matrix, out-of-scope, glossary) are shown only as bracket-placeholder templates, e.g. ### US-[N]: [Title], [Specific behavior 1]. No section shows one fully instantiated concrete example, unlike sibling testrail-format.md which supplies three complete worked cases (TC-001, TC-002, TC-003).
Reason:
Placeholder-only templates are more likely to be filled inconsistently in granularity and tone across runs than templates paired with at least one concrete instance.
Solution:
Add one small fully-filled example (e.g. one instantiated US-1 / FR-1 / NFR-1 set with real sample values) so the schema is shown in concrete use, not only as an abstract shape.

📄 instructions/r3/core/skills/qa-knowledge/references/test-execution-triage.md

⚠️ Issues Found

Severity Gate Details
High Output Contract Problem:
Step 5 says to 'write findings into the provided findings artifact' but the file never defines that artifact's structure -- no fields, headers, or per-failure record shape appear anywhere. Only the evidence-label values (Confirmed/Assumption/Unknown) and three worked label examples are given. Compare to sibling testrail-export.md, which spells out an explicit workflow-state record format (exported: <created>/<N> · overlap_count: ... · user_choice: ...).
Reason:
This is the only qa-knowledge mode with no output template; combined with the now-enabled standalone invocation (no phase to supply the shape), an agent must either stall or improvise the artifact from memory -- the exact behavior the skill's own <anti_patterns> forbids.
Solution:
Add a findings-artifact skeleton asset (e.g. assets/failure-triage-findings-template.md) with the per-failure fields the validation_checklist already implies (test name, one taxonomy category, one evidence label, cause, cross-failure-pattern flag, priority) and wire it into the SKILL.md router row for test_execution_triage, matching how every sibling mode ships a template.

📄 instructions/r3/core/skills/qa-knowledge/references/vendor-fork-guide.md

⚠️ Issues Found

Severity Gate Details
Medium Workflow Completeness Problem:
The guide never lists the fork procedure as ordered steps (copy file, rename, rebind each table row, run self-validation grep, confirm naming); the same information is spread across un-ordered paragraphs, so the actual sequence to perform a fork must be inferred.
Reason:
Multi-step procedures should be explicitly ordered so an agent does not skip or resequence steps, e.g. running validation before finishing all rebinds or forgetting the naming step.
Solution:
Add a short numbered step list near the top (1. copy canonical file, 2. rename per convention, 3. rebind each table row, 4. run self-validation grep, 5. verify naming/discovery) ahead of the supporting detail.
Medium Instruction Ordering Problem:
The 'Discovery (skip this and the fork is orphaned)' rule -- which states the exact file-naming requirement (<vendor>-format.md / <vendor>-export.md) needed for the SKILL.md router to auto-load the fork -- is the last sentence in the file, appearing after the rationale paragraph and the self-validation grep instructions.
Reason:
This is the single hard constraint that determines whether the whole fork works at all; hard constraints should precede supporting rationale and validation detail.
Solution:
Move the Discovery/naming requirement to immediately follow the Rebind table, ahead of the 'Why per-file forks' rationale and the self-validation grep.

Comment thread instructions/r3/core/skills/scenarios-generation/SKILL.md Outdated
Comment thread instructions/r3/core/skills/scenarios-generation/SKILL.md Outdated
Comment thread instructions/r3/core/skills/scenarios-generation/SKILL.md Outdated
Comment thread instructions/r3/core/skills/testing/SKILL.md Outdated
Comment thread instructions/r3/core/skills/debugging/SKILL.md Outdated
Comment thread instructions/r3/core/skills/requirements-authoring/SKILL.md Outdated
Comment thread instructions/r3/core/skills/coding-agents-prompt-authoring/SKILL.md
@isolomatov-gd isolomatov-gd merged commit 363f348 into main Jul 13, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request needs more work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants