# /sdd:project-init ## Meta - Version: 2.0 - Category: project-management - Complexity: medium - Purpose: Initialize story-driven development system with folder structure and template documents ## Definition **Purpose**: Create the complete folder structure and template documents required for story-driven development workflow. **Syntax**: `/sdd:project-init` ## Parameters None ## INSTRUCTION: Initialize Project Structure ### INPUTS - Project root directory (current working directory) - User responses for technology stack and preferences (gathered interactively) ### PROCESS #### Phase 1: Directory Structure Creation 1. **CREATE** `/docs/project-context/` directory - Root directory for all project documentation - Contains technical specifications and standards 2. **CREATE** `/docs/stories/` directory with subdirectories: - `/docs/stories/development/` - Active implementation work - `/docs/stories/review/` - Code review stage - `/docs/stories/qa/` - Quality assurance testing - `/docs/stories/completed/` - Finished and shipped stories - `/docs/stories/backlog/` - Planned but not started - `/docs/stories/templates/` - Story and documentation templates 3. **ADD** `.gitkeep` file to each empty directory: - ENSURES directories are tracked in git - PREVENTS empty directories from being ignored - FORMAT: Empty file named `.gitkeep` #### Phase 2: Technical Stack Documentation 1. **ASK** user about complete technical stack: **Frontend**: - Framework: (React, Vue, Svelte, Angular, Laravel Blade, Next.js, Nuxt.js, etc.) - State management: (Redux, Zustand, Vuex, Pinia, Livewire, Alpine.js, etc.) - Language: (TypeScript, JavaScript, PHP templating, etc.) - Styling: (Tailwind CSS, CSS Modules, Styled Components, SCSS, etc.) - Build tool: (Vite, Webpack, Rollup, esbuild, Parcel, Laravel Mix, etc.) **Backend**: - Runtime: (Node.js, Deno, Bun, PHP, Python, Go, Java, .NET, etc.) - Framework: (Express, Fastify, Laravel, Symfony, Django, FastAPI, etc.) - Language: (TypeScript, JavaScript, PHP, Python, Go, Java, C#, etc.) **Database**: - Primary database: (PostgreSQL, MySQL, MongoDB, SQLite, Redis, etc.) - ORM/Query builder: (Prisma, TypeORM, Eloquent, Django ORM, etc.) - Caching: (Redis, Memcached, database cache, etc.) **Testing**: - Unit testing: (Jest, Vitest, Pest, PHPUnit, Pytest, JUnit, etc.) - Integration testing: (Same as unit or separate framework) - Browser/E2E testing: (Playwright, Cypress, Selenium, Laravel Dusk, etc.) - Test runner commands: (npm test, vendor/bin/pest, pytest, etc.) **Development Tools**: - Package manager: (npm, yarn, pnpm, composer, pip, go mod, etc.) - Code formatting: (Prettier, ESLint, PHP CS Fixer, Black, etc.) - Linting: (ESLint, PHPStan, pylint, golangci-lint, etc.) - Git hooks: (husky, pre-commit, etc.) **Deployment & Hosting**: - Hosting platform: (Vercel, Netlify, AWS, Railway, Heroku, etc.) - Container platform: (Docker, Podman, none, etc.) - CI/CD: (GitHub Actions, GitLab CI, Jenkins, none, etc.) **Key Libraries**: - Authentication: (Auth0, Firebase Auth, Laravel Sanctum, etc.) - HTTP client: (Axios, Fetch, Guzzle, Requests, etc.) - Validation: (Zod, Joi, Laravel Validation, Pydantic, etc.) - Other important libraries: [User provides list] 2. **CREATE** `/docs/project-context/technical-stack.md`: - POPULATE with user's technology choices - INCLUDE version numbers if available - ADD links to documentation - NOTE any specific configuration requirements #### Phase 3: Development Process Documentation 1. **CREATE** `/docs/project-context/development-process.md`: - DEFINE three-stage workflow (Development → Review → QA) - SPECIFY entry/exit criteria for each stage - DOCUMENT required activities per stage - ESTABLISH quality gates and checkpoints - OUTLINE story movement rules 2. **INCLUDE** sections: - Stage Definitions - Stage Requirements - Testing Strategy - Review Process - Quality Gates #### Phase 4: Coding Standards Documentation 1. **ASK** user about comprehensive coding standards: - Naming conventions (camelCase, snake_case, PascalCase patterns) - Function/method organization (length limits, complexity) - Class/module structure (single responsibility patterns) - Comment and documentation standards - Framework-specific patterns - File organization preferences - Testing standards - Quality requirements - Git workflow conventions 2. **CREATE** `/docs/project-context/coding-standards.md`: - DOCUMENT language-specific standards - DEFINE framework-specific patterns - SPECIFY file organization rules - ESTABLISH testing standards - SET quality requirements - OUTLINE git workflow #### Phase 5: Project Glossary 1. **CREATE** `/docs/project-context/project-glossary.md`: - PROVIDE template for domain-specific terminology - INCLUDE sections for: * Domain Terms (business-specific vocabulary) * Technical Terms (framework-specific terminology) * Process Terms (development workflow vocabulary) - ENCOURAGE user to populate over time #### Phase 6: Project Brief Template 1. **CREATE** `/docs/project-context/project-brief.md`: - PROVIDE comprehensive project overview template - INCLUDE sections: * Project Overview (name, description, objectives) * Timeline (start date, target completion, milestones) * Story Planning (total stories, prioritization) * Success Metrics - PROMPT user to fill with actual project details #### Phase 7: Story Template Creation 1. **CREATE** `/docs/stories/templates/story-template.md`: - COMPREHENSIVE story template with sections: * Story Header (ID, title, status, priority) * Description and Context * Success Criteria and Acceptance Tests * Technical Implementation Notes * Implementation Checklist * Test Cases (unit, integration, browser) * Rollback Plans * Lessons Learned - REFERENCE project's technical stack from `technical-stack.md` - ALIGN with coding standards from `coding-standards.md` - MATCH process requirements from `development-process.md` #### Phase 8: Completion Summary and Next Steps 1. **DISPLAY** creation summary: ``` ✅ Project Structure Initialized ═══════════════════════════════════ 📁 Directories Created: - /docs/project-context/ - /docs/stories/development/ - /docs/stories/review/ - /docs/stories/qa/ - /docs/stories/completed/ - /docs/stories/backlog/ - /docs/stories/templates/ 📄 Documents Created: - /docs/project-context/technical-stack.md - /docs/project-context/development-process.md - /docs/project-context/coding-standards.md - /docs/project-context/project-glossary.md - /docs/project-context/project-brief.md - /docs/stories/templates/story-template.md 🔧 Configuration Status: - Technical stack: Configured with [user's stack] - Coding standards: Customized - Development process: Defined ``` 2. **SUGGEST** next steps: - Fill out `project-brief.md` with actual project details - Customize `coding-standards.md` with team-specific patterns - Update `development-process.md` with workflow preferences - Populate `project-glossary.md` with domain terms - Create first story: `/sdd:story-new` - Begin development: `/sdd:story-start` 3. **PROVIDE** quick start guide: - How to create a story - How to move story through workflow - How to check project status - Where to find documentation ### OUTPUTS **Directories**: - `/docs/project-context/` - Project documentation root - `/docs/stories/development/` - Active stories - `/docs/stories/review/` - Stories in review - `/docs/stories/qa/` - Stories in QA - `/docs/stories/completed/` - Finished stories - `/docs/stories/backlog/` - Planned stories - `/docs/stories/templates/` - Templates **Files**: - `/docs/project-context/technical-stack.md` - Technology choices - `/docs/project-context/development-process.md` - Workflow definitions - `/docs/project-context/coding-standards.md` - Quality standards - `/docs/project-context/project-glossary.md` - Terminology reference - `/docs/project-context/project-brief.md` - Project overview - `/docs/stories/templates/story-template.md` - Story template ### RULES - MUST create all directories before creating files - MUST add `.gitkeep` to all empty directories - MUST gather user input for technology stack - MUST customize templates based on user's stack - SHOULD reference actual technology choices in templates - NEVER overwrite existing files without user confirmation - ALWAYS provide next steps after initialization ## File Structure ### Directory Hierarchy ``` /docs/project-context/ ├── technical-stack.md # Technology choices and versions ├── development-process.md # Workflow and quality gates ├── coding-standards.md # Code quality standards ├── project-glossary.md # Domain terminology └── project-brief.md # Project overview and goals /docs/stories/ ├── /development/ # Active implementation │ └── .gitkeep ├── /review/ # Code review stage │ └── .gitkeep ├── /qa/ # Quality assurance │ └── .gitkeep ├── /completed/ # Finished stories │ └── .gitkeep ├── /backlog/ # Planned stories │ └── .gitkeep └── /templates/ # Templates ├── .gitkeep └── story-template.md # Story template ``` ## Examples ### Example 1: First-Time Setup ```bash INPUT: /sdd:project-init INTERACTION: → Asks about frontend framework → Asks about backend framework → Asks about database → Asks about testing framework → Asks about deployment platform OUTPUT: ✅ Project Structure Initialized ═══════════════════════════════════ 📁 Directories Created: - /docs/project-context/ - /docs/stories/development/ - /docs/stories/review/ - /docs/stories/qa/ - /docs/stories/completed/ - /docs/stories/backlog/ - /docs/stories/templates/ 📄 Documents Created: - /docs/project-context/technical-stack.md (Laravel TALL stack) - /docs/project-context/development-process.md - /docs/project-context/coding-standards.md - /docs/project-context/project-glossary.md - /docs/project-context/project-brief.md - /docs/stories/templates/story-template.md 🔧 Configuration Status: - Technical stack: Laravel 12, Livewire 3, Alpine.js, Tailwind CSS - Testing: Pest PHP, Playwright - Deployment: Laravel Herd (local), Forge (production) 💡 NEXT STEPS: 1. Fill out /docs/project-context/project-brief.md with your project details 2. Run /sdd:project-brief to create comprehensive project plan 3. Create your first story with /sdd:story-new 4. Begin development with /sdd:story-start 📚 QUICK START: - Create story: /sdd:story-new - View status: /sdd:project-status - Start work: /sdd:story-start [id] - Documentation: See /docs/project-context/ directory ``` ### Example 2: Already Initialized ```bash INPUT: /sdd:project-init OUTPUT: ⚠️ Project Already Initialized The following directories already exist: - /docs/project-context/ - /docs/stories/ Would you like to: 1. Skip initialization (directories exist) 2. Add missing directories/files only 3. Recreate all templates (keeps existing config) 4. Abort Choose an option [1-4]: ``` ### Example 3: Partial Initialization ```bash INPUT: /sdd:project-init DETECTION: → Found /docs/project-context/ but missing /docs/stories/ OUTPUT: ℹ️ Partial Project Structure Detected Found: /docs/project-context/ Missing: /docs/stories/ and subdirectories Creating missing directories... ✅ Completed Missing Structure ═══════════════════════════════════ 📁 Created: - /docs/stories/development/ - /docs/stories/review/ - /docs/stories/qa/ - /docs/stories/completed/ - /docs/stories/backlog/ - /docs/stories/templates/ Existing configuration preserved. 💡 NEXT STEPS: - Create first story: /sdd:story-new - View project status: /sdd:project-status ``` ## Edge Cases ### Existing Project Structure - DETECT existing directories and files - OFFER options: * Skip initialization completely * Add missing directories/files only * Recreate templates (preserve config) * Abort operation - NEVER overwrite without confirmation ### Partial Initialization - IDENTIFY which components exist - CREATE only missing components - PRESERVE existing configuration - LOG what was added vs what existed ### Permission Issues - CHECK write permissions before creating - REPORT specific permission errors - SUGGEST running with appropriate permissions - PROVIDE manual creation instructions if needed ### Git Not Initialized - DETECT if .git directory exists - SUGGEST initializing git if missing - NOTE that .gitkeep files require git - CONTINUE with initialization regardless ## Error Handling - **Permission denied**: Report specific directory/file, suggest fixes - **Disk space full**: Report error, suggest cleanup - **Invalid path**: Verify working directory is project root - **User cancels**: Clean up partial creation, exit gracefully ## Performance Considerations - Directory creation is fast (< 100ms typically) - File creation with templates (< 500ms typically) - Interactive prompts allow user to control pace - No heavy processing or external dependencies ## Security Considerations - Verify write permissions before operations - Sanitize all file paths - Don't create files outside project root - Don't overwrite without explicit confirmation ## Related Commands - `/sdd:project-brief` - Create comprehensive project plan after init - `/sdd:story-new` - Create first story after initialization - `/sdd:project-status` - View current project state - `/sdd:project-context-update` - Update context documents later ## Constraints - ⚠️ MUST NOT overwrite existing files without confirmation - ✅ MUST create all directories before files - ✅ MUST add `.gitkeep` to empty directories - 📋 MUST gather user input for technology stack - 🔧 SHOULD customize templates based on stack - 💾 MUST verify write permissions - ⚡ SHOULD complete initialization in < 5 seconds (excluding user input)