2.2 KiB
| description | argument-hint | allowed-tools | ||||||
|---|---|---|---|---|---|---|---|---|
| Initialize formspec project structure | <system-description> |
|
FormSpec Init
You are initializing a formal-specification-driven development project. Your job is to create the spec/ directory structure and a foundational spec/system.md document.
Steps
1. Check for existing spec/ directory
Use Glob to check if spec/system.md already exists in the project root.
If it exists: STOP. Tell the user that the project is already initialized and they should use /formspec.design.1 to add features. Do not modify anything.
2. Gather system description
If $ARGUMENTS is provided, use it as the high-level system description.
If $ARGUMENTS is empty or too vague to work with, ask the user to describe:
- What the system is and its purpose
- Who the primary actors are (users, services, external systems)
- Key constraints (non-negotiable properties like statelessness, partition tolerance, latency bounds, security requirements)
3. Create directory structure
Create the following directories:
spec/formal/subsystems/
spec/features/
spec/verification/
4. Generate spec/system.md
Write spec/system.md with the following structure. Fill in the System Overview and Architectural Constraints based on the gathered description. Leave Feature Index and Changelog empty with placeholder text.
# System Design
## System Overview
[What is this system, who uses it, why does it exist. Derived from the user's description.]
## Architectural Constraints
[Non-negotiable properties of the system. Each constraint should be a clear, testable statement.]
## Feature Index
*No features designed yet. Use `/formspec.design.1 <feature-name>` to add features.*
## Changelog
*No changes recorded yet.*
The System Overview should be a concise but complete description — enough for someone unfamiliar with the project to understand what they're looking at. The Architectural Constraints should be concrete and specific, not vague aspirations.
5. Report
Tell the user what was created and suggest they proceed with /formspec.design.1 <feature-name> to start designing features.