add-skill
Author a new playbook under skills/ to specialise the agent for a new domain or task without changing Go code. Use whenever the user wants the agent to do something new (k8s triage, sql review, release notes, ...). Mention triggers - new skill, SKILL.md, specialise the agent, add domain knowledge, playbook.
- License 许可
- MIT
- 所属仓库
- blouargant/omnis
- 最近更新
- 2026-11-10
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- add-skill
- description
- Author a new playbook under skills/ to specialise the agent for a new domain or task without changing Go code. Use whenever the user wants the agent to do something new (k8s triage, sql review, release notes, ...). Mention triggers - new skill, SKILL.md, specialise the agent, add domain knowledge, playbook.
03 SKILL.md 正文
Add a project skill
A project skill lives under skills/<name>/SKILL.md and is loaded
on demand by the agent at runtime. This is the primary specialisation
mechanism — prefer it over writing Go.
Distinguish:
skills/(loaded by the running agent) vs.agents/(loaded by your development session). This skill is aboutskills/.
Format
Follow the Agent Skills spec.
Required frontmatter: name and description.
---
name: my-domain
description: One sentence. Begin with a verb. Include the trigger keywords explicitly so the lead picks it when the user mentions them.
---
# Title
## When to use it
Disambiguate from neighbouring skills.
## Procedure
1. Always start with a read-only confirmation step.
2. Snapshot state with one batch of read-only calls.
3. Classify the situation into N categories.
4. Propose ONE next action — smallest reversible step first.
## Hard rules
- Never <destructive verb> without explicit confirmation.
- Never retry on permission denial.
## Output rule
End every run with `Result: ok | needs-attention | blocked`.
Authoring rules
-
Description is a matchable trigger. The lead matches the user's prompt against
description. Write it like a search query: include the verbs and nouns the user is likely to type.✅ "Diagnose unhealthy Kubernetes workloads — pods crash-looping, deployments not ready. Use whenever the user mentions kubernetes, k8s, kubectl, pods, deployments, namespaces."
❌ "Helps with Kubernetes."
-
Procedure is a checklist, not a tutorial. One verb per step. Cite the tool by name (
bash,kubernetes/get_pods,read, …). -
Always include "Hard rules". Spell out the destructive verbs the skill must never invoke without consent. The agent self-restricts before even reaching the permissions plugin.
-
End with an output rule. A single closing token (
ok,needs-changes,blocked,clean, …) makes the result machine-readable. -
Stay under ~150 lines. Beyond that, split into a second skill the lead can chain.
Wiring
No code change required. The skill loader (internal/skills) walks
./skills/ at startup and registers every folder with a valid
SKILL.md. The lead's system prompt instructs it to prefer
load_skill over ad-hoc reasoning.
Examples shipped
Read these before authoring your own:
skills/review/SKILL.md— generic, universal review playbook.skills/k8s-triage/SKILL.md— full domain specialisation example.skills/agent-builder/SKILL.md— meta-skill (how to build a new specialist).skills/pdf/SKILL.md— narrow, tool-bound skill.
Optional bundled assets
Following the spec, you can bundle:
skills/<name>/scripts/— executable helpers the agent can run.skills/<name>/references/— additional Markdown loaded only on demand.skills/<name>/assets/— templates, schemas, lookup tables.
Keep SKILL.md slim; push detail into references/.
Verify
PATH=$HOME/.local/go/bin:$PATH go build ./... && \
PATH=$HOME/.local/go/bin:$PATH go run . console
> list available skills # the new one should appear
> <a typical user prompt> # the lead should call load_skill on it
Adjust the description if the wrong skill (or no skill) is selected.
Don'ts
- ❌ Don't restate the universal operating method (restate → plan → …). The lead already does that.
- ❌ Don't hard-code paths or hostnames; pass them via tool args / env.
- ❌ Don't write a skill that needs a tool that isn't mounted. Either
add the MCP server / tool first, or include the requirement in
compatibility:.
04 同仓库更多 Skills
skill-creator
Create or update a skill playbook (SKILL.md) for the agent. Use when the user wants to create a new skill, add a skill, define a new agent capability, update an existing skill, edit a skill, refine a skill playbook, or specialise the agent for a new domain.
review
Review a body of work (source code, configuration, documents, infra manifests, …) for correctness, clarity, and obvious risks. Use this skill whenever the user asks for a review, audit or critique.
Fallback PDF text extractor using pdftotext (poppler). Use ONLY when the preferred `liteparse` skill is unavailable or for a quick plain-text dump of a simple text PDF — for the best PDF parsing (scanned, multi-column, layout-heavy, or non-PDF formats) prefer the `liteparse` skill.
pandoc
This skill should be used when converting documents between formats (Markdown, DOCX, PDF, HTML, LaTeX, etc.) using pandoc. Use for format conversion, document generation, and preparing markdown for Google Docs or other word processors.
liteparse
Preferred local parser for extracting text from PDFs, images, and scanned/layout-heavy documents (OCR, screenshots, complex PDFs) — far better than pdftotext. Use this FIRST for any PDF, image, or OCR text-extraction or conversion task. NOTE for Office documents (DOCX, PPTX, XLSX, ODT) — for plain text extraction prefer the `pandoc` skill, which needs no LibreOffice; only use LiteParse for Office docs when you need its layout/OCR/screenshot output. The `pdf` skill (pdftotext) is only a fallback for when LiteParse cannot be installed.
linux-admin
Safely make a change to a Linux workstation — install/remove packages, manage systemd services and timers, edit and validate configuration files, manage users/permissions and networking. Detect the distro and package manager, determine whether the target is package-managed or hand-maintained, preview or simulate every change, back up configs before editing, and prefer the package manager and drop-in overrides so the host stays consistent and secure. Use whenever a change to the local Linux host is required (install, remove, enable, disable, start, stop, edit a config, add a user, change permissions or networking).