CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

multitenancy

Multi-tenant data isolation - critical security skill for SaaS applications. Use whenever each user or customer must see only their own data. Triggers on: row-level security, tenant isolation, "users see each other's data", "data leak", per-customer filtering, designer/owner access with data isolation. Covers three isolation patterns with tradeoffs, plus custom fields per tenant (explicit `tenant`, `tenant_fields_rights`) and sticky overrides for scheduled exports and alerts. Use eagerly - wrong isolation is a security breach, not a bug. Pair with core for token generation and data-integration for connection-level overrides.

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

65%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 highly actionable — complete executable examples, exact property names, explicit doc URLs, and a genuine wrong/right mistakes catalog — and it correctly defers API specs to canonical docs. Its weaknesses are redundancy (the same warnings and facts repeated across four-plus sections), the absence of any verification step for isolation after setup, and a monolithic single-file layout where per-pattern detail and the mistakes catalog could live in reference files.

Suggestions

Add an explicit validation step to each pattern (e.g., issue a test token for a second tenant and confirm cross-tenant rows are invisible before shipping), since misconfiguration is a security breach.

Split the Common Mistakes catalog and the per-pattern deep dives into reference files, keeping SKILL.md as pattern comparison + decision tree + minimal examples.

Deduplicate facts stated many times over (one EmbedFilterGroup per org, dashboard filters insecure, `account_overrides` naming) into one authoritative section and cut the "Important Facts" recap.

DimensionReasoningScore

Conciseness

Nearly every line is product-specific knowledge rather than concepts Claude already knows, but the ~475-line body repeats itself noticeably: the one-EmbedFilterGroup-per-org limit appears in four sections, the dashboard-filter-is-insecure warning in five, and the "Important Facts" section is a recap of facts already stated. It also presents three overlapping decision aids (ASCII comparison, table, decision tree) for the same choice. This is "could be tightened" territory, not the minor trim of a 4.

3 / 5

Actionability

Every pattern ships complete, copy-paste-ready `client.create`/`client.associate` examples with exact property names (`parameter_overrides`, `account_overrides`, `tenant`, `tenant_fields_rights`, `sticky: true`), plus exact developer.luzmo.com doc URLs and wrong/right code pairs in Common Mistakes. The common cases (shared-table filtering, single-tenant sources, custom fields, sticky schedules) are all covered; the few fragments (plugin overrides, mistake fixes) are supplementary to full examples elsewhere.

5 / 5

Workflow Clarity

Pattern selection is well sequenced (decision tree, one-off vs per-token steps for Pattern 1), but there is no validation checkpoint anywhere: no step verifies that an issued token actually cannot see another tenant's rows or that overrides took effect. For a skill whose own header says misconfiguration "is a security breach, not a bug", implicit checkpoints are a real gap — sequence present, checkpoints missing, matching the 3 anchor.

3 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ are all absent), so all guidance — including a ~130-line Common Mistakes catalog and full per-pattern deep dives — is inlined in a single 475-line entry file. Internal section structure is good and external doc links are clearly signaled (deferring specs to developer.luzmo.com is the right instinct), but content that naturally belongs in separate reference files (per-pattern details, the mistakes catalog) is inline, which is the 3 anchor, not the well-split 4.

3 / 5

Total

14

/

20

Passed

Description

95%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: explicit what-and-when structure, natural symptom-level trigger phrases, and explicit de-confliction guidance for neighboring skills. The only shortfall is that the three isolation patterns are referenced by count rather than by name.

Suggestions

Name the three isolation patterns (e.g., parameterized embed filters, token-level filters, connection overrides) instead of referring to them only as "three isolation patterns".

DimensionReasoningScore

Specificity

The description lists several concrete capabilities — "Covers three isolation patterns with tradeoffs, plus custom fields per tenant (explicit `tenant`, `tenant_fields_rights`) and sticky overrides for scheduled exports and alerts" — with real API field names. It stays at 4 rather than 5 because the three patterns are counted but never named, leaving a minor gap in coverage.

4 / 5

Completeness

Both halves are explicit: the "what" ("Multi-tenant data isolation... Covers three isolation patterns... custom fields per tenant... sticky overrides") and the "when" ("Use whenever each user or customer must see only their own data. Triggers on: ...") with concrete trigger phrases. Not below 5 because neither trigger guidance nor capability coverage is weak or implied.

5 / 5

Trigger Term Quality

Trigger coverage is comprehensive and natural: "row-level security, tenant isolation, \"users see each other's data\", \"data leak\", per-customer filtering" plus the plain-language "Use whenever each user or customer must see only their own data". It includes symptom phrases a user would actually say, not just technical jargon; nothing significant is missing.

5 / 5

Distinctiveness Conflict Risk

It carves a clear niche (tenant data isolation for SaaS/embedded analytics) with distinct triggers, and the closing "Pair with core for token generation and data-integration for connection-level overrides" actively disambiguates against sibling skills. Conflict risk is minimal.

5 / 5

Total

19

/

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

luzmo-official/agent-skills

Path

skills/multitenancy/SKILL.md

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.