CtrlK
BlogDocsLog inGet started
Tessl Logo

code-ts

TypeScript code shape inside a well-named module — taste, not lint. Prefer one class or namespace per file (the unit a test targets) over scattered free exports; consolidate related code, don't fragment. The unit of code should be the unit of spec. Use when authoring TS in `editor/grida-canvas*`, `editor/lib/`, or `packages/*`. Sibling to the `naming` skill; React-specific shape lives in `code-react`.

65

Quality

78%

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/code-ts/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%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 tight, opinionated body that assumes baseline TypeScript knowledge, grounds every rule in named repo files, and gives a genuinely usable decision heuristic. Its main gaps are the absence of a concrete good-vs-bad code example to anchor the namespace pattern, and mild recap redundancy across sections.

Suggestions

Add a ~5-line good/bad code pair showing a one-function-per-file fragmentation versus a single `export namespace css` consolidation — it would lift actionability without hurting conciseness.

Merge the 'Why' rationale of 'The spec is the shape' into 'One class or one namespace per file' or trim 'The short version' to bullets that don't restate section openings, cutting ~15 lines of repetition.

DimensionReasoningScore

Conciseness

The body is efficient and assumes Claude's competence ('Vanilla TS conventions (PascalCase types, kebab-case files, use-* hooks) are table stakes — assume them'), with no padding of known concepts. Minor trimming is possible: 'The short version' recap and repeated invocations of the `naming` sibling discipline restate points already made, so it sits at anchor 4 rather than the fully lean anchor 5.

4 / 5

Actionability

Guidance is concrete and repo-grounded: a crisp decision heuristic ('if the filename is a noun ... the contents probably want to live under that noun ... If the file is named for its _location_ (`page.tsx`, `loader.ts`, `route.ts`), free exports are fine'), named example files (`editor/grida-canvas-utils/css.ts` paired with `css.test.ts`), a negative tell ('a directory whose `index.ts` is a wall of re-exports'), and a concrete co-location rule ('Co-locate tests as `*.test.ts` siblings'). Not 5 because there is no short code snippet showing the target namespace/class shape versus the anti-pattern, which would make the pattern directly copyable.

4 / 5

Workflow Clarity

This is a single-purpose decision-guidance skill, not a multi-step process, and its core decision rule (class/namespace vs free exports) is unambiguous with explicit scope boundaries ('UI glue, route handlers, one-shot scripts ... can be plain exports'). No destructive or batch operations exist, so no validation cap applies. Scored 4 rather than 5 because the guidance is presented as parallel sections rather than a single sequenced decision path, and the skill exceeds the under-50-line simple-skill exception.

4 / 5

Progressive Disclosure

The single-file body is well organized into clear sections with a summary, and its external links (naming, code-react) are one level deep and clearly signaled in prose. No bundle files exist, and the content is appropriately sized for one file, but there is no explicit pointers/section structure for deeper material, leaving it just below anchor 5's 'well-signaled one-level-deep references' organization.

4 / 5

Total

16

/

20

Passed

Description

82%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 strong description with an explicit and concrete 'Use when' clause, clear domain language, and excellent boundary delineation against sibling skills. The main weakness is specificity: beyond the two core directives, the remaining phrasing is taste-level abstraction rather than a list of concrete capabilities.

Suggestions

Replace or compress the abstract framing ('taste, not lint', 'the unit of code should be the unit of spec') with one more concrete capability statement, e.g. naming the consolidation and test-co-location actions the body actually teaches.

Add one or two natural trigger terms users would say verbatim (e.g. 'TypeScript module shape', '.ts file organization') to broaden keyword coverage beyond the directory-path trigger.

DimensionReasoningScore

Specificity

The description names the domain ('TypeScript code shape') and gives two concrete directives — 'Prefer one class or namespace per file ... over scattered free exports' and 'consolidate related code, don't fragment' — but phrases like 'the unit of code should be the unit of spec' and 'taste, not lint' are abstract, so coverage is not comprehensive. Anchor 3 ('1-2 concrete actions, but not comprehensive') fits better than 4, which expects several listed specific actions.

3 / 5

Completeness

Both what and when are explicit and concrete: the what is 'Prefer one class or namespace per file ... consolidate related code, don't fragment', and the when is 'Use when authoring TS in `editor/grida-canvas*`, `editor/lib/`, or `packages/*`' with concrete trigger phrases. Not 4 because the 'when' is not merely present but specific with explicit path-glob triggers.

5 / 5

Trigger Term Quality

Good natural keyword coverage: 'TypeScript', 'TS', 'authoring TS', 'class', 'namespace', 'test', plus concrete directory triggers 'editor/grida-canvas*', 'editor/lib/', 'packages/*'. A few natural terms a user might say are missing (e.g. '.ts files', 'module organization', 'file structure'), keeping it below the comprehensive synonym/extension coverage of anchor 5.

4 / 5

Distinctiveness Conflict Risk

Clear niche with minimal conflict risk: triggers are scoped to specific repo directories, and it explicitly delineates siblings — 'Sibling to the `naming` skill; React-specific shape lives in `code-react`'. The path-scoped trigger makes triggering for the wrong skill very unlikely.

5 / 5

Total

17

/

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

relative_links

Relative link issues: 4 suspicious

Warning

Total

15

/

16

Passed

Repository
gridaco/grida
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.