Orca Data Exposure logo

Orca Data Exposure

Organization
orcasecurity
orca-data-exposure

DSPM view — sensitive data at risk across the environment, exposed secrets/PII/credentials, data store security posture, and remediation priorities. Use when user asks about data exposure, sensitive data, or secrets (e.g., "data exposure", "where is our PII", "sensitive data at risk", "exposed secrets", "DSPM view").

Overview

Publisherorcasecurity
Repositoryorca-skills
Skill nameorca-data-exposure
Stars
56
Forks
14
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by orcasecurity on GitHub. Read the source before you install it.

Installation

Install the Orca Data Exposure AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/orcasecurity/orca-skills/tree/main/skills/orca-data-exposure
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/orcasecurity/orca-skills.git /tmp/orca-skills
mkdir -p .claude/skills
cp -r /tmp/orca-skills/skills/orca-data-exposure .claude/skills/orca-data-exposure
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Orca Data Exposure in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Orca Data Exposure on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Orca Data Exposure is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Orca Data Exposure Skill

Answers the question: "Where is our sensitive data, is it protected, and what's at risk right now?"

Provides a DSPM (Data Security Posture Management) view: discovers sensitive data across the environment (secrets, PII, credentials, API keys, financial data), identifies unprotected or exposed data stores, ranks data risks by exposure level, and generates a remediation plan to secure the most critical data first.

Usage

/orca-data-exposure
/orca-data-exposure secrets
/orca-data-exposure account 123456789012

Or natural language:

  • "where's our sensitive data?"
  • "find exposed API keys"
  • "what PII is at risk?"
  • "data exposure report"
  • "show me unprotected data stores"
  • "DSPM summary"

Processing Logic

Step 1: Determine Scope

Parse user input:

  • All data types: no argument → full DSPM view
  • Specific type: "secrets" / "PII" / "credentials" / "API keys" → filter
  • Account-specific: "account 123456789012" → filter by account
  • Asset-specific: "data on bastion-admin" → filter by asset

Step 2: Gather Data (run ALL in parallel)

Run 6 discovery_search queries covering different data exposure categories:

Query 1: Exposed secrets and credentials

discovery_search:
  search_phrase: "exposed secrets credentials API keys passwords"
  limit: 10

Query 2: PII exposure

discovery_search:
  search_phrase: "sensitive data PII personally identifiable information exposed"
  limit: 10

Query 3: Unencrypted data stores

discovery_search:
  search_phrase: "unencrypted S3 buckets databases storage with sensitive data"
  limit: 10

Query 4: Public data stores with sensitive content

discovery_search:
  search_phrase: "publicly accessible storage buckets with sensitive data or secrets"
  limit: 10

Query 5: Sensitive data on internet-facing assets

discovery_search:
  search_phrase: "internet facing assets with sensitive data or secrets"
  limit: 10

Query 6: Certificate and key exposure

discovery_search:
  search_phrase: "exposed private keys certificates TLS SSL"
  limit: 10

Step 3: Enrich Critical Findings

For the top 5 most critical data exposure findings, run in parallel:

Per asset:

get_asset_related_alerts_summary:
  asset_id: <UUID>
get_asset_crown_jewel_info:
  group_unique_id: <group_unique_id>

Step 4: Compliance Context

Check data protection compliance:

get_enabled_compliance_frameworks:
  (no filters)

Extract data-relevant frameworks and scores:

  • PCI DSS (payment card data)
  • HIPAA (health data)
  • GDPR (EU personal data)
  • SOC 2 (security controls)
  • CIS Benchmarks (encryption, access controls)

Step 5: Classify and Rank

Data Risk Classification
CRITICAL — Immediate data breach risk:
  • Secrets/credentials on public-facing assets
  • PII in publicly accessible storage
  • Unencrypted database with sensitive data exposed to internet
  • API keys/tokens in container images or public repos

HIGH — Significant exposure:
  • Secrets on internal assets with other vulnerabilities
  • Unencrypted data stores with sensitive content
  • PII without encryption at rest
  • Credentials in environment variables or config files

MEDIUM — Suboptimal protection:
  • Encrypted but overly permissive access to sensitive data
  • Secrets in private storage but without rotation
  • PII with encryption but weak access controls

LOW — Minor gaps:
  • Internal data stores with proper encryption but missing audit logging
  • Secrets managed properly but rotation overdue
Data Type Classification

Group findings by data type:

  • Secrets & Credentials: API keys, passwords, tokens, connection strings
  • PII (Personally Identifiable Information): names, emails, SSNs, addresses, phone numbers
  • Financial Data: credit card numbers, bank accounts, payment tokens
  • Health Data (PHI): medical records, insurance IDs, health information
  • Private Keys & Certificates: TLS/SSL private keys, SSH keys, signing certificates
  • Infrastructure Secrets: cloud access keys, database passwords, service account keys

Proactive Remediation Behavior

CRITICAL: Never leave the user with just data. After EVERY output layer, suggest the next action and offer to generate remediation code.

After the dashboard and after every drill-down section:

  1. Suggest what to do next — based on the data risk, recommend the most urgent fix
  2. Offer remediation format selection — always ask: "I can generate the fix. What format do you prefer?"
  3. Supported formats: Terraform, CloudFormation, Ansible, CLI commands (aws/az/gcloud), step-by-step instructions, Pulumi, ARM/Bicep
  4. Auto-suggest the most critical fix — proactively say "The #1 priority is rotating the exposed API key on X. Want me to generate the rotation script?"

When the user selects a format:

  • Generate the remediation code immediately (secret rotation, bucket policies, encryption configs, access controls)
  • Write it to a file: secure-data-<asset-name>.<ext> (e.g., .tf, .yml, .sh)
  • Include verification commands
  • Suggest the next data exposure to fix after the first one is done

Format mapping:

User saysExtensionTemplate
Terraform.tfHCL with bucket policy / encryption / KMS resources
CloudFormation.cfn.yamlYAML template with security resources
Ansible.ymlPlaybook with data protection tasks
CLI.shShell script with aws/az/gcloud CLI commands
InstructionsinlineNumbered step-by-step console walkthrough
Pulumi.tsTypeScript Pulumi program
ARM/Bicep.bicepBicep template

Output Format

Layer 1: Dashboard

═══════════════════════════════════════════════════════════════════
DATA EXPOSURE REPORT — <scope>
<date> | <account scope>
═══════════════════════════════════════════════════════════════════

DATA POSTURE: <assessment — 1 line>

┌─────────────────────────────────────────────────────────────────┐
│  TOTAL FINDINGS    <N> data exposure alerts                     │
│  CRITICAL          <N> — immediate breach risk                  │
│  HIGH              <N> — significant exposure                   │
│  SECRETS           <N> exposed credentials/API keys/tokens      │
│  PII               <N> assets with personally identifiable data │
│  PUBLIC DATA       <N> publicly accessible data stores          │
│  UNENCRYPTED       <N> data stores without encryption           │
│  CROWN JEWELS      <N> data findings on critical assets         │
│  COMPLIANCE        <frameworks with data requirements>          │
└─────────────────────────────────────────────────────────────────┘

TOP DATA RISKS:
  [1] <alert-id> — <title> (score: <X.X>)
      <asset> | <data type> | <exposure: public/internal>
  [2] <alert-id> — <title> (score: <X.X>)
      <asset> | <data type> | <exposure>
  [3] <alert-id> — <title> (score: <X.X>)
      <asset> | <data type> | <exposure>
  [4] <alert-id> — <title> (score: <X.X>)
  [5] <alert-id> — <title> (score: <X.X>)

RECOMMENDED ACTION:
  Priority #1: <top data risk — e.g., "Rotate the exposed API
  key on <asset> and move to Secrets Manager.">
  I can generate the fix right now.

  What format? terraform | cloudformation | ansible | cli |
  instructions | pulumi | arm/bicep

═══════════════════════════════════════════════════════════════════
Or drill down: secrets | pii | public data | unencrypted |
compliance | accounts | remediation plan | full
═══════════════════════════════════════════════════════════════════

Layer 2: Drill-Down Sections

"secrets" — Exposed Secrets & Credentials
───────────────────────────────────────────────────────────────────
SECRETS & CREDENTIALS — Exposed
───────────────────────────────────────────────────────────────────

CRITICAL (rotate immediately):
  <alert-id>  <score>  <title>
              Asset: <asset> (<type>) in <account>
              Secret type: <API key / password / token / connection string>
              Location: <file path / env var / config>
              Exposure: <public / internal>
              Fix: Rotate secret, move to secrets manager

  ...

HIGH (rotate soon):
  ...

SUMMARY:
  Total exposed secrets: <N>
  Public-facing: <N> (CRITICAL)
  Internal only: <N> (HIGH)
  Types: <breakdown by secret type>

RECOMMENDED ACTIONS:
  1. Rotate all publicly exposed secrets NOW
  2. Move secrets to AWS Secrets Manager / Azure Key Vault / GCP Secret Manager
  3. Scan code repos for committed secrets
  4. Implement secret detection in CI/CD pipeline

FIX NOW:
  I'll generate rotation scripts and Secrets Manager configs.
  Choose format: terraform | cloudformation | ansible | cli |
  instructions | pulumi | arm/bicep

───────────────────────────────────────────────────────────────────
"pii" — PII Exposure
───────────────────────────────────────────────────────────────────
PII EXPOSURE — Personally Identifiable Information
───────────────────────────────────────────────────────────────────

  <alert-id>  <score>  <title>
              Asset: <asset> in <account>
              PII types: <names / emails / SSNs / addresses / phone>
              Records: <estimated count if available>
              Encrypted: YES/NO
              Access: <public / internal / restricted>
              Compliance: <GDPR / HIPAA / PCI affected>

  ...

COMPLIANCE IMPACT:
  GDPR: <N> findings with EU personal data
  HIPAA: <N> findings with health data
  PCI DSS: <N> findings with payment data

───────────────────────────────────────────────────────────────────
"public data" — Publicly Accessible Data Stores
───────────────────────────────────────────────────────────────────
PUBLIC DATA STORES — Internet Accessible
───────────────────────────────────────────────────────────────────

  ⚠ <storage name> (<type>) in <account>
    Access: PUBLIC READ / PUBLIC WRITE / PUBLIC LIST
    Content: <data types detected>
    Sensitive: YES — <what sensitive data>
    Encryption: <encrypted / NOT encrypted>
    Fix: <specific action — remove public access, add auth>

  ⚠ <database name> (<type>) in <account>
    Access: Internet-facing on port <port>
    Auth: <strong / weak / default / none>
    Content: <data types>
    Fix: <action>

LOCK IT DOWN:
  I can generate bucket policies, access controls, and
  encryption configs. Choose format: terraform | cloudformation |
  ansible | cli | instructions | pulumi | arm/bicep

───────────────────────────────────────────────────────────────────
"unencrypted" — Unencrypted Data Stores
───────────────────────────────────────────────────────────────────
UNENCRYPTED DATA STORES
───────────────────────────────────────────────────────────────────

  <storage/database name> (<type>) in <account>
    Contains: <data types>
    Sensitive data: YES/NO
    Encryption at rest: MISSING
    Encryption in transit: <YES/NO>
    Fix: Enable <SSE-S3/SSE-KMS/AES-256/TDE>

  ...

SUMMARY:
  Total unencrypted: <N>
  With sensitive data: <N> (PRIORITY)
  Without sensitive data: <N> (still fix)

ENABLE ENCRYPTION:
  I'll generate encryption configs for all unencrypted stores.
  Choose format: terraform | cloudformation | ansible | cli |
  instructions | pulumi | arm/bicep

───────────────────────────────────────────────────────────────────
"compliance" — Data Protection Compliance
───────────────────────────────────────────────────────────────────
DATA PROTECTION COMPLIANCE
───────────────────────────────────────────────────────────────────

  Framework          Score    Data Controls    Status
  ─────────────────────────────────────────────────────
  PCI DSS v4.0       <X>%    <N> failing      ⚠ GAPS
  HIPAA              <X>%    <N> failing      ⚠ GAPS
  GDPR               <X>%    <N> failing      ⚠ GAPS
  SOC 2              <X>%    <N> failing      ✓ OK
  ...

DATA-SPECIFIC CONTROL FAILURES:
  <control> — <description> (<N> assets)
  <control> — <description> (<N> assets)
  ...

───────────────────────────────────────────────────────────────────
"accounts" — Data Risk by Account
───────────────────────────────────────────────────────────────────
DATA RISK BY ACCOUNT
───────────────────────────────────────────────────────────────────

  Account              Secrets    PII    Public    Unencrypted
  ────────────────────────────────────────────────────────────
  <account-1>          <N>        <N>    <N>       <N>
  <account-2>          <N>        <N>    <N>       <N>
  ...

WORST ACCOUNT: <account> — <why>

───────────────────────────────────────────────────────────────────
"remediation plan" — Prioritized Data Protection Plan
───────────────────────────────────────────────────────────────────
DATA PROTECTION REMEDIATION PLAN
───────────────────────────────────────────────────────────────────

PHASE 1: STOP THE BLEEDING (immediate)
  [ ] Rotate <N> publicly exposed secrets
  [ ] Remove public access from <N> data stores with sensitive data
  [ ] Add authentication to <N> exposed databases

PHASE 2: ENCRYPT EVERYTHING (this week)
  [ ] Enable encryption at rest on <N> data stores
  [ ] Enable encryption in transit where missing
  [ ] Move <N> secrets to managed secrets service

PHASE 3: ACCESS CONTROLS (this month)
  [ ] Implement least-privilege access to data stores
  [ ] Enable audit logging on all sensitive data stores
  [ ] Set up automated secret rotation

PHASE 4: GOVERNANCE (ongoing)
  [ ] Implement data classification policy
  [ ] Deploy DLP controls
  [ ] Set up continuous monitoring for new data exposure
  [ ] Regular compliance audits

ESTIMATED IMPACT:
  Phase 1: Eliminates <N> critical data exposure alerts
  Phase 2: Resolves <N> encryption compliance failures
  Phase 3: Reduces unauthorized access risk by ~<X>%

START NOW:
  Tell me which phase to begin and your preferred format.
  I'll generate implementation code for each fix.

  Format: terraform | cloudformation | ansible | cli |
  instructions | pulumi | arm/bicep

───────────────────────────────────────────────────────────────────
"full" — Everything Expanded

Show all sections in order.

Edge Cases

No Sensitive Data Found

✅ No exposed sensitive data detected.

Your data protection posture appears clean. Consider:
  • Verify Orca DSPM scanning is enabled for all accounts
  • Check data classification settings
  • This scan covers known patterns — custom sensitive data may need custom rules

Massive Data Exposure (> 50 findings)

⚠ Significant data exposure: <N> findings detected.

Showing top 10 by risk. This indicates a systemic data protection gap.

Recommendations:
  1. Prioritize: Fix publicly exposed data stores first
  2. Automate: Deploy encryption-by-default policies
  3. Prevent: Add pre-commit hooks for secret detection
  4. Monitor: Set up real-time alerts for new public data stores

Secret Already Rotated

Some secrets may already be rotated but the alert remains open. Note:

Note: Verify if this secret has already been rotated.
If rotated, the alert may close on next Orca scan.
If not rotated, treat as active exposure.

MCP Tools Used

Primary Tools

ToolPurposeParameter
discovery_searchFind data exposure findingssearch_phrase, limit
get_asset_related_alerts_summaryAll alerts on data-holding assetsasset_id (UUID)
get_asset_crown_jewel_infoCrown jewel status of data storesgroup_unique_id
get_enabled_compliance_frameworksData protection compliance scoresoptional filters

Secondary Tools

ToolPurposeWhen
get_asset_by_idFull asset detailsDrill-down on specific data store
get_compliance_framework_control_testsFailing data controls"compliance" drill-down
search_cdr_eventsWho accessed the data storeInvestigation
get_linked_entities_mappingWhat connects to the data storeAccess analysis

Parameter Notes

  • discovery_search max 10 results per query — use multiple queries with different search phrases to cover all data types
  • Crown jewel check is important for data stores — databases and storage with critical data are often crown jewels
  • Compliance frameworks with data protection requirements: PCI DSS, HIPAA, GDPR, SOC 2

Implementation Notes

  1. 6 parallel discovery_search queries cover secrets, PII, public data, unencrypted stores, internet-facing data, and certificates.
  2. Data type classification is key — different data types have different compliance implications.
  3. Public + sensitive is always CRITICAL — publicly accessible data with sensitive content is the highest priority.
  4. Secrets should be rotated, not just hidden — always recommend rotation for exposed credentials.
  5. Compliance mapping adds business context — "this violates PCI DSS" gets more traction than "this is exposed".
  6. Link to other skills — suggest /orca-alert-triage <alert-id> for individual findings, /orca-exposure-map for full attack surface, /orca-asset-profile for data store details.
  7. Remediation plan should be phased — don't overwhelm with 50 things to fix at once.

Frequently asked questions

What does the Orca Data Exposure AI skill do?

DSPM view — sensitive data at risk across the environment, exposed secrets/PII/credentials, data store security posture, and remediation priorities. Use when user asks about data exposure, sensitive data, or secrets (e.g., "data exposure", "where is our PII", "sensitive data at risk", "exposed secrets", "DSPM view").

Why use Orca Data Exposure on TypingMind?

Because you install it once and use it with any model. Orca Data Exposure is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Orca Data Exposure in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/orcasecurity/orca-skills/tree/main/skills/orca-data-exposure. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Orca Data Exposure?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Orca Data Exposure?

As many as you like. As long as a model supports skills, you can use Orca Data Exposure with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Orca Data Exposure AI skill free?

Yes. It is published on GitHub by orcasecurity under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇