This repository contains skills used for ClickHouse DB performance and schema analysis and helper workflows.
altinity-expert-clickhouse/: Modular ClickHouse diagnostic skill set. Each module is a standalone skill underaltinity-expert-clickhouse/skills/(e.g., memory, merges, replication).
- On PRs and pushes to
main, GitHub Actions packages changed skills and uploads zip files as workflow artifacts. - On tags matching
skills-v*, GitHub Actions packages all skills and publishes them as GitHub Release assets.
/skill-name prompt message
$skill-name message
gemini doesn't have dedicated syntax for skill usage, so you need use prompt like that
use skill skill-name message
npx skills add --list Altinity/skills
npx skills add Altinity/skills
variants:
- use $skill-installer skill inside codex
- clone repo and copy needed skills into ~/.codex/skill directory.
- clone repo and ln (symlink) repo's skill directory into ~/.codex
variants:
- claude skills add URL
- clone repo and copy needed skills into ~/.claude/skill directory.
- clone repo and ln (symlink) repo's skill directory into ~/.claude
Install an agent skill from a git repository URL or a local path.
gemini skills install <source> [--scope] [--path]
or manually:
git clone https://github.com/Altinity/Skills.git
mkdir -p ~/.gemini/skills
cp /absolute/path/to/Skills/altinity-expert-clickhouse/skills/altinity-expert-clickhouse-memory ~/.gemini/skills/
# or
ln -s /absolute/path/to/Skills/altinity-expert-clickhouse/skills ~/.gemini/skills/Download the zip files from https://github.com/Altinity/Skills/releases and upload them in Settings (or Admin Settings for org‑wide use) to Capabilities section.
A pre-built Docker image with Claude Code, Codex CLI, and all skills is available:
docker pull ghcr.io/altinity/expert:latestThe image includes:
claude- Anthropic Claude Code CLIcodex- OpenAI Codex CLIclickhouse-client- ClickHouse clientaltinity-mcp- Altinity MCP server
# Claude agent
docker run -it --rm \
-v ~/.claude:/home/bun/.claude \
ghcr.io/altinity/expert:latest \
claude --dangerously-skip-permissions -p "/altinity-expert-clickhouse-overview Analyze cluster health"
# Codex agent
docker run -it --rm \
-v ~/.codex:/home/bun/.codex \
ghcr.io/altinity/expert:latest \
codex --dangerously-skip-permissions "\$altinity-expert-clickhouse-overview Analyze cluster health"A Helm chart is provided to run skills as Kubernetes Jobs in non-interactive mode.
Chart details:
- chart name:
altinity-expert - source path:
helm/skills-agent - detailed chart docs:
helm/skills-agent/README.md
From OCI registry (recommended):
# Use --version to pin a chart release in production.
helm install my-audit oci://ghcr.io/altinity/skills-helm-chart/altinity-expert \
--set skillName=altinity-expert-clickhouse-overview \
--set prompt="Analyze ClickHouse cluster health" \
--set-file credentials.claudeCredentials=~/.claude/.credentials.jsonFrom local repository:
git clone https://github.com/Altinity/skills.git
cd skills
helm install my-audit ./helm/skills-agent \
--set agent=codex \
--set model=gpt-5.2-codex \
--set skillName=altinity-expert-clickhouse-overview \
--set prompt="Analyze ClickHouse cluster health and summarize top risks" \
--set-file credentials.codexAuth=~/.codex/auth.jsonhelm lint ./helm/skills-agent
# Render defaults
helm template my-audit ./helm/skills-agent
# Render an IRSA-enabled variant
helm template my-audit ./helm/skills-agent \
--set storeResults.enabled=true \
--set storeResults.s3Bucket=my-results-bucket \
--set storeResults.iamRoleArn=arn:aws:iam::123456789012:role/my-eks-s3-role \
--set serviceAccount.create=true| Parameter | Description | Default |
|---|---|---|
debugMode |
Create debug Pod (sleep infinity) instead of Job |
false |
agent |
Agent CLI: claude or codex |
claude |
model |
Codex model (agent=codex only) |
"" |
skillName |
Skill name without leading / or $ |
altinity-clickhouse-expert |
prompt |
Prompt passed to skill | Analyze ClickHouse cluster health |
image.repository |
Docker image repository | ghcr.io/altinity/expert |
image.tag |
Docker image tag | latest |
imagePullSecrets |
Pull secrets for private registries | [] |
job.restartPolicy |
Pod restart policy | Never |
job.backoffLimit |
Job retries | 0 |
job.ttlSecondsAfterFinished |
Cleanup TTL | 3600 |
job.activeDeadlineSeconds |
Job timeout | 1800 |
resources |
CPU/memory requests and limits | see values.yaml |
extraEnv |
Additional env vars for container | [] |
clickhouse.host |
ClickHouse host | localhost |
clickhouse.port |
ClickHouse port | 9440 |
clickhouse.user |
ClickHouse user | default |
clickhouse.password |
ClickHouse password | "" |
clickhouse.tls.enabled |
Enable TLS in generated configs | true |
clickhouse.tls.ca |
PEM CA cert content | "" |
clickhouse.tls.cert |
PEM client cert content | "" |
clickhouse.tls.key |
PEM client key content | "" |
credentials.create |
Create credentials/config secret from values | true |
credentials.existingSecretName |
Existing secret to mount when create=false |
"" |
serviceAccount.create |
Create ServiceAccount | false |
serviceAccount.name |
ServiceAccount name override | "" |
serviceAccount.namespace |
Namespace for created ServiceAccount | "" |
serviceAccount.annotations |
Extra ServiceAccount annotations | {} |
storeResults.enabled |
Upload successful run logs to S3 | false |
storeResults.s3Bucket |
S3 bucket name | "" |
storeResults.s3Prefix |
S3 key prefix | agent-results |
storeResults.iamRoleArn |
IRSA role ARN (EKS) | "" |
storeResults.awsAccessKeyId |
AWS key id when not using IRSA | "" |
storeResults.awsSecretAccessKey |
AWS secret when not using IRSA | "" |
storeResults.awsRegion |
AWS region | us-east-1 |
helm install my-debug oci://ghcr.io/altinity/skills-helm-chart/altinity-expert \
--set debugMode=true \
--set skillName=altinity-expert-clickhouse-overview \
--set prompt="Analyze ClickHouse cluster health" \
--set-file credentials.claudeCredentials=~/.claude/.credentials.jsonkubectl exec -it <release-name>-altinity-expert-debug -- /bin/sh
kubectl logs <release-name>-altinity-expert-debugIRSA mode (recommended on EKS):
helm install my-audit oci://ghcr.io/altinity/skills-helm-chart/altinity-expert \
--set skillName=altinity-expert-clickhouse-overview \
--set prompt="Analyze ClickHouse cluster health" \
--set-file credentials.claudeCredentials=~/.claude/.credentials.json \
--set storeResults.enabled=true \
--set storeResults.s3Bucket=my-results-bucket \
--set storeResults.s3Prefix=agent-results \
--set storeResults.iamRoleArn=arn:aws:iam::123456789012:role/my-eks-s3-role \
--set serviceAccount.create=trueStatic AWS credentials mode:
helm install my-audit oci://ghcr.io/altinity/skills-helm-chart/altinity-expert \
--set skillName=altinity-expert-clickhouse-overview \
--set prompt="Analyze ClickHouse cluster health" \
--set-file credentials.claudeCredentials=~/.claude/.credentials.json \
--set storeResults.enabled=true \
--set storeResults.s3Bucket=my-results-bucket \
--set storeResults.awsAccessKeyId=AKIAIOSFODNN7EXAMPLE \
--set storeResults.awsSecretAccessKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYWhen storeResults.enabled=true:
- Logs are written in-container to
/workspace/${TIMESTAMP}/agent-execution.log. - On exit code
0, the full work directory uploads tos3://${S3_BUCKET}/${S3_PREFIX}/${TIMESTAMP}/. - On non-zero exit code, upload is skipped.
When credentials.create=false, the existing secret must contain:
codex-auth.jsonclaude-credentials.jsonclickhouse-client-config.xmlaltinity-mcp-config.yaml- optional TLS keys if enabled:
clickhouse-ca.crt,clickhouse-client.crt,clickhouse-client.key
# Example: install using an existing secret
helm install my-audit ./helm/skills-agent \
--set credentials.create=false \
--set credentials.existingSecretName=agent-credentials \
--set skillName=altinity-expert-clickhouse-overview \
--set prompt="Run diagnostics"kubectl get jobs -l app.kubernetes.io/instance=my-audit
kubectl logs -l app.kubernetes.io/instance=my-audit -f
kubectl get pods -l app.kubernetes.io/instance=my-auditHelm-free alternative is available for interactive expert runs with cloudctl + kubectl.
- Script:
k8s/scripts/run-expert-job.sh - Template:
k8s/templates/expert-job.yaml - Docs:
k8s/README.md
Example:
export EXPERT_CH_USER=default
export EXPERT_RUNTIME=codex
k8s/scripts/run-expert-job.sh ather prod 'my-clickhouse-password'experimental/codex-summarize-pipeline/: Chunk→reduce pipeline for summarizing large articles/files intosummaries/*.md.experimental/github-triage/: Search and summarize relevant GitHub issues/PRs usinggh.experimental/sub-agent/: Prototype sub-agent workflow (multi-agent attempt by exec of next codex/claude inside skill processing).
- Each skill lives in its own directory and includes a
SKILL.md. - Supporting content is stored next to
SKILL.md(e.g.,modules/, scripts, prompts).