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