本文へ移動
cccskills
無料GitHub で公開

qa

Run automated QA checks on Grafema VS Code extension via Playwright + MCP cross-validation. Use when: (1) user says "/qa" to start or resume QA session, (2) user wants to validate extension panels against graph data, (3) user wants to re-check previously found bugs after a fix, (4) user wants to run a custom QA task. Requires Docker code-server running.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/qa -- Grafema VS Code Extension QA

When to Use

  • Validate VS Code extension UI against graph data
  • Check specific files or resume from last session
  • Re-check open bugs after fixes (version validation)
  • Run custom QA tasks (e.g., "check hover tooltips only")

Usage

/qa                                           # Auto-resume from last session
/qa packages/vscode/src/Orchestrator.ts       # Check specific file
/qa --recheck                                 # Re-validate all open bugs
/qa check only the Callers panel              # Custom task (free text)

Prerequisites

  • Docker container code-server running (cd demo && docker-compose up -d)
  • Playwright chromium available (auto-installed if missing)
  • Code-server accessible at http://localhost:8080
  • Grafema graph database populated (extension must be analyzing a project)

How It Works

1. Parse Arguments

Determine the mode from the user's input:

  • No args / empty: auto-resume. Find file with status: "in-progress" in state, resume from lastCheckedLine + 1. If none, pick next unchecked file.
  • File path: check that specific file from line 1 (or resume if already in-progress).
  • --recheck: re-validate all bugs with status: "open" and gaps with status: "blocking".
  • Anything else: treat as free-text custom task. Record in customTasks registry.

2. Load State

Read _qa/qa-state.json. This tracks:

  • Per-file progress (which line we left off at)
  • Bug registry (all bugs found across sessions)
  • Gap registry (infrastructure gaps that block files)
  • Custom task history
  • Coverage statistics
  • Version history

3. Check Docker

Verify the code-server Docker container is running and accessible. If not, print the start command and stop.

4. Launch QA Agent

Read the agent instructions from .claude/agents/qa-agent.md. The agent:

  • Drives code-server via Playwright (inline Node.js scripts in Bash)
  • Takes screenshots and reads them (multimodal -- Claude sees images)
  • Cross-validates every panel with Grafema MCP tools and CLI
  • Records bugs and gaps with full evidence
  • Updates state after every checked line
  • Stops after 10 bugs per session

5. Return Summary

After the session completes, report:

  • How many entities were checked
  • How many bugs and gaps were found
  • Which reports were written
  • What to do next (fix bugs, resolve gaps, re-run /qa)

Modes

Auto-Resume (default)

Finds the first file with status: "in-progress" and resumes from lastCheckedLine + 1. If no file is in progress, picks the next unchecked file using priority order: Orchestrator.ts first, then largest files first.

Specific File

Checks the given file from line 1. If the file was previously in-progress, resumes from where it left off.

Recheck

Re-validates all open bugs and blocking gaps. Does NOT check new lines. Marks fixed bugs as "fixed" and resolved gaps as "resolved". Useful after deploying a fix to verify it works.

Custom Task

Any argument that is not a file path and not --recheck is treated as a free-text instruction. The agent executes the task, records it in customTasks, and still logs any bugs/gaps found to the normal registries.

Output Locations

ArtifactPath
State file_qa/qa-state.json
Bug reports_qa/reports/bug-NNN.md
Gap reports_qa/reports/gap-NNN.md
Session reports_qa/reports/session-YYYY-MM-DD-HH-MM-SS.md
Screenshots_qa/screenshots/ (gitignored)

Session Limits

The agent stops after finding 10 bugs in a single session. This keeps reports manageable and encourages incremental fixing. Fix the bugs, then re-run /qa to continue.

Extension Panels

The extension registers 7 panels: Status, Value Trace, Callers, Blast Radius, Issues, Explorer, Debug Log. Plus the built-in Monaco hover tooltip.

Note: The panel formerly called "Edges Explorer" in early docs is actually "Blast Radius".

Bug vs Gap

  • Bug (ui-bug or core-bug): single entity shows wrong/missing data in one panel. Recorded, agent continues.
  • Gap (infrastructure-gap): entire panel broken across 5+ entities in multiple files. Blocks affected files, agent stops session.

Troubleshooting

Docker not running

cd demo && docker-compose up -d

Playwright not installed

The agent auto-installs chromium. If it fails:

npx playwright install chromium

Code-server not responding

Check Docker logs:

docker logs code-server

Panels not updating after click

The agent waits 3 seconds for async panel updates. If panels are still empty, this may indicate an infrastructure gap rather than a timing issue.

Screenshots unreadable

Small text in screenshots may be hard to read. The agent uses MCP/CLI for exact data validation and screenshots only for structural checks (panel visible, non-empty, has sections).

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fix Elixir/Erlang AST processing bugs in Grafema beam-analyzer. Use when: (1) Elixir parser returns MODULE node but 0 functions/calls — body nesting issue, (2) Erlang parser crashes with "cannot convert list to string" on OTP 26+ — location format changed from integer to keyword list, (3) pipe operator |> creates spurious CALL nodes instead of desugared function calls — clause ordering bug, (4) multi-module .ex files return only the first module — missing __block__ handler, (5) installing Erlang/Elixir on macOS with outdated Xcode/Clang.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fires after fixing any non-trivial bug or regression. Asks: could the graph have caught this as a guarantee? Pairs with reflection-in-and-on-action — picks up after "earliest catchable signal" and asks the next question: was that signal expressible in graph? Triggers: (1) after any non-trivial bug fix is verified working, (2) after a regression report (something used to work, broke), (3) during step 6 (knowledge extraction) of the workflow, (4) when reflection-on-action surfaces a "would have been catchable" signal. Outcome is a triage decision (graph-reachable? rule expressible? rule sound?) and either a draft Linear issue + guarantee proposal, or a recorded "graph capability gap" note. Never auto-creates guarantees.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix Playwright automation failures against code-server (VS Code in browser). Use when: (1) trust dialog blocks all clicks — "monaco-dialog-modal-block intercepts pointer events", (2) button:has-text() finds wrong buttons behind modal dialog, (3) keyboard shortcuts don't work — Meta vs Control inconsistency, (4) VS Code extension activity bar icon not found by aria-label, (5) panels show placeholder text despite extension being "Connected". Covers trust dialog dismissal, keyboard shortcut hybrid mode, extension panel selectors, and database connection verification for Grafema extension.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Systematic methodology for achieving 100% backward dataflow reachability in a new language. Create gauntlet fixture, write trace, diagnose gaps, fix analyzer/algorithm, iterate to 100%. Language-agnostic process. Use when: (1) adding a new language to Grafema, (2) auditing dataflow coverage for existing language, (3) user says "/dataflow-gauntlet".

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix docker exec hanging when starting background processes (servers, daemons) inside containers. Use when: (1) docker exec never returns despite using & or nohup, (2) background server started in container causes docker exec to hang indefinitely, (3) env_startup_command in SWE-bench or similar frameworks times out, (4) setsid/disown needed for proper process detachment in Docker. Root cause: docker exec tracks ALL processes in the exec session, not just the top-level PID.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix Node.js CLI tools crashing inside Docker containers when host-installed node_modules require a newer Node version than the container provides. Use when: (1) "SyntaxError: Invalid regular expression flags" with /v flag in string-width or similar packages, (2) node_modules installed on host with Node 20+ but container has Node 18, (3) `npm install` with file: protocol creates symlinks that break inside Docker, (4) pnpm workspace packages become broken symlinks in containers. Covers version detection, Node binary mounting, and npm install strategies for cross-version compatibility.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Disentinel のスキルをすべて見る

このスキルの問題を報告する