Create and configure Data Science Projects on OpenShift AI with namespace setup, S3 data connections, pipeline server, and model serving enablement. Use when: - "Create a data science project" - "Set up a new namespace for ML work" - "Add an S3 data connection to my project" - "Configure the pipeline server" - "Enable model serving on my project" Bootstraps an RHOAI Data Science Project with proper labels, data connections, pipeline infrastructure, and model serving configuration. NOT for deploying models (use /model-deploy). NOT for creating workbenches (use /workbench-manage). NOT for managing pipelines after setup (use /pipeline-manage).
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Bootstrap a Red Hat OpenShift AI Data Science Project from scratch. Creates a namespace with RHOAI dashboard labels, configures S3-compatible data connections, sets up the pipeline server with external storage, and enables model serving on the project.
Required MCP Server: openshift (OpenShift MCP Server)
Required MCP Tools (from openshift):
resources_get - Inspect namespace labels, LimitRange, ResourceQuota, DSPA statusresources_list - List namespaces, Secrets, PVCs (OpenShift fallback for RHOAI tools)resources_create_or_update - Create namespaces, Secrets, DSPA CRs (OpenShift fallback and primary for pipeline server)Preferred MCP Server: rhoai (RHOAI MCP Server) — used when available, automatic OpenShift fallback on failure
Preferred MCP Tools (from rhoai):
list_data_science_projects - List existing RHOAI projects to check for duplicatescreate_data_science_project - Create namespace with RHOAI labels and dashboard integrationget_project_details - Verify project creation and inspect configuration. Note: use name parameter, not namespace.get_project_status - Get comprehensive project status including componentscreate_s3_data_connection - Create S3-compatible data connection secretlist_data_connections - List existing data connections in the projectget_pipeline_server - Check pipeline server configurationset_model_serving_mode - Enable single-model or multi-model servingNote: create_pipeline_server is intentionally excluded — it constructs invalid DSPA manifests. Pipeline server creation always uses OpenShift direct.
Common prerequisites (KUBECONFIG, OpenShift+RHOAI cluster, verification protocol): See skill-conventions.md.
Fallback templates: See openshift-fallback-templates.md for OpenShift YAML templates used when RHOAI tools are unavailable.
Additional cluster requirements:
Use this skill when you need to:
Do NOT use this skill when:
/model-deploy)/workbench-manage)/pipeline-manage)/serving-runtime-config)Ask the user for the project name first:
Immediately check if the project name already exists:
MCP Tool: list_data_science_projects (from rhoai)
Parameters: none
[name] already exists. Would you like to: (a) configure additional components on it, or (b) choose a different name?" WAIT for user decision. If user chooses (a), skip Step 2 and proceed to optional configuration steps (Steps 3-5). If user chooses (b), repeat the name check.If rhoai unavailable or returns error: Use resources_list (from openshift) with apiVersion: v1, kind: Namespace, labelSelector: opendatahub.io/dashboard=true.
Ask the user for remaining settings:
Present configuration table:
| Setting | Value |
|---|---|
| Project name | [name] |
| Display name | [display_name] |
| Description | [description] |
| Data connections | [yes/no] |
| Pipeline server | [yes/no] |
| Model serving mode | [single/multi] |
WAIT for user to confirm or modify the configuration.
MCP Tool: create_data_science_project (from rhoai)
Parameters:
name: project name from Step 1 - REQUIRED (DNS-compatible: lowercase alphanumeric and hyphens, max 63 chars)display_name: human-readable display name - REQUIREDdescription: project description - OPTIONALIf rhoai unavailable or returns error: Use resources_create_or_update (from openshift) to create the Namespace with RHOAI labels. See openshift-fallback-templates.md for the YAML template.
Verify creation:
MCP Tool: get_project_details (from rhoai)
Parameters:
name: the created project name - REQUIREDConfirm the project was created with proper RHOAI labels (opendatahub.io/dashboard: "true").
If rhoai unavailable or returns error: Use resources_get (from openshift) with apiVersion: v1, kind: Namespace, name: [project-name]. Check for label opendatahub.io/dashboard: "true".
Note: The get_project_details tool requires a name parameter (not namespace). If the tool returns a parameter error, fall back to OpenShift.
Error Handling:
Output to user: "Data Science Project [name] created successfully."
Skip this step if user declined data connections in Step 1.
Ask the user for S3 connection details:
https://s3.amazonaws.com, MinIO endpoint)Display connection configuration (credentials REDACTED):
| Setting | Value |
|---|---|
| Connection name | [name] |
| Bucket | [bucket] |
| Endpoint | [endpoint] |
| Access key | [first-4-chars]**** |
| Secret key | ******** |
| Region | [region] |
WAIT for user to confirm the connection details are correct.
MCP Tool: create_s3_data_connection (from rhoai)
Parameters:
namespace: project name from Step 2 - REQUIREDname: connection name - REQUIREDbucket: S3 bucket name - REQUIREDendpoint: S3 endpoint URL - REQUIREDaccess_key: access key ID - REQUIREDsecret_key: secret access key - REQUIREDregion: AWS region - OPTIONAL (omit for non-AWS S3)If rhoai unavailable or returns error: Use resources_create_or_update (from openshift) to create the Secret with S3 annotations. See openshift-fallback-templates.md for the YAML template.
Verify creation:
MCP Tool: list_data_connections (from rhoai)
Parameters:
namespace: project name - REQUIREDConfirm the data connection appears in the list.
If rhoai unavailable or returns error: Use resources_list (from openshift) with apiVersion: v1, kind: Secret, namespace: [namespace], labelSelector: opendatahub.io/dashboard=true. Filter results by annotation opendatahub.io/connection-type: s3.
Error Handling:
[name] already exists. Create with a different name?"Output to user: "Data connection [name] created in project [namespace]."
Repeat this step if user wants to create multiple data connections.
Skip this step if user declined pipeline server in Step 1.
Prerequisite check: A data connection must exist in the project (from Step 3 or pre-existing). If no data connections exist, inform user: "Pipeline server requires an S3 data connection for artifact storage. Would you like to create one now?" and return to Step 3.
MCP Tool: get_pipeline_server (from rhoai)
Parameters:
namespace: project name - REQUIREDIf pipeline server already exists, report its status and ask if user wants to reconfigure.
Display pipeline server configuration:
| Setting | Value |
|---|---|
| Namespace | [namespace] |
| Data connection | [data_connection_name] |
WAIT for user to confirm pipeline server setup.
Pipeline Server Creation (OpenShift direct — the create_pipeline_server RHOAI tool is not used because it constructs invalid DSPA manifests):
MCP Tool: resources_create_or_update (from openshift)
Create a DataSciencePipelinesApplication CR using the template from openshift-fallback-templates.md.
Parameters to fill in the template:
namespace: target namespacebucket: S3 bucket name from the data connectionhost: S3 endpoint without protocol prefix (e.g., minio.namespace.svc:9000)scheme: http or httpssecretName: name of the S3 data connection secret created in Step 3region: AWS region or empty string for MinIOVerify DSPA is ready:
MCP Tool: resources_get (from openshift)
apiVersion: datasciencepipelinesapplications.opendatahub.io/v1alpha1, kind: DataSciencePipelinesApplication, name: dspa, namespace: [namespace]Check .status.conditions for Ready=True. Poll every 15 seconds until ready or timeout (5 minutes).
Verify creation:
MCP Tool: get_pipeline_server (from rhoai)
Parameters:
namespace: project name - REQUIREDConfirm the pipeline server is configured and initializing.
If rhoai unavailable or returns error: Use resources_get (from openshift) for the DSPA CR as described above.
Error Handling:
[name] not found in namespace. Create it first."Output to user: "Pipeline server configured in project [namespace] using data connection [data_connection]."
MCP Tool: set_model_serving_mode (from rhoai)
Parameters:
namespace: project name - REQUIREDmode: "single" or "multi" - REQUIRED (default: "single")If rhoai unavailable or returns error: Patch the namespace annotation via resources_create_or_update (from openshift). Set annotation opendatahub.io/model-serving-mode to single or multi on the Namespace.
Final validation:
MCP Tool: get_project_status (from rhoai)
Parameters:
namespace: project name - REQUIREDReport project summary:
| Component | Status |
|---|---|
| Project | [name] (created / existing) |
| Data connections | [count] configured |
| Pipeline server | [configured / not configured] |
| Model serving | [single / multi] mode enabled |
Suggest next steps:
/workbench-manage - Create a notebook workbench in this project/model-deploy - Deploy a model to this project/pipeline-manage - Create and run data science pipelines/model-registry - Register and manage models in the Model RegistryError: create_data_science_project returns conflict error
Cause: A namespace with the same name already exists in the cluster, either as an RHOAI project or a regular OpenShift project.
Solution:
list_data_science_projects to check if it is an existing RHOAI projectopendatahub.io/dashboard: "true" labelError: Data connection created but pipeline server or model serving cannot access storage
Cause: The S3 endpoint URL is malformed, unreachable from the cluster, or requires TLS configuration.
Solution:
https://)http://minio.minio-ns.svc:9000)https://s3.us-east-1.amazonaws.com)Error: Pipeline server status remains unhealthy or pods crash
Cause: Usually caused by an invalid data connection (wrong credentials or unreachable bucket), or insufficient cluster resources.
Solution:
pods_log (from openshift) for specific error messagesError: Resource creation fails with quota exceeded error
Cause: The cluster has ResourceQuota or LimitRange policies that restrict resource creation in the namespace.
Solution:
resources_get (from openshift) to inspect ResourceQuota in the namespaceSee Prerequisites for the complete list of required and optional MCP tools.
/workbench-manage - Create notebook workbenches in the project/model-deploy - Deploy models to the project/pipeline-manage - Create and manage pipeline runs/serving-runtime-config - Configure custom serving runtimes in the projectUser: "Create a data science project called fraud-detection with an S3 connection and pipeline server"
Skill response: Gathers requirements, presents configuration table, creates project fraud-detection, configures S3 data connection (credentials redacted in display), sets up pipeline server, enables single-model serving, and reports final project status with next steps.
See skill-conventions.md for general HITL and security conventions.
Skill-specific checkpoints:
RHEcosystemAppEng/agentic-plugins
53fa7d8
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.