claude skills
https://www.anthropic.com/news/skills
프롬프트 엔지니어링 -> MCP -> 컨텍스트 엔지니어링 -> skills 로 진화하는것으로 보입니다.
skills 다음은 지능형 agent 가 될것 같습니다. (agent 가 skills 를 조합하여 업무를 처리하는 방식)
그누보드5 플러그인 개발을 위한 스킬을 잠시 생성해보았습니다.
claude skills 에 포함된 skill creator 로 생성하였습니다.
테스트를 하면서 skills.md 파일을 최적화 하는게 claude skills 의 핵심.
아래는 SKILLS.md 예제입니다.
name: gnuboard5-plugin-developer
description: 그누보드5 플러그인 개발을 위한 종합 도구 모음. 이 스킬은 사용자가 그누보드5 확장 플러그인을 개발하려고 할 때 사용되어야 합니다. 플러그인 구조 생성, 데이터베이스 설정, 관리자 페이지 통합, AJAX 핸들러 구현, 패키징 등 그누보드5 플러그인 개발의 모든 측면을 지원합니다.
그누보드5 플러그인 개발 스킬
개요
이 스킬은 그누보드5(GnuBoard5) 확장 플러그인 개발을 위한 종합적인 가이드와 도구를 제공합니다. 그누보드5의 플러그인 아키텍처, 보안 모범 사례, 그리고 배포 프로세스를 포함한 전체 개발 주기를 지원합니다.
사용 시점
이 스킬은 다음과 같은 상황에서 사용됩니다:
- 그누보드5에 새로운 기능을 추가하는 플러그인 개발
- 기존 그누보드5 기능을 확장하는 플러그인 생성
- 관리자 설정 페이지가 포함된 플러그인 구현
- AJAX 기반 동적 기능 플러그인 제작
- 플러그인 패키징 및 배포 준비
플러그인 디렉토리 구조
그누보드5 플러그인은 다음과 같은 표준 디렉토리 구조를 따릅니다:
그누보드5_루트/
├── extend/ # 자동 로드 파일 (진입점)
│ └── {plugin_name}.extend.php # 플러그인 초기화 및 훅 등록
├── plugin/ # 플러그인 메인 파일
│ └── {plugin_name}/
│ ├── {plugin_name}.lib.php # 플러그인 라이브러리 함수
│ ├── authenticate.php # 사용자 인증 페이지 (필요시)
│ └── *.php # 기타 플러그인 파일
├── adm/ # 관리자 파일
│ └── {plugin_name}/ # 플러그인 관리자 디렉토리
│ ├── config.php # 설정 페이지
│ ├── config_update.php # 설정 저장 처리
│ └── ajax.{plugin_name}.php # AJAX 핸들러
└── docs/ # 문서 (배포용)
├── README.md # 설치 가이드
└── {plugin_name}.md # 기술 문서
플러그인 개발 단계
1. 플러그인 초기화
플러그인 개발을 시작하기 위해 scripts/init_plugin.sh 스크립트를 실행합니다:
bash scripts/init_plugin.sh {plugin_name}
이 스크립트는 기본 디렉토리 구조와 템플릿 파일을 생성합니다.
2. 데이터베이스 테이블 설계
플러그인이 데이터를 저장해야 하는 경우, 전용 테이블을 생성합니다. 테이블명은 g5_{plugin_name}_config 형식을 따릅니다.
관리자 설정 페이지에서 테이블 자동 생성 코드를 포함합니다:
// 테이블 존재 확인 및 생성
if (!sql_query(" DESCRIBE g5_{plugin_name}_config ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS g5_{plugin_name}_config (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`use` TINYINT(1) NOT NULL DEFAULT '0',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ", true);
}
3. extend 파일 구현
extend/{plugin_name}.extend.php 파일을 생성하여 플러그인의 진입점을 구현합니다. 이 파일은 그누보드5가 자동으로 로드합니다.
템플릿은 assets/extend_template.php를 참조하여 작성합니다.
주요 구현 사항:
- 보안 체크:
if (!defined('_GNUBOARD_')) exit; - 설정 로드 및 전역 변수 설정
- 조건부 라이브러리 로드
- 훅(Hook) 등록 및 처리
4. 라이브러리 함수 구현
plugin/{plugin_name}/{plugin_name}.lib.php에 재사용 가능한 함수를 구현합니다:
// 설정 조회 함수
function {plugin_name}_get_config() {
static $config = null;
if ($config === null) {
$config = sql_fetch("SELECT * FROM g5_{plugin_name}_config WHERE id = 1");
}
return $config;
}
// 활성화 상태 확인 함수
function {plugin_name}_is_enabled() {
$config = {plugin_name}_get_config();
return ($config && $config['use']);
}
5. 관리자 페이지 구현
설정 페이지 (adm/{plugin_name}/config.php)
assets/admin_config_template.php를 기반으로 작성합니다. 필수 요소:
- 권한 체크:
auth_check_menu($auth, $sub_menu, 'r'); - 최고관리자 체크:
if ($is_admin != 'super') - 테이블 자동 생성 로직
- 설정 폼 UI
설정 저장 처리 (adm/{plugin_name}/config_update.php)
입력값 검증 및 sanitization을 포함한 저장 처리를 구현합니다.
AJAX 핸들러 (adm/{plugin_name}/ajax.{plugin_name}.php)
assets/ajax_handler_template.php를 참조하여 action 기반 분기 처리를 구현합니다.
6. 사용자 페이지 구현
필요한 경우 plugin/{plugin_name}/ 디렉토리에 사용자 페이지를 구현합니다:
- 인증 페이지
- 처리 페이지
- API 엔드포인트
7. 관리자 메뉴 통합
플러그인을 관리자 메뉴에 추가하기 위한 가이드를 README.md에 포함합니다:
// /adm/admin.menu100.php에 추가
$menu['menu100'][] = array(
'100xxx',
'{플러그인명} 설정',
G5_ADMIN_URL . '/{plugin_name}/config.php',
'{plugin_name}_config',
1
);
8. 보안 고려사항
모든 파일에 다음 보안 체크를 포함합니다:
if (!defined('_GNUBOARD_')) exit;- 직접 접근 방지- 관리자 권한 체크
- CSRF 토큰 검증
- SQL 인젝션 방지 (prepared statements 또는 sql_real_escape_string)
- XSS 방지 (htmlspecialchars, get_text 함수 사용)
9. 패키징 및 배포
scripts/package_plugin.sh 스크립트를 사용하여 배포용 ZIP 파일을 생성합니다:
bash scripts/package_plugin.sh {plugin_name}
이 스크립트는:
- 필요한 파일을 수집
- 올바른 디렉토리 구조로 구성
- README.md 파일 생성/검증
- 날짜가 포함된 ZIP 파일 생성
유용한 그누보드5 함수
플러그인 개발 시 자주 사용하는 그누보드5 내장 함수들은 references/gnuboard5_functions.md를 참조합니다.
템플릿 파일 활용
assets/ 디렉토리의 템플릿 파일들을 기반으로 빠르게 개발을 시작할 수 있습니다:
extend_template.php- extend 파일 템플릿admin_config_template.php- 관리자 설정 페이지 템플릿ajax_handler_template.php- AJAX 핸들러 템플릿lib_template.php- 라이브러리 함수 템플릿
테스트 및 디버깅
개발 중 다음 사항을 확인합니다:
- PHP 문법 검사:
php -l {file.php} - 에러 로그 확인:
/data/log/디렉토리 - 브라우저 개발자 도구에서 AJAX 요청 확인
- 데이터베이스 쿼리 로그 확인
배포 체크리스트
배포 전 확인 사항:
- [ ] 모든 파일에 보안 체크 포함
- [ ] 관리자 권한 검증 구현
- [ ] 데이터베이스 테이블 자동 생성 코드 포함
- [ ] README.md에 설치 가이드 작성
- [ ] 관리자 메뉴 추가 방법 문서화
- [ ] 테스트 파일 제거
- [ ] 패키징 스크립트로 ZIP 파일 생성
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 8개
@리자 sir 위지윅 에디터는 정말 답이 없는걸까요?
텍스트를 공유하기 위해서 html 로 만들어서 다시 적용하고 있습니다.
(editor.js 커스텀해서 쓰시는걸 추천드립니다. claude sonnet 4.5 에서 커스텀도 잘해줍니다.)
클로드로 플러그인 개발할 수 있는 바이블인가요?
@nCrom 바이블은 아니고, 제 플러그인 개발할때 제가 쓰는 스킬을 정리한거죠. 가져다가 쓰면 제 스킬을 쓰실수 있게 됩니다.
클로드가 이거랑 메모리 및 메모리 공유 기능을 만들었는데. 이러면 개발자 복제가 이론적으로 가능하게되죠. 아직은 실험적이겠지만 내년에는 일상이 될겁니다.
매트릭스에서 스킬 배우는거랑 빗.ㅅ한 세상이 올지도...(일론 머스크의 뉴럴링크가 겷합되다면)
@솔그루 오... 멋집니다. 굿굿!!
@솔그루
일상치 않은 새로운 '실행 엔진 구조' 소개에 값진 경험까지~~
저 같은 범인은 흉내내기도 어려운 범주군요!!! ~~
한 수 배워갑니다. 감사합니다. (●'◡'●)
@glitter0gim 저는 그냥 클로드가 만든거 실행만 해봤습니다.
실제 저런걸 만드는 대형 LLM 회사의 엔지니어가 대단한거죠.
연봉 수백억 준다는 사실이 가끔 이해가 갈때도 있습니다.
@솔그루
느낌 좋은 사용 경험 공유라고만 생각치 않아요!
퍼나르고픈 내용입니다. 좋습니다!
. . .
아~ AI 게시판만, 메일 피드가 있나요?
나눠주셔서 감사합니다.