skill-authoring
Package Documentation Skill Authoring Guide
This skill documents the methodology for creating Claude Code skills that document @rytass/* packages.
Overview
When creating skills for package documentation, follow this structured approach:
- Explore - Understand the package structure
- Plan - Design the skill architecture
- Implement - Write the skill files
- Refine - Add bilingual triggers and optimize
Phase 1: Exploration
1.1 Identify Package Scope
Determine which packages to document:
packages/{category}-* # e.g., invoice-*, payments-*, storages-*
Questions to answer:
- Is there a base package defining interfaces? (e.g.,
@rytass/invoice) - How many adapter implementations exist?
- What is the relationship between packages?
1.2 Analyze Package Exports
For each package, identify:
| Category | What to Document |
|---|---|
| Classes | Gateway, Entity, Allowance classes |
| Interfaces | Core interfaces and their properties |
| Enums | All enum values with descriptions |
| Types | Type aliases and union types |
| Functions | Utility functions with signatures |
| Constants | Exported constants and helpers |
1.3 Understand Usage Patterns
Identify common operations:
- Initialization / configuration
- CRUD operations (create, read, update, delete)
- Validation methods
- Error handling patterns
Phase 2: Planning
2.1 Determine Skill Structure
Single Skill - For simple packages with limited scope
.claude/skills/{package-name}/
└── SKILL.md
Multi-File Skill - For complex packages (recommended for adapters)
.claude/skills/{package-name}/
├── SKILL.md # Overview, quick start, comparison
├── {PROVIDER-1}.md # Detailed reference
├── {PROVIDER-2}.md # Detailed reference
└── ...
Dual Skill - When separating user vs developer concerns
.claude/skills/{package}-adapters/ # User-facing
.claude/skills/{package}-development/ # Developer-facing
2.2 Content Architecture
SKILL.md (Main File) - Keep under 500 lines
| Section | Purpose |
|---|---|
| Overview | What the packages do, unified interface |
| Installation | npm install commands |
| Quick Start | Minimal working examples |
| Feature Comparison | Table comparing providers |
| Detailed Docs Links | Links to reference files |
Reference Files - One per provider/component
| Section | Purpose |
|---|---|
| Constructor | Parameters and initialization |
| Methods | All public methods with signatures |
| Classes | Entity and value object classes |
| Types | Provider-specific type definitions |
| Complete Example | Full working code sample |
2.3 Progressive Disclosure Pattern
SKILL.md (loaded first)
│
├── Quick overview (always visible)
├── Common operations
└── Links to details
│
└── PROVIDER.md (loaded on demand)
│
└── Full API reference
Benefits:
- Reduces initial context load
- Users get relevant detail only when needed
- Keeps main file scannable
Phase 3: Implementation
3.1 YAML Frontmatter
---
name: package-name
description: Brief description with trigger words in English (中文觸發詞). Maximum 1024 characters.
---
Name Rules:
- Lowercase letters, numbers, hyphens only
- Maximum 64 characters
- Should match directory name
Description Best Practices:
- Include both English and Chinese trigger words
- Format:
English term (中文)for key concepts - Cover primary use cases
- Include provider names if applicable
3.2 Description Template
{What it does} ({中文說明}). Use when {use case 1}, {use case 2 (中文)}.
Covers {topic 1} ({中文}), {topic 2} ({中文}).
Example:
Taiwan e-invoice integration (台灣電子發票整合). Use when working with
ECPay (綠界), EZPay (藍新). Covers issuing invoices (開立發票),
voiding (作廢), allowances (折讓).
3.3 Markdown Structure
Overview Section:
# Package Name
Brief description of the package family.
## Overview
| Package | Provider | Description |
|---------|----------|-------------|
| `@rytass/pkg-adapter-a` | Provider A (中文名) | Brief desc |
| `@rytass/pkg-adapter-b` | Provider B (中文名) | Brief desc |
Installation Section:
## Installation
\`\`\`bash
npm install @rytass/package-name
\`\`\`
Quick Start Section:
## Quick Start
### Provider A
\`\`\`typescript
import { ProviderAGateway } from '@rytass/pkg-adapter-a';
const gateway = new ProviderAGateway({
// configuration
});
// Basic operation
const result = await gateway.operation({
// parameters
});
\`\`\`
Method Documentation:
#### `methodName(options: OptionsType): Promise<ReturnType>`
Brief description.
**Parameters:**
| Option | Type | Required | Description |
|--------|------|----------|-------------|
| `param1` | `string` | Yes | Description |
| `param2` | `number` | No | Description (default: value) |
**Returns:** `Promise<ReturnType>`
**Example:**
\`\`\`typescript
const result = await gateway.methodName({
param1: 'value',
});
\`\`\`
Phase 4: Refinement
4.1 Bilingual Trigger Words
Add Chinese keywords for Taiwan users:
| English | 中文 |
|---|---|
| invoice | 發票、電子發票 |
| issue | 開立 |
| void | 作廢 |
| allowance | 折讓 |
| payment | 付款、支付 |
| storage | 儲存、存儲 |
4.2 Feature Comparison Tables
Always include a comparison table for multi-provider skills:
| Feature | Provider A | Provider B | Provider C |
|---------|:----------:|:----------:|:----------:|
| Feature 1 | Yes | Yes | No |
| Feature 2 | Yes | No | Yes |
Use :-----: for centered alignment with checkmarks.
4.3 Complete Examples
Every reference file should end with a complete, runnable example:
## Complete Example
\`\`\`typescript
import { Gateway, Type1, Type2 } from '@rytass/package';
async function main() {
// 1. Initialize
const gateway = new Gateway({ /* config */ });
// 2. Create
const entity = await gateway.create({ /* options */ });
// 3. Query
const found = await gateway.query({ /* options */ });
// 4. Update/Modify
const updated = await gateway.modify(entity, { /* options */ });
// 5. Delete/Void
await gateway.delete(entity);
}
main().catch(console.error);
\`\`\`
Checklist
Before finalizing a skill:
- YAML frontmatter starts on line 1 (no blank lines before)
-
nameis lowercase with hyphens only -
descriptionincludes Chinese trigger words -
descriptionis under 1024 characters - SKILL.md is under 500 lines
- All public methods documented
- All types and enums documented
- Installation instructions included
- Quick start examples work
- Feature comparison table included (if multi-provider)
- Complete example at end of each reference file
- Links to reference files use relative paths
Example: Invoice Skills Structure
Reference implementation from invoice-adapters and invoice-development:
.claude/skills/
├── invoice-adapters/ # User-facing skill
│ ├── SKILL.md # Overview, quick start, comparison
│ ├── ECPAY.md # ECPay full reference
│ ├── EZPAY.md # EZPay full reference
│ ├── BANK-PRO.md # BankPro full reference
│ └── AMEGO.md # Amego full reference
│
└── invoice-development/ # Developer-facing skill
├── SKILL.md # Base package overview
├── BASE-INTERFACES.md # Interface specifications
└── CREATE-ADAPTER.md # How to create new adapter
Key decisions made:
- Split into user vs developer skills
- One reference file per provider
- Progressive disclosure for detailed API
- Chinese keywords in description for Taiwan users
More from rytass/utils
wms-module
|
24logistics-development
|
13logistics-adapters
|
12invoice-adapters
Taiwan e-invoice integration (台灣電子發票整合). Use when working with ECPay (綠界), EZPay (藍新), BankPro (金財通), or Amego (光貿) invoice services. Covers issuing invoices (開立發票), voiding (作廢), allowances (折讓), and querying invoice data.
8payment-adapters
Taiwan payment integration (台灣支付整合). Use when working with ECPay (綠界), NewebPay (藍新), HwaNan Bank (華南銀行), CTBC (中信), iCash Pay, or Happy Card payment services. Covers credit card (信用卡), virtual account (虛擬帳號), ATM, CVS payment (超商代碼/條碼), card binding (卡片綁定), installments (分期付款), recurring payments (訂閱付款), and NestJS integration.
7member-module
|
7