CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

testland/tcm-case-management

Test case management (TCM) across the five major platforms - TestRail, Xray, Zephyr Scale, Allure TestOps, and Qase - one tool-agnostic workflow for pre-execution case authoring and repository management: create and update cases, organise suites / sections / folders, attach structured steps with per-step expected results, link cases to requirements (Jira / Linear / GitHub), bulk import from CSV / JSON with idempotent re-runs, and sync from CI. The body works the workflow end to end against TestRail's API v2; references/ carries the per-vendor API specifics (auth model, endpoints, steps shape, enums, rate limits) for all five tools. Use for test case management in any of the five TCMs - authoring cases from a spec, bulk-importing legacy cases, migrating between tools, or mass-editing a case repository. Do NOT use for posting test-run results (pass/fail): result sync is the qa-test-reporting plugin's *-integration surface.

76

Quality

96%

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

Overview
Quality
Evals
Security
Files
Low

W011: Third-party content exposure detected (indirect prompt injection risk).

What this means

The skill exposes the agent to untrusted, user-generated content from public third-party sources, creating a risk of indirect prompt injection. This includes browsing arbitrary URLs, reading social media posts or forum comments, and analyzing content from unknown websites.

Why it was flagged

The required workflow ingests external CSV files containing legacy test cases, which can contain outsider-authored free text when supplied by users or untrusted data sources.

Where we found it

CSV file ingestion (local file read via open())

content-type · 3 sites

The scanner flags CSV ingestion as third-party content exposure; the source shows three sites where CSV files are read via local open() calls (not HTTP fetches).

SKILL.md

194

for row in csv.DictReader(open("legacy-cases.csv")):

references/qase-io.md

188

rows = list(csv.DictReader(open("legacy.csv")))

references/zephyr-scale.md

149

rows = list(csv.DictReader(open("legacy.csv")))

Report incorrect finding
Audited
Security analysis
Snyk