CtrlK
BlogDocsLog inGet started
Tessl Logo

igmarin/hanakai-yaku

Curated library of atomic AI agent skills for Hanami, dry-rb, and ROM Ruby development. Covers actions, slices, repositories, relations, changesets, providers, DI, operations, TDD, CLI, views, routing, and validation. Shared Ruby process skills have moved to ruby-core-skills. Uses Markdown + Front-matter architecture.

92

1.33x
Quality

94%

Does it follow best practices?

Impact

92%

1.33x

Average score across 35 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-26/

{
  "context": "Checks whether the final artifact follows the handle-errors instructions from the published hanakai-yaku tile.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "instruction-1",
      "description": "The submitted artifact follows this skill instruction: Use this skill when handling errors and halting requests in Hanami 2.x Actions.",
      "max_score": 12
    },
    {
      "name": "instruction-2",
      "description": "The submitted artifact follows this skill instruction: **Core principle:** Fail fast and return meaningful error responses. Never swallow exceptions or leak internal details.",
      "max_score": 11
    },
    {
      "name": "instruction-3",
      "description": "The submitted artifact follows this skill instruction: **Use `halt` for early returns**:",
      "max_score": 11
    },
    {
      "name": "instruction-4",
      "description": "The submitted artifact follows this skill instruction: Halt immediately with a status code and response body for early returns. Do not rely on default success status codes (e.g. 200) for error conditions.",
      "max_score": 11
    },
    {
      "name": "instruction-5",
      "description": "The submitted artifact follows this skill instruction: > **Common Mistake:** Match the error response format to the action format. Do not use `halt` with HTML error pages/strings in a JSON API action.",
      "max_score": 11
    },
    {
      "name": "instruction-6",
      "description": "The submitted artifact follows this skill instruction: Always rescue `StandardError` (never rescue `Exception` as it catches system-level interrupts like `SIGTERM` or `NoMemoryError`). Log full backtraces internally, but return generic messages externally. Never rescue exceptions silently.",
      "max_score": 11
    },
    {
      "name": "instruction-7",
      "description": "The submitted artifact follows this skill instruction: Do not manually inspect `request.params.valid?` or duplicate validation inside `#handle`. The action automatically halts with `422 Unprocessable Entity` before `#handle` runs if params validation fails.",
      "max_score": 11
    },
    {
      "name": "instruction-8",
      "description": "The submitted artifact follows this skill instruction: Always write tests asserting on expected HTTP error status codes (e.g., 404, 422, 500) and verified error payload shapes.",
      "max_score": 11
    },
    {
      "name": "instruction-9",
      "description": "The submitted artifact follows this skill instruction: Reviewers should check for these red flags:",
      "max_score": 11
    }
  ]
}

README.md

tile.json