/skill-name slash commands (browse them by typing / at the praisonai code prompt), or programmatically through SkillManager.invoke().
Sharing skills across a team? See Remote Skill Sources — declare a git URL once and every project stays in sync.
Quick Start
1
Slash command
2
Auto-trigger
How It Works
Skill files are read as UTF-8. Run
praisonai skills validate --path ./my-skill to catch encoding issues before deploy.Discover skills in the interactive menu
Insidepraisonai code (the REPL and the async TUI), type / at the prompt to see every installed skill listed alongside built-ins and your custom .praisonai/commands/*.md files. Each entry uses the skill’s description from SKILL.md frontmatter, so a well-written description doubles as menu help.
/deploy staging prod runs the same code path as agent.skill_manager.invoke("deploy", raw_args="staging prod") — the SKILL.md body is rendered with $ARGUMENTS substituted and passed as the next turn’s prompt.
For the full list of command sources behind the
/ menu, see Slash Commands → Unified Command Registry.Argument Substitution
InsideSKILL.md bodies you can reference arguments passed after the skill name:
- $ARGUMENTS
- Indexed
- Shorthand
- Context vars
/deploy staging prod becomes Deploy staging prod now.Inline Shell Substitution
Inline backtick form
Inline backtick form
Fenced block form
Fenced block form
Invocation Policy
boolean
default:"false"
When
true the skill is hidden from the system-prompt listing, so the LLM cannot auto-trigger it. Users can still invoke it via /skill-name. Use for side-effecting commands like /deploy.boolean
default:"true"
When
false, the skill is hidden from the interactive / menu in praisonai code (REPL and async TUI) and from praisonai "/name" --skills …. It stays in the system-prompt listing so the LLM can still auto-trigger it. Use for background knowledge or model-only helpers that should never surface as a user command.Where each skill shows up
Two independent flags decide where a skill appears — one axis for the LLM, one for the user.
The interactive
/ menu is the completion list you see when you type / inside praisonai code (REPL or async TUI). “Absent from the / menu” means both completion and dispatch — typing the name falls through to “Unknown command”.
A /deploy skill (both flags default) and a model-only pricing-lookup skill (user-invocable: false) live side by side. Type / in praisonai code and only one shows:
Allowed Tools Pre-approval
string | list[str]
Space-separated string (
Read Grep) or YAML list. When a user invokes the skill, those tool names are pre-approved via the approval registry for the current agent so the LLM can run them without the interactive confirmation prompt.The pre-approval is scoped to the agent instance that activated the skill — it never leaks onto other agents in the same process, even other unnamed agents that share the default
name="Agent". See Tool Approval → Scope of a skill grant.Common Patterns
Programmatic invoke
YAML
CLI
Precedence
Skills are discovered in this order (first wins on name collision):1
Project
./.praisonai/skills/ or ./.claude/skills/2
Ancestors
Every
.praisonai/skills or .claude/skills in a parent directory (monorepo support)3
User
~/.praisonai/skills/4
Remote cache
~/.praisonai/cache/remote-skills/<source>/current/ — populated by praisonai skills sync (see Remote Skill Sources)5
System
/etc/praison/skills/Collisions are logged at INFO level so you can see which skill won.
Best Practices
Use slash commands for side effects
Use slash commands for side effects
Set
disable-model-invocation: true on deploy, restart, or delete skills so the LLM cannot trigger them accidentally — users invoke them explicitly with /skill-name.Keep user-invocable false for background knowledge
Keep user-invocable false for background knowledge
Set
user-invocable: false when a skill should only auto-activate from the system prompt. It stays available to the LLM but never appears in the / menu inside praisonai code, so users cannot run it by mistake.Opt in to shell blocks deliberately
Opt in to shell blocks deliberately
Leave
shell_exec=False (default) in production. Pass shell_exec=True only in trusted environments where inline !`cmd` blocks are required.Validate encoding before deploy
Validate encoding before deploy
Save
SKILL.md as UTF-8. Run praisonai skills validate --path ./my-skill to catch Windows encoding issues early.Related
Agent Skills
Author SKILL.md files and configure skills on agents
Remote Skill Sources
Declare a git URL once and every project stays in sync
Skill Bundles
Select a named, reusable set of skills with a single @bundle marker
Skill Manage
Create, edit, and approve agent-proposed skills
Approval Protocol
How
allowed-tools pre-approval plugs into the approval registrySkills Config
SkillsConfig options for discovery and paths
