commit c34d0927d71b5c5fad0b1666dabfec9bafc2f569 Author: Zhongwei Li Date: Sun Nov 30 08:37:46 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..20fde2a --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "project-initializer", + "description": "Interactive project setup command for various tech stacks", + "version": "1.0.0", + "author": { + "name": "Lightsoft" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2c01160 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# project-initializer + +Interactive project setup command for various tech stacks diff --git a/commands/init.md b/commands/init.md new file mode 100644 index 0000000..bbd16c9 --- /dev/null +++ b/commands/init.md @@ -0,0 +1,166 @@ +--- +description: Interactive project initialization for various tech stacks +--- + +# Project Initializer + +프로젝트 타입과 기술 스택에 맞는 초기 세팅을 자동으로 수행합니다. + +## Steps to follow: + +### 1. Gather Project Information +사용자에게 다음 정보를 질문하세요: + +#### 프로젝트 타입 +다음 중 하나를 선택하도록 안내: +- **웹 프론트엔드**: React, Next.js, Vue, Svelte 등 +- **웹 백엔드**: Express, NestJS, FastAPI, Spring Boot 등 +- **모바일 앱**: React Native, Flutter 등 +- **풀스택**: Next.js, MERN, T3 Stack 등 + +#### 기술 스택 세부 사항 +프로젝트 타입에 따라 구체적인 기술 스택을 질문: + +**프론트엔드의 경우:** +- 프레임워크: React, Next.js, Vue.js, Svelte, Vite 등 +- 언어: TypeScript, JavaScript +- 스타일링: Tailwind CSS, styled-components, CSS Modules, Emotion 등 +- 상태관리: Zustand, Redux, Recoil, Jotai (필요시) +- 추가 도구: ESLint, Prettier 포함 여부 + +**백엔드의 경우:** +- 프레임워크: Express, NestJS, Fastify, Koa (Node.js) / FastAPI, Django (Python) / Spring Boot (Java) +- 언어: TypeScript, JavaScript, Python, Java +- 데이터베이스: PostgreSQL, MySQL, MongoDB, Redis (필요시) +- ORM/ODM: Prisma, TypeORM, Mongoose 등 +- 추가 도구: ESLint, Prettier 포함 여부 + +**모바일의 경우:** +- 프레임워크: React Native, Flutter +- 언어: TypeScript, JavaScript, Dart +- 상태관리: Zustand, Redux Toolkit 등 +- 네비게이션: React Navigation, Expo Router 등 + +**풀스택의 경우:** +- 스택: Next.js Full Stack, MERN, T3 Stack, SvelteKit 등 +- 데이터베이스: PostgreSQL, MongoDB 등 +- ORM: Prisma, Drizzle 등 + +#### 프로젝트 이름 +- 프로젝트 폴더명 (kebab-case 권장) + +### 2. Execute Project Setup + +수집한 정보를 바탕으로 다음 작업을 순서대로 수행: + +#### A. 프로젝트 생성 +선택한 스택에 맞는 CLI 도구 사용: + +**프론트엔드:** +- Next.js: `npx create-next-app@latest [프로젝트명] --typescript --tailwind --app --eslint` +- Vite + React: `npm create vite@latest [프로젝트명] -- --template react-ts` +- Vue: `npm create vue@latest [프로젝트명]` +- Svelte: `npm create svelte@latest [프로젝트명]` + +**백엔드:** +- Express: 수동 설정 (package.json 생성 후 필요 패키지 설치) +- NestJS: `npx @nestjs/cli new [프로젝트명]` +- FastAPI: 수동 설정 (venv 생성, requirements.txt) + +**모바일:** +- React Native: `npx react-native init [프로젝트명]` 또는 `npx create-expo-app [프로젝트명]` +- Flutter: `flutter create [프로젝트명]` + +#### B. 기본 설정 파일 생성 + +**모든 프로젝트 공통:** +1. `.gitignore` (아직 없다면 생성) +2. `.env.example` 파일 생성 (환경변수 템플릿) +3. `README.md` 업데이트 또는 생성: + - 프로젝트 이름 + - 기술 스택 목록 + - 설치 및 실행 방법 + - 폴더 구조 설명 + +**TypeScript 프로젝트:** +- `tsconfig.json` (프레임워크에서 제공하지 않는 경우) + +**Node.js 프로젝트:** +- `.eslintrc` (ESLint 선택 시) +- `.prettierrc` (Prettier 선택 시) + +#### C. 폴더 구조 생성 + +프로젝트 타입에 맞는 기본 폴더 구조: + +**프론트엔드:** +``` +src/ +├── components/ # 재사용 가능한 컴포넌트 +├── pages/ or app/ # 페이지 (프레임워크에 따라) +├── styles/ # 전역 스타일 +├── utils/ # 유틸리티 함수 +├── hooks/ # 커스텀 훅 (React) +├── types/ # TypeScript 타입 정의 +└── constants/ # 상수 +``` + +**백엔드:** +``` +src/ +├── controllers/ # 컨트롤러 +├── services/ # 비즈니스 로직 +├── models/ # 데이터 모델 +├── routes/ # 라우트 정의 +├── middleware/ # 미들웨어 +├── config/ # 설정 파일 +├── utils/ # 유틸리티 +└── types/ # TypeScript 타입 +``` + +#### D. 초기 패키지 설치 + +**선택된 추가 도구 설치:** +- Tailwind CSS: `npm install -D tailwindcss postcss autoprefixer` +- ESLint + Prettier: `npm install -D eslint prettier eslint-config-prettier` +- 상태관리 라이브러리 (선택 시) +- 기타 필수 의존성 + +#### E. Git 초기화 +```bash +cd [프로젝트명] +git init +git add . +git commit -m "Initial commit: Setup [기술스택] project" +``` + +### 3. 완료 메시지 + +프로젝트 세팅이 완료되면 한국어로 요약 메시지 출력: + +``` +✅ 프로젝트 초기 세팅이 완료되었습니다! + +📦 프로젝트: [프로젝트명] +🛠️ 기술 스택: + - [선택한 기술 스택 목록] + +📁 생성된 구조: + [폴더 구조 요약] + +🚀 다음 단계: + 1. cd [프로젝트명] + 2. npm install (아직 안했다면) + 3. npm run dev (또는 해당 프레임워크의 dev 명령어) + +💡 .env.example을 참고해서 .env 파일을 생성하세요! + +화이팅! 🔥 +``` + +## Important Notes: +- 사용자가 선택한 옵션을 정확히 반영하여 프로젝트를 생성하세요 +- 모든 명령어 실행 전에 현재 디렉토리를 확인하세요 +- 이미 존재하는 폴더/파일이 있다면 덮어쓰기 전에 사용자에게 확인받으세요 +- 한국어로 친절하게 안내하세요 +- 각 단계마다 진행 상황을 알려주세요 diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..a4b6190 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:lightsoft-dev/claude-plugin-for-dev:project-initializer", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "6104c7b3c6dc8957f3035392320c2ab41d267b00", + "treeHash": "1cb2df3e0ab2a5583915d027e9a9a818cb70c2122a540618ad649735fcaa6668", + "generatedAt": "2025-11-28T10:20:19.552200Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "project-initializer", + "description": "Interactive project setup command for various tech stacks", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "2fa965b1c86eb8c35532c0d9cae8f8749316a3e597ce86e543856b54024add50" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "6d0970850dab4441ddfbd73c8d5e4abc4882f3d8fc3808353984adb260c52aa5" + }, + { + "path": "commands/init.md", + "sha256": "fe9f8eee1f7c5153724e2ef7f5e90f419cccef23d34773ee7b44e03f20afc3b5" + } + ], + "dirSha256": "1cb2df3e0ab2a5583915d027e9a9a818cb70c2122a540618ad649735fcaa6668" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file