| name | Project Creation |
| catalog_line | Turn a user idea into the smallest valid BuildOS project payload with only the structure the user described. |
| description | Project creation playbook with inferred name, type_key, props, and only the initial structure the user described. |
| skill_type | procedure |
| altitude | task |
| activation | progressive |
| preserve_markdown | true |
| legacy_paths | ["onto.project.create.skill"] |
| path | apps/web/src/lib/services/agentic-chat/tools/skills/definitions/project_creation/SKILL.md |
Project Creation
Identity
Turn a user idea into the smallest valid BuildOS project payload with an inferred name, type_key, props, and only the initial structure the user actually described. This is a procedure skill at task altitude: an ordered runbook for emitting the create payload, with a small judgment layer for minimality calls and a per-type props taxonomy in Knowledge.
Activation
- The chat is in project_create mode
- The user wants to start a new project from scratch
- You need to infer project name, type_key, and minimal initial entities and relationships from a rough idea
- If the chat is already inside a project and the user asks to create/start another project, ask: "You're already in this project. Are you sure you want to create a new project?" Do not call
change_chat_context or create_onto_project until they confirm.
Judgment
- Project creation is a minimality exercise. Good first payloads are usually smaller than the model expects.
- The most common failure is omitting entities and relationships or leaving project fields empty after the user already provided enough context.
Procedure
- Start from the smallest valid project payload: project { name, type_key }, entities: [], relationships: [].
- Infer project.name from the user message when it is reasonably clear. Do not ask for the name if the user already implied it.
- Infer project.type_key using the project.{realm}.{domain}[.{variant}] pattern. Pick the simplest accurate classification.
- Extract concrete details into project.description and project.props when the user provided them. Use
snake_case props, is_/has_ booleans, *_count counts, and target_* goals. Do not leave props empty when clear attributes were stated.
- If the user stated an outcome, add one goal entity. If the user listed concrete actions, add only those task entities. Add plans or milestones only when the user clearly described phases, workstreams, or date-driven structure.
- Always include entities and relationships arrays, even when they are empty.
- When you include relationships, every item must use the canonical object form
{ from: { temp_id, kind }, to: { temp_id, kind }, rel?, intent? }.
- Use clarifications[] only when critical information cannot be reasonably inferred. If clarification is needed, still call
create_onto_project with the known project fields and required arrays.
- After creation succeeds, summarize the new project briefly and continue in the created project context.