Hướng dẫn tạo kỹ năng hiệu quả. Kỹ năng này nên được sử dụng khi người dùng muốn tạo một kỹ năng mới (hoặc cập nhật kỹ năng hiện có) nhằm mở rộng khả năng của Claude bằng kiến thức chuyên môn, quy trình làm việc hoặc tích hợp công cụ.
---
Tên: người tạo kỹ năng
Mô tả: Hướng dẫn tạo kỹ năng hiệu quả. Kỹ năng này nên được sử dụng khi người dùng muốn tạo một kỹ năng mới (hoặc cập nhật kỹ năng hiện có) nhằm mở rộng khả năng của Claude bằng kiến thức chuyên môn, quy trình làm việc hoặc tích hợp công cụ.
giấy phép: Hoàn thành các điều khoản trong LICENSE.txt
---
# Người tạo kỹ năng
Kỹ năng này cung cấp hướng dẫn để tạo ra các kỹ năng hiệu quả.
## Về kỹ năng
Kỹ năng là các gói mô-đun khép kín giúp mở rộng khả năng của Claude bằng cách cung cấp
kiến thức chuyên môn, quy trình làm việc và công cụ. Hãy coi chúng như những "hướng dẫn làm quen" cho các
miền hoặc nhiệm vụ—chúng biến Claude từ một đặc vụ có mục đích chung thành một đặc vụ chuyên biệt
được trang bị kiến thức thủ tục mà không một mô hình nào có thể sở hữu đầy đủ.
### Cung cấp những kỹ năng gì
1. Quy trình làm việc chuyên biệt - Quy trình gồm nhiều bước cho các lĩnh vực cụ thể
2. Tích hợp công cụ - Hướng dẫn làm việc với các định dạng tệp hoặc API cụ thể
3. Chuyên môn về miền - Kiến thức cụ thể về công ty, lược đồ, logic nghiệp vụ
4. Tài nguyên đi kèm - Tập lệnh, tài liệu tham khảo và nội dung cho các tác vụ phức tạp và lặp đi lặp lại
## Nguyên tắc cốt lõi
### Ngắn gọn là chìa khóa
Cửa sổ ngữ cảnh là một hàng hóa công cộng. Các kỹ năng chia sẻ cửa sổ ngữ cảnh với mọi thứ khác mà Claude cần: lời nhắc hệ thống, lịch sử hội thoại, siêu dữ liệu của các Kỹ năng khác và yêu cầu thực tế của người dùng.
**Giả định mặc định: Claude đã rất thông minh.** Chỉ thêm ngữ cảnh mà Claude chưa có. Thử thách từng thông tin: "Claude có thực sự cần lời giải thích này không?" và "Đoạn này có biện minh cho chi phí mã thông báo của nó không?"
Thích những ví dụ ngắn gọn hơn là giải thích dài dòng.
### Đặt mức độ tự do phù hợp
Hãy kết hợp mức độ cụ thể với tính dễ vỡ và tính biến đổi của nhiệm vụ:
**Tính tự do cao (hướng dẫn dựa trên văn bản)**: Sử dụng khi có nhiều cách tiếp cận hợp lệ, các quyết định phụ thuộc vào ngữ cảnh hoặc phương pháp phỏng đoán hướng dẫn cách tiếp cận.
**Tự do trung bình (mã giả hoặc tập lệnh có tham số)**: Sử dụng khi tồn tại một mẫu ưa thích, một số biến thể có thể chấp nhận được hoặc cấu hình ảnh hưởng đến hành vi.
**Độ tự do thấp (tập lệnh cụ thể, ít tham số)**: Sử dụng khi các hoạt động dễ vỡ và dễ xảy ra lỗi, tính nhất quán là rất quan trọng hoặc phải tuân theo một trình tự cụ thể.
Hãy coi Claude như đang khám phá một con đường: một cây cầu hẹp có vách đá cần có lan can cụ thể (độ tự do thấp), trong khi một cánh đồng rộng mở cho phép nhiều tuyến đường (độ tự do cao).
### Giải phẫu một kỹ năng
Mọi kỹ năng đều bao gồm tệp SKILL.md bắt buộc và các tài nguyên đi kèm tùy chọn:
```
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter metadata (required)
│ │ ├── name: (required)
│ │ └── description: (required)
│ └── Markdown instructions (required)
└── Bundled Resources (optional)
├── scripts/ - Executable code (Python/Bash/etc.)
├── references/ - Documentation intended to be loaded into context as needed
└── assets/ - Files used in output (templates, icons, fonts, etc.)
```
#### SKILL.md (bắt buộc)
Mỗi SKILL.md bao gồm:
- **Frontmatter** (YAML): Chứa các trường `name` và `description`. Đây là những trường duy nhất mà Claude đọc để xác định khi nào kỹ năng được sử dụng, do đó, điều rất quan trọng là phải mô tả rõ ràng và toàn diện kỹ năng đó là gì và khi nào nên sử dụng kỹ năng đó.
- **Body** (Markdown): Hướng dẫn, hướng dẫn sử dụng kỹ năng. Chỉ được tải SAU KHI kích hoạt kỹ năng (nếu có).
#### Tài nguyên đi kèm (tùy chọn)
##### Tập lệnh (`scripts/`)
Mã thực thi (Python/Bash/v.v.) cho các tác vụ yêu cầu độ tin cậy xác định hoặc được viết lại nhiều lần.
- **Khi nào cần đưa vào**: Khi cùng một mã được viết lại nhiều lần hoặc cần có độ tin cậy xác định
- **Ví dụ**: `scripts/rotate_pdf.py` cho tác vụ xoay PDF
- **Lợi ích**: Mã thông báo hiệu quả, mang tính quyết định, có thể được thực thi mà không cần tải vào ngữ cảnh
- **Lưu ý**: Claude vẫn có thể cần đọc các tập lệnh để vá lỗi hoặc điều chỉnh theo môi trường cụ thể
##### Tài liệu tham khảo (`references/`)
Tài liệu và tài liệu tham khảo dự kiến sẽ được đưa vào bối cảnh khi cần thiết để cung cấp thông tin về quá trình và suy nghĩ của Claude.
- **Khi nào nên đưa vào**: Tài liệu mà Claude nên tham khảo khi làm việc
- **Ví dụ**: `references/finance.md` cho lược đồ tài chính, `references/mnda.md` cho mẫu NDA của công ty, `references/policies.md` cho chính sách công ty, `references/api_docs.md` cho thông số kỹ thuật API
- **Trường hợp sử dụng**: Lược đồ cơ sở dữ liệu, tài liệu API, kiến thức về miền, chính sách công ty, hướng dẫn chi tiết về quy trình làm việc
- **Lợi ích**: Giữ SKILL.md gọn gàng, chỉ tải khi Claude xác định là cần thiết
- **Cách tốt nhất**: Nếu tệp lớn (>10k từ), hãy bao gồm các mẫu tìm kiếm grep trong SKILL.md
- **Tránh trùng lặp**: Thông tin phải nằm trong tệp SKILL.md hoặc tệp tham chiếu, không phải cả hai.
##### Nội dung (`assets/`)
Các tệp không nhằm mục đích tải vào ngữ cảnh mà được sử dụng trong đầu ra mà Claude tạo ra.
- **Khi nào nên đưa vào**: Khi kỹ năng cần các tệp sẽ được sử dụng ở đầu ra cuối cùng
- **Ví dụ**: `assets/logo.png` cho nội dung thương hiệu, `assets/slides.pptx` cho mẫu PowerPoint
- **Trường hợp sử dụng**: Mẫu, hình ảnh, biểu tượng, mã soạn sẵn, phông chữ, tài liệu mẫu
### Nguyên tắc thiết kế công bố tiến bộ
Kỹ năng sử dụng hệ thống tải ba cấp độ để quản lý ngữ cảnh một cách hiệu quả:
1. **Siêu dữ liệu (tên + mô tả)** - Luôn nằm trong ngữ cảnh (~100 từ)
2. **SKILL.md body** - Khi kích hoạt kỹ năng (<5k từ)
3. **Tài nguyên đi kèm** - Khi Claude cần
Giữ nội dung SKILL.md ở mức cần thiết và dưới 500 dòng để giảm thiểu sự phình to của ngữ cảnh.
## Quá trình tạo kỹ năng
Việc tạo kỹ năng bao gồm các bước sau:
1. Hiểu kỹ năng bằng ví dụ cụ thể
2. Lập kế hoạch nội dung kỹ năng có thể sử dụng lại (tập lệnh, tài liệu tham khảo, nội dung)
3. Khởi tạo kỹ năng (chạy init_skill.py)
4. Chỉnh sửa kỹ năng (triển khai tài nguyên và viết SKILL.md)
5. Đóng gói kỹ năng (chạy package_skill.py)
6. Lặp lại dựa trên việc sử dụng thực tế
### Bước 3: Khởi tạo kỹ năng
Khi tạo một kỹ năng mới từ đầu, hãy luôn chạy tập lệnh `init_skill.py`:
```bash
scripts/init_skill.py <skill-name> --path <output-directory>
```
### Bước 4: Chỉnh sửa kỹ năng
Hãy tham khảo những hướng dẫn hữu ích này dựa trên nhu cầu kỹ năng của bạn:
- **Quy trình nhiều bước**: Xem tài liệu tham khảo/workflows.md để biết quy trình công việc tuần tự và logic có điều kiện
- **Các định dạng đầu ra hoặc tiêu chuẩn chất lượng cụ thể**: Xem tài liệu tham khảo/output-patterns.md để biết mẫu và mẫu ví dụ
### Bước 5: Đóng gói kỹ năng
```bash
scripts/package_skill.py <path/to/skill-folder>
```
Tập lệnh đóng gói xác thực và tạo tệp .skill để phân phối.
TẬP TIN: tài liệu tham khảo/workflows.md
# Mẫu quy trình công việc
## Quy trình làm việc tuần tự
Đối với các nhiệm vụ phức tạp, hãy chia các hoạt động thành các bước rõ ràng, tuần tự. Việc cung cấp cho Claude cái nhìn tổng quan về quá trình bắt đầu SKILL.md thường rất hữu ích:
```markdown
Filling a PDF form involves these steps:
1. Analyze the form (run analyze_form.py)
2. Create field mapping (edit fields.json)
3. Validate mapping (run validate_fields.py)
4. Fill the form (run fill_form.py)
5. Verify output (run verify_output.py)
```
## Quy trình làm việc có điều kiện
Đối với các nhiệm vụ có logic phân nhánh, hãy hướng dẫn Claude qua các điểm quyết định:
```markdown
1. Determine the modification type:
**Creating new content?** → Follow "Creation workflow" below
**Editing existing content?** → Follow "Editing workflow" below
2. Creation workflow: [steps]
3. Editing workflow: [steps]
```
TẬP TIN: tham khảo/output-patterns.md
# Mẫu đầu ra
Sử dụng các mẫu này khi các kỹ năng cần tạo ra sản phẩm chất lượng cao, nhất quán.
## Mẫu mẫu
Cung cấp mẫu cho định dạng đầu ra. Phù hợp với mức độ nghiêm ngặt với nhu cầu của bạn.
**Đối với các yêu cầu nghiêm ngặt (như phản hồi API hoặc định dạng dữ liệu):**
```markdown
## Report structure
ALWAYS use this exact template structure:
# [Analysis Title]
## Executive summary
[One-paragraph overview of key findings]
## Key findings
- Finding 1 with supporting data
- Finding 2 with supporting data
- Finding 3 with supporting data
## Recommendations
1. Specific actionable recommendation
2. Specific actionable recommendation
```
**Để được hướng dẫn linh hoạt (khi việc điều chỉnh có ích):**
```markdown
## Report structure
Here is a sensible default format, but use your best judgment:
# [Analysis Title]
## Executive summary
[Overview]
## Key findings
[Adapt sections based on what you discover]
## Recommendations
[Tailor to the specific context]
Adjust sections as needed for the specific analysis type.
```
## Mẫu ví dụ
Đối với các kỹ năng mà chất lượng đầu ra phụ thuộc vào việc xem ví dụ, hãy cung cấp các cặp đầu vào/đầu ra:
```markdown
## Commit message format
Generate commit messages following these examples:
**Example 1:**
Input: Added user authentication with JWT tokens
Output:
```
feat(auth): triển khai xác thực dựa trên JWT
Thêm điểm cuối đăng nhập và phần mềm trung gian xác thực mã thông báo
```
**Example 2:**
Input: Fixed bug where dates displayed incorrectly in reports
Output:
```
fix(báo cáo): định dạng ngày chính xác trong chuyển đổi múi giờ
Sử dụng nhất quán dấu thời gian UTC trong quá trình tạo báo cáo
```
Follow this style: type(scope): brief description, then detailed explanation.
```
Các ví dụ giúp Claude hiểu phong cách và mức độ chi tiết mong muốn rõ ràng hơn so với chỉ mô tả.
TẬP TIN:scripts/quick_validate.py
#!/usr/bin/env python3
"""
Tập lệnh xác thực nhanh các kỹ năng - phiên bản tối thiểu
"""
hệ thống nhập khẩu
hệ điều hành nhập khẩu
nhập lại
nhập khẩu yaml
từ đường dẫn nhập pathlib
def xác thực_skill(skill_path):
"""Xác nhận cơ bản của một kỹ năng"""
Skill_path = Đường dẫn(skill_path)
# Kiểm tra sự tồn tại của SKILL.md
kỹ năng_md = kỹ năng_path / 'SKILL.md'
nếu không phải là Skill_md.exists():
trả về Sai, "Không tìm thấy SKILL.md"
# Đọc và xác thực vấn đề đầu tiên
nội dung = kỹ năng_md.read_text()
nếu không phải content.startswith('---'):
trả về Sai, "Không tìm thấy vấn đề chính của YAML"
# Trích xuất vật chất phía trước
match = re.match(r'^---\n(.*?)\n---', nội dung, re.DOTALL)
nếu không khớp:
trả về Sai, "Định dạng tiền đề không hợp lệ"
frontmatter_text = match.group(1)
# Phân tích vấn đề đầu tiên của YAML
thử:
frontmatter = yaml.safe_load(frontmatter_text)
nếu không phải là isinstance(frontmatter, dict):
trả về Sai, "Frontmatter phải là từ điển YAML"
ngoại trừ yaml.YAMLError là e:
trả về Sai, f"YAML không hợp lệ trong phần đầu: {e}"
# Xác định các thuộc tính được phép
ALLOWED_PROPERTIES = {'name', 'description', 'license', 'allowed-tools', 'metadata'}
# Kiểm tra các thuộc tính không mong muốn (không bao gồm các khóa lồng nhau trong siêu dữ liệu)
bất ngờ_keys = set(frontmatter.keys()) - ALLOWED_PROPERTIES
nếu không mong muốn_keys:
trả về Sai, (
f"(Các) khóa không mong đợi trong phần đầu của SKILL.md: {', '.join(sorted(unexpected_keys))}."
f"Các thuộc tính được phép là: {', '.join(sorted(ALLOWED_PROPERTIES))}"
)
# Kiểm tra các trường bắt buộc
nếu 'tên' không có ở mặt trước:
return Sai, "Thiếu 'tên' ở phần đầu"
nếu 'mô tả' không có trong phần đầu:
return Sai, "Thiếu 'mô tả' ở phần đầu"
# Trích xuất tên để xác thực
name = frontmatter.get('name', '')
nếu không phải là phiên bản (tên, str):
trả về Sai, f"Tên phải là một chuỗi, có {type(name).__name__}"
tên = tên.strip()
nếu tên:
# Kiểm tra quy ước đặt tên (dấu gạch ngang: chữ thường có dấu gạch nối)
nếu không re.match(r'^[a-z0-9-]+$', name):
trả về Sai, f"Tên '{name}' phải là chữ gạch nối (chỉ chữ cái, chữ số và dấu gạch nối viết thường)"
nếu name.startswith('-') hoặc name.endswith('-') hoặc '--' trong tên:
trả về Sai, f"Tên '{name}' không thể bắt đầu/kết thúc bằng dấu gạch nối hoặc chứa dấu gạch nối liên tiếp"
# Kiểm tra độ dài tên (tối đa 64 ký tự cho mỗi thông số)
nếu len(tên) > 64:
trả về Sai, f"Tên quá dài ({len(name)} ký tự). Tối đa là 64 ký tự."
# Trích xuất và xác thực mô tả
mô tả = frontmatter.get('mô tả', '')
nếu không phải là phiên bản(mô tả, str):
trả về Sai, f"Mô tả phải là một chuỗi, có {type(description).__name__}"
mô tả = mô tả.strip()
nếu mô tả:
# Kiểm tra dấu ngoặc nhọn
nếu '<' in description or '>' trong mô tả:
trả về Sai, "Mô tả không được chứa dấu ngoặc nhọn (< or >)"
# Kiểm tra độ dài mô tả (tối đa 1024 ký tự cho mỗi thông số)
nếu len(mô tả) > 1024:
trả về Sai, f"Mô tả quá dài ({len(description)} ký tự). Tối đa là 1024 ký tự."
return True, "Kỹ năng hợp lệ!"
nếu __name__ == "__main__":
nếu len(sys.argv) != 2:
print("Cách sử dụng: python quick_validate.py <skill_directory>")
sys.exit(1)
hợp lệ, tin nhắn = xác thực_skill(sys.argv[1])
in (tin nhắn)
sys.exit(0 nếu hợp lệ khác 1)
TẬP TIN:scripts/init_skill.py
#!/usr/bin/env python3
"""
Trình khởi tạo kỹ năng - Tạo một kỹ năng mới từ mẫu
Cách sử dụng:
init_skill.py <skill-name> --đường dẫn <path>
Ví dụ:
init_skill.py my-new-skill --path kỹ năng/công khai
init_skill.py my-api-helper --path kỹ năng/riêng tư
init_skill.py custom-skill --path /custom/location
"""
hệ thống nhập khẩu
từ đường dẫn nhập pathlib
SKILL_TEMPLATE = """---
tên: {skill_name}
mô tả: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.]
---
# {skill_title}
## Tổng quan
[TODO: 1-2 sentences explaining what this skill enables]
## Tài nguyên
Kỹ năng này bao gồm các thư mục tài nguyên mẫu minh họa cách tổ chức các loại tài nguyên đi kèm khác nhau:
### kịch bản/
Mã thực thi (Python/Bash/v.v.) có thể chạy trực tiếp để thực hiện các thao tác cụ thể.
### tài liệu tham khảo/
Tài liệu và tài liệu tham khảo nhằm mục đích đưa vào bối cảnh để cung cấp thông tin về quá trình và suy nghĩ của Claude.
### tài sản/
Các tệp không nhằm mục đích tải vào ngữ cảnh mà được sử dụng trong đầu ra mà Claude tạo ra.
---
**Mọi thư mục không cần thiết đều có thể bị xóa.** Không phải kỹ năng nào cũng yêu cầu cả ba loại tài nguyên.
"""
EXAMPLE_SCRIPT = '''#!/usr/bin/env python3
"""
Tập lệnh trợ giúp mẫu cho {skill_name}
Đây là tập lệnh giữ chỗ có thể được thực thi trực tiếp.
Thay thế bằng cách triển khai thực tế hoặc xóa nếu không cần thiết.
"""
chắc chắn chính():
print("Đây là tập lệnh mẫu cho {skill_name}")
# VIỆC CẦN LÀM: Thêm logic tập lệnh thực tế vào đây
nếu __name__ == "__main__":
chủ yếu()
'''
EXAMPLE_REFERENCE = """# Tài liệu tham khảo cho {skill_title}
Đây là phần giữ chỗ cho tài liệu tham khảo chi tiết.
Thay thế bằng nội dung tham khảo thực tế hoặc xóa nếu không cần thiết.
"""
EXAMPLE_ASSET = """# Tệp tài sản mẫu
Trình giữ chỗ này thể hiện nơi các tệp nội dung sẽ được lưu trữ.
Thay thế bằng các tệp nội dung thực tế (mẫu, hình ảnh, phông chữ, v.v.) hoặc xóa nếu không cần thiết.
"""
def title_case_skill_name(skill_name):
"""Chuyển đổi tên kỹ năng có dấu gạch nối thành Viết hoa Tiêu đề để hiển thị."""
return ' '.join(word.capitalize() cho từ trong kỹ năng_name.split('-'))
def init_skill(skill_name, đường dẫn):
"""Khởi tạo thư mục kỹ năng mới với mẫu SKILL.md."""
Skill_dir = Đường dẫn(path).resolve() / Skill_name
nếu Skill_dir.exists():
print(f"❌ Lỗi: Thư mục kỹ năng đã tồn tại: {skill_dir}")
trả về Không có
thử:
Skill_dir.mkdir(parents=Đúng, tồn tại_ok=Sai)
print(f" ✅ Đã tạo thư mục kỹ năng: {skill_dir}")
ngoại trừ Ngoại lệ là e:
print(f"❌ Lỗi tạo thư mục: {e}")
trả về Không có
Skill_title = title_case_skill_name(skill_name)
Skill_content = SKILL_TEMPLATE.format(skill_name=skill_name, Skill_title=skill_title)
kỹ năng_md_path = kỹ năng_dir / 'SKILL.md'
thử:
Skill_md_path.write_text(skill_content)
print(" ✅ Đã tạo SKILL.md")
ngoại trừ Ngoại lệ là e:
print(f"❌ Lỗi khi tạo SKILL.md: {e}")
trả về Không có
thử:
scripts_dir = kỹ năng_dir / 'tập lệnh'
scripts_dir.mkdir(exist_ok=True)
example_script = scripts_dir / 'example.py'
example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name))
example_script.chmod(0o755)
print(" ✅ Đã tạo tập lệnh/example.py")
tài liệu tham khảo_dir = kỹ năng_dir / 'tài liệu tham khảo'
tài liệu tham khảo_dir.mkdir(exist_ok=True)
example_reference = tham chiếu_dir / 'api_reference.md'
example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title))
print(" ✅ Đã tạo tài liệu tham khảo/api_reference.md")
nội dung_dir = kỹ năng_dir / 'tài sản'
assets_dir.mkdir(exist_ok=True)
example_asset = assets_dir / 'example_asset.txt'
example_asset.write_text(EXAMPLE_ASSET)
print(" ✅ Đã tạo nội dung/example_asset.txt")
ngoại trừ Ngoại lệ là e:
print(f"❌ Lỗi tạo thư mục tài nguyên: {e}")
trả về Không có
print(f"\n ✅ Kỹ năng '{skill_name}' được khởi tạo thành công tại {skill_dir}")
trả lại kỹ năng_dir
chắc chắn chính():
nếu len(sys.argv) < 4 hoặc sys.argv[2] != '--path':
print("Cách sử dụng: init_skill.py <skill-name> --path <path>")
sys.exit(1)
tên kỹ năng = sys.argv[1]
đường dẫn = sys.argv[3]
print(f"🚀 Kỹ năng khởi tạo: {skill_name}")
print(f" Vị trí: {path}")
in()
kết quả = init_skill(skill_name, đường dẫn)
sys.exit(0 nếu kết quả khác 1)
nếu __name__ == "__main__":
chủ yếu()
TẬP TIN:scripts/package_skill.py
#!/usr/bin/env python3
"""
Skill Packager - Tạo tệp .skill có thể phân phối của thư mục kỹ năng
Cách sử dụng:
python utils/package_skill.py <path/to/skill-folder> [output-directory]
Ví dụ:
python utils/package_skill.py kỹ năng/public/my-skill
python utils/package_skill.py Skills/public/my-skill ./dist
"""
hệ thống nhập khẩu
nhập tệp zip
từ đường dẫn nhập pathlib
từ quick_validate nhập valid_skill
def package_skill(skill_path, out_dir=None):
"""Gói thư mục kỹ năng vào một tệp .skill."""
Skill_path = Đường dẫn(skill_path).resolve()
nếu không phải là Skill_path.exists():
print(f"❌ Lỗi: Không tìm thấy thư mục kỹ năng: {skill_path}")
trả về Không có
nếu không phải là Skill_path.is_dir():
print(f"❌ Lỗi: Đường dẫn không phải là thư mục: {skill_path}")
trả về Không có
kỹ năng_md = kỹ năng_path / "SKILL.md"
nếu không phải là Skill_md.exists():
print(f"❌ Lỗi: Không tìm thấy SKILL.md trong {skill_path}")
trả về Không có
print("🔍 Đang xác thực kỹ năng...")
hợp lệ, tin nhắn = xác thực_skill(skill_path)
nếu không hợp lệ:
print(f"❌ Xác thực không thành công: {message}")
print(" Vui lòng sửa lỗi xác thực trước khi đóng gói.")
trả về Không có
print(f" ✅ {message}\n")
tên kỹ năng = kỹ năng_path.name
nếu đầu ra_dir:
out_path = Đường dẫn(output_dir).resolve()
đầu ra_path.mkdir (cha mẹ=Đúng, tồn tại_ok=True)
khác:
đầu ra_path = Path.cwd()
kỹ năng_filename = đầu ra_path / f"{skill_name}.skill"
thử:
với zipfile.ZipFile(skill_filename, 'w', zipfile.ZIP_DEFLATED) là zipf:
cho file_path trong Skill_path.rglob('*'):
nếu file_path.is_file():
tên hồ quang = file_path.relative_to(skill_path.parent)
zipf.write(file_path, arcname)
print(f" Đã thêm: {arcname}")
print(f"\n ✅ Đã đóng gói thành công kỹ năng thành: {skill_filename}")
trả lại tên_tập tin kỹ năng
ngoại trừ Ngoại lệ là e:
print(f"❌ Lỗi tạo file .skill: {e}")
trả về Không có
chắc chắn chính():
nếu len(sys.argv) < 2:
print("Cách sử dụng: python utils/package_skill.py <path/to/skill-folder> [output-directory]")
sys.exit(1)
Skill_path = sys.argv[1]
đầu ra_dir = sys.argv[2] if len(sys.argv) > 2 else Không có
print(f"📦 Kỹ năng đóng gói: {skill_path}")
nếu đầu ra_dir:
print(f" Thư mục đầu ra: {output_dir}")
in()
kết quả = package_skill(skill_path, out_dir)
sys.exit(0 nếu kết quả khác 1)
nếu __name__ == "__main__":
chủ yếu()
Một tác nhân meta được thiết kế để hỗ trợ tạo và quản lý cấu hình tác nhân trên nền tảng Letta. Lời nhắc này hướng dẫn người dùng trong quá trình thiết lập các vai trò và quy trình làm việc khác nhau của tổng đài viên.
1Hoạt động như một Đại lý Meta trên nền tảng Letta. Bạn được thiết kế để giúp người dùng tạo và quản lý tổng đài viên một cách hiệu quả với kiến thức sâu rộng về nền tảng Letta và kiến thức chuyên môn về xây dựng đại lý.23Nhiệm vụ của bạn là:4- Hướng dẫn người dùng thiết lập cấu hình đại lý5- Cung cấp thông tin chi tiết về các nhiệm vụ vai trò tối ưu6- Hỗ trợ tùy chỉnh quy trình làm việc7- Đề xuất các phương pháp hay nhất để quản lý đại lý8- Khắc phục sự cố cài đặt thường gặp910Khả năng bổ sung:...+15 dòng nữa