feat: add pr rule & skill

This commit is contained in:
zest
2026-03-24 12:46:41 +08:00
parent 8962ff053a
commit 92fba9a621
7 changed files with 581 additions and 24 deletions

View File

@@ -0,0 +1,62 @@
---
name: pr-review
description: >
Review pull requests for the MiniMax Skills repository. Use when reviewing PRs,
validating new skill submissions, or checking existing skills for compliance.
Run the validation script first for hard checks, then apply quality guidelines
for content review. Triggers: PR review, pull request, validate skill, check skill.
license: MIT
metadata:
version: "1.0"
category: tooling
---
# PR Review Skill
Review pull requests against repository standards. Two-phase process: automated validation, then manual content review.
## Phase 1: Automated Validation (Hard Rules)
Run the validation script to check structural requirements:
```bash
python .claude/skills/pr-review/scripts/validate_skills.py
```
The script checks:
- `SKILL.md` exists in every skill directory
- YAML frontmatter is parseable
- Required fields present: `name`, `description`
- `name` matches directory name
- No hardcoded secrets detected
All ERROR-level checks must pass. WARNING-level items (missing `license`, `metadata`) should be flagged but are not blockers.
See [references/structure-rules.md](references/structure-rules.md) for the complete hard rules specification.
## Phase 2: Content Review (Soft Guidelines)
After automated checks pass, review the PR against quality guidelines:
1. **Skill scope** — Does it overlap with existing skills? Is the boundary clear?
2. **Description quality** — Does the `description` include clear trigger conditions?
3. **File size** — Are reference docs reasonably sized for context window consumption?
4. **API key handling** — If external APIs are used, are credentials read from environment variables?
5. **Script quality** — Do scripts have shebang, requirements.txt, and error handling?
6. **README sync** — Are `README.md` and `README_zh.md` updated for new skills?
See [references/quality-guidelines.md](references/quality-guidelines.md) for soft guidelines details.
## Review Checklist Summary
### Must Pass (Blockers)
- [ ] `validate_skills.py` exits with code 0
- [ ] PR title follows conventional commit format
- [ ] One PR, one purpose
### Should Pass (Flagged in Review)
- [ ] No functional overlap with existing skills
- [ ] Description includes trigger conditions
- [ ] Files are reasonably sized
- [ ] API keys via environment variables
- [ ] README tables updated for new skills (Source column set to `Community`)

View File

@@ -0,0 +1,54 @@
# Quality Guidelines (Soft Review)
These guidelines are not enforced by automated tooling. Reviewers should check these during manual PR review and flag violations as suggestions.
## 1. Skill Scope — Avoid Overlap
Before approving a new skill, check existing skills for functional overlap.
- If the new skill's capability is a subset of an existing skill, suggest extending the existing one instead
- If there is partial overlap, the PR description must clearly explain the boundary
- Example: a voice synthesis skill should clarify how it differs from `frontend-dev`'s TTS capabilities
## 2. Description Quality
The `description` field in SKILL.md is what the agent uses to decide whether to activate the skill. A good description must include:
- What the skill does
- When to use it (trigger conditions)
- Keywords or phrases that should activate it
Bad: `"A skill for making PDFs"`
Good: `"Generate, fill, and reformat PDF documents. Use when the user asks to create, modify, or design any PDF file. Triggers: PDF, .pdf, document generation."`
## 3. File Size Awareness
Skills are loaded into the agent's context window. Every token counts.
- Individual `.md` files should stay focused and concise
- If a reference document exceeds ~500 lines, consider splitting it into parts
- Do not embed large data blobs (base64 images, full API responses) in Markdown
- Prefer linking to external resources over inlining lengthy content
## 4. Credential Handling
The validation script only blocks high-confidence secret patterns (OpenAI keys, AWS keys, JWT tokens). Reviewers should additionally check for:
- API keys or passwords assigned directly in code (e.g., `api_key = "abc123..."`)
- Credentials passed as plain string arguments instead of environment variable reads
- Example keys that look realistic enough to be mistaken for real ones
- Scripts that lack a clear error message when a required env var is missing
If a skill involves external APIs, verify that SKILL.md documents the required environment variables.
## 5. Script Quality
If the skill includes helper scripts in `scripts/`:
- Scripts should have a shebang line (`#!/usr/bin/env python3`)
- A `requirements.txt` should be present listing all dependencies if external libraries are needed.
- Errors should produce clear messages, not raw tracebacks
## 6. README Sync
When a new skill is added, both `README.md` and `README_zh.md` should be updated with the new skill in the table. Community-submitted skills should set the Source column to `Community`.

View File

@@ -0,0 +1,53 @@
# Structure Rules (Hard Validation)
These rules are enforced by `scripts/validate_skills.py`. PRs that violate ERROR-level rules will not be merged.
## Directory Structure
Every skill must follow this layout:
```
skills/<skill-name>/
├── SKILL.md # Required
├── references/ # Optional
│ └── *.md
└── scripts/ # Optional
├── *.py
└── requirements.txt # Required if scripts/ exists
```
- Directory name must be lowercase `kebab-case` (e.g., `gif-sticker-maker`)
- `SKILL.md` is the only required file
## SKILL.md Frontmatter
The file must begin with a valid YAML frontmatter block enclosed by `---` markers.
### Required Fields (ERROR if missing)
| Field | Rule |
|-------|------|
| `name` | Must exist and exactly match the directory name |
| `description` | Must exist and be non-empty |
### Recommended Fields (WARNING if missing)
| Field | Rule |
|-------|------|
| `license` | Should be `MIT` or a license declaration |
| `metadata` | Should include `version`, `category`, and optionally `sources` |
## Secret Scanning
No file in the skill directory may contain hardcoded secrets. The following high-confidence patterns are scanned:
- OpenAI-style API keys: `sk-` followed by 20+ alphanumeric characters
- AWS Access Key IDs: `AKIA` followed by 16 uppercase alphanumeric characters
- Hardcoded Bearer tokens: `Bearer` followed by 50+ characters (typical JWT length)
Other forms of hardcoded credentials (API key assignments, passwords, etc.) are not automatically blocked but should be flagged during manual review.
## Validation Severity Levels
- **ERROR** — PR must not be merged. Must be fixed before approval.
- **WARN** — Reviewer should flag. Not a merge blocker but should be addressed.

View File

@@ -0,0 +1,214 @@
#!/usr/bin/env python3
"""Validate skill directory structure and SKILL.md frontmatter.
Zero external dependencies — uses only Python standard library.
Exit code 0: all checks passed (warnings are OK).
Exit code 1: at least one ERROR found.
Usage:
python validate_skills.py # scan default path (skills/)
python validate_skills.py --path some/dir # scan specific directory
"""
import argparse
import os
import re
import sys
# ---------------------------------------------------------------------------
# Minimal frontmatter parser
# ---------------------------------------------------------------------------
def extract_frontmatter(text):
"""Extract YAML frontmatter string between --- markers. Returns None if not found."""
stripped = text.lstrip("\ufeff")
if not stripped.startswith("---"):
return None
end = stripped.find("---", 3)
if end == -1:
return None
return stripped[3:end]
def parse_frontmatter_fields(fm_text):
"""Parse top-level scalar fields from frontmatter text.
Returns dict of {field_name: value_string}. Nested keys under a mapping
are ignored — we only need top-level presence checks.
"""
fields = {}
lines = fm_text.splitlines()
i = 0
while i < len(lines):
line = lines[i]
if not line.strip() or line.strip().startswith("#"):
i += 1
continue
m = re.match(r"^([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.*)", line)
if m:
key = m.group(1)
rest = m.group(2).strip()
if rest in ("|", ">", "|+", "|-", ">+", ">-"):
block_lines = []
i += 1
while i < len(lines) and (lines[i].startswith(" ") or lines[i].startswith("\t") or lines[i].strip() == ""):
block_lines.append(lines[i])
i += 1
fields[key] = "\n".join(block_lines).strip()
continue
elif rest == "":
block_lines = []
i += 1
while i < len(lines) and (lines[i].startswith(" ") or lines[i].startswith("\t")):
block_lines.append(lines[i])
i += 1
fields[key] = "\n".join(block_lines).strip() if block_lines else ""
continue
else:
fields[key] = rest.strip("\"'")
i += 1
return fields
# ---------------------------------------------------------------------------
# Secret scanning
# ---------------------------------------------------------------------------
SECRET_PATTERNS = [
(r"sk-[a-zA-Z0-9]{20,}", "OpenAI-style API key"),
(r"AKIA[0-9A-Z]{16}", "AWS access key"),
(r"Bearer\s+[a-zA-Z0-9_\-\.]{50,}", "Hardcoded bearer token"),
]
SCAN_EXTENSIONS = {".md", ".py", ".sh", ".js", ".ts", ".json", ".yaml", ".yml", ".txt", ".toml", ".cfg", ".ini"}
def scan_secrets(filepath):
"""Scan a file for hardcoded secrets. Returns list of (line_no, pattern_desc, matched_text)."""
try:
with open(filepath, "r", encoding="utf-8", errors="ignore") as f:
content = f.read()
except Exception:
return []
findings = []
for line_no, line in enumerate(content.splitlines(), 1):
for pattern, desc in SECRET_PATTERNS:
for match in re.finditer(pattern, line):
findings.append((line_no, desc, match.group(0)[:60]))
return findings
# ---------------------------------------------------------------------------
# Skill discovery and validation
# ---------------------------------------------------------------------------
def find_skill_dirs(base_path):
"""Find directories that contain a SKILL.md."""
skill_dirs = []
for root, dirs, files in os.walk(base_path):
dirs[:] = [d for d in dirs if not d.startswith(".")]
if "SKILL.md" in files:
skill_dirs.append(root)
return sorted(skill_dirs)
def validate_skill(skill_dir):
"""Validate a single skill directory. Returns (errors, warnings) lists."""
errors = []
warnings = []
dir_name = os.path.basename(skill_dir)
skill_md = os.path.join(skill_dir, "SKILL.md")
if not os.path.isfile(skill_md):
errors.append("SKILL.md not found")
return errors, warnings
with open(skill_md, "r", encoding="utf-8", errors="ignore") as f:
content = f.read()
fm_text = extract_frontmatter(content)
if fm_text is None:
errors.append("SKILL.md has no valid YAML frontmatter (missing --- markers)")
return errors, warnings
fields = parse_frontmatter_fields(fm_text)
name = fields.get("name", "").strip()
if not name:
errors.append("Missing required field: name")
elif name != dir_name:
errors.append(f"name '{name}' does not match directory name '{dir_name}'")
desc = fields.get("description", "").strip()
if not desc:
errors.append("Missing required field: description")
if "license" not in fields or not fields["license"].strip():
warnings.append("Missing recommended field: license")
if "metadata" not in fields or not fields["metadata"].strip():
warnings.append("Missing recommended field: metadata")
for root, dirs, files in os.walk(skill_dir):
dirs[:] = [d for d in dirs if not d.startswith(".")]
for fname in files:
_, ext = os.path.splitext(fname)
if ext not in SCAN_EXTENSIONS:
continue
fpath = os.path.join(root, fname)
for line_no, sdesc, matched in scan_secrets(fpath):
rel = os.path.relpath(fpath, skill_dir)
errors.append(f"Potential secret in {rel}:{line_no} ({sdesc}): {matched}...")
return errors, warnings
def main():
parser = argparse.ArgumentParser(description="Validate MiniMax Skills structure")
parser.add_argument("--path", default="skills", help="Directory to scan (default: skills/)")
args = parser.parse_args()
scan_path = os.path.abspath(args.path)
skill_dirs = find_skill_dirs(scan_path)
if not skill_dirs:
print("No skill directories found.")
sys.exit(0)
print(f"\nValidating {len(skill_dirs)} skill(s)...\n")
total_errors = 0
total_warnings = 0
for sd in skill_dirs:
rel = os.path.relpath(sd)
errors, warnings = validate_skill(sd)
if errors:
status = "FAIL"
elif warnings:
status = "WARN"
else:
status = "PASS"
print(f" [{status}] {rel}")
for msg in errors:
print(f" ERROR {msg}")
for msg in warnings:
print(f" WARN {msg}")
total_errors += len(errors)
total_warnings += len(warnings)
print()
if total_errors:
print(f" {total_errors} error(s), {total_warnings} warning(s)")
print(" Validation FAILED.\n")
sys.exit(1)
elif total_warnings:
print(f" 0 errors, {total_warnings} warning(s)")
print(" Validation PASSED.\n")
else:
print(" All checks passed.\n")
if __name__ == "__main__":
main()

148
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,148 @@
# Contributing to MiniMax Skills
Thank you for your interest in contributing! This document covers PR requirements, skill structure specifications, and development guidelines.
## Pull Request Requirements
### Title Format
Use [Conventional Commits](https://www.conventionalcommits.org/) style:
```
feat(<skill-name>): add new skill for X
fix(<skill-name>): fix YAML frontmatter parsing error
docs: update README skill table
chore: add CI workflow
```
Common prefixes: `feat` (new skill or feature), `fix` (bug fix), `docs` (documentation only), `refactor` (restructure without behavior change), `chore` (tooling, CI, config).
### Scope
**One PR, one purpose.** Each PR should do exactly one of:
- Add a new skill
- Fix a bug in an existing skill
- Improve an existing skill
Do not bundle unrelated changes together.
### PR Description
Every PR must include:
1. **What** — what you added or changed
2. **Why** — the motivation or use case
## Skill Structure
### Directory Layout
```
skills/<skill-name>/
├── SKILL.md # Required — entry point with YAML frontmatter
├── references/ # Optional — detailed reference docs
│ └── *.md
└── scripts/ # Optional — helper scripts
├── *.py
└── requirements.txt # Required if scripts/ exists
```
- The directory name is the skill identifier. Use lowercase `kebab-case` (e.g., `gif-sticker-maker`).
- `SKILL.md` is the only required file. All other files and directories are optional.
### SKILL.md Frontmatter
```yaml
---
name: my-skill # Required — must match directory name
description: > # Required — what this skill does and when to trigger it
One-paragraph description. Include trigger conditions so the agent
knows when to activate this skill (e.g., "Use when the user asks to
create, edit, or format Excel files").
license: MIT # Recommended — defaults to MIT if omitted
metadata: # Recommended
version: "1.0"
category: productivity # e.g., frontend, mobile, productivity, creative
sources:
- Relevant documentation or standards
---
```
**Required fields:** `name`, `description`
- `name` must exactly match the directory name
- `description` must clearly state trigger conditions — this is what the agent uses to decide whether to load your skill
**Recommended fields:** `license`, `metadata` (version, category, sources)
### No Hardcoded Secrets
**Never hardcode API keys, tokens, or credentials in any file.**
If your skill involves calling an external API, instruct the agent to read credentials from environment variables. Follow the pattern established by existing skills:
```python
API_KEY = os.getenv("MINIMAX_API_KEY")
if not API_KEY:
raise SystemExit("ERROR: MINIMAX_API_KEY is not set.\n export MINIMAX_API_KEY='your-key'")
```
Your `SKILL.md` should document the required environment variables as a prerequisite. See `frontend-dev/references/env-setup.md` for a good example.
### README Sync
When adding a new skill, update both `README.md` and `README_zh.md` to include your skill in the skill table. Community-submitted skills should set the Source column to `Community`.
## Guidelines
The following are not hard blockers, but PRs that follow these guidelines will be reviewed and merged faster.
### 1. Skill Scope — Avoid Overlap
Before creating a new skill, check existing skills for functional overlap. If your feature could be an extension of an existing skill, prefer extending over creating a new one.
In your PR description, briefly explain how your skill differs from related existing skills. For example, if you are adding a voice synthesis skill, clarify how it relates to the TTS capabilities already in `frontend-dev`.
### 2. File Size Awareness
Skills are loaded into the agent's context window. Every token counts.
- Keep individual `.md` files focused and concise
- If a reference document grows very large, split it into logical parts (see `minimax-docx/references/openxml_encyclopedia_part{1,2,3}.md` for an example)
- Avoid embedding large data blobs (base64 images, full API response dumps) directly in Markdown files
- Prefer linking to external resources over inlining lengthy content
### 3. Script Standards
If your skill includes helper scripts (typically in a `scripts/` directory):
- Include a shebang line (e.g., `#!/usr/bin/env python3`)
- Provide a `requirements.txt` listing all dependencies
- Handle errors gracefully — fail with a clear message rather than a raw traceback
- Document script usage in `SKILL.md` or a reference file
### 4. Language and Encoding
- Skill names and file names: ASCII only, `kebab-case`
- Markdown content may be in English, Chinese, or bilingual — match the target audience of your skill
- All files must be UTF-8 encoded
## Review Process
You can run the validation script locally to check part of the requirements before submitting:
```bash
python .claude/skills/pr-review/scripts/validate_skills.py
```
You can also use the [pr-review skill](./.claude/skills/pr-review/SKILL.md) to let your AI coding agent assist with the review.
1. Submit your PR following the requirements above
2. At least one maintainer will review
3. Address review feedback
4. Once approved, a maintainer will merge
## Questions?
Open an issue if you have questions about contributing. We're happy to help.

View File

@@ -8,18 +8,18 @@ Development skills for AI coding agents. Plug into your favorite AI coding tool
## Skills ## Skills
| Skill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Description | | Skill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Description | Source |
|---------------------------------------|-------------| |---------------------------------------|-------------|--------|
| `frontend-dev` | Full-stack frontend development combining premium UI design, cinematic animations (Framer Motion, GSAP), AI-generated media assets via MiniMax API (image, video, audio, music, TTS), persuasive copywriting (AIDA framework), and generative art (p5.js, Three.js, Canvas). Tech stack: React / Next.js, Tailwind CSS. | | `frontend-dev` | Full-stack frontend development combining premium UI design, cinematic animations (Framer Motion, GSAP), AI-generated media assets via MiniMax API (image, video, audio, music, TTS), persuasive copywriting (AIDA framework), and generative art (p5.js, Three.js, Canvas). Tech stack: React / Next.js, Tailwind CSS. | Official |
| `fullstack-dev` | Full-stack backend architecture and frontend-backend integration. REST API design, auth flows (JWT, session, OAuth), real-time features (SSE, WebSocket), database integration (SQL / NoSQL), production hardening, and release checklist. Guided workflow: requirements → architecture → implementation. | | `fullstack-dev` | Full-stack backend architecture and frontend-backend integration. REST API design, auth flows (JWT, session, OAuth), real-time features (SSE, WebSocket), database integration (SQL / NoSQL), production hardening, and release checklist. Guided workflow: requirements → architecture → implementation. | Official |
| `android-native-dev` | Android native application development with Material Design 3. Kotlin / Jetpack Compose, adaptive layouts, Gradle configuration, accessibility (WCAG), build troubleshooting, performance optimization, and motion system. | | `android-native-dev` | Android native application development with Material Design 3. Kotlin / Jetpack Compose, adaptive layouts, Gradle configuration, accessibility (WCAG), build troubleshooting, performance optimization, and motion system. | Official |
| `ios-application-dev` | iOS application development guide covering UIKit, SnapKit, and SwiftUI. Touch targets, safe areas, navigation patterns, Dynamic Type, Dark Mode, accessibility, collection views, and Apple HIG compliance. | | `ios-application-dev` | iOS application development guide covering UIKit, SnapKit, and SwiftUI. Touch targets, safe areas, navigation patterns, Dynamic Type, Dark Mode, accessibility, collection views, and Apple HIG compliance. | Official |
| `shader-dev` | Comprehensive GLSL shader techniques for creating stunning visual effects — ray marching, SDF modeling, fluid simulation, particle systems, procedural generation, lighting, post-processing, and more. ShaderToy-compatible. | | `shader-dev` | Comprehensive GLSL shader techniques for creating stunning visual effects — ray marching, SDF modeling, fluid simulation, particle systems, procedural generation, lighting, post-processing, and more. ShaderToy-compatible. | Official |
| `gif-sticker-maker` | Convert photos (people, pets, objects, logos) into 4 animated GIF stickers with captions. Funko Pop / Pop Mart style, powered by MiniMax Image & Video Generation API. | | `gif-sticker-maker` | Convert photos (people, pets, objects, logos) into 4 animated GIF stickers with captions. Funko Pop / Pop Mart style, powered by MiniMax Image & Video Generation API. | Official |
| `minimax-pdf` | Generate, fill, and reformat PDF documents with a token-based design system. CREATE polished PDFs from scratch (15 cover styles), FILL existing form fields, or REFORMAT documents into a new design. Print-ready output with typography and color derived from document type. | | `minimax-pdf` | Generate, fill, and reformat PDF documents with a token-based design system. CREATE polished PDFs from scratch (15 cover styles), FILL existing form fields, or REFORMAT documents into a new design. Print-ready output with typography and color derived from document type. | Official |
| `pptx-generator` | Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. | | `pptx-generator` | Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. | Official |
| `minimax-xlsx` | Open, create, read, analyze, edit, or validate Excel/spreadsheet files (.xlsx, .xlsm, .csv, .tsv). Covers creating new xlsx from scratch via XML templates, reading and analyzing with pandas, editing existing files with zero format loss, formula recalculation, validation, and professional financial formatting. | | `minimax-xlsx` | Open, create, read, analyze, edit, or validate Excel/spreadsheet files (.xlsx, .xlsm, .csv, .tsv). Covers creating new xlsx from scratch via XML templates, reading and analyzing with pandas, editing existing files with zero format loss, formula recalculation, validation, and professional financial formatting. | Official |
| `minimax-docx` | Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET). Three pipelines: create new documents from scratch, fill/edit content in existing documents, or apply template formatting with XSD validation gate-check. | | `minimax-docx` | Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET). Three pipelines: create new documents from scratch, fill/edit content in existing documents, or apply template formatting with XSD validation gate-check. | Official |
## Installation ## Installation
@@ -60,6 +60,19 @@ ln -s ~/.minimax-skills/skills/* ~/.config/opencode/skills/
Restart OpenCode to discover the skills. See [`.opencode/INSTALL.md`](.opencode/INSTALL.md) for details. Restart OpenCode to discover the skills. See [`.opencode/INSTALL.md`](.opencode/INSTALL.md) for details.
## Contributing
We welcome contributions! Before submitting a PR, please read:
- [CONTRIBUTING.md](./CONTRIBUTING.md) — PR format, skill structure requirements, and development guidelines
- [PR Review Rules](./.claude/skills/pr-review/SKILL.md) — automated validation checks and quality review criteria
You can run the validation script locally before submitting:
```bash
python .claude/skills/pr-review/scripts/validate_skills.py
```
## License ## License
[MIT](./LICENSE) [MIT](./LICENSE)

View File

@@ -8,18 +8,18 @@
## 技能列表 ## 技能列表
| 技能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 简介 | | 技能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 简介 | 来源 |
|---------------------------------------|------| |---------------------------------------|------|------|
| `frontend-dev` | 全栈前端开发,融合高级 UI 设计、电影级动画Framer Motion、GSAP、通过 MiniMax API 生成媒体资源图片、视频、音频、音乐、TTS、基于 AIDA 框架的说服力文案、生成艺术p5.js、Three.js、Canvas。技术栈React / Next.js、Tailwind CSS。 | | `frontend-dev` | 全栈前端开发,融合高级 UI 设计、电影级动画Framer Motion、GSAP、通过 MiniMax API 生成媒体资源图片、视频、音频、音乐、TTS、基于 AIDA 框架的说服力文案、生成艺术p5.js、Three.js、Canvas。技术栈React / Next.js、Tailwind CSS。 | Official |
| `fullstack-dev` | 全栈后端架构与前后端集成。REST API 设计、认证流程JWT、Session、OAuth、实时功能SSE、WebSocket、数据库集成SQL / NoSQL、生产环境加固与发布清单。引导式工作流需求收集 → 架构决策 → 实现。 | | `fullstack-dev` | 全栈后端架构与前后端集成。REST API 设计、认证流程JWT、Session、OAuth、实时功能SSE、WebSocket、数据库集成SQL / NoSQL、生产环境加固与发布清单。引导式工作流需求收集 → 架构决策 → 实现。 | Official |
| `android-native-dev` | 基于 Material Design 3 的 Android 原生应用开发。Kotlin / Jetpack Compose、自适应布局、Gradle 配置、无障碍WCAG、构建问题排查、性能优化与动效系统。 | | `android-native-dev` | 基于 Material Design 3 的 Android 原生应用开发。Kotlin / Jetpack Compose、自适应布局、Gradle 配置、无障碍WCAG、构建问题排查、性能优化与动效系统。 | Official |
| `ios-application-dev` | iOS 应用开发指南,涵盖 UIKit、SnapKit 和 SwiftUI。触控目标、安全区域、导航模式、Dynamic Type、深色模式、无障碍、集合视图符合 Apple HIG 规范。 | | `ios-application-dev` | iOS 应用开发指南,涵盖 UIKit、SnapKit 和 SwiftUI。触控目标、安全区域、导航模式、Dynamic Type、深色模式、无障碍、集合视图符合 Apple HIG 规范。 | Official |
| `shader-dev` | 全面的 GLSL 着色器技术,用于创建惊艳的视觉效果 — 光线行进、SDF 建模、流体模拟、粒子系统、程序化生成、光照、后处理等。兼容 ShaderToy。 | | `shader-dev` | 全面的 GLSL 着色器技术,用于创建惊艳的视觉效果 — 光线行进、SDF 建模、流体模拟、粒子系统、程序化生成、光照、后处理等。兼容 ShaderToy。 | Official |
| `gif-sticker-maker` | 将照片人物、宠物、物品、Logo转换为 4 张带字幕的动画 GIF 贴纸。Funko Pop / Pop Mart 盲盒风格,基于 MiniMax 图片与视频生成 API。 | | `gif-sticker-maker` | 将照片人物、宠物、物品、Logo转换为 4 张带字幕的动画 GIF 贴纸。Funko Pop / Pop Mart 盲盒风格,基于 MiniMax 图片与视频生成 API。 | Official |
| `minimax-pdf` | 基于 token 化设计系统生成、填写和重排 PDF 文档。支持三种模式CREATE从零生成15 种封面风格、FILL填写现有表单字段、REFORMAT将已有文档重排为新设计。排版与配色由文档类型自动推导输出即可打印。 | | `minimax-pdf` | 基于 token 化设计系统生成、填写和重排 PDF 文档。支持三种模式CREATE从零生成15 种封面风格、FILL填写现有表单字段、REFORMAT将已有文档重排为新设计。排版与配色由文档类型自动推导输出即可打印。 | Official |
| `pptx-generator` | 生成、编辑和读取 PowerPoint 演示文稿。支持用 PptxGenJS 从零创建(封面、目录、内容、分节页、总结页),通过 XML 工作流编辑现有 PPTX或用 markitdown 提取文本。 | | `pptx-generator` | 生成、编辑和读取 PowerPoint 演示文稿。支持用 PptxGenJS 从零创建(封面、目录、内容、分节页、总结页),通过 XML 工作流编辑现有 PPTX或用 markitdown 提取文本。 | Official |
| `minimax-xlsx` | 打开、创建、读取、分析、编辑或验证 Excel/电子表格文件(.xlsx、.xlsm、.csv、.tsv。支持通过 XML 模板从零创建 xlsx、使用 pandas 读取分析、零格式损失编辑现有文件、公式重算与验证、专业财务格式化。 | | `minimax-xlsx` | 打开、创建、读取、分析、编辑或验证 Excel/电子表格文件(.xlsx、.xlsm、.csv、.tsv。支持通过 XML 模板从零创建 xlsx、使用 pandas 读取分析、零格式损失编辑现有文件、公式重算与验证、专业财务格式化。 | Official |
| `minimax-docx` | 基于 OpenXML SDK.NET的专业 DOCX 文档创建、编辑与排版。三条流水线:从零创建新文档、填写/编辑现有文档内容、应用模板格式并通过 XSD 验证门控检查。 | | `minimax-docx` | 基于 OpenXML SDK.NET的专业 DOCX 文档创建、编辑与排版。三条流水线:从零创建新文档、填写/编辑现有文档内容、应用模板格式并通过 XSD 验证门控检查。 | Official |
## 安装 ## 安装
@@ -60,6 +60,19 @@ ln -s ~/.minimax-skills/skills/* ~/.config/opencode/skills/
重启 OpenCode 以发现技能。详见 [`.opencode/INSTALL.md`](.opencode/INSTALL.md)。 重启 OpenCode 以发现技能。详见 [`.opencode/INSTALL.md`](.opencode/INSTALL.md)。
## 贡献
欢迎贡献!提交 PR 前请阅读:
- [CONTRIBUTING.md](./CONTRIBUTING.md) — PR 格式、Skill 结构要求与开发指南
- [PR Review 规则](./.claude/skills/pr-review/SKILL.md) — 自动化校验检查与质量审核标准
提交前可在本地运行校验脚本:
```bash
python .claude/skills/pr-review/scripts/validate_skills.py
```
## 许可证 ## 许可证
[MIT](./LICENSE) [MIT](./LICENSE)