새 콘텐츠 기여
Agent Harness Store에 새 Rule, Skill, Preset을 기여하는 방법.
파일 경로, 프론트매터 형식, 테스트, PR 제출까지.

언제 기여하는가

다음 상황에서 새 콘텐츠 기여를 고려하세요:

  • 팀에서 반복적으로 같은 방식으로 작업하는 패턴이 생겼을 때 → Rule
  • 여러 프로젝트에서 반복 실행하는 절차가 있을 때 → Skill
  • 새 프로젝트 타입마다 같은 조합을 설치할 때 → Preset

새 Rule 추가

Rule rules/<category>/<rule-id>.md

예: rules/security/sanitize-input.md, rules/naming-conventions/component-casing.md

Rule 파일 형식

---
id: my-new-rule
name: 새 규칙 이름
category: security          # 기존 카테고리 중 하나
severity: must              # must | should | consider
tags: [frontend, security]
description: 한 줄 설명 (TUI 목록에 표시)
---

# 새 규칙 이름

## 규칙

[규칙 본문 — Claude에게 자동 주입되는 제약]

## 이유

[왜 이 규칙이 필요한가]

## 예시

### ❌ 하지 말 것

\`\`\`typescript
// 잘못된 예
\`\`\`

### ✅ 할 것

\`\`\`typescript
// 올바른 예
\`\`\`

기존 카테고리

카테고리설명
tech-stack기술 스택, 패키지 매니저, 명령어
architectureFSD 경계, 계층 구조
workflowTDD, cleanup, plan-first
security비밀, PII, 인증, 접근제어
type-modelingTypeScript/Python 타입
ui-styling-a11y디자인 토큰, 접근성
state-error-handling상태 소유권, 에러 경계
naming-conventions케이싱, 네이밍
version-control-language커밋, 언어 정책
guardrails보호 설정 파일, 생성 트리
dependencies패키지 재사용 정책
flask-architectureFlask 앱 구조
persistenceDynamoDB, 데이터 접근
critic-loop자율 수정 루프
nextjs-boundaries-hydrationNext.js 서버/클라이언트 경계
새 카테고리가 필요하다면 PR description에 이유를 명확히 적어주세요. 가능하면 기존 카테고리를 사용하는 것을 권장합니다.

새 Skill 추가

Skill skills/<category>/<skill-id>/SKILL.md

예: skills/qa-devops-collab/generate-audit-report/SKILL.md

SKILL.md 형식

---
id: my-new-skill
name: 새 스킬 이름
category: qa-devops-collab
slash_command: my-skill      # Claude Code에서 /my-skill 로 호출
description: 한 줄 설명 (TUI 목록에 표시)
disable-model-invocation: false  # true면 Claude 없이 실행
---

## When to invoke this skill

[이 스킬을 호출하는 상황 설명]

## Input

- param1: 설명
- param2: 설명 (optional)

## Steps

1. 첫 번째 단계
2. 두 번째 단계
   - 세부 내용
3. 세 번째 단계

## Output

[기대되는 출력 설명]

Scaffolder (-init) 패턴

프로젝트별 커스터마이징이 필요한 스킬은 -init 패턴을 사용합니다:

  • my-skill-init/SKILL.md — 프로젝트 스캔 후 커스터마이징 정보 수집, 프로젝트별 my-skill/SKILL.md 생성
  • my-skill/SKILL.md — -init이 생성한 프로젝트 전용 스킬 (프로젝트 레포에 체크인)

새 Preset 추가

Preset presets/<preset-id>.yaml

예: presets/data-eng-harness.yaml

# presets/data-eng-harness.yaml
id: data-eng-harness
name: Data Engineering Harness
description: 데이터 엔지니어링 팀을 위한 규칙/스킬 번들
version: "1.0.0"
tags: [data, python, pipeline]

rule_refs:
  - tech-stack/be-stack-and-commands   # 기존 규칙 재사용
  - security/no-hardcoded-secrets
  - type-modeling/python-type-hints
  # 추가 규칙들...

skill_refs:
  - qa-devops-collab/generate-pytest-tests
  - persistence/setup-local-datastore
  # 추가 스킬들...

마켓플레이스 재빌드

새 콘텐츠를 추가한 후 마켓플레이스 빌드를 실행해야 Claude Code 플러그인에 반영됩니다:

cd agent-harness-store
python -m harness.cli build-marketplace

# 결과 확인
cat dist/marketplace.json | jq '.plugins | length'
cat dist/marketplace.json | jq '.plugins[].name'

기여 체크리스트

  1. 새 파일 생성 (rule/skill/preset) — 프론트매터 필수 필드 확인
  2. 기존 카테고리 적합성 확인 — 불필요한 카테고리 추가 피하기
  3. 예시 코드 포함 (Rule) 또는 Steps 구체화 (Skill)
  4. TUI에서 새 항목이 목록에 뜨는지 확인: harness list
  5. 설치 테스트: harness install → 새 항목 선택 → .agents/ 생성 확인
  6. 마켓플레이스 재빌드: python -m harness.cli build-marketplace
  7. Conventional Commit 형식으로 커밋: feat(rules): 새 규칙 추가
  8. PR description에 변경 이유와 사용 예시 포함 (한국어)
주의: 기존 콘텐츠를 수정할 때 ID를 변경하면 이미 설치된 프로젝트의 manifest.json이 깨집니다. ID는 한 번 결정되면 유지하세요.

PR 리뷰 기준

항목기준
규칙 명확성Claude가 모호성 없이 따를 수 있는 구체적 지침
예시 포함❌/✅ 예시로 의도 명확화
중복 없음기존 규칙/스킬과 겹치지 않는가
카테고리 적합올바른 카테고리에 배치
ID 명명kebab-case, 동사-명사 패턴 (예: sanitize-input)
프론트매터필수 필드 모두 존재