# `SF014` Project manifest
{bdg-ref-primary}`input `
{bdg-ref-primary}`tooling `
The user shall be able to group all input files of a project in a single manifest file,
and pass that manifest to the speky CLI instead of listing individual files.
A manifest is a YAML or TOML file with `kind: project` containing:
- `name`: the project identifier, used as the namespace in reference tags
(e.g. `speky:my-project#SF001`)
- `files`: a list of glob patterns matching specification files to load
- `root_directory`: an optional path relative to the manifest, used as the base for
glob patterns and displayed file paths (defaults to the manifest's own directory)
- `comments_csvs`: an optional list of glob patterns for CSV comment files
When a manifest is loaded, all matched files are loaded in sorted order.
:::{dropdown} Tested by
:open:
:icon: check-circle-fill
:color: success
[`TF012` Use a project manifest](/tests/TF012)
:::
:::{dropdown} References
:icon: link
:color: secondary
__Relates to:__
- [`SF001` Write requirements](/requirements/SF001)
- [`SF012` Input file validation](/requirements/SF012)
__Referenced by:__
[`SF015` Code sources in manifest](/requirements/SF015)
:::
:::{dropdown} Source
:icon: file-code
:color: info
__Source file__: [`specs/functional.yaml`](https://github.com/agagniere/speky/blob/master/specs/functional.yaml)
__Loaded from__: [`speky`](https://github.com/agagniere/speky/blob/master/specs/speky.yaml)
__Implemented in:__
{fab}`python` [`read_file`](https://github.com/agagniere/speky/blob/master/python/speky/specification.py#L79)
:::
----------
__Comments__
:::{card} Antoine
:text-align: left
For now, the Typst output uses a .typ file as its equivalent and does not support manifests.
:::