agentsclimarketplace

Klingai compliance review

Skill jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/klingai-pack/skills/klingai-compliance-review

425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.

Install
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill klingai-compliance-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

'Security and compliance review framework for Kling AI integrations. Use when preparing for

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.7 KB, as published. Nobody here has run it

Kling AI Compliance Review

Overview

Security and compliance assessment framework for Kling AI integrations. Covers data handling, credential management, content policy, privacy, and regulatory considerations.

Data Flow Assessment

User Prompt → [Your App] → [Kling AI API] → [Kling GPU Cluster]
                                                     ↓
[Your CDN] ← download ← [Kling CDN (temporary URL)] ← Generated Video

Data Residency

DataLocationRetention
PromptsSent to Kling servers (China/global)Processing only
Generated videosKling CDN (temporary URLs)~24-72 hours
API keysYour infrastructureYou control
Audit logsYour infrastructureYou control

Security Checklist

Credential Security

  • AK/SK stored in secrets manager (not env files, not code)
  • Keys rotated quarterly
  • Separate keys per environment
  • JWT tokens never logged
  • Access key prefix logged (first 8 chars only)
# Safe logging pattern
def safe_log_key(access_key: str) -> str:
    return access_key[:8] + "..." + access_key[-4:]

Network Security

  • All API calls over HTTPS (enforced by base URL)
  • Webhook endpoints use HTTPS with valid TLS cert
  • Network egress rules allow api.klingai.com:443
  • No API keys in query strings (Bearer token in header only)

Input Validation

  • Prompt length validated (<= 2500 chars)
  • Image URLs validated before sending
  • User input sanitized against injection
  • Content policy pre-filtering active

Output Handling

  • Kling CDN URLs treated as temporary
  • Videos downloaded and stored on your infrastructure
  • Generated content scanned before serving to end users
  • Video metadata stripped of sensitive info before public delivery

Privacy Assessment

QuestionConsideration
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

GDPR Considerations

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",
        })

Automated Compliance Check

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"),
    }

Resources

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.