Skip to main content

writing-hashql-diagnostics

HashQL diagnostic writing patterns using hashql-diagnostics crate. Use when creating error messages, warnings, Labels, Messages, Severity levels, Patches, Suggestions, or improving diagnostic quality in HashQL code.

来源信息

仓库
hashintel/hash
最近来源活动
2026年10月16日 17:45
检测到的 SKILL.md 语言
英语
星标
1,684
Forks
124

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
writing-hashql-diagnostics
description
HashQL diagnostic writing patterns using hashql-diagnostics crate. Use when creating error messages, warnings, Labels, Messages, Severity levels, Patches, Suggestions, or improving diagnostic quality in HashQL code.
license
AGPL-3.0
# HashQL Diagnostic Writing Provides HASH-specific patterns for writing high-quality diagnostics using the `hashql-diagnostics` crate, ensuring messages are helpful, actionable, and follow consistent style conventions. ## Core Principles **Diagnostics should be helpful, not just correct:** ✅ **DO:** - Start messages with lowercase - Use backticks for code elements: `` expected `bool`, found `String` `` - Make messages actionable and specific - Use "invalid" not "illegal" - Keep help messages as imperatives: "add type annotations" ❌ **DON'T:** - End messages with punctuation (unless multi-sentence) - Use apologetic language ("sorry", "unfortunately") - Write vague messages ("something went wrong") - Capitalize message starts (unless code identifier) ## Quick Reference ### Creating a Diagnostic ```rust use hashql_diagnostics::{Diagnostic, Label, Message, Severity}; let mut diagnostic = Diagnostic::new(category, Severity::Error) .primary(Label::new(span, "expected `bool`, found `String`")); diagnostic.add_label(Label::new(other_span, "expected because of this")); diagnostic.add_message(Message::help("try using a comparison")); ``` ### Severity Levels | Severity | When to Use | | --------- | ------------------------- | | `Bug` | Internal compiler error | | `Fatal` | Unrecoverable error | | `Error` | Must be fixed to compile | | `Warning` | Suspicious code to review | | `Note` | Informational context | ### Message Style ```rust // ✅ Good "cannot find variable `count` in this scope" "expected `;` after expression" // ❌ Bad "Error: Variable not found." // capitalized, punctuation "Sorry, there's a type mismatch" // apologetic ``` ### Adding Suggestions ```rust use hashql_diagnostics::{Message, Patch, Suggestions}; let suggestion = Suggestions::patch(Patch::new(span, "corrected_code")); diagnostic.add_message( Message::help("fix the typo").with_suggestions(suggestion) ); ``` ## References - [Comprehensive guidelines](references/guidelines.md) - Complete message style guide, span selection, category design, label usage, help vs note, suggestion quality, review checklist - [HashQL testing skill](../testing-hashql/SKILL.md) - For compiletest coverage
在 GitHub 查看