Help us improve
Share bugs, ideas, or general feedback.
From klingai-pack
Reviews security and compliance for Kling AI video generation API integrations using checklists for credentials, data flow, input validation, privacy, and GDPR prep.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin klingai-packHow this skill is triggered — by the user, by Claude, or both
Slash command
/klingai-pack:klingai-compliance-reviewThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Security and compliance assessment framework for Kling AI integrations. Covers data handling, credential management, content policy, privacy, and regulatory considerations.
Provides production checklist for Kling AI video generation integrations, verifying auth, errors, costs, task handling, safety, security, monitoring, and performance before deployment.
Reviews OpenRouter API integrations for SOC2, GDPR, HIPAA compliance with checklists for data handling, access controls, audit trails, and provider routing to approved models.
Audits AI agent and LLM codebases for regulatory compliance (EU AI Act, GDPR, NIST AI RMF, HIPAA, ISO 42001). Scans for gaps, cross-references Arize instrumentation, and produces a remediation checklist.
Share bugs, ideas, or general feedback.
Security and compliance assessment framework for Kling AI integrations. Covers data handling, credential management, content policy, privacy, and regulatory considerations.
User Prompt → [Your App] → [Kling AI API] → [Kling GPU Cluster]
↓
[Your CDN] ← download ← [Kling CDN (temporary URL)] ← Generated Video
| Data | Location | Retention |
|---|---|---|
| Prompts | Sent to Kling servers (China/global) | Processing only |
| Generated videos | Kling CDN (temporary URLs) | ~24-72 hours |
| API keys | Your infrastructure | You control |
| Audit logs | Your infrastructure | You control |
# Safe logging pattern
def safe_log_key(access_key: str) -> str:
return access_key[:8] + "..." + access_key[-4:]
api.klingai.com:443| Question | Consideration |
|---|---|
| Do prompts contain PII? | Filter PII before sending to API |
| Do images contain faces? | Check consent requirements (GDPR Art. 6) |
| Are generated videos stored? | Define retention policy |
| Who has access to generated content? | RBAC on storage layer |
| Cross-border data transfer? | Kling API servers may be in China |
class GDPRCompliantClient:
"""Kling client with GDPR data handling."""
def __init__(self, base_client, audit_logger):
self.client = base_client
self.audit = audit_logger
def text_to_video(self, prompt: str, data_subject_id: str = None, **kwargs):
# Log processing activity (GDPR Art. 30)
self.audit.log("processing_activity", "system", {
"purpose": "video_generation",
"data_subject": data_subject_id,
"legal_basis": "legitimate_interest",
"data_categories": ["text_prompt"],
"recipients": ["klingai_api"],
})
return self.client.text_to_video(prompt, **kwargs)
def handle_deletion_request(self, data_subject_id: str):
"""Handle GDPR right to erasure (Art. 17)."""
# Delete stored videos associated with the data subject
# Delete audit logs referencing the data subject
# Note: cannot delete data already sent to Kling API
self.audit.log("deletion_request", "system", {
"data_subject": data_subject_id,
"action": "processed",
})
def run_compliance_check(config: dict) -> dict:
"""Run automated compliance checks against configuration."""
checks = []
# Check credential storage
if config.get("key_source") == "environment":
checks.append(("WARN", "credentials", "Using env vars; prefer secrets manager"))
elif config.get("key_source") == "secrets_manager":
checks.append(("PASS", "credentials", "Using secrets manager"))
# Check TLS
if config.get("base_url", "").startswith("https://"):
checks.append(("PASS", "tls", "HTTPS enforced"))
else:
checks.append(("FAIL", "tls", "Not using HTTPS"))
# Check content filtering
if config.get("content_filter_enabled"):
checks.append(("PASS", "content_filter", "Pre-submission filtering active"))
else:
checks.append(("WARN", "content_filter", "No pre-submission content filtering"))
# Check audit logging
if config.get("audit_logging"):
checks.append(("PASS", "audit", "Audit logging enabled"))
else:
checks.append(("FAIL", "audit", "No audit logging"))
# Print report
for status, area, message in checks:
icon = {"PASS": "OK", "WARN": "!!", "FAIL": "XX"}[status]
print(f" [{icon}] {area}: {message}")
return {
"passed": sum(1 for s, _, _ in checks if s == "PASS"),
"warnings": sum(1 for s, _, _ in checks if s == "WARN"),
"failed": sum(1 for s, _, _ in checks if s == "FAIL"),
}