import { Injectable, Scope } from '@nestjs/common';
import { Prompt } from '@rekog/mcp-nest';
import { z } from 'zod';
/**
* Development Prompt - 개발 관련 프롬프트 템플릿
*
* AI Agent가 프로젝트 개발을 돕기 위한 구조화된 프롬프트 제공
*/
@Injectable({ scope: Scope.REQUEST })
export class DevPrompt {
@Prompt({
name: 'dev-implement-feature',
description:
'새 기능 구현을 위한 가이드 프롬프트. SOLID 원칙과 프로젝트 컨벤션을 따르는 구현 안내',
parameters: z.object({
featureName: z.string().describe('구현할 기능 이름'),
description: z.string().describe('기능에 대한 설명'),
targetModule: z
.enum(['tools', 'resources', 'prompts', 'logseq', 'config'])
.describe('구현할 모듈'),
}),
})
getImplementFeaturePrompt({
featureName,
description,
targetModule,
}: {
featureName: string;
description: string;
targetModule: string;
}) {
return {
description: 'Logseq MCP 프로젝트에서 새 기능을 구현하기 위한 가이드',
messages: [
{
role: 'user',
content: {
type: 'text',
text: `## 기능 구현 요청
**기능명:** ${featureName}
**설명:** ${description}
**대상 모듈:** ${targetModule}
### 구현 가이드라인
1. **SOLID 원칙 준수**
- SRP: 각 클래스/메서드는 단일 책임만
- OCP: @Tool, @Resource, @Prompt 데코레이터로 확장
- DIP: NestJS DI를 통한 의존성 주입
2. **프로젝트 컨벤션**
- 파일명: kebab-case (예: my-feature.tool.ts)
- 클래스명: PascalCase (예: MyFeatureTool)
- 메서드명: camelCase
- 한글 주석/설명 권장
3. **MCP 도구 구현 시**
- zod로 파라미터 스키마 정의
- context.reportProgress()로 진행 상황 보고
- 명확한 성공/실패 메시지 반환
4. **모듈 등록**
- 새 파일 생성 후 해당 모듈의 providers 배열에 추가
- 필요 시 exports 배열에도 추가
구현을 시작하세요.`,
},
},
],
};
}
@Prompt({
name: 'dev-code-review',
description: '코드 리뷰를 위한 프롬프트. 품질, 패턴, 개선점 분석',
parameters: z.object({
filePath: z.string().describe('리뷰할 파일 경로'),
focusAreas: z
.string()
.optional()
.describe(
'집중 리뷰 영역 (쉼표로 구분, 예: performance, security, readability)',
),
}),
})
getCodeReviewPrompt({
filePath,
focusAreas,
}: {
filePath: string;
focusAreas?: string;
}) {
const focusText = focusAreas ? `\n**집중 영역:** ${focusAreas}` : '';
return {
description: 'Logseq MCP 프로젝트 코드 리뷰',
messages: [
{
role: 'user',
content: {
type: 'text',
text: `## 코드 리뷰 요청
**파일:** ${filePath}${focusText}
### 리뷰 체크리스트
1. **SOLID 원칙**
- 단일 책임 원칙 준수 여부
- 확장에 열려있고 수정에 닫혀있는가
- 의존성 주입이 올바른가
2. **NestJS 패턴**
- Injectable 데코레이터 사용
- 모듈 구조 적절성
- 에러 핸들링
3. **MCP 통합**
- Tool/Resource/Prompt 데코레이터 올바른 사용
- zod 스키마 검증
- 컨텍스트 활용
4. **코드 품질**
- 타입 안전성
- 에러 처리
- 가독성
- 테스트 가능성
리뷰 결과를 제공하세요.`,
},
},
],
};
}
@Prompt({
name: 'dev-debug-issue',
description: '이슈 디버깅을 위한 프롬프트. 문제 분석 및 해결책 제안',
parameters: z.object({
issueDescription: z.string().describe('이슈 설명'),
errorMessage: z.string().optional().describe('에러 메시지 (있는 경우)'),
context: z.string().optional().describe('추가 컨텍스트'),
}),
})
getDebugIssuePrompt({
issueDescription,
errorMessage,
context,
}: {
issueDescription: string;
errorMessage?: string;
context?: string;
}) {
return {
description: 'Logseq MCP 프로젝트 이슈 디버깅',
messages: [
{
role: 'user',
content: {
type: 'text',
text: `## 디버깅 요청
**이슈:** ${issueDescription}
${errorMessage ? `**에러 메시지:** \`\`\`\n${errorMessage}\n\`\`\`` : ''}
${context ? `**컨텍스트:** ${context}` : ''}
### 분석 가이드
1. **문제 식별**
- 증상 분석
- 재현 조건
- 영향 범위
2. **원인 분석**
- Logseq API 연결 문제?
- NestJS 설정 문제?
- MCP 프로토콜 문제?
- 비즈니스 로직 문제?
3. **해결책 제안**
- 단기 해결책
- 근본 해결책
- 예방 조치
분석 및 해결책을 제공하세요.`,
},
},
],
};
}
@Prompt({
name: 'dev-refactor-suggestion',
description: '리팩토링 제안을 위한 프롬프트. 코드 개선 방향 제시',
parameters: z.object({
targetArea: z.string().describe('리팩토링 대상 영역'),
currentIssues: z.string().describe('현재 문제점'),
}),
})
getRefactorSuggestionPrompt({
targetArea,
currentIssues,
}: {
targetArea: string;
currentIssues: string;
}) {
return {
description: 'Logseq MCP 프로젝트 리팩토링 제안',
messages: [
{
role: 'user',
content: {
type: 'text',
text: `## 리팩토링 제안 요청
**대상:** ${targetArea}
**현재 문제점:** ${currentIssues}
### 리팩토링 고려사항
1. **SOLID 원칙 적용**
- 책임 분리가 필요한가?
- 인터페이스 추출이 필요한가?
- 의존성 방향 개선이 필요한가?
2. **NestJS 패턴 활용**
- 커스텀 데코레이터
- 인터셉터/가드/파이프
- 모듈 재구성
3. **MCP 구조 개선**
- Tool 분리/통합
- Resource 구조화
- Prompt 템플릿화
4. **코드 품질**
- 중복 제거
- 추상화 수준 통일
- 테스트 용이성
리팩토링 방안을 제안하세요.`,
},
},
],
};
}
@Prompt({
name: 'dev-project-status',
description:
'프로젝트 상태 파악을 위한 프롬프트. 현재 구현 현황 및 다음 단계 파악',
parameters: z.object({}),
})
getProjectStatusPrompt() {
return {
description: 'Logseq MCP 프로젝트 현황 파악',
messages: [
{
role: 'user',
content: {
type: 'text',
text: `## 프로젝트 상태 확인
### 확인 항목
1. **구현 현황**
- 완료된 MCP Tools
- 완료된 Resources
- 완료된 Prompts
2. **아키텍처 상태**
- 모듈 구조
- 의존성 관계
- 설정 상태
3. **품질 상태**
- 빌드 상태
- 테스트 커버리지
- 린트/포맷 상태
4. **다음 단계**
- 미완성 기능
- 개선 필요 영역
- 추천 우선순위
프로젝트의 현재 상태를 mcp://project/architecture 리소스와
mcp://project/tools-reference 리소스를 참조하여 분석하세요.`,
},
},
],
};
}
}