Handsontable Unit Testing
handsontable/handsontable
Conventions for Handsontable's Jest unit and TypeScript type tests: where files go, how to run them, mocking limits and when to write an E2E test instead.
HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.
$ npx skills add hashintel/hash --skill testing-hashql -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashintel/hash testing-hashql --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/testing-hashql .claude/skills/testing-hashql && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "testing-hashql" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashql into .claude/skills/testing-hashql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-hashql", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashqlType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hashintel/hash --skill testing-hashql -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashintel/hash testing-hashql --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/testing-hashql .agents/skills/testing-hashql && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "testing-hashql" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashql into .agents/skills/testing-hashql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-hashql", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashintel/hash --skill testing-hashql -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashintel/hash testing-hashql --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/testing-hashql .cursor/skills/testing-hashql && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "testing-hashql" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashql into .cursor/skills/testing-hashql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-hashql", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hashintel/hash.git --path .agents/skills/testing-hashql--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hashintel/hash --skill testing-hashql -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashintel/hash testing-hashql --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/testing-hashql .gemini/skills/testing-hashql && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "testing-hashql" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashql into .gemini/skills/testing-hashql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-hashql", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hashintel/hash testing-hashqlInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hashintel/hash --skill testing-hashql -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/testing-hashql .github/skills/testing-hashql && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "testing-hashql" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashql into .github/skills/testing-hashql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-hashql", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashintel/hash --skill testing-hashql -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashintel/hash testing-hashql --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/testing-hashql .opencode/skills/testing-hashql && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "testing-hashql" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/testing-hashql into .opencode/skills/testing-hashql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-hashql", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
testing-hashqlHashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.
Testing Hashql is an agent skill from hashintel/hash. HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests. Use when writing tests for HashQL code, using //~ annotations, running --bless, debugging test failures, or choosing the right testing approach.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/compiletest-guide.md`, `references/mir-builder-guide.md` and `references/mir-fluent-builder.md`).
It sits in Testing & QA, covering Unit testing, Test strategy and Failing and flaky tests. The repository describes itself as: 🚀 The open-source, multi-tenant platform for self-building knowledge graphs and simulation. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit e189ab2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
cargoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Testing Hashql loads about 1.9k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 63 tokens; SKILL.md has 426 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hashintel/hash at commit e189ab2, republished under its AGPL-3.0 licence (© hashintel). 426 words, ~1,916 tokens.
.claude/skills/testing-hashql/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.HashQL uses three testing approaches. compiletest is the default for testing compiler behavior.
| Scenario | Test Type | Location |
|---|---|---|
| Diagnostics/error messages | compiletest | tests/ui/ |
| Compiler pipeline phases | compiletest | tests/ui/ |
| MIR/HIR/AST pass integration | compiletest | tests/ui/ |
| MIR/HIR/AST pass edge cases | insta | tests/ui/<category>/ |
| MIR pass unit tests | MIR builder | src/**/tests.rs |
| Core crate (where needed) | insta | src/**/snapshots/ |
| Parser fragments (syntax-jexpr) | insta | src/*/snapshots/ |
| Internal functions/logic | Unit tests | src/*.rs |
Test parsing, type checking, and error reporting using J-Expr files with diagnostic annotations.
Structure:
package/tests/ui/
category/
.spec.toml # Suite specification (required)
test.jsonc # Test input
test.stdout # Expected output (run: pass)
test.stderr # Expected errors (run: fail)
test.aux.svg # Auxiliary output (some suites)Commands:
cargo run -p hashql-compiletest run # Run all
cargo run -p hashql-compiletest run --filter "test(name)" # Filter
cargo run -p hashql-compiletest run --bless # Update expectedTest file example:
//@ run: fail
//@ description: Tests duplicate field detection
["type", "Bad", { "#struct": { "x": "Int", "x": "String" } }, "_"]
//~^ ERROR Field `x` first defined hereDirectives (//@ at file start):
run: pass / run: fail (default) / run: skipdescription: ... (encouraged)name: custom_nameAnnotations (//~ for expected diagnostics):
//~ ERROR msg - current line//~^ ERROR msg - previous line//~v ERROR msg - next line//~| ERROR msg - same as previous annotation📖 Full Guide: references/compiletest-guide.md
Standard Rust #[test] functions for testing internal logic.
Location: #[cfg(test)] modules in source files
Example from hashql-syntax-jexpr/src/parser/state.rs:
#[test]
fn peek_returns_token_without_consuming() {
bind_context!(let context = "42");
bind_state!(let mut state from context);
let token = state.peek().expect("should not fail").expect("should have token");
assert_eq!(token.kind, number("42"));
}Commands:
cargo nextest run --package hashql-<package>
cargo test --package hashql-<package> --doc # Doc testsUse insta crate for snapshot-based output when compiletest (the preferred method) is infeasible. Three categories exist:
| Category | Crates | Snapshot Location | Rationale |
|---|---|---|---|
| Pipeline Crates | mir, hir, ast | tests/ui/<category>/*.snap | Colocate with compiletest tests |
| Core | hashql-core | Default insta (src/**/snapshots/) | Separate from pipeline; prefer unit tests |
| Syntax | syntax-jexpr | src/*/snapshots/ | Macro-based for parser fragments |
Snapshots colocate with compiletest UI tests. Test code lives in src/**/tests.rs, snapshots go in the appropriate tests/ui/<category>/ directory.
// Example: hashql-mir/src/pass/transform/ssa_repair/tests.rs
let dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let mut settings = Settings::clone_current();
settings.set_snapshot_path(dir.join("tests/ui/pass/ssa_repair")); // matches test category
settings.set_prepend_module_to_snapshot(false);
let _drop = settings.bind_to_scope();
assert_snapshot!(name, value);Categories vary: reify/, lower/, pass/ssa_repair/, etc.
hashql-core is separate from the compilation pipeline, so it uses default insta directories. Prefer unit tests; only use snapshots where necessary.
Syntax crates predate compiletest and use macro-based test harnesses for testing parser fragments directly.
// hashql-syntax-jexpr/src/parser/string/test.rs
pub(crate) macro test_cases($parser:ident; $($name:ident($source:expr) => $description:expr,)*) {
$(
#[test]
fn $name() {
assert_parse!($parser, $source, $description);
}
)*
}Snapshots: hashql-syntax-jexpr/src/parser/*/snapshots/*.snap
cargo insta test --package hashql-<package>
cargo insta review # Interactive review
cargo insta accept # Accept all pendingFor testing MIR transformation and analysis passes directly with programmatically constructed MIR bodies.
Location: hashql-mir/src/pass/**/tests.rs
When to use:
Key features:
Changed enum (Yes, No, Unknown) to indicate modificationsChanged value in snapshots for verificationChanged: Yes/No/Unknown separator → after MIRThe body! macro does not support all MIR constructs. If you need a feature that is not supported, do not work around it manually - instead, stop and request that the feature be added to the macro.
body! macro)use hashql_core::{heap::Heap, r#type::environment::Environment};
use hashql_mir::{builder::body, intern::Interner};
let heap = Heap::new();
let interner = Interner::new(&heap);
let env = Environment::new(&heap);
let body = body!(interner, env; fn@0/1 -> Int {
decl x: Int, cond: Bool;
bb0() {
cond = load true;
if cond then bb1() else bb2();
},
bb1() {
goto bb3(1);
},
bb2() {
goto bb3(2);
},
bb3(x) {
return x;
}
});📖 Full Guide: references/mir-builder-guide.md
body! macro for MIR construction in tests© hashintel, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in .agents/skills/testing-hashql of hashintel/hash.
Open the folder on GitHubat commit e189ab2
Testing Hashql next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Testing Hashql this skillhashintel/hash | 1.7k | — | ~1.9k | Automated safety check: Pass | AGPL-3.0 | |
| Handsontable Unit Testinghandsontable/handsontable | 22k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Designing TestsCloudAI-X/claude-workflow-v2 | 1.4k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Web Testing with Playwright and Vitestwithkynam/vibecode-pro-max-kit | 1.1k | — | ~892 | Automated safety check: Pass | Apache-2.0 | |
| Testing Patternssoftspark/ai-toolkit | 179 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Testing OpenLogi UIAprilNEA/OpenLogi | 23k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 |
handsontable/handsontable
Conventions for Handsontable's Jest unit and TypeScript type tests: where files go, how to run them, mocking limits and when to write an E2E test instead.
CloudAI-X/claude-workflow-v2
Designs and implements testing strategies for any codebase. An agent skill from CloudAI-X/claude-workflow-v2.
withkynam/vibecode-pro-max-kit
Covers web testing from unit to E2E, load, visual, accessibility and security checks, with Playwright, Vitest and k6 guides plus a Playwright setup script.
softspark/ai-toolkit
Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage.
AprilNEA/OpenLogi
Verifies OpenLogi's native GPUI interface with focused tests, the component gallery and a mock agent, choosing the evidence that fits each change.
DynamoDS/Dynamo
Write comprehensive NUnit tests for the Dynamo codebase following Dynamo testing patterns, conventions, and architectural constraints.
hashintel/hash
Rust documentation practices for HASH codebase. An agent skill from hashintel/hash.
hashintel/hash
HASH error handling patterns using error-stack crate. An agent skill from hashintel/hash.
hashintel/hash
Cargo.toml dependency management patterns for HASH workspace.
hashintel/hash
HashQL diagnostic writing patterns using hashql-diagnostics crate.
hashintel/hash
HashQL J-Expr syntax for writing queries. An agent skill from hashintel/hash.
hashintel/hash
A skill your agent uses when creating, moving, splitting, or organizing TypeScript files and folders.
Categories
HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests. Testing Hashql is an agent skill from hashintel/hash. HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.
Testing Hashql fits situations like: writing tests for HashQL code; using //~ annotations; running --bless; debugging test failures.
Run `npx skills add hashintel/hash --skill testing-hashql -a claude-code`. Or copy the skill folder (.agents/skills/testing-hashql in hashintel/hash) into .claude/skills/testing-hashql in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hashintel/hash --skill testing-hashql -a codex`. Or copy the skill folder (.agents/skills/testing-hashql in hashintel/hash) into .agents/skills/testing-hashql in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hashintel/hash --skill testing-hashql -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/testing-hashql, .gemini/skills/testing-hashql, .github/skills/testing-hashql and .opencode/skills/testing-hashql in your project.
Going by SKILL.md and its folder, Testing Hashql needs the command-line tools its instructions call (cargo).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Testing Hashql is published under the AGPL-3.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 11k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Testing Hashql: Handsontable Unit Testing (handsontable/handsontable, 22k stars), Designing Tests (CloudAI-X/claude-workflow-v2, 1.4k stars), Web Testing with Playwright and Vitest (withkynam/vibecode-pro-max-kit, 1.1k stars) and Testing Patterns (softspark/ai-toolkit, 179 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hashintel (a GitHub organization) maintains it in hashintel/hash, which has 1,668 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 7, 2026.
Source: hashintel/hash on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.