CtrlK
BlogDocsLog inGet started
Tessl Logo

you-might-not-need-url-state

Analyze and fix URL/query-param state anti-patterns — manual useSearchParams reads, hand-built query mutations, view-state trapped in useState, and objects in the URL

60

Quality

71%

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/you-might-not-need-url-state/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

72%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.

A lean, highly actionable body that defers detail appropriately to a single rules file and external docs, with excellent progressive disclosure. The main weaknesses are the missing post-fix verification step and a small amount of repetition around the read-the-rules directive.

Suggestions

Add a validation step after fix=true, e.g. '5. Run typecheck/build and exercise the affected views to confirm no state was lost in the migration' — the batch delete-and-rewire of state currently has no checkpoint.

Include one minimal executable snippet (a co-located search-params.ts + useQueryState usage) so the fix pattern is copy-paste ready rather than fully deferred to the external rules file.

State the read-the-rules-file directive once (e.g. in Steps only) instead of three times across Context, References, and Steps.

DimensionReasoningScore

Conciseness

Dense, project-specific guidance that assumes Claude's competence (no explanation of nuqs, React Query, or Zustand) with load-bearing caveats. Minor trims possible: the directive to read '.claude/rules/sim-url-state.md' appears three times (Context, References, Steps) and fix specifics repeat between the anti-pattern list and the Steps section.

4 / 5

Actionability

Names exact APIs and replacements ('useQueryState/useQueryStates bound to a search-params.ts', 'sort via createSortParams + useUrlSort, search via useDebouncedSearchSetter', 'delete the replaced state + sync effects'). Not 5: no code/commands, and the actual wiring patterns and decision table are deferred to the external rules file, leaving minor gaps.

4 / 5

Workflow Clarity

A clear 4-step sequence (read rules/docs → analyze scope → decide correct home → apply or propose fixes), but fix=true performs batch, destructive edits (deleting state and sync effects across a scope) with no validation or verification step such as running a typecheck/build afterwards — capped at 3 per the batch-operations rule.

3 / 5

Progressive Disclosure

Well-organized sections (Context, References, Anti-patterns, Steps) with clearly signaled, one-level-deep references — each reference is annotated with exactly what it contains (decision framework, parsers, options, server-side cache). No nesting, no buried pointers, and no bundle bloat.

5 / 5

Total

16

/

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.

A specific, distinctive description that names concrete anti-patterns in third person. Its main gap is the missing 'Use when...' trigger clause and a few natural synonyms (search params, shareable links, deep links).

Suggestions

Add an explicit trigger clause, e.g. 'Use when reviewing React/Next.js code that puts view-state in the URL, or when the user mentions search params, filters, or shareable links.'

Include common synonyms such as 'search params', 'query string', 'shareable/deep-linkable state' so the description matches how users naturally phrase the request.

Mention that fixes cover sort/search/pagination wiring (createSortParams, useDebouncedSearchSetter) so the fix scope is represented in the description, not just detection.

DimensionReasoningScore

Specificity

Concrete action pair ('Analyze and fix') plus several specifically named targets ('manual useSearchParams reads, hand-built query mutations, view-state trapped in useState, and objects in the URL'). Falls short of 5 because coverage is not comprehensive — no hint of the sort/search wiring, Suspense-boundary, or shared-constants anti-patterns the body covers.

4 / 5

Completeness

Has a clear 'what' (analyze and fix URL/query-param state anti-patterns) but no 'Use when...' clause or equivalent trigger guidance, which caps completeness at 3 per the judging guidelines.

3 / 5

Trigger Term Quality

Natural terms a developer would say — 'URL/query-param state', 'useSearchParams', 'useState' — are present. Missing common synonyms like 'search params', 'shareable links', 'deep links', or the library name 'nuqs', keeping it below the 5 anchor.

4 / 5

Distinctiveness Conflict Risk

A clear niche — URL/query-param state management in React/Next.js — with distinct, specific trigger terms; minimal risk of firing for unrelated state-management or routing 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.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
simstudioai/sim
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.