CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/cross-tenant-data-leak-tests

Workflow-driven skill that plans and implements the cross-tenant leak-test suite - from surface inventory to the runtime CI gate a multi-tenant codebase must pass on every PR. The planning section inventories tenant-bearing surfaces (tables, APIs, object storage, search, queues, caches), classifies each by isolation model (silo / pool / bridge, per references/isolation-models.md), and derives the OWASP WSTG-ATHZ-02 coverage matrix. The battery defines the canonical test patterns (read-other-tenant-by-id, list-leak, spoofed-tenant-id-in-body, JWT-replay, FK-cross-tenant, unique-collision side channel, object-storage IDOR, search-index-direct-query, async-job-context-reload, cache-key-collision), the 404-vs-403 disclosure trade-off, the Postgres-RLS-direct patterns, and the CI integration (non-superuser non-BYPASSRLS role, fail the build on any leak). Use when designing or implementing a tenant-isolation test suite, adding the CI gate to an existing project, or investigating a leak finding.

90

1.05x
Quality

90%

Does it follow best practices?

Impact

94%

1.05x

Average score across 3 eval scenarios

SecuritybySnyk

High

Do not use without reviewing

Overview
Quality
Evals
Security
Files

Quality

Content

85%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 high-quality, highly actionable body with strong sequencing and validation checkpoints. Its main weakness is progressive disclosure: several references are broken or orphaned, leaving navigation unreliable.

Suggestions

Resolve the `rls-reference` citations: either create references/rls-reference.md and link it as a path, or rename the citations to an existing file, so every backtick reference points to a real bundle file.

Either add references/other-engines.md (referenced in the Limitations/References section) or remove that citation.

Surface the existing bundle files models.md and test-surfaces.md from the body (link them where their content is relevant) so no provided reference is orphaned.

DimensionReasoningScore

Conciseness

The body is dense with high-signal material (inventory tables, ten concrete test blocks, SQL, a full CI YAML) and avoids explaining generic concepts Claude already knows; minor redundancy between the per-test commentary and the Anti-patterns table and a slightly repetitive References section keep it just short of lean.

4 / 5

Actionability

Fully executable guidance throughout — copy-paste Python tests for every named pattern, SQL 'Postgres-RLS-direct' blocks with concrete SET LOCAL ROLE usage, and a complete GitHub Actions workflow that creates a non-superuser role and runs pytest under it — covering the common cases specifically.

5 / 5

Workflow Clarity

Clear sequenced workflow (Planning -> Step 1 runner/role -> Step 2 battery -> Step 3 CI -> Step 4 diagnose) with explicit validation checkpoints (the 'Expect: rolsuper=f, rolbypassrls=f' and '-- expect 0' assertions) and a Step 4 feedback loop (reproduce, check policy, write minimal regression test before fixing), which satisfies the validation requirement for this DB/CI-gate skill.

5 / 5

Progressive Disclosure

Sectioning is reasonable and the three referenced references/*.md files (isolation-models, attack-patterns, framework-skeletons) exist, but the body repeatedly cites `rls-reference` as a bare non-resolvable name and cites references/other-engines.md which is absent from the bundle, while bundle files models.md and test-surfaces.md are never referenced — broken/orphaned references undermine clear navigation.

3 / 5

Total

17

/

20

Passed

Description

92%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, specific description that clearly states what the skill does and when to use it, written in third person. It is highly distinct and actionable; the only gap is slightly narrow trigger-term coverage.

DimensionReasoningScore

Specificity

Lists many concrete actions — 'inventories tenant-bearing surfaces', 'classifies each by isolation model', 'derives the OWASP WSTG-ATHZ-02 coverage matrix', ten named canonical test patterns, and CI integration ('non-superuser non-BYPASSRLS role, fail the build on any leak') — giving comprehensive, non-abstract coverage.

5 / 5

Completeness

Explicitly answers both what ('plans and implements the cross-tenant leak-test suite ... inventories ... classifies ... defines the canonical test patterns ... CI integration') and when ('Use when designing or implementing a tenant-isolation test suite, adding the CI gate to an existing project, or investigating a leak finding') with concrete triggers.

5 / 5

Trigger Term Quality

Natural trigger phrases a user would actually say ('designing or implementing a tenant-isolation test suite', 'adding the CI gate', 'investigating a leak finding') are present, but the set leans technical and omits common synonyms like 'RLS', 'row-level security', or 'multi-tenant isolation'.

4 / 5

Distinctiveness Conflict Risk

Occupies a clear niche (cross-tenant data-leak testing / multi-tenant isolation CI gating) with distinct triggers unlikely to fire for unrelated skills; minimal conflict risk.

5 / 5

Total

19

/

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

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents