솔그루

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 파일 생성
|

댓글 7개

@리자  sir 위지윅 에디터는 정말 답이 없는걸까요?

 

텍스트를 공유하기 위해서 html 로 만들어서 다시 적용하고 있습니다. 

(editor.js 커스텀해서 쓰시는걸 추천드립니다. claude sonnet 4.5 에서 커스텀도 잘해줍니다.) 

 

클로드로  플러그인 개발할 수 있는 바이블인가요?

@nCrom 바이블은 아니고, 제 플러그인 개발할때 제가 쓰는 스킬을 정리한거죠. 가져다가 쓰면 제 스킬을 쓰실수 있게 됩니다.

 

클로드가 이거랑 메모리 및 메모리 공유 기능을 만들었는데.  이러면 개발자 복제가 이론적으로 가능하게되죠. 아직은 실험적이겠지만 내년에는 일상이 될겁니다. 

 

매트릭스에서 스킬 배우는거랑 빗.ㅅ한 세상이 올지도...(일론 머스크의 뉴럴링크가 겷합되다면)

@솔그루 오... 멋집니다. 굿굿!!

@솔그루 
 

일상치 않은 새로운 '실행 엔진 구조' 소개에 값진 경험까지~~

저 같은 범인은 흉내내기도 어려운 범주군요!!! ~~

한 수 배워갑니다.  감사합니다.  (●'◡'●) 

@glitter0gim 저는 그냥 클로드가 만든거 실행만 해봤습니다.

실제 저런걸 만드는 대형 LLM 회사의 엔지니어가 대단한거죠.

연봉 수백억 준다는 사실이 가끔 이해가 갈때도 있습니다. 

나눠주셔서 감사합니다.

댓글을 작성하시려면 로그인이 필요합니다.

AI

624건
+
제목 글쓴이 날짜 조회
25-11-11 조회 771
25-11-10 조회 895
25-11-07 조회 873
25-11-05 조회 901
25-10-26 조회 1,240
25-10-23 조회 923
25-10-20 조회 972
25-10-16 조회 1,217
25-10-15 조회 787
25-10-15 조회 970
25-10-14 조회 883
25-10-14 조회 980
25-10-13 조회 851
25-10-12 조회 875
25-10-11 조회 867
25-10-10 조회 1,119
25-10-10 조회 1,066
25-10-09 조회 827
25-10-09 조회 1,033
25-10-09 조회 975
25-10-08 조회 841
25-10-07 조회 938
25-10-07 조회 875
25-10-07 조회 797
25-10-05 조회 892
25-10-04 조회 879
25-10-04 조회 903
25-10-04 조회 798
25-10-03 조회 887
25-10-01 조회 964