npx claudepluginhub shipshitdev/skillsThis skill uses the workspace's default tool permissions.
Create a **production-ready** monorepo with working MVP features:
plugin.jsonreferences/architecture-guide.mdreferences/coding-standards.mdreferences/deployment-guide.mdreferences/github-actions/ci.ymlreferences/templates/auth-guard.template.tsreferences/templates/clerk-provider.template.tsxreferences/templates/component-form.template.tsxreferences/templates/component-list.template.tsxreferences/templates/component.spec.template.tsxreferences/templates/controller.spec.template.tsreferences/templates/controller.template.tsreferences/templates/current-user.decorator.template.tsreferences/templates/dto.template.tsreferences/templates/e2e.spec.template.tsreferences/templates/hook.spec.template.tsreferences/templates/middleware.template.tsreferences/templates/module.template.tsreferences/templates/schema.template.tsreferences/templates/service-client.template.tsProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Analyzes competition with Porter's Five Forces, Blue Ocean Strategy, and positioning maps to identify differentiation opportunities and market positioning for startups and pitches.
Create a production-ready monorepo with working MVP features:
This skill generates working applications, not empty scaffolds:
bun devAsk the user for a 1-2 paragraph product description, then extract and confirm:
I'll help you build [Project Name]. Based on your description, I understand:
**Entities:**
- [Entity1]: [fields]
- [Entity2]: [fields]
**Features:**
- [Feature 1]
- [Feature 2]
**Routes:**
- / - Home/Dashboard
- /[entity] - List view
- /[entity]/[id] - Detail view
**API Endpoints:**
- GET/POST /api/[entity]
- GET/PATCH/DELETE /api/[entity]/:id
Is this correct? Any adjustments?
Generate Clerk authentication:
Backend:
auth/guards/clerk-auth.guard.ts - Token verification guardauth/decorators/current-user.decorator.ts - User extraction decoratorFrontend:
providers/clerk-provider.tsx - ClerkProvider wrapperapp/sign-in/[[...sign-in]]/page.tsx - Sign in pageapp/sign-up/[[...sign-up]]/page.tsx - Sign up pagemiddleware.ts - Protected route middlewareEnvironment:
.env.example with all required variablesFor each extracted entity, generate complete CRUD with tests:
Backend (NestJS):
api/apps/api/src/collections/{entity}/
├── {entity}.module.ts
├── {entity}.controller.ts # Full CRUD + Swagger + ClerkAuthGuard
├── {entity}.controller.spec.ts # Controller unit tests
├── {entity}.service.ts # Business logic
├── {entity}.service.spec.ts # Service unit tests
├── schemas/
│ └── {entity}.schema.ts # Mongoose schema with userId
└── dto/
├── create-{entity}.dto.ts # class-validator decorators
└── update-{entity}.dto.ts # PartialType of create
api/apps/api/test/
├── {entity}.e2e-spec.ts # E2E tests with supertest
└── setup.ts # Test setup with MongoDB Memory Server
Frontend (NextJS):
frontend/apps/dashboard/
├── app/{entity}/
│ ├── page.tsx # List view (protected)
│ └── [id]/page.tsx # Detail view (protected)
├── src/test/
│ └── setup.ts # Test setup with Clerk mocks
└── vitest.config.ts # Frontend test config (jsdom)
frontend/packages/components/
├── {entity}-list.tsx
├── {entity}-list.spec.tsx # Component tests
├── {entity}-form.tsx
├── {entity}-form.spec.tsx # Component tests
└── {entity}-item.tsx
frontend/packages/hooks/
├── use-{entities}.ts # React hook for state management
└── use-{entities}.spec.ts # Hook tests
frontend/packages/services/
└── {entity}.service.ts # API client with auth headers
Vitest Configuration:
vitest.config.ts in each project@vitest/coverage-v8 providerGitHub Actions:
.github/workflows/ci.ymlHusky Hooks:
lint-staged (Biome check)bun run typecheckBiome:
biome.json in each projectRun quality gate and report results:
✅ Generation complete!
Quality Report:
- bun install: ✓ succeeded
- bun run lint: ✓ 0 errors
- bun run test: ✓ 24 tests passed
- Coverage: 82% (threshold: 80%)
Ready to run:
cd [project]
bun dev
# Create workspace with PRD-style prompt
python3 scripts/init-workspace.py \
--root ~/www/myproject \
--name "My Project" \
--brief "A task management app where users can create tasks with titles and due dates, organize them into projects, and mark them complete."
# Or interactive mode (prompts for brief)
python3 scripts/init-workspace.py \
--root ~/www/myproject \
--name "My Project" \
--interactive
myproject/
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI/CD
├── .husky/
│ ├── pre-commit # Lint staged files
│ └── pre-push # Type check
├── .agents/ # AI documentation
├── package.json # Workspace root
├── biome.json # Root linting config
│
├── api/ # NestJS backend
│ ├── apps/api/src/
│ │ ├── main.ts
│ │ ├── app.module.ts
│ │ ├── auth/
│ │ │ ├── guards/clerk-auth.guard.ts
│ │ │ ├── guards/clerk-auth.guard.spec.ts # Auth guard tests
│ │ │ └── decorators/current-user.decorator.ts
│ │ └── collections/
│ │ └── {entity}/
│ │ ├── {entity}.controller.ts
│ │ ├── {entity}.controller.spec.ts # Controller tests
│ │ ├── {entity}.service.ts
│ │ └── {entity}.service.spec.ts # Service tests
│ ├── apps/api/test/
│ │ ├── {entity}.e2e-spec.ts # E2E tests
│ │ └── setup.ts # E2E test setup
│ ├── vitest.config.ts
│ ├── package.json
│ └── .env.example
│
├── frontend/ # NextJS apps
│ ├── apps/dashboard/
│ │ ├── app/
│ │ │ ├── layout.tsx
│ │ │ ├── page.tsx
│ │ │ ├── sign-in/[[...sign-in]]/page.tsx
│ │ │ ├── sign-up/[[...sign-up]]/page.tsx
│ │ │ └── {entity}/ # Generated per entity
│ │ ├── src/test/
│ │ │ └── setup.ts # Test setup with Clerk mocks
│ │ ├── middleware.ts # Clerk route protection
│ │ └── providers/
│ │ └── clerk-provider.tsx
│ ├── packages/
│ │ ├── components/
│ │ │ ├── {entity}-list.tsx
│ │ │ ├── {entity}-list.spec.tsx # Component tests
│ │ │ ├── {entity}-form.tsx
│ │ │ └── {entity}-form.spec.tsx # Component tests
│ │ ├── hooks/
│ │ │ ├── use-{entities}.ts
│ │ │ └── use-{entities}.spec.ts # Hook tests
│ │ ├── services/ # API clients
│ │ └── interfaces/
│ ├── vitest.config.ts # Frontend test config (jsdom)
│ └── package.json
│
├── mobile/ # React Native + Expo (optional)
│ └── ...
│
└── packages/ # Shared packages
└── packages/
├── common/
│ ├── interfaces/
│ └── enums/
└── helpers/
@ApiTags('tasks')
@ApiBearerAuth()
@UseGuards(ClerkAuthGuard)
@Controller('tasks')
export class TasksController {
constructor(private readonly tasksService: TasksService) {}
@Post()
@ApiOperation({ summary: 'Create a new task' })
create(
@Body() createTaskDto: CreateTaskDto,
@CurrentUser() user: { userId: string },
) {
return this.tasksService.create(createTaskDto, user.userId);
}
// ... full CRUD
}
@Injectable()
export class TasksService {
constructor(
@InjectModel(Task.name) private taskModel: Model<TaskDocument>,
) {}
async create(createTaskDto: CreateTaskDto, userId: string): Promise<Task> {
const task = new this.taskModel({ ...createTaskDto, userId });
return task.save();
}
// ... full CRUD with userId filtering
}
'use client';
import { useEffect, useState } from 'react';
import { TaskService } from '@services/task.service';
import { Task } from '@interfaces/task.interface';
export function TaskList() {
const [tasks, setTasks] = useState<Task[]>([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
const controller = new AbortController();
TaskService.getAll({ signal: controller.signal })
.then(setTasks)
.finally(() => setLoading(false));
return () => controller.abort();
}, []);
// ... render
}
# Add a new entity to existing project
python3 scripts/add-entity.py \
--root ~/www/myproject \
--name "comment" \
--fields "content:string,taskId:string"
# Add a new frontend app
python3 scripts/add-frontend-app.py \
--root ~/www/myproject/frontend \
--name admin
After scaffolding:
cd myproject
# Install all dependencies
bun install
# Start all services (backend + frontend)
bun dev
# Or start individually
bun run dev:api # Backend on :3001
bun run dev:frontend # Frontend on :3000
bun run dev:mobile # Mobile via Expo
# Quality commands
bun run lint # Check code style
bun run test # Run tests
bun run test:coverage # Run with coverage
bun run typecheck # Type checking
Create .env files based on .env.example:
API (.env):
PORT=3001
MONGODB_URI=mongodb://localhost:27017/myproject
CLERK_SECRET_KEY=sk_test_...
Frontend (.env.local):
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
NEXT_PUBLIC_API_URL=http://localhost:3001
references/templates/ - Code generation templates
service.spec.template.ts - NestJS service unit test templatecontroller.spec.template.ts - NestJS controller unit test templatee2e.spec.template.ts - E2E test template with supertest + MongoDB Memory Servercomponent.spec.template.tsx - React component test templatehook.spec.template.ts - React hook test templatetest-setup.template.ts - Frontend test setup with Clerk mocksreferences/vitest.config.ts - Backend Vitest configuration (80% coverage)references/vitest.config.frontend.ts - Frontend Vitest configuration (jsdom)references/github-actions/ci.yml - CI/CD workflowreferences/architecture-guide.md - Architectural decisionsreferences/coding-standards.md - Coding rules