Required folder structure and naming conventions for theme implementations.
View on GitHub.windsurf/skills/theme-folder-structure/skill.md
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/WorkSync-Developement/developertestrepo/blob/3f4c1640e31189b7de31a353385c95fba0f8b9cb/.windsurf/skills/theme-folder-structure/skill.md -a claude-code --skill theme-folder-structureInstallation paths:
.claude/skills/theme-folder-structure/# Theme Folder Structure (Hard Constraints)
## Required Structure
```
components/
├── themes/
│ ├── {theme-name}/ # e.g., "service-pro"
│ │ ├── index.ts # Exports all theme components
│ │ ├── README.md # Theme documentation
│ │ ├── layout/
│ │ │ ├── Header.tsx
│ │ │ └── Footer.tsx
│ │ ├── home/
│ │ │ ├── HeroSection.tsx
│ │ │ ├── IntroSection.tsx
│ │ │ ├── LocationPoliciesSection.tsx
│ │ │ ├── Testimonials.tsx
│ │ │ ├── HomeCTA.tsx
│ │ │ ├── FAQPreview.tsx
│ │ │ ├── CareersSection.tsx
│ │ │ └── FloatingCTA.tsx # Optional
│ │ ├── policies/
│ │ │ └── PolicyPageTemplate.tsx
│ │ └── location/ # Optional
│ │ ├── LocationFeaturedPolicies.tsx
│ │ ├── LocationCareersSection.tsx
│ │ └── LocationFAQSection.tsx
```
## Naming Conventions
| Item | Convention | Example |
|------|------------|---------|
| Theme folder | lowercase, hyphenated | `service-pro`, `bold-dark` |
| Component files | PascalCase | `HeroSection.tsx` |
| Export names | PascalCase, match file | `export { default as HeroSection }` |
## Required index.ts
Every theme MUST have an `index.ts` that exports all components:
```typescript
// components/themes/{theme-name}/index.ts
export { default as Header } from './layout/Header';
export { default as Footer } from './layout/Footer';
export { default as HeroSection } from './home/HeroSection';
export { default as IntroSection } from './home/IntroSection';
export { default as LocationPoliciesSection } from './home/LocationPoliciesSection';
export { default as Testimonials } from './home/Testimonials';
export { default as HomeCTA } from './home/HomeCTA';
export { default as FAQPreview } from './home/FAQPreview';
export { default as CareersSection } from './home/CareersSection';
export { default as PolicyPageTemplate } from './policies/PolicyPageTemplate';
// Optional
export { default as Float