Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "pi-pathfinder",
|
||||||
|
"description": "PI Pathfinder - Finds the path through 229 plugins. Automatically picks the best plugin for your task, extracts its skills, and applies them. You don't pick plugins, PI does.",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Jeremy Longshore",
|
||||||
|
"email": "[email protected]"
|
||||||
|
},
|
||||||
|
"skills": [
|
||||||
|
"./skills"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# pi-pathfinder
|
||||||
|
|
||||||
|
PI Pathfinder - Finds the path through 229 plugins. Automatically picks the best plugin for your task, extracts its skills, and applies them. You don't pick plugins, PI does.
|
||||||
69
plugin.lock.json
Normal file
69
plugin.lock.json
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:jeremylongshore/claude-code-plugins-plus:plugins/examples/pi-pathfinder",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "602ec546a189d794162fbb93a997d1e5589a5a0c",
|
||||||
|
"treeHash": "b9d8ee19223b50eb71c8ad04285d8cd245aa9aac47ecd752be63f01e1197396c",
|
||||||
|
"generatedAt": "2025-11-28T10:18:40.380621Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "pi-pathfinder",
|
||||||
|
"description": "PI Pathfinder - Finds the path through 229 plugins. Automatically picks the best plugin for your task, extracts its skills, and applies them. You don't pick plugins, PI does.",
|
||||||
|
"version": "1.0.0"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "d5f1e0b5681f8c3f02a393ffa737b26e48dd188113e41373563e6081a34b31e2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "6b33d524f7060d38ca1f0bc1b620ad107e7ffc58c212636b789ffd405e78b7ec"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/SKILL.md",
|
||||||
|
"sha256": "00678c41b7dab77a627705c4598f8a8f6926eba5f67fca980d3649cd9ed6b8af"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/references/README.md",
|
||||||
|
"sha256": "ef4063163f9a93e5e2d5de78077343b50f8d0973ab4edb1dc95054d5e208b4b9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/scripts/README.md",
|
||||||
|
"sha256": "32922e3c9a25a8727d19215b62600defcdadca3715e6ea4ad7a40067589c0898"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/assets/plugin_selection_rules.yaml",
|
||||||
|
"sha256": "a961aefb71b7791b30dc1ca4c8f505e00df7877d2e3f4a83a22173430df927b0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/assets/example_plugin_analysis.json",
|
||||||
|
"sha256": "4f66090a1e8bc627bdb38c52e0181d958e03edd85e9cd469fba2d03e0d72d782"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/assets/skill_adaptation_template.py",
|
||||||
|
"sha256": "d610c447442017398ad03f3cb52a597b41de96084c29a9260d8d94944c27dc1d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/pi-pathfinder/assets/README.md",
|
||||||
|
"sha256": "28fb584a15b3a6703e4aaf0175307316ca2e74036f38823109657ec76ae01643"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "b9d8ee19223b50eb71c8ad04285d8cd245aa9aac47ecd752be63f01e1197396c"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
221
skills/pi-pathfinder/SKILL.md
Normal file
221
skills/pi-pathfinder/SKILL.md
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
---
|
||||||
|
name: skill-adapter
|
||||||
|
description: |
|
||||||
|
Analyzes existing plugins to extract their capabilities, then adapts and applies those skills to the current task. Acts as a universal skill chameleon that learns from other plugins. Activates when you request "skill adapter" functionality.
|
||||||
|
allowed-tools: Read, Grep, Glob, Bash
|
||||||
|
version: 1.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# Skill Adapter - Universal Plugin Capability Extractor
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
Analyzes plugins in the claude-code-plugins marketplace to understand their capabilities, extracts the core patterns and approaches, then adapts those skills to solve the current user's task. Acts as a "skill chameleon" that can adopt any plugin's capabilities.
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
### 1. Task Analysis
|
||||||
|
When user presents a task:
|
||||||
|
- Identify the core capability needed (e.g., "analyze code quality", "generate documentation", "automate deployment")
|
||||||
|
- Determine the domain (security, devops, testing, etc.)
|
||||||
|
- Extract key requirements and constraints
|
||||||
|
|
||||||
|
### 2. Plugin Discovery
|
||||||
|
Search existing plugins for relevant capabilities:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Find plugins in relevant category
|
||||||
|
ls plugins/community/ plugins/packages/ plugins/examples/
|
||||||
|
|
||||||
|
# Search for keywords in plugin descriptions
|
||||||
|
grep -r "keyword" --include="plugin.json" plugins/
|
||||||
|
|
||||||
|
# Find similar commands/agents
|
||||||
|
grep -r "capability-name" --include="*.md" plugins/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Capability Extraction
|
||||||
|
|
||||||
|
For each relevant plugin found, analyze:
|
||||||
|
|
||||||
|
**Commands (commands/*.md):**
|
||||||
|
- Read the markdown content
|
||||||
|
- Extract the approach/methodology
|
||||||
|
- Identify input/output patterns
|
||||||
|
- Note any scripts or tools used
|
||||||
|
|
||||||
|
**Agents (agents/*.md):**
|
||||||
|
- Understand the agent's role
|
||||||
|
- Extract problem-solving approach
|
||||||
|
- Note decision-making patterns
|
||||||
|
- Identify expertise areas
|
||||||
|
|
||||||
|
**Skills (skills/*/SKILL.md):**
|
||||||
|
- Read the skill instructions
|
||||||
|
- Extract core capability
|
||||||
|
- Note trigger conditions
|
||||||
|
- Understand tool usage patterns
|
||||||
|
|
||||||
|
**Scripts (scripts/*.sh, *.py):**
|
||||||
|
- Analyze script logic
|
||||||
|
- Extract reusable patterns
|
||||||
|
- Identify best practices
|
||||||
|
- Note error handling approaches
|
||||||
|
|
||||||
|
### 4. Pattern Synthesis
|
||||||
|
|
||||||
|
Combine learned patterns:
|
||||||
|
- Merge multiple approaches if beneficial
|
||||||
|
- Adapt to current context and constraints
|
||||||
|
- Simplify or enhance based on user needs
|
||||||
|
- Ensure compatibility with current environment
|
||||||
|
|
||||||
|
### 5. Skill Application
|
||||||
|
|
||||||
|
Apply the adapted skill:
|
||||||
|
- Use the learned approach
|
||||||
|
- Follow the extracted patterns
|
||||||
|
- Apply best practices discovered
|
||||||
|
- Adapt syntax/tools to current context
|
||||||
|
|
||||||
|
## Example Workflows
|
||||||
|
|
||||||
|
### Example 1: Learning Code Analysis from Security Plugins
|
||||||
|
|
||||||
|
**User task:** "Analyze this codebase for issues"
|
||||||
|
|
||||||
|
**Process:**
|
||||||
|
1. Search for security and code-analysis plugins
|
||||||
|
2. Find: `owasp-top-10-scanner`, `code-quality-enforcer`, `security-audit-agent`
|
||||||
|
3. Extract patterns:
|
||||||
|
- OWASP scanner checks for: SQL injection, XSS, CSRF, auth issues
|
||||||
|
- Quality enforcer looks at: complexity, duplication, standards
|
||||||
|
- Audit agent examines: dependencies, secrets, permissions
|
||||||
|
4. Synthesize approach:
|
||||||
|
- Run multi-layer analysis
|
||||||
|
- Check security patterns first
|
||||||
|
- Then code quality metrics
|
||||||
|
- Then dependency issues
|
||||||
|
5. Apply to user's codebase with adapted checks
|
||||||
|
|
||||||
|
### Example 2: Adopting Documentation Skills
|
||||||
|
|
||||||
|
**User task:** "Generate API documentation"
|
||||||
|
|
||||||
|
**Process:**
|
||||||
|
1. Find documentation plugins
|
||||||
|
2. Discover: `api-documenter`, `openapi-generator`, `readme-builder`
|
||||||
|
3. Extract approaches:
|
||||||
|
- API documenter: parses code, generates OpenAPI spec
|
||||||
|
- OpenAPI generator: creates interactive docs
|
||||||
|
- README builder: structures documentation hierarchically
|
||||||
|
4. Synthesize:
|
||||||
|
- Parse code for endpoints
|
||||||
|
- Generate OpenAPI/Swagger spec
|
||||||
|
- Create interactive documentation
|
||||||
|
- Build comprehensive README
|
||||||
|
5. Apply combined approach to user's API
|
||||||
|
|
||||||
|
### Example 3: Learning Automation from DevOps Plugins
|
||||||
|
|
||||||
|
**User task:** "Automate deployment process"
|
||||||
|
|
||||||
|
**Process:**
|
||||||
|
1. Search DevOps category
|
||||||
|
2. Find: `deployment-automation`, `ci-cd-pipeline`, `docker-compose-generator`
|
||||||
|
3. Extract patterns:
|
||||||
|
- Deployment automation: build → test → deploy → verify
|
||||||
|
- CI/CD pipeline: trigger conditions, parallel jobs, rollback
|
||||||
|
- Docker compose: service orchestration, environment management
|
||||||
|
4. Synthesize deployment workflow
|
||||||
|
5. Apply to user's specific tech stack
|
||||||
|
|
||||||
|
## Reasoning Process
|
||||||
|
|
||||||
|
### When to Use Skill Adapter
|
||||||
|
|
||||||
|
Trigger when:
|
||||||
|
- User needs capability that might exist in marketplace
|
||||||
|
- Task could benefit from existing plugin patterns
|
||||||
|
- User asks: "Is there a plugin for this?"
|
||||||
|
- Similar problems have been solved before
|
||||||
|
- Multiple approaches could be combined
|
||||||
|
|
||||||
|
### Plugin Selection Criteria
|
||||||
|
|
||||||
|
Choose plugins based on:
|
||||||
|
1. **Relevance**: Matches task domain/requirements
|
||||||
|
2. **Quality**: Well-documented, clear approach
|
||||||
|
3. **Simplicity**: Not overly complex for the task
|
||||||
|
4. **Recency**: Updated plugins preferred
|
||||||
|
5. **Popularity**: Featured or well-maintained plugins
|
||||||
|
|
||||||
|
### Adaptation Strategy
|
||||||
|
|
||||||
|
When adapting skills:
|
||||||
|
- **Keep**: Core logic and proven patterns
|
||||||
|
- **Adapt**: Syntax, tool names, specific commands
|
||||||
|
- **Enhance**: Add error handling, user feedback
|
||||||
|
- **Simplify**: Remove unnecessary complexity
|
||||||
|
- **Contextualize**: Adjust to user's environment
|
||||||
|
|
||||||
|
## Limitations and Boundaries
|
||||||
|
|
||||||
|
### What Skill Adapter CAN Do:
|
||||||
|
✅ Read and analyze plugin source code
|
||||||
|
✅ Extract patterns and approaches
|
||||||
|
✅ Adapt methodologies to new contexts
|
||||||
|
✅ Combine multiple plugin capabilities
|
||||||
|
✅ Apply learned skills with reasoning
|
||||||
|
|
||||||
|
### What Skill Adapter CANNOT Do:
|
||||||
|
❌ Execute compiled code (MCP servers)
|
||||||
|
❌ Access external APIs without credentials
|
||||||
|
❌ Modify original plugins
|
||||||
|
❌ Guarantee exact plugin behavior replication
|
||||||
|
❌ Use plugins that require specific environment setup
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
Skill adaptation is successful when:
|
||||||
|
1. User's task is completed effectively
|
||||||
|
2. Approach borrowed makes logical sense
|
||||||
|
3. Adapted skill is properly contextualized
|
||||||
|
4. User understands where the approach came from
|
||||||
|
5. Result quality matches or exceeds original plugin
|
||||||
|
|
||||||
|
## Transparency
|
||||||
|
|
||||||
|
Always inform user:
|
||||||
|
- Which plugins were analyzed
|
||||||
|
- What patterns were extracted
|
||||||
|
- How the skill was adapted
|
||||||
|
- Why this approach was chosen
|
||||||
|
- Any limitations of the adaptation
|
||||||
|
|
||||||
|
## Example Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
User: "I need to validate JSON schemas in my project"
|
||||||
|
|
||||||
|
Skill Adapter Process:
|
||||||
|
1. Searches plugins for JSON validation
|
||||||
|
2. Finds: schema-validator, json-lint-enforcer
|
||||||
|
3. Extracts: ajv library usage, error formatting patterns
|
||||||
|
4. Adapts: Uses available tools (jq, node, python)
|
||||||
|
5. Applies: Validates user's schemas with detailed errors
|
||||||
|
6. Reports: "I adapted the schema-validator approach using jq
|
||||||
|
for validation and added custom error formatting"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Meta-Learning
|
||||||
|
|
||||||
|
Skill Adapter improves by:
|
||||||
|
- Tracking which plugins solve which tasks best
|
||||||
|
- Learning which patterns are most reusable
|
||||||
|
- Noting which adaptations work well
|
||||||
|
- Building a mental model of the marketplace
|
||||||
|
- Understanding plugin ecosystem relationships
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**In essence:** Skill Adapter is a meta-skill that makes the entire plugin marketplace available as a learning resource, extracting and applying capabilities on-demand to solve user tasks efficiently.
|
||||||
7
skills/pi-pathfinder/assets/README.md
Normal file
7
skills/pi-pathfinder/assets/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Assets
|
||||||
|
|
||||||
|
Bundled resources for pi-pathfinder skill
|
||||||
|
|
||||||
|
- [ ] example_plugin_analysis.json: Example JSON output from the plugin_analyzer.py script, showcasing the structure and content of the plugin analysis.
|
||||||
|
- [ ] skill_adaptation_template.py: Template for adapting skills from one plugin to another, including placeholders for input parameters, output variables, and adaptation logic.
|
||||||
|
- [ ] plugin_selection_rules.yaml: YAML file containing rules for selecting the best plugin for a given task, based on keywords, capabilities, and user preferences.
|
||||||
82
skills/pi-pathfinder/assets/example_plugin_analysis.json
Normal file
82
skills/pi-pathfinder/assets/example_plugin_analysis.json
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"_comment": "Example JSON output for plugin analysis by PI Pathfinder",
|
||||||
|
"query": "Summarize the key findings from the latest IPCC report on climate change and suggest potential mitigation strategies.",
|
||||||
|
"selected_plugin": {
|
||||||
|
"name": "Research Assistant",
|
||||||
|
"description": "A powerful research tool for accessing and summarizing information from various online sources.",
|
||||||
|
"capabilities": [
|
||||||
|
"Web scraping",
|
||||||
|
"Document summarization",
|
||||||
|
"Academic paper retrieval",
|
||||||
|
"Fact checking",
|
||||||
|
"Trend analysis"
|
||||||
|
],
|
||||||
|
"reasoning": "This plugin is best suited for the task because it can access the IPCC report online, summarize its findings, and identify relevant mitigation strategies from reputable sources.",
|
||||||
|
"confidence_score": 0.95
|
||||||
|
},
|
||||||
|
"extracted_skills": [
|
||||||
|
{
|
||||||
|
"skill_name": "Document Summarization",
|
||||||
|
"skill_description": "Condenses large documents into concise summaries highlighting key information.",
|
||||||
|
"parameters": {
|
||||||
|
"document_url": "URL of the IPCC report",
|
||||||
|
"summary_length": "medium",
|
||||||
|
"focus_areas": ["key findings", "mitigation strategies"]
|
||||||
|
},
|
||||||
|
"implementation_details": "Utilizes advanced NLP techniques to identify and extract the most important information, including sentence scoring and topic modeling.",
|
||||||
|
"success_probability": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skill_name": "Web Scraping",
|
||||||
|
"skill_description": "Extracts data from web pages, including text, tables, and images.",
|
||||||
|
"parameters": {
|
||||||
|
"url": "URL of the IPCC report website",
|
||||||
|
"elements_to_extract": ["text", "tables"]
|
||||||
|
},
|
||||||
|
"implementation_details": "Uses a robust web scraping library to handle various website structures and anti-scraping measures.",
|
||||||
|
"success_probability": 0.98
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_plan": [
|
||||||
|
{
|
||||||
|
"step": 1,
|
||||||
|
"action": "Use Web Scraping to extract the text content from the IPCC report webpage.",
|
||||||
|
"plugin_skill": "Web Scraping",
|
||||||
|
"expected_outcome": "Successful extraction of the IPCC report text."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"step": 2,
|
||||||
|
"action": "Use Document Summarization to generate a summary of the extracted text, focusing on key findings and mitigation strategies.",
|
||||||
|
"plugin_skill": "Document Summarization",
|
||||||
|
"expected_outcome": "A concise summary of the IPCC report's key findings and mitigation strategies."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"step": 3,
|
||||||
|
"action": "Return the generated summary to the user.",
|
||||||
|
"plugin_skill": null,
|
||||||
|
"expected_outcome": "User receives a helpful summary of the IPCC report."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"alternative_plugins": [
|
||||||
|
{
|
||||||
|
"name": "Web Search",
|
||||||
|
"description": "Performs web searches and retrieves relevant snippets.",
|
||||||
|
"suitability_score": 0.7,
|
||||||
|
"reason": "Useful for finding general information, but less effective for in-depth document analysis."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Document Reader",
|
||||||
|
"description": "Reads and analyzes local documents.",
|
||||||
|
"suitability_score": 0.3,
|
||||||
|
"reason": "Not applicable as the IPCC report is likely online."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"overall_assessment": {
|
||||||
|
"success_likelihood": 0.9,
|
||||||
|
"potential_issues": [
|
||||||
|
"Website may have anti-scraping measures.",
|
||||||
|
"Summarization may miss subtle nuances in the report."
|
||||||
|
],
|
||||||
|
"recommendations": "Review the generated summary for accuracy and consult the original report for a complete understanding."
|
||||||
|
}
|
||||||
|
}
|
||||||
90
skills/pi-pathfinder/assets/plugin_selection_rules.yaml
Normal file
90
skills/pi-pathfinder/assets/plugin_selection_rules.yaml
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
# plugin_selection_rules.yaml
|
||||||
|
# Configuration file for PI Pathfinder plugin selection logic.
|
||||||
|
|
||||||
|
# Global settings for plugin selection behavior.
|
||||||
|
global:
|
||||||
|
# Default preference for prioritizing plugins: "speed", "accuracy", "cost"
|
||||||
|
default_priority: "accuracy"
|
||||||
|
# Maximum number of plugins to consider for a given task.
|
||||||
|
max_plugins_considered: 10
|
||||||
|
# Minimum relevance score for a plugin to be considered. (0.0 - 1.0)
|
||||||
|
minimum_relevance_score: 0.2
|
||||||
|
# Enable/Disable verbose logging for debugging.
|
||||||
|
verbose_logging: false
|
||||||
|
|
||||||
|
# Rules for selecting plugins based on keywords and task descriptions.
|
||||||
|
keyword_rules:
|
||||||
|
# Define keywords and their associated plugin preferences.
|
||||||
|
# The higher the weight, the more preferred the plugin is for that keyword.
|
||||||
|
- keywords: ["image", "generate", "picture", "visual"]
|
||||||
|
plugin_preferences:
|
||||||
|
"DALL-E": 0.9 # Example: Prefer DALL-E for image generation
|
||||||
|
"Stable Diffusion": 0.8
|
||||||
|
"REPLACE_ME_IMAGE_PLUGIN": 0.5
|
||||||
|
- keywords: ["translate", "language", "multilingual"]
|
||||||
|
plugin_preferences:
|
||||||
|
"Google Translate": 0.95
|
||||||
|
"DeepL Translator": 0.9
|
||||||
|
"REPLACE_ME_TRANSLATION_PLUGIN": 0.6
|
||||||
|
- keywords: ["code", "programming", "algorithm", "debug"]
|
||||||
|
plugin_preferences:
|
||||||
|
"Code Interpreter": 0.9
|
||||||
|
"GitHub Copilot": 0.85
|
||||||
|
"REPLACE_ME_CODE_PLUGIN": 0.7
|
||||||
|
- keywords: ["data analysis", "statistics", "spreadsheet"]
|
||||||
|
plugin_preferences:
|
||||||
|
"Wolfram Alpha": 0.9
|
||||||
|
"Excel Online": 0.8
|
||||||
|
"REPLACE_ME_DATA_PLUGIN": 0.6
|
||||||
|
|
||||||
|
# Rules for selecting plugins based on their stated capabilities.
|
||||||
|
capability_rules:
|
||||||
|
# Define capability patterns and their associated plugin preferences.
|
||||||
|
# These rules are based on the plugin's description and advertised skills.
|
||||||
|
- capability_pattern: "Generates realistic images from text prompts."
|
||||||
|
plugin_preferences:
|
||||||
|
"DALL-E": 1.0
|
||||||
|
"Stable Diffusion": 0.9
|
||||||
|
- capability_pattern: "Translates text between multiple languages."
|
||||||
|
plugin_preferences:
|
||||||
|
"Google Translate": 1.0
|
||||||
|
"DeepL Translator": 0.95
|
||||||
|
- capability_pattern: "Executes code and analyzes data."
|
||||||
|
plugin_preferences:
|
||||||
|
"Code Interpreter": 1.0
|
||||||
|
"Wolfram Alpha": 0.8
|
||||||
|
|
||||||
|
# Rules for handling user preferences.
|
||||||
|
user_preferences:
|
||||||
|
# Default user preferences (can be overridden by user-specific settings).
|
||||||
|
defaults:
|
||||||
|
priority: "accuracy" # Default priority: "speed", "accuracy", "cost"
|
||||||
|
preferred_plugins: [] # List of plugins the user prefers (e.g., ["DALL-E", "Google Translate"])
|
||||||
|
excluded_plugins: [] # List of plugins the user wants to avoid (e.g., ["Expensive Plugin"])
|
||||||
|
|
||||||
|
# Example: User-specific preferences (loaded from a user profile, for example).
|
||||||
|
user_id_123:
|
||||||
|
priority: "speed"
|
||||||
|
preferred_plugins: ["Google Translate"]
|
||||||
|
excluded_plugins: ["REPLACE_ME_EXPENSIVE_PLUGIN"]
|
||||||
|
|
||||||
|
# Fallback plugin to use if no other plugin matches the criteria.
|
||||||
|
fallback_plugin: "Web Search"
|
||||||
|
|
||||||
|
# Advanced configuration (for expert users only).
|
||||||
|
advanced:
|
||||||
|
# Weighting factors for combining different rule types.
|
||||||
|
keyword_weight: 0.6
|
||||||
|
capability_weight: 0.4
|
||||||
|
user_preference_weight: 0.2
|
||||||
|
|
||||||
|
# Threshold for considering a plugin "suitable" after applying all rules.
|
||||||
|
suitability_threshold: 0.7
|
||||||
|
|
||||||
|
# Plugin specific configurations (example).
|
||||||
|
plugin_configurations:
|
||||||
|
"DALL-E":
|
||||||
|
api_key: "REPLACE_ME_DALL_E_API_KEY"
|
||||||
|
image_size: "1024x1024"
|
||||||
|
"Google Translate":
|
||||||
|
target_language: "en" # Default target language
|
||||||
141
skills/pi-pathfinder/assets/skill_adaptation_template.py
Normal file
141
skills/pi-pathfinder/assets/skill_adaptation_template.py
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
"""
|
||||||
|
Template for adapting skills from one plugin to another.
|
||||||
|
|
||||||
|
This module provides a template for adapting skills from a source plugin
|
||||||
|
to a target plugin. It includes placeholders for input parameters,
|
||||||
|
output variables, and adaptation logic.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
# Configure logging
|
||||||
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
|
|
||||||
|
def adapt_skill(source_plugin_skills, target_plugin_requirements, user_query):
|
||||||
|
"""
|
||||||
|
Adapt skills from the source plugin to meet the target plugin's requirements.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
source_plugin_skills (dict): A dictionary representing the skills
|
||||||
|
provided by the source plugin.
|
||||||
|
target_plugin_requirements (dict): A dictionary representing the
|
||||||
|
requirements of the target plugin.
|
||||||
|
user_query (str): The original user query.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: A dictionary containing the adapted input parameters for the
|
||||||
|
target plugin. Returns None if adaptation is not possible.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TypeError: If input types are incorrect.
|
||||||
|
ValueError: If input values are invalid.
|
||||||
|
Exception: For any other unexpected error during adaptation.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
if not isinstance(source_plugin_skills, dict):
|
||||||
|
raise TypeError("source_plugin_skills must be a dictionary.")
|
||||||
|
if not isinstance(target_plugin_requirements, dict):
|
||||||
|
raise TypeError("target_plugin_requirements must be a dictionary.")
|
||||||
|
if not isinstance(user_query, str):
|
||||||
|
raise TypeError("user_query must be a string.")
|
||||||
|
|
||||||
|
# Example adaptation logic (replace with your actual adaptation)
|
||||||
|
adapted_input = {}
|
||||||
|
|
||||||
|
# Check if the target plugin requires a 'text' input and adapt from user query
|
||||||
|
if "text" in target_plugin_requirements:
|
||||||
|
adapted_input["text"] = user_query
|
||||||
|
|
||||||
|
# Check if the source plugin can provide a 'summary' and the target plugin requires it
|
||||||
|
if "summary" in target_plugin_requirements and "summarize" in source_plugin_skills:
|
||||||
|
# Assuming source_plugin_skills["summarize"] is a function that returns a summary
|
||||||
|
# This is a placeholder, replace with actual logic using the source plugin's skills
|
||||||
|
try:
|
||||||
|
# Placeholder: Replace with actual call to source plugin's skill
|
||||||
|
# summary = source_plugin_skills["summarize"](user_query)
|
||||||
|
summary = "This is a placeholder summary." # Simulate a summary
|
||||||
|
adapted_input["summary"] = summary
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Error summarizing using source plugin: {e}")
|
||||||
|
return None # Adaptation failed
|
||||||
|
|
||||||
|
# Check if adaptation logic was successful
|
||||||
|
if not adapted_input:
|
||||||
|
logging.warning("No adaptation logic applied. Adaptation may not be effective.")
|
||||||
|
|
||||||
|
return adapted_input
|
||||||
|
|
||||||
|
except TypeError as e:
|
||||||
|
logging.error(f"Type error during skill adaptation: {e}")
|
||||||
|
raise
|
||||||
|
except ValueError as e:
|
||||||
|
logging.error(f"Value error during skill adaptation: {e}")
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception("Unexpected error during skill adaptation.")
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def post_process_output(target_plugin_output):
|
||||||
|
"""
|
||||||
|
Post-processes the output from the target plugin.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
target_plugin_output (any): The raw output from the target plugin.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: A human-readable string representing the processed output.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TypeError: If input type is incorrect.
|
||||||
|
Exception: For any other error during post-processing.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
if target_plugin_output is None:
|
||||||
|
return "No output from target plugin."
|
||||||
|
|
||||||
|
# Simple example: Convert to string
|
||||||
|
processed_output = str(target_plugin_output)
|
||||||
|
|
||||||
|
return processed_output
|
||||||
|
|
||||||
|
except TypeError as e:
|
||||||
|
logging.error(f"Type error during output post-processing: {e}")
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception("Unexpected error during output post-processing.")
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Example Usage
|
||||||
|
source_plugin_skills = {
|
||||||
|
"summarize": lambda x: f"Summary of: {x}" # Placeholder summarize function
|
||||||
|
}
|
||||||
|
target_plugin_requirements = {
|
||||||
|
"text": "string",
|
||||||
|
"summary": "string"
|
||||||
|
}
|
||||||
|
user_query = "This is a long document that needs to be summarized."
|
||||||
|
|
||||||
|
try:
|
||||||
|
adapted_input = adapt_skill(source_plugin_skills, target_plugin_requirements, user_query)
|
||||||
|
|
||||||
|
if adapted_input:
|
||||||
|
print("Adapted Input:", adapted_input)
|
||||||
|
|
||||||
|
# Simulate target plugin output
|
||||||
|
target_plugin_output = f"Target plugin processed: {adapted_input}"
|
||||||
|
|
||||||
|
processed_output = post_process_output(target_plugin_output)
|
||||||
|
print("Processed Output:", processed_output)
|
||||||
|
else:
|
||||||
|
print("Skill adaptation failed.")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An error occurred: {e}")
|
||||||
7
skills/pi-pathfinder/references/README.md
Normal file
7
skills/pi-pathfinder/references/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# References
|
||||||
|
|
||||||
|
Bundled resources for pi-pathfinder skill
|
||||||
|
|
||||||
|
- [ ] plugin_analysis_schema.md: Defines the schema for the plugin analysis output, including fields for name, description, capabilities, and examples.
|
||||||
|
- [ ] skill_adaptation_strategies.md: Details various strategies for adapting skills from one plugin to another, such as parameter mapping, input transformation, and output aggregation.
|
||||||
|
- [ ] plugin_selection_criteria.md: Outlines the criteria used to select the best plugin for a given task, including relevance, reliability, and performance.
|
||||||
7
skills/pi-pathfinder/scripts/README.md
Normal file
7
skills/pi-pathfinder/scripts/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Scripts
|
||||||
|
|
||||||
|
Bundled resources for pi-pathfinder skill
|
||||||
|
|
||||||
|
- [ ] plugin_analyzer.py: Analyzes a given plugin directory, extracts skill descriptions, and returns a structured summary.
|
||||||
|
- [ ] skill_adapter.py: Adapts the extracted skills from other plugins to the current task based on the user's request.
|
||||||
|
- [ ] plugin_search.py: Searches the installed plugins for relevant keywords and returns a list of potential plugins to use.
|
||||||
Reference in New Issue
Block a user