원클릭으로
hops-features
Create and schedule/run a feature pipeline program from additional user input. Build on the ML system requirements.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create and schedule/run a feature pipeline program from additional user input. Build on the ML system requirements.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when writing and deploying an interactive agent (e.g. a LlamaIndex program) as a served Hopsworks deployment.
Use when writing Streamlit or custom Python apps for Hopsworks, deploying from HopsFS or Git, migrating legacy apps off `APP_BASE_URL_PATH`, or managing app routing/readiness, monitoring, and public sharing. Auto-invoke when user wants to create a dashboard, deploy a Python app to Hopsworks, configure app routing/readiness, or access the feature store from an app. Input an app source + env + memory; output a running app and its URL.
Mount or ingest a table from a supported datasource. Mount tables from a datasource as an external feature group or ingest data into a new feature group using DLTHub. Auto-invoke when user works with external data (Snowflake, BigQuery, Redshift, S3, ADLS, GCS, JDBC, SQL, Databricks Unity Catalog, Postgres, MySQL, Oracle, SAP, MongoDB, CRM, REST APIs).
Use when writing Python code that creates, inserts into, or manages tables or feature groups. Auto-invoke when user writes feature pipelines, feature engineering code, or asks about feature group best practices (online vs offline, batching, OOM, materialization, embeddings, statistics).
Use when a Hopsworks job, app, or deployment needs Python libraries that are not in a base environment. Clone a base environment and install requirements or a wheel into the clone. Auto-invoke when the user hits a missing-package error in a job/app/deployment, asks to install custom dependencies, add a pip requirement, install a wheel, or pick which Python environment a workload should run in.
Use when the user asks where something lives in the Hopsworks UI or how to reach a page (Data Sources, Feature Groups, Feature Views, Model Registry, Deployments, Apps, Agents, Jobs, Jupyter, Project Settings). Knowledge skill: the project-scoped sidebar layout and what sits under each section, so you can point users to the right place.
| name | hops-features |
| description | Create and schedule/run a feature pipeline program from additional user input. Build on the ML system requirements. |
This skill should be invoked when the user wants to create a feature pipeline program.
A feature pipeline reads from data sources, applies model-independent transformations (MITs) to produce reusable features, and writes them to feature groups in the feature store. It is one of the three FTI (feature/training/inference) pipelines, developed and operated independently. MITs (aggregations, lagged/windowed features, binning, data validation/cleaning, vector embeddings) are the only transformations that belong here. Model-dependent transformations (encoding, scaling, normalization) belong in the training and inference pipelines, not the feature pipeline. Features written here are reusable across many models, so prefer reusing an existing feature over recomputing it.
reqs/ (reqs/feature-pipeline.md, reqs/training-pipeline.md, or reqs/inference-pipeline.md).Use AskUserQuestion (step 3) about every aspect of the plan until you reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. Confirm the proposed deep modules and which modules they want tests for (step 4).
The ML system requirements step should provide the inputs, and the new features that will be computed as outputs, and feature freshness requirements, SLAs (uptime in number of nines), preferred processing frameworks (for batch: DuckDB, Polars, Pandas, Sparks; for streaming: Spark Streaming), and any ideas for solutions. Check if the feature pipeline has dependencies on the outputs of other feature pipelines that should run before it and write down the dependencies.
Understand any existing source code in the repo and the available data sources and feature groups.
AskUserQuestion about every aspect of this plan until you reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one.
Sketch out the data sources, frameworks that will be used, and transformations that will be performed to build or modify to complete the implementation. Actively look for opportunities to extract deep modules that can be tested in isolation. A deep module (as opposed to a shallow module) is one which encapsulates a lot of functionality in a simple, testable interface which rarely changes. Check with the user that these modules match their expectations. Check with the user which modules they want tests written for.
Once you have a complete understanding of the problem and solution, use the template below to write the specification. The reqs (pipeline requirements) should be written as a local markdown file at reqs/feature-pipeline.md, reqs/training-pipeline.md or reqs/inference-pipeline.md. Create the reqs/ directory if it doesn’t exist. Do NOT call any external service.
The input data sources, the data that will be read, the transformations (MITs) that will be applied, and the sink feature group(s) for the data. Whether this a batch program or a streaming program. Will a transformation be used at runtime and require request-time parameters to be computed? That is an on-demand transformation (ODT); if yes, then create as a custom transformation in Hopsworks and attach it to the feature group. The same ODT function can be reused in the feature pipeline over historical data and in the online inference pipeline at request time, which avoids training/serving skew.
Make the pipeline safe to rerun: writes to feature groups should be idempotent and atomic so that a failure and retry does not leave duplicate or partial feature data. Validate feature data (e.g. with a Great Expectations expectation suite on the feature group) before it is written, so one bad record does not later break a training or inference run.
Is it a batch or streamining job? The same program should both backfill historical data and process new incremental data, parameterized by start_time/end_time over the data source's event_time. Do you need to first run a backfill job with start/end time for the data sources? Do the source feature groups or data sources support event_time? Will it be a simple job execution or a scheduled job (optionally with incremental reads from feature groups and/or data sources). Load hops-job skill.
One or more feature groups should be the sink of the feature pipelines. Use the hops-fg skill to create and write them (online vs offline, schema, provenance). For external/source data, use hops-data-sources; for PySpark processing, hops-spark. Set a description= on each sink feature group and on every Feature(...): undescribed features land as empty envelopes in the UI and are not discoverable.
Which framework was chosen based on expected workload size, feature freshness requirements, and user preferences.
Can you save some sample input data that can be used to implement an integration test that reads the sample data, transforms it, writes it to a test feature group created when needed, read the data written, and then delete test feature group. Add unit test for transformations that should be contracts for downstream consumers of the engineered features.