CtrlK
BlogDocsLog inGet started
Tessl Logo

imperative-to-declarative-flet

Convert an imperative Flet Python app in which controls are mutated and then page.update is called to declarative style using flet.component, flet.observable and state hooks.

59

Quality

69%

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 ./.agents/skills/imperative-to-declarative-flet/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

68%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 content is concise, well-structured, and gives concrete executable guidance for porting a Flet app to declarative style. The main gap is the absence of explicit validation/verification checkpoints in the workflow, despite the operation being non-destructive.

Suggestions

Add an explicit verification step to the workflow, e.g. 'Run the new folder and confirm the UI renders with zero manual page.update() calls for normal updates.'

Replace ellipsis-bearing snippets ('@ft.component def App(): ...') with minimal complete examples so the guidance is copy-paste ready.

Consider a short 'Verify' checklist at the end mapping each Outcome to a concrete check, turning the implicit success criteria into explicit checkpoints.

DimensionReasoningScore

Conciseness

The body is lean and assumes Claude's competence (no explanation of what Flet or components mode is), jumping straight into outcomes, a numbered workflow, and tight pitfalls; a few asides like '(works, but ordering can be less obvious)' could be trimmed.

4 / 5

Actionability

Provides concrete, executable snippets ('ft.run(lambda page: page.render(App), assets_dir=...)', 'page.fonts = {"Pacifico": "Pacifico-Regular.ttf"}', 'getattr(troute, "id", None)') with specific API names, though several fragments use ellipses ('@ft.component def App(): ...') leaving minor gaps.

4 / 5

Workflow Clarity

The six numbered steps form a clear, well-sequenced porting workflow, but there are no explicit validation or verification checkpoints (e.g. 'run the ported app and confirm it renders'), leaving checkpoints implicit despite the Outcomes section stating success criteria.

3 / 5

Progressive Disclosure

The body is well-organized into clear sections (Outcomes, state strategy, Workflow, pitfalls) with no external file references and no nesting; it slightly exceeds the 50-line simple-skill threshold, otherwise this would be a 5.

4 / 5

Total

15

/

20

Passed

Description

70%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 is specific and highly distinctive, clearly conveying the conversion task and the APIs involved. Its main weakness is the absence of an explicit 'Use when...' trigger clause, which leaves the activation context only weakly implied.

Suggestions

Add an explicit trigger clause, e.g. 'Use when porting an existing imperative Flet app to components mode or when the user asks to make a Flet app declarative.'

Include the user-facing synonym 'components mode' alongside 'declarative style' to match how users naturally phrase the request.

Optionally mention the observable-vs-use_state distinction at a high level so the trigger aligns with the body's state-strategy guidance.

DimensionReasoningScore

Specificity

Names the domain (Flet Python app) and concrete mechanisms ('flet.component, flet.observable and state hooks', 'page.update is called', 'declarative style') rather than vague language, but describes a single conversion action rather than a comprehensive list of actions.

4 / 5

Completeness

The 'what' is clear (convert imperative Flet app to declarative via specific APIs), but there is no 'Use when...' clause or equivalent explicit trigger guidance, which caps completeness at 3 per the rubric guideline.

3 / 5

Trigger Term Quality

Includes natural terms a user would say ('imperative Flet Python app', 'declarative style', 'page.update') alongside API names, but leans on technical jargon and misses common synonyms like 'components mode'.

4 / 5

Distinctiveness Conflict Risk

Targets a very specific niche (imperative-to-declarative Flet Python porting using named APIs), giving it distinct triggers and minimal overlap risk with other skills.

5 / 5

Total

16

/

20

Passed

Validation

93%

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

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository
flet-dev/flet
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.