Feature Lifecycle
These commands cover the full lifecycle of a feature – creating new ones, acquiring existing ones from GitHub, linking them to products, and removing or cleaning them up. A feature moves through several states: cached, declared, installed, migrated, and active.
Command reference
| Command | Description |
|---|---|
feature:create |
Scaffold a new feature locally |
feature:clone |
Clone a feature from GitHub into the cache |
feature:fork |
Fork a feature on GitHub and clone it locally |
feature:add |
Add an editable feature to the active product. Use --dev to add to features_dev only. |
feature:remove |
Remove an editable feature from the active product |
feature:attach |
Pin a released version to the active product. Use --dev or --prod for env-specific features. |
feature:detach |
Unpin a versioned feature from the active product |
feature:unlock |
Convert a versioned snapshot to an editable clone |
feature:delete |
Delete a versioned snapshot from the cache |
feature:discard |
Discard an editable clone from the cache |
Environment-specific features
Features can be scoped to a specific environment using --dev or --prod flags:
splent feature:add ns/name --dev # adds to [tool.splent].features_dev
splent feature:attach ns/name@v1.0 --dev # pins to features_dev
splent feature:attach ns/name@v1.0 --prod # pins to features_prod
This writes the feature entry to features_dev or features_prod in pyproject.toml instead of the default features list. Features in features_dev are only loaded when SPLENT_ENV=dev, and features_prod only when SPLENT_ENV=prod.