ข้ามไปที่เนื้อหา

Skills

Skills สอนให้เอเจนต์ ใช้ tool ได้ดีขึ้นและปรับปรุงการให้เหตุผล มันคือชุด การประกอบ tool, sub-skill และคำสั่งเอเจนต์ที่นำกลับมาใช้ซ้ำได้ และแชร์ผ่าน registry สาธารณะได้

Skill ทุกตัวคือ tool Skills ปรากฏเป็นแคตตาล็อกแบบเบาใน system prompt ของ เอเจนต์ และเมื่อเอเจนต์เรียกใช้ตัวใดตัวหนึ่ง เนื้อหาของมัน (ผลลัพธ์ pipeline, คำสั่ง markdown หรือทั้งคู่) จะถูกแทรกเข้าไปในบริบทของบทสนทนา

ภาพรวม

แนวคิด คำอธิบาย
Skill ไดเรกทอรีที่มี skill.toml (pipeline แบบมีโครงสร้าง), SKILL.md (คำสั่งแบบ markdown) หรือทั้งคู่
SkillManager ตัวประสานงานกลางสำหรับการค้นหา, resolve, สร้างแคตตาล็อก และห่อ tool
SkillTool Adapter ที่ห่อ skill ใดๆ ให้เป็น BaseTool เพื่อให้เอเจนต์เรียกใช้ได้
Overlay ไฟล์เสริมที่ ~/.openjarvis/learning/skills/ เก็บคำอธิบายที่ปรับปรุงแล้วและตัวอย่าง few-shot
Source ตัว resolver สำหรับนำเข้า skill จาก Hermes Agent, OpenClaw หรือ GitHub repo ใดๆ

Quick Start

# List installed skills
jarvis skill list

# Install a skill from Hermes Agent
jarvis skill install hermes:apple-notes

# Bulk install a category
jarvis skill sync hermes --category research

# Run a skill directly
jarvis skill run math-solver -a expression="41 + 82"

# See skill details
jarvis skill info research-and-summarize

รูปแบบการกำหนด Skill

Skill คือไดเรกทอรีที่มี skill.toml, SKILL.md หรือทั้งคู่

โครงสร้างไดเรกทอรี

research-and-summarize/
├── SKILL.md              # Markdown instructions (loaded on invocation)
├── skill.toml            # Structured pipeline steps
├── templates/            # Optional Jinja2 templates
├── scripts/              # Optional executable helpers
├── references/           # Optional detailed docs
├── assets/               # Optional static resources
└── examples/             # Optional usage examples

skill.toml (Pipeline แบบมีโครงสร้าง)

Pipeline skill กำหนดลำดับการเรียก tool ที่รันแบบ deterministic:

[skill]
name = "research-and-summarize"
version = "0.1.0"
description = "Search the web and produce a structured summary"
author = "openjarvis"
tags = ["research", "summarization"]
required_capabilities = ["network:fetch"]
depends = ["summarize"]

[[skill.steps]]
tool_name = "web_search"
arguments_template = '{"query": "{query}"}'
output_key = "search_results"

[[skill.steps]]
skill_name = "summarize"
arguments_template = '{"text": "{search_results}"}'
output_key = "summary"

Step เรียก tool ได้ (tool_name) หรือเรียก skill อื่น (skill_name) placeholder ในเทมเพลตอย่าง {query} จะกลายเป็นพารามิเตอร์ input ของ skill Output key เชื่อมโยงกันระหว่าง step

SKILL.md (เนื้อหาเชิงคำสั่ง)

Instructional skill ให้คำแนะนำแบบ markdown ที่เอเจนต์ทำตามโดยใช้ tool อื่น ของมันเอง:

---
name: code-explainer
description: Explain code in plain language with examples
license: MIT
metadata:
  openjarvis:
    version: "0.1.0"
    author: openjarvis
    tags: [coding, explanation]
---

When asked to explain code, follow this approach:

1. Identify the programming language
2. Break the code into logical sections
3. Explain each section in plain language
4. Highlight any patterns, idioms, or potential issues
5. Provide a one-sentence summary at the end

YAML frontmatter ทำตามมาตรฐานเปิด agentskills.io ฟิลด์ที่จำเป็น: name, description ทางเลือกเสริม: license, compatibility, metadata, allowed-tools

สิ่งที่เกิดขึ้นตอนเรียกใช้งาน

Skill มี ตอนเรียกใช้งาน
มีแค่ step ของ skill.toml รัน pipeline คืนผลลัพธ์
มีแค่ SKILL.md คืนคำสั่งแบบ markdown — เอเจนต์ทำตามในรอบถัดไป
มีทั้งคู่ รัน pipeline step และคืนคำแนะนำแบบ markdown พร้อมกับผลลัพธ์ด้วย

การติดตั้ง Skill

จาก Hermes Agent

# Single skill
jarvis skill install hermes:apple-notes

# Bulk install by category
jarvis skill sync hermes --category research
jarvis skill sync hermes --category coding
jarvis skill sync hermes  # everything (~150 skills)

จาก OpenClaw

# Single skill (owner/slug format)
jarvis skill install openclaw:0xv4l3nt1n3/etherscan

# Bulk install with search filter
jarvis skill sync openclaw --search "web3|crypto"

จาก GitHub Repo ใดๆ

jarvis skill install github:user/repo/path/to/skill --url https://github.com/user/repo

ตัวอย่างเช่น ติดตั้ง Hermes Tweet skill เมื่อคุณต้องการให้เอเจนต์ค้นหา Twitter/X, อ่านการตอบกลับทวีต, มอนิเตอร์ทวีต, export ผู้ติดตาม และรัน เวิร์กโฟลว์ post, reply หรือ DM ที่มีการควบคุม:

jarvis skill install github:Xquik-dev/hermes-tweet/skills/hermes-tweet --url https://github.com/Xquik-dev/hermes-tweet

นำเข้าอัตโนมัติแบบขับเคลื่อนด้วย Config

เพิ่มแหล่งข้อมูลลงใน ~/.openjarvis/config.toml เพื่อ sync อัตโนมัติ:

[skills]
enabled = true
auto_sync = true

[[skills.sources]]
source = "hermes"
filter = { category = ["research", "coding", "productivity"] }
auto_update = true

[[skills.sources]]
source = "openclaw"
filter = { search = "web3|crypto" }

เมื่อ auto_sync = true SkillManager จะตรวจความใหม่ของแหล่งข้อมูลทุกครั้ง ที่เริ่ม session และดึงอัปเดตในพื้นหลัง

การจัดการแหล่งข้อมูล

# List configured sources
jarvis skill sources

# Update all configured sources
jarvis skill update

เอเจนต์ใช้ Skill อย่างไร

แคตตาล็อก Skill ใน System Prompt

skill ที่มีทั้งหมดจะปรากฏเป็นแคตตาล็อก XML แบบเบาใน system prompt ของ เอเจนต์:

<available_skills>
  <skill name="research-and-summarize" description="Search the web and produce a structured summary" />
  <skill name="code-explainer" description="Explain code in plain language with examples" />
  <skill name="math-solver" description="Solve a math problem step by step using the calculator" />
</available_skills>

เอเจนต์อ่านแคตตาล็อกนี้และตัดสินใจว่าจะเรียกใช้ skill ตัวไหน ตามคำขอของ ผู้ใช้

การควบคุมการเรียกใช้

Flag ต่อ skill ควบคุมการมองเห็น:

[skill]
user_invocable = true              # expose as CLI command (default: true)
disable_model_invocation = false   # hide from agent catalog (default: false)
user_invocable disable_model_invocation คำสั่ง CLI? เอเจนต์ค้นพบไหม?
true (ค่าเริ่มต้น) false (ค่าเริ่มต้น) ใช่ ใช่
true true ใช่ ไม่
false false ไม่ ใช่
false true ไม่ ไม่ (dormant)

Pipeline Skill เทียบกับ Instructional Skill

เอเจนต์จัดการ skill ทั้งสองประเภทได้อย่างถูกต้อง:

  • Pipeline skill (มี step ของ skill.toml) รันแบบ deterministic และคืนผลลัพธ์ที่คำนวณแล้ว เอเจนต์ใช้ผลลัพธ์นั้นในคำตอบโดยตรง
  • Instructional skill (มีแค่ SKILL.md) คืนข้อความ markdown ที่อธิบายวิธีทำงานให้สำเร็จ เอเจนต์อ่านคำสั่งแล้วทำตามโดยใช้ tool อื่นของมัน (web_search, shell_exec, calculator ฯลฯ)

การค้นหา Skill จาก Trace

OpenJarvis ขุดประวัติ trace ของคุณหาลำดับการเรียกใช้ tool ที่เกิดซ้ำได้ โดยอัตโนมัติ และนำเสนอเป็น skill ผู้สมัคร:

# Preview discovered patterns without writing
jarvis skill discover --dry-run --min-frequency 3

# Write discovered skills to ~/.openjarvis/skills/discovered/
jarvis skill discover

skill ที่ค้นพบจะไปอยู่ที่ ~/.openjarvis/skills/discovered/ และปรากฏใน jarvis skill list โดยอัตโนมัติในเซสชันถัดไป

การปรับปรุง Skill

ปรับปรุงด้วย DSPy หรือ GEPA

Learning loop ของ skill ใช้ประวัติ trace ของคุณเพื่อปรับปรุงคำอธิบาย skill และดึงตัวอย่าง few-shot:

# Preview what would be optimized
jarvis optimize skills --dry-run

# Run DSPy optimization
jarvis optimize skills --policy dspy --min-traces 3

# Run GEPA evolutionary optimization
jarvis optimize skills --policy gepa --min-traces 3

# Inspect what optimization produced
jarvis skill show-overlay research-and-summarize

ผลลัพธ์การปรับปรุงถูกเก็บเป็น overlay เสริมที่ ~/.openjarvis/learning/skills/<skill-name>/optimized.toml มัน override คำอธิบายของ skill และเพิ่มตัวอย่าง few-shot ลง system prompt ของเอเจนต์ ไฟล์ skill ต้นฉบับจะไม่ถูกแก้ไขเลย

การปรับปรุงอัตโนมัติ

เปิดใช้งานการปรับปรุงอัตโนมัติใน config:

[learning.skills]
auto_optimize = false       # set to true to enable
optimizer = "dspy"          # "dspy" or "gepa"
min_traces_per_skill = 20

เมื่อเปิดใช้งาน LearningOrchestrator จะรันการปรับปรุง skill หลังจากแต่ละ รอบการเรียนรู้

การวัดผล Skill

วัดว่า skill ช่วยปรับปรุงประสิทธิภาพของเอเจนต์หรือไม่:

# Full sweep: 4 conditions × 3 seeds
jarvis bench skills

# Smoke test: 4 conditions × 1 seed × 5 tasks
jarvis bench skills --max-samples 5 --seeds 42

# Single condition
jarvis bench skills --condition skills_optimized_dspy

เงื่อนไข benchmark สี่แบบคือ:

เงื่อนไข สิ่งที่ทดสอบ
no_skills ปิด skill (กลุ่มควบคุม)
skills_on เปิด skill ไม่มีการปรับปรุง
skills_optimized_dspy Overlay ที่ปรับปรุงด้วย DSPy
skills_optimized_gepa Overlay ที่ปรับปรุงด้วย GEPA

ผลลัพธ์ถูกเขียนไปที่ docs/superpowers/results/pinchbench-skills-eval-{date}.md พร้อมตารางสรุป, รายละเอียดต่อ task, ผลต่าง และจำนวนการเรียกใช้ skill

ความปลอดภัยและความเชื่อถือได้

ระดับความเชื่อถือ (Trust Tiers)

ระดับ แหล่งที่มา การตรวจสอบ Runtime
Bundled มาพร้อม OpenJarvis เชื่อถือโดยนัย เข้าถึงเต็มรูปแบบภายในความสามารถที่ประกาศไว้
Indexed อยู่ใน skill index ทางการ ลงลายเซ็นแล้ว SHA256 + Ed25519 จำกัดตาม capability
Unreviewed URL GitHub ใดๆ SHA256 เท่านั้น จำกัดตาม capability + เตือนเรื่อง sandbox
Workspace ไดเรกทอรี ./skills/ ในเครื่อง ไม่มี (โค้ดของผู้ใช้) เชื่อถือได้

การบังคับใช้ Capability

Skill ประกาศ capability ที่จำเป็น ตอน runtime SkillExecutor ตรวจสอบว่าการ เรียก tool แต่ละครั้งอยู่ในขอบเขต capability ที่ skill ประกาศไว้:

  • network:fetch — คำขอ HTTP ขาออก
  • filesystem:read / filesystem:write — การเข้าถึงไฟล์
  • shell:execute — รันคำสั่ง shell (อันตราย)
  • memory:read / memory:write — การเข้าถึง memory backend
  • engine:inference — การเรียก LLM

Skill ที่ประกาศ capability อันตราย (shell:execute, network:listen, filesystem:write) จะ trigger คำเตือนตอนติดตั้งและคำแนะนำเรื่อง sandbox

Scripts

Skill ที่นำเข้ามาอาจมีไดเรกทอรี scripts/ ที่มีโค้ดที่รันได้ สิ่งเหล่านี้ ถูกข้ามเป็นค่าเริ่มต้น เพื่อความปลอดภัย ใช้ --with-scripts เพื่อเปิดใช้ งาน:

jarvis skill install hermes:arxiv --with-scripts

การประกอบ Skill

Skill เรียกใช้ skill อื่นเป็น sub-step ได้:

[[skill.steps]]
skill_name = "summarize"
arguments_template = '{"text": "{search_results}"}'
output_key = "summary"

SkillManager สร้าง dependency graph ตอนค้นพบ และตรวจสอบ:

  1. ไม่มี cycle — A → B → C → A จะถูกปฏิเสธพร้อม error ที่ชัดเจน
  2. ความลึกสูงสุด — ค่าเริ่มต้น 5 ระดับ (ตั้งค่าได้)
  3. การรวม Capability — parent ต้องประกาศทุก capability ที่ children ต้องการ

เอกสารอ้างอิง Configuration

หมวด [skills]

[skills]
enabled = true                    # enable/disable the skill system
skills_dir = "~/.openjarvis/skills/"  # where skills are installed
active = "*"                      # which skills to activate ("*" = all)
auto_discover = true              # scan skills_dir on startup
auto_sync = false                 # pull from configured sources on startup
max_depth = 5                     # max sub-skill nesting depth
sandbox_dangerous = true          # warn about dangerous capabilities

หมวด [[skills.sources]]

[[skills.sources]]
source = "hermes"                 # "hermes", "openclaw", or "github"
url = ""                          # required when source = "github"
filter = { category = ["research", "coding"] }
auto_update = true                # pull latest on sync

หมวด [learning.skills]

[learning.skills]
auto_optimize = false             # opt-in automatic optimization
optimizer = "dspy"                # "dspy" or "gepa"
min_traces_per_skill = 20         # minimum traces before optimizing
optimization_interval_seconds = 86400  # at most once per day
overlay_dir = "~/.openjarvis/learning/skills/"

ลำดับความสำคัญของชื่อ

เมื่อชื่อ skill เดียวกันมีอยู่ในหลายตำแหน่ง ขอบเขตที่ใกล้ที่สุดจะชนะ:

  1. Workspace ./skills/ (ความสำคัญสูงสุด)
  2. User ~/.openjarvis/skills/
  3. Bundled (มาพร้อม OpenJarvis)

เอกสารอ้างอิง CLI

คำสั่ง คำอธิบาย
jarvis skill list แสดงรายการ skill ที่ติดตั้งไว้
jarvis skill info <name> แสดงข้อมูล skill แบบละเอียด
jarvis skill run <name> [-a key=value] รัน skill โดยตรง
jarvis skill install <source>:<name> ติดตั้งจาก Hermes, OpenClaw หรือ GitHub
jarvis skill sync [<source>] [--category C] ติดตั้ง + อัปเดตจากแหล่งข้อมูลแบบ bulk
jarvis skill sources แสดงรายการแหล่ง skill ที่ตั้งค่าไว้
jarvis skill update ดึงข้อมูลล่าสุดจากแหล่งที่ตั้งค่าไว้
jarvis skill remove <name> ลบ skill ที่ติดตั้งไว้
jarvis skill search <query> ค้นหา skill index
jarvis skill discover [--dry-run] ขุด trace หารูปแบบ tool ที่เกิดซ้ำ
jarvis skill show-overlay <name> ตรวจสอบผลลัพธ์การปรับปรุงของ skill
jarvis optimize skills [--policy dspy\|gepa] ปรับปรุงคำอธิบาย skill + ตัวอย่าง few-shot
jarvis bench skills [--condition C] รัน PinchBench skills benchmark