Add capabilities¶
Capabilities add tooling or dependencies to a preview project. Select one
archetype, then zero or more compatible capabilities. The engine currently
provides jupyter and scientific-python; both are optionless.
Jupyter for a library¶
Use this when notebooks help you explore or demonstrate a package without needing the Data Science starter layout:
uvx --from "create-forge[engine]==0.3.2" create-forge new "Exploration Lib" --engine-preview --archetype library --capability jupyter --yes --data license=mit
cd exploration-lib
uv run --locked poe check
uv run poe notebook
This adds JupyterLab, the Python kernel, and notebook validation tasks.
Create your own notebook in notebooks/ through JupyterLab; the capability
does not create one. Clear stored outputs and execution counts before
running uv run --locked poe notebook:check. Read the
notebook execution guidance.
Scientific Python for a CLI¶
Use this when a command-line application performs numerical or tabular analysis without notebooks:
uvx --from "create-forge[engine]==0.3.2" create-forge new "Analysis Tools" --engine-preview --archetype cli --capability scientific-python --yes --data license=mit
cd analysis-tools
uv run --locked poe check
uv run analysis-tools hello Analyst
The project has NumPy, pandas, Matplotlib, and scikit-learn runtime dependencies and an import test. Add your analysis functions to the package and call them from a new Typer command. Scientific Python does not require Jupyter or add notebook tooling.
Selection rules¶
- Repeat
--capability IDto select several capabilities. - Data Science requires an explicit
--capability jupyterunder--yes. Interactive selection preselects and locks required capabilities. --no-capabilitiesexplicitly selects none; it conflicts with--capabilityand cannot satisfy Data Science's Jupyter requirement.- With
--yes, supply--archetype; omitted optional capabilities remain unselected. The CLI does not guess additional selections. - Non-interactive preview generation also requires
--data license=VALUE. These recipes usemit; chooseproprietaryorapache-2.0instead when appropriate for your project. The interactive flow asks this question. --platformand--no-platformsare preview selection flags, but no platform components are currently shipped.
Invalid or incompatible selections fail before a project is written.
Choose from the interactive engine catalogue; create-forge list shows
the separate Copier registry.
Component options¶
Options belong to a selected component and use its ID as a prefix:
uvx --from "create-forge[engine]==0.3.2" create-forge new "Versioned Lib" --engine-preview --archetype library --capability jupyter --component-option library.packaging_mode=hatchling-static --component-option library.initial_version=0.2.0 --yes --data license=mit
This selects Library's packaging and initial version without changing Jupyter. See Library options for accepted values. Options for unselected components, unknown options, and invalid values are rejected. CLI Application, Data Science, Jupyter, and Scientific Python currently expose no options.
The CLI consumes the engine's bundled catalogue. Installing an arbitrary Python package does not register a Forge capability. Request new capabilities through the template issue tracker.
Missing an example or found an unclear step? Send documentation feedback.