exasol-setup-personal — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited exasol-setup-personal (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Trigger when the user mentions Exasol Personal, setup Exasol, deploy Exasol, install Exasol, personal database, Exasol on AWS, or asks to get started with Exasol.
Always use the `AskUserQuestion` tool for every question, confirmation, and decision point throughout this skill — no exceptions. Never assume answers or skip questions.
Guide the user through each phase below in order. Do not skip phases — each depends on the previous one.
For each phase, use your knowledge or research to provide current, accurate steps. Do not make up commands or URLs you are not confident about — if unsure, search for the official documentation.
Begin by explaining what Exasol Personal is and what this skill will do.
Tell the user:
What is Exasol Personal?
Exasol Personal is a single-node Exasol database deployed entirely to your own cloud account. Exasol is an analytics-optimised, in-memory columnar database built for high-performance SQL — it's the same technology used by large enterprises, now available for personal use. Key benefits:
exasol CLI handles provisioning, deployment, and management with a single commandexasol connect, no additional tooling requiredWhat this skill will do:
This skill guides you step by step through the complete setup:
exasol CLIexapump for SQL execution and data loadingUse AskUserQuestion to ask: "Ready to get started?"
Use AskUserQuestion to ask which cloud provider they want to use. Currently only AWS is supported. If they choose anything else, explain that only AWS is available at this time and use AskUserQuestion to ask if they want to proceed with AWS.
Use AskUserQuestion to ask: "Do you already have an AWS account with permissions to launch EC2 instances (specifically r6i.xlarge), or do you need to set one up?" There's no recommended option.
Walk them through these steps one by one, waiting for confirmation at each step before moving on.
#### Step 1: Create an AWS account
Guide the user through creating an AWS account. Use your knowledge of the AWS sign-up process to provide current steps, or research the official AWS documentation if needed.
#### Step 2: Create the IAM policy
This policy grants Exasol Personal the exact permissions it needs — no more, no less.
Fetch the policy JSON from:
https://raw.githubusercontent.com/exasol/exasol-personal/refs/heads/main/assets/infrastructure/aws/iam-policy.broad.jsonThen guide the user through creating an IAM policy in the AWS console using that JSON. Use your knowledge of the AWS IAM console to provide current navigation steps, naming the policy ExasolPersonalPolicy.
Use AskUserQuestion to confirm the policy was created before continuing.
#### Step 3: Create a dedicated IAM user
Guide the user through creating an IAM user named exasol-personal in the AWS IAM console, attaching the ExasolPersonalPolicy directly to that user. Use your knowledge of the AWS IAM console to provide current steps.
Use AskUserQuestion to confirm the user was created before continuing.
#### Step 4: Create access keys
Guide the user through creating CLI access keys for the exasol-personal IAM user in the AWS IAM console. Use your knowledge of the AWS IAM console to provide current steps.
Make sure the user saves both values — the Secret Access Key is shown only once:
AKIA...)Use AskUserQuestion to confirm the user has both values saved before proceeding.
Use AskUserQuestion to confirm they have an IAM user with appropriate permissions and access keys ready before proceeding to Phase 3.
Check if the AWS CLI is installed by running:
aws --versionConfirm the version and proceed to Phase 4.
Use AskUserQuestion to ask if they want to install it. If yes, use AskUserQuestion to ask which OS they are on, then guide them through installing the AWS CLI using your knowledge of the official installation process for their platform, or research the official AWS documentation if needed.
After installation, verify with aws --version. If it fails, the user may need to open a new terminal or add it to their PATH.
Use AskUserQuestion to collect the following values one at a time:
exasol)eu-west-1, us-east-1, eu-central-1)text, json, or table (default: text)Then use AskUserQuestion to ask: "Would you like me to run the AWS CLI commands to set up the profile for you, or would you prefer to run them yourself?"
If they want you to run the commands, execute:
aws configure set aws_access_key_id <ACCESS_KEY_ID> --profile <profile-name>
aws configure set aws_secret_access_key <SECRET_ACCESS_KEY> --profile <profile-name>
aws configure set region <REGION> --profile <profile-name>
aws configure set output <OUTPUT_FORMAT> --profile <profile-name>If they want to run the commands themselves, show them the commands with their values filled in so they can copy and run them.
Ask them to confirm once done.
Either way, verify the configuration afterwards:
aws sts get-caller-identity --profile <profile-name>This should return the account ID and IAM user ARN. If it fails, the credentials are incorrect — ask the user to double-check and retry.
Check if the exasol CLI is installed:
exasol versionInstall it by running:
curl https://downloads.exasol.com/exasol-personal/installer.sh | shAfter installation, verify with exasol version. If the command is not found, the user may need to open a new terminal or add ~/.exasol/bin to their PATH.
Use AskUserQuestion to ask for:
exasol-deployment)Then execute the following steps:
export AWS_PROFILE=<profile-name>Use the profile name from Phase 4.
mkdir -p <location>/<directory-name>
cd <location>/<directory-name>exasol install awsTell the user:
After installation completes, run:
exasol infoThis shows connection details including the host, port, and credentials. The credentials are also stored in deployment.json in the deployment directory.
Test the connection using exasol connect (the built-in SQL client):
exasol connectType SELECT 1; and press Enter. If it returns a result, the deployment is working. Type exit or press Ctrl+D to quit.
Tell the user:
exasol stop pauses the instance (but networking/storage costs continue).exasol start restarts a stopped instance (IP addresses change — use exasol info for new connection details).exasol destroy removes ALL AWS resources. Never delete the deployment directory without running exasol destroy first.Now help the user connect to their Exasol Personal database using exapump — the CLI tool used for SQL execution and data loading. The connection credentials are in deployment.json in the deployment directory.
cat deployment.jsonNote the host, port, username, and password — you will need these for the exapump profile.
exapump --versionIf not installed, install it:
curl -fsSL https://raw.githubusercontent.com/exasol-labs/exapump/main/install.sh | shVerify again after installation. If the command is not found, the user may need to open a new terminal or add ~/.exapump/bin to their PATH.
List all existing profiles:
exapump profile listNever assume which profile to use. Always ask the user explicitly:
AskUserQuestion to ask: "No exapump profiles found. Shall I create one? What would you like to name it?" (suggest exasol-personal). Then create it: exapump profile add <name>This is interactive and will prompt for:
deployment.jsondeployment.json (typically 8563)deployment.jsondeployment.jsony (Exasol Personal uses a self-signed certificate; accept it)AskUserQuestion to ask: "These profiles exist: [list]. Which would you like to use, or would you like to create a new one? Note: existing profiles may have stale credentials if the instance was restarted — would you like to update any of them with the current credentials from deployment.json?" exapump profile remove <name>
exapump profile add <name>Enter the credentials from deployment.json as above.
exapump profile add <name> with the chosen name.exapump sql --profile <chosen-profile> "SELECT 1"If this fails, verify the credentials in deployment.json match what was entered. Offer to update the profile and retry.
Use AskUserQuestion to ask: "Would you like to load sample data? This includes a PRODUCTS table (1M rows, 27.3 MiB) and a PRODUCT_REVIEWS table (1.8M rows, 154.5 MiB)."
If yes, use exapump sql to run the setup statements. Run these from the deployment directory:
Step 5a: Create the schema and tables, then import the data:
exapump sql --profile <chosen-profile> "CREATE SCHEMA IF NOT EXISTS SAMPLE_DATA"
exapump sql --profile <chosen-profile> "CREATE OR REPLACE TABLE SAMPLE_DATA.PRODUCTS (PRODUCT_ID DECIMAL(18,0), PRODUCT_CATEGORY VARCHAR(100), PRODUCT_NAME VARCHAR(2000000), PRICE_USD DOUBLE, INVENTORY_COUNT DECIMAL(10,0), MARGIN DOUBLE, DISTRIBUTE BY PRODUCT_ID)"
exapump sql --profile <chosen-profile> "IMPORT INTO SAMPLE_DATA.PRODUCTS FROM PARQUET AT 'https://exasol-easy-data-access.s3.eu-central-1.amazonaws.com/sample-data/' FILE 'online_products.parquet'"
exapump sql --profile <chosen-profile> "CREATE OR REPLACE TABLE SAMPLE_DATA.PRODUCT_REVIEWS (REVIEW_ID DECIMAL(18,0), PRODUCT_ID DECIMAL(18,0), PRODUCT_NAME VARCHAR(2000000), PRODUCT_CATEGORY VARCHAR(100), RATING DECIMAL(2,0), REVIEW_TEXT VARCHAR(100000), REVIEWER_NAME VARCHAR(200), REVIEWER_PERSONA VARCHAR(100), REVIEWER_AGE DECIMAL(3,0), REVIEWER_LOCATION VARCHAR(200), REVIEW_DATE VARCHAR(200), DISTRIBUTE BY PRODUCT_ID)"
exapump sql --profile <chosen-profile> "IMPORT INTO SAMPLE_DATA.PRODUCT_REVIEWS FROM PARQUET AT 'https://exasol-easy-data-access.s3.eu-central-1.amazonaws.com/sample-data/' FILE 'product_reviews.parquet'"Step 5b: Verify row counts:
exapump sql --profile <chosen-profile> "SELECT COUNT(*) FROM SAMPLE_DATA.PRODUCTS"
exapump sql --profile <chosen-profile> "SELECT COUNT(*) FROM SAMPLE_DATA.PRODUCT_REVIEWS"Expected results: PRODUCTS = 1,000,000 rows; PRODUCT_REVIEWS = 1,822,007 rows.
Tell the user that the exasol-database skill is now available to help them query and explore their database. Suggest a few things they can do:
exapump upload to load CSV or Parquet files into new tablesexapump export to extract query results to local filesThe exasol-database skill activates automatically whenever the user mentions Exasol, exapump, SQL queries, or data loading. They can just describe what they want to do and Claude will guide them.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.