Documentation Index
Fetch the complete documentation index at: https://docs.praison.ai/llms.txt
Use this file to discover all available pages before exploring further.
Agent Skills
Skills are reusable instruction sets that extend your Agent’s capabilities. Load skills for code review, data analysis, writing, and more - without modifying the Agent’s core instructions.
Agent with Skills
import { Agent, createSkillManager } from 'praisonai';
const skillManager = createSkillManager({
paths: ['./skills']
});
// Discover available skills
await skillManager.discover();
// Create Agent with skills
const agent = new Agent({
name: 'Skilled Agent',
instructions: 'You are a helpful assistant.',
skills: skillManager.list(['code-review', 'security-audit'])
});
// Agent now has code review and security audit capabilities
const response = await agent.chat('Review this code for issues: function add(a,b) { return a+b }');
Creating Skills for Agents
Skills are defined in SKILL.md files:
---
name: code-review
description: Review code for best practices, bugs, and security issues
license: MIT
compatibility: TypeScript, JavaScript, Python
allowed-tools: Read Grep
metadata:
author: your-team
version: "1.0"
---
# Code Review Skill
When reviewing code, follow these steps:
1. **Security Check**: Look for SQL injection, XSS, and auth issues
2. **Error Handling**: Verify try/catch blocks and error messages
3. **Type Safety**: Check for proper typing and null checks
4. **Performance**: Identify N+1 queries, memory leaks
5. **Best Practices**: Follow language conventions
Always provide specific line numbers and actionable suggestions.
Agent with Multiple Skills
import { Agent, createSkillManager } from 'praisonai';
const skillManager = createSkillManager({
paths: ['./skills'],
includeProject: true
});
await skillManager.discover();
// Agent with multiple specialized skills
const devAgent = new Agent({
name: 'Developer Assistant',
instructions: 'You help developers with code tasks.',
skills: skillManager.list(['code-review', 'refactoring', 'testing', 'documentation'])
});
// Agent applies relevant skills based on the task
await devAgent.chat('Write unit tests for this function'); // Uses testing skill
await devAgent.chat('Refactor this class for better readability'); // Uses refactoring skill
Dynamic Skill Loading
Load skills based on context:
import { Agent, createSkillManager } from 'praisonai';
const skillManager = createSkillManager({ paths: ['./skills'] });
await skillManager.discover();
async function createContextualAgent(taskType: string) {
// Select skills based on task
const skillNames = {
'code': ['code-review', 'debugging', 'testing'],
'writing': ['grammar', 'style-guide', 'seo'],
'data': ['data-analysis', 'visualization', 'statistics']
}[taskType] || [];
return new Agent({
name: `${taskType} Agent`,
instructions: `You specialize in ${taskType} tasks.`,
skills: skillManager.list(skillNames)
});
}
const codeAgent = await createContextualAgent('code');
const writingAgent = await createContextualAgent('writing');
Multi-Agent with Specialized Skills
import { Agent, Agents, createSkillManager } from 'praisonai';
const skillManager = createSkillManager({ paths: ['./skills'] });
await skillManager.discover();
// Each Agent has different skills
const securityAgent = new Agent({
name: 'Security Expert',
instructions: 'You focus on security analysis.',
skills: skillManager.list(['security-audit', 'vulnerability-scan', 'penetration-testing'])
});
const performanceAgent = new Agent({
name: 'Performance Expert',
instructions: 'You optimize for performance.',
skills: skillManager.list(['profiling', 'optimization', 'caching-strategies'])
});
const architectAgent = new Agent({
name: 'Architect',
instructions: 'You design system architecture.',
skills: skillManager.list(['system-design', 'scalability', 'microservices'])
});
const agents = new AgentTeam({
agents: [securityAgent, performanceAgent, architectAgent],
tasks: [
{ agent: securityAgent, description: 'Audit security of: {code}' },
{ agent: performanceAgent, description: 'Analyze performance issues' },
{ agent: architectAgent, description: 'Recommend architectural improvements' }
]
});
await agents.start({ code: 'application source code...' });
Agent Skill Injection
Inject skills into Agent prompts:
import { Agent, createSkillManager } from 'praisonai';
const skillManager = createSkillManager({ paths: ['./skills'] });
await skillManager.discover();
const agent = new Agent({
name: 'Flexible Agent',
instructions: 'You are a helpful assistant.'
});
// Inject skills dynamically per request
async function chatWithSkills(message: string, skillNames: string[]) {
const skillPrompt = skillManager.generatePrompt(skillNames);
return await agent.chat(`
${skillPrompt}
User Request: ${message}
`);
}
// Different skills for different requests
await chatWithSkills('Review this code', ['code-review']);
await chatWithSkills('Write documentation', ['documentation', 'technical-writing']);
Skill Discovery Paths
Skills are discovered from multiple locations:
| Location | Path | Priority |
|---|
| Project | ./.praison/skills/ | Highest |
| Project | ./.claude/skills/ | High |
| User | ~/.praisonai/skills/ | Medium |
| System | /etc/praison/skills/ | Lowest |
const skillManager = createSkillManager({
includeProject: true, // .praison/skills/, .claude/skills/
includeUser: true, // ~/.praisonai/skills/
includeSystem: false, // /etc/praison/skills/
paths: ['./custom-skills'] // Additional paths
});
Skill Validation
Validate skills before using with Agents:
const skillManager = createSkillManager({ paths: ['./skills'] });
const skill = await skillManager.loadSkill('./my-skill/SKILL.md');
const validation = skillManager.validate(skill);
if (!validation.valid) {
console.log('Skill errors:', validation.errors);
} else {
// Safe to use with Agent
const agent = new Agent({
name: 'Agent',
skills: [skill]
});
}