Create and invoke a skill
A skill is reusable domain guidance. It does not expand tool permissions or a custom agent’s fixed role. You need the project CWD and a CLI session.
Create .lurus/skills/code-review-guide/SKILL.md:
---
name: Code review guide
description: Checklist for reviewing TypeScript changes
userInvokable: true
argumentHint: Review the current changes
version: 1.0.0
---
Check behavior, edge cases and test coverage. Explain findings with file references. Treat this checklist as guidance, not as permission to modify files.
Globally, use the same content at ~/.lurus/skills/code-review-guide/SKILL.md. Single .md skill files are also supported, with keys derived from their paths. Supporting Markdown files beside SKILL.md in the skill directory are not loaded as separate skills.
/skills
/skills show code-review-guide
/skills activate code-review-guide
/code-review-guide src/example.ts
/skills deactivate code-review-guide
The list and show reload skills; check key, source and body. name is a display label; the lowercase path key code-review-guide is the invocation name. External skills are inactive by default; bundled skills are active. Activation is source-bound. Project sources can replace global sources with the same key. Collisions with built-ins, commands, agents or reserved bundled invocations can prevent a slash alias.
A manual slash alias is independent of automatic skill context. It attempts session activation and uses invocation arguments as the prompt, or argumentHint when none are given. Unlike custom commands, skills do not expand $ARGUMENTS or $1 in their body. The skill provides guidance for an ordinary agent task; it does not immediately perform a hard-coded code change.
Complete frontmatter reference
| Field | Type / example | Effect |
|---|---|---|
name | string | Display name, not key. |
description | string | Short purpose. |
globs | string[], ["**/*.ts"] | Context selection using touched files for an already effectively active skill. Does not activate it. |
userInvokable | boolean, true in this example | Registers a manual slash invocation when the key does not collide. |
argumentHint | string | Usage hint and fallback prompt when invoked without text. |
version | string, 1.0.0 | Version metadata, not automatic updating. |
author | string | Author metadata. |
license | string | License metadata, not automatic approval. |
category | string | Classification. |
metadata.version, metadata.author, metadata.category are supported fallbacks. model, allowedTools and disableModelInvocation are not effective skill fields. A version does not install dependencies.
Activation, sessions and globs
/skills activate-session code-review-guide
/skills deactivate-session code-review-guide
/skills activate code-review-guide
/skills deactivate code-review-guide
/skills audit
/skillify
activate/deactivate: persistent and source-bound. For bundled skills, remove/set the global block.- Session variants: temporary; a persistent bundled block can prevent session activation.
- Effective precedence: temporarily disabled → persistent bundled block → temporarily enabled → persistently enabled → bundled default.
audit: flags very short contents, missing or short descriptions and duplicate names. Not schema validation, a security audit or reload./skillify: asks the agent to derive useful skills from user history, ask questions and review before saving. Not a deterministic generator.- Only the list and
showreload skills. Activation commands andauditdo not.
Advanced file .lurus/skills/typescript-guide/SKILL.md:
---
name: TypeScript guide
description: Check strict typing when TypeScript files are touched
globs:
- '**/*.ts'
userInvokable: true
argumentHint: Check the TypeScript changes
---
Use explicit types and preserve strict null checks. Report unsafe assumptions with file references.
/skills
/skills activate typescript-guide
This active skill’s guidance is added to context when matching files are touched. Without globs, an active skill is general context. The custom matcher does not promise every Minimatch feature. An external skill remains untrusted guidance, even when active: it cannot override system rules, permissions or explicit denials.
Install packages
Installation copies files into the selected destination. Review contents, target paths, existing files and license before approval.
These sources are fictional syntax examples, not existing recommendations:
/install example/quality-skills
/install bundle example/quality-skills example/review-agents
/install list
The CLI downloads and inspects the sources. You then select global or project scope and review the agent’s copy task. After successful installation, the package is registered. Up to 10 valid GitHub sources are supported, including multiple sources without bundle. There are no documented --force, --dry-run, version or --project flags. Partial success is possible.
Review contents, package name, destinations and license before approval. Fresh installation must not simply overwrite existing skill/agent targets. Complete skill directories and individual agent files are copied. Installation does not automatically activate external skills or trust agents.
Manage packages through the CLI rather than editing registration data manually. Install dependencies only with explicit consent. Install scripts from external repositories and pip do not automatically run in a sandbox.
Update and remove
Warning: Updates can overwrite files, and confirmed removal can delete entire registered skill directories. Review changes and destination paths first. Run project operations in the correct project directory; rollback is not guaranteed.
/install update quality-skills
/install update
/install remove quality-skills
Updating one package clones it and creates a copy task. Updating without a name is only an agent task for all packages, not a direct deterministic loop. Review changed/stale files and overwrite requirements first; no atomicity or rollback guarantee.
Removal displays registered files/directories and defaults to No. Confirmed removal can affect whole registered skill directories. Partial failures leave entries available for another attempt. Do not blindly clean up the registry by hand.
Package names are case-insensitive; global and project packages do not have independent namespaces. Run project operations in the correct project directory. Do not remove or update the same package name from another project; the original project target is not automatically restored.
LURUS_GIT_CLONE_TIMEOUT_MS controls the clone timeout: default 90,000 ms, allowed range 5,000 to 600,000 ms. A longer timeout does not make a source trustworthy.
Troubleshooting
| Problem | Check |
|---|---|
| Skill missing | Path/SKILL.md/key/source; reload using /skills. |
| Skill not applied automatically | Effective activation, bundled block and globs/touched files. |
| Slash alias missing | userInvokable, key collisions and actual source. |
| Unknown package | /install list; use the package name, not a skill display name. |
| Partial installation | Conflicts, source errors, approvals and finalization; do not blindly overwrite existing files. |
| Package agent untrusted | Review the agent and manage trust. |
Next: commands, rules and memory, reference.