Create a project for a cli tool named secretzero that is an interface for a secret management system for code repositories 
that defines variables:, providers, secrets, templates, and targets. To better understand this project's goals read in `README.md` now.

Now use the local `Secretfile.yml` as the source of truth for secret configuration, generation, and storage. 
Pay close attention to the comments in the `Secretfile.yml` as they provide important guidance on the structure and fields 
to include in the new configuration format.

Review the existing `Secretfile.yml` and refine upon its structure to facilitate the implementation of the CLI tool, 
ensuring that it supports the generation, storage, and rotation of secrets across multiple platforms and storage locations.

The resulting data structure should be in YAML format and should be designed to be extensible for future additions of 
variables, providers, secret types, and target types. variable interpolation should be supported for dynamic configuration of secrets and targets.
This project should include a continuously updated documentation that builds into a static website with examples and best practices 
for secret management in code repositories, the website to be published will be secret0.com. Ensure a comprehensive test suite is 
included to validate the functionality of the secret management system, as well as a CLI tool for managing the secrets defined in the YAML configuration.
Follow the comments in the example `Secretfile.yml` for guidance on the structure and fields to include in the new configuration format.
Ensure strongly typed data structures for secret definitions, provider configurations, and target configurations to enable validation and error handling in the CLI tool.
Support for secret rotation policies should be included, allowing users to define rotation intervals and automated rotation processes for secrets stored in various targets.
Secret templates should allow for the definition of complex secret generation logic, including the ability to reference external scripts or services for generating secret values, as well as support for common secret types such as passwords, API keys, and certificates.
Schema validation should be implemented to ensure that the YAML configuration adheres to the defined structure and includes all required fields, with clear error messages for any validation failures.

The CLI tool will allow for composable variable files that can be used to override default values in the `Secretfile.yml` at runtime, enabling dynamic configuration
of secrets and targets without modifying the base configuration file. This will allow for different environments 
(e.g. development, staging, production) to have different secret configurations while still using the same underlying 
structure and logic defined in the `Secretfile.yml`.

Ensure the tool can later be extended to support additional secret management platforms and storage methods as needed, 
with a modular design that allows for easy integration of new providers and target types. The tool should also be able to be turned into
an API service in the future, allowing for programmatic management of secrets in addition to the CLI interface.

Use strongly typed models and adapters as needed to ensure that the data structures for secrets, providers, and targets are well-defined and validated, 
providing clear error messages for any issues in the configuration. This will help to ensure the reliability and security of the secret 
management system, as well as making it easier for users to understand and manage their secrets effectively.

Aim for a beautiful and intuitive user experience in both the CLI tool and the future API service, 
ensuring that users can easily navigate and manage their secrets. This includes clear and concise documentation, helpful error messages, 
and a well-designed interface for both the CLI and API.

Include multiple examples in the documentation for different use cases and best practices for secret management in code repositories, 
demonstrating how to use the CLI tool to manage secrets across different platforms and storage methods, as well as how to define secrets, 
providers, and targets in the `Secretfile.yml` configuration. 

Development should happen in phases, with the initial phase focused on defining the data structures and configuration format in the `Secretfile.yml`,
followed by the implementation of the CLI tool for managing secrets based on this configuration, and finally the development of the
documentation and static website for secret management best practices. 
 
Each phase should include comprehensive testing to ensure the functionality and reliability of the system as well as clear tracking of 
changes and updates to the configuration format and CLI tool features. The project should be designed with extensibility in mind, 
allowing for future additions of features, providers, and target types as needed. All features and functionality should be capable via cli 
commands, with clear documentation and examples for each command and use case. 
The CLI tool should also support a dry-run mode for testing configurations without making actual changes to secrets or targets.

Create and maintain a project folder that includes a roadmap that outlines the planned features, milestones, and timelines for the
development of the secret management system and CLI tool. Each stage should be its own file in the project folder, with clear documentation 
and tracking of progress towards the overall goals of the project. The roadmap should be regularly updated to reflect changes in priorities,
timelines, and feature development as the project progresses. If you are at a point where you need to make decisions about the structure or
features of the system, refer back to the roadmap and documentation to ensure that your decisions align with the overall 
goals and vision for the project.

Now review the ./project folder, follow the ROADMAP.md for the project, and begin implementing the next phase of the project. Update
the ROADMAP.md as needed to reflect any changes in priorities, timelines, or feature development as you progress through the implementation 
of the secret management system and CLI tool. Ensure that all changes and updates are well-documented and tracked in the 
project folder for future reference. 
