CtrlK
BlogDocsLog inGet started
Tessl Logo

raw-app

MUST use when creating raw apps.

50

Quality

63%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./system_prompts/auto-generated/skills/raw-app/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

71%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a dense, highly actionable Windmill raw-app guide with copy-paste commands, complete code examples, and well-sequenced workflows guarded by lint and consent checkpoints. Its weaknesses are structural: two merged H1 guides with duplicated guidance (roles, whitelisting) inlined in a single ~500-line file with no external references, despite the intro pointing to a 'companion authoring guide'.

Suggestions

Move the second document (the '# Windmill Raw Apps' authoring guide covering frontend shape, backend runnable types, chat UIs, and querying) into a reference file such as references/authoring.md and link to it from the CLI workflow body — the intro at the top already claims this content lives in a 'companion authoring guide'.

Deduplicate repeated guidance: role-passing is stated near-verbatim in both 'Data tables — raw_app.yaml config' and 'Data Tables → Critical rules' rule 5, and 'always whitelist tables' appears in the migration workflow, migration best practices, and Best Practices #6 — consolidate each into one authoritative section.

Collapse the two H1 titles ('Windmill Raw Apps — CLI workflow' and 'Windmill Raw Apps') into a single coherent document outline so the skill reads as one guide with a table of structure rather than two pasted-together files.

DimensionReasoningScore

Conciseness

Mostly efficient — the bulk is dense Windmill-specific knowledge Claude cannot know (non-interactive mode, esbuild classic transform requiring `import React from 'react'`, draft-vs-deployed runnables, lock-file staleness) — but the file inlines two merged H1 guides and repeats guidance: role-passing is explained nearly verbatim twice ('roles records the role the app uses each datatable through; the app's code must pass the same role' and Critical rule 5 'every wmill.datatable call on it passes that role'), and 'always whitelist tables' appears in three places (migration best practices, the migration workflow, and Best Practices #6). Not a 4 because the duplication is beyond minor; not a 2 because the content is largely necessary, not padded filler.

3 / 5

Actionability

Fully executable throughout: a copy-paste `wmill app new --summary "Customer dashboard" --path f/sales/dashboard --framework react19` command, the exact on-disk layout tree, a 17-language extension table, complete runnable code in TypeScript and Python (imports, `main` signature, parameterized queries), and concrete YAML configs. Even failure modes come with exact symptoms ('React is not defined', a blank screen with 'no error thrown').

5 / 5

Workflow Clarity

App creation is sequenced as explicit Step 1–3 with a consent checkpoint for the destructive `--overwrite` flag, and `wmill app lint` is positioned as a validation gate 'after editing, before offering a preview or a deploy', plus a lock-diff review loop after `wmill generate-metadata`. Not a 5 because the creation workflow itself lacks a post-command verification step and the SQL migration workflow relies on an implicit browser modal rather than an explicit validate step.

4 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/), so all ~500 lines live in one SKILL.md — including a second H1 document ('# Windmill Raw Apps', the authoring/platform guide) that the intro claims 'is covered in the companion authoring guide'. The in-file structure (headers, tables) is good, but ~250 lines of authoring-guide and chat-UI content that clearly belongs in a separate reference file are inlined. Fits 'some structure, content that should be separate is inline'; not a 4 because an entire second document inlined in the overview file is more than a minor organization gap.

3 / 5

Total

15

/

20

Passed

Description

36%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description supplies a clear, single trigger ('MUST use when creating raw apps') but reads as a trigger-only fragment: it says nothing about what the skill does, which platform it targets (Windmill never appears), or any synonyms a user might naturally say. It would reliably fire for 'create a raw app' requests while giving Claude no prior signal of the skill's scope.

Suggestions

State the 'what' alongside the 'when', e.g. 'Scaffolds and manages Windmill raw apps: creates apps via `wmill app new`, defines backend runnables, configures datatable access and SQL migrations. Use when creating or editing Windmill raw apps or app frontends.'

Add the platform qualifier 'Windmill' and natural synonyms ('raw app', 'app frontend', 'scaffold') so the description matches how users actually phrase the request and avoids colliding with other app-creation skills.

Use third-person capability phrasing ('Scaffolds…', 'Manages…') rather than the bare imperative 'MUST use', so the description both triggers and informs.

DimensionReasoningScore

Specificity

The entire description is 'MUST use when creating raw apps' — it names the domain ('raw apps') but lists zero actions the skill performs (no scaffolding, no CLI commands, no config management). It sits between anchor 1 (pure abstract language) and anchor 2 (domain named, actions minimal/absent), matching 2 because the domain is named while no concrete capability is stated; not 3 because there is no '1-2 concrete actions' content at all.

2 / 5

Completeness

Only the 'when' is present ('when creating raw apps'); the 'what' — that the skill scaffolds apps via `wmill app new`, defines backend runnables, configures datatables and SQL migrations — is entirely absent. This exactly matches anchor 2 ('only when is present without what'); not 3 because anchor 3 requires a clear 'what'.

2 / 5

Trigger Term Quality

'creating raw apps' is the natural phrase a user would say for the primary use case, and 'creating' plus 'raw apps' are relevant keywords — but common variations and synonyms are missing: 'Windmill', 'scaffold', 'app', 'frontend', 'dashboard'. This matches 'some relevant keywords but missing common variations or synonyms'; not 4 because keyword coverage is a single phrase.

3 / 5

Distinctiveness Conflict Risk

'raw apps' is a niche, Windmill-specific term, which limits generic collisions — but the description omits 'Windmill', leaving the term opaque and open to overlap with any other platform's 'raw app' concept or with general app/frontend-creation skills. Somewhat specific but could still overlap with closely related skills; not 4 because the missing platform qualifier and missing capability list give it little to distinguish itself by.

3 / 5

Total

10

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
windmill-labs/windmill
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.