Skill-ception is an iterative AI agent system that monitors GitHub PRs, fixes issues using Claude Code, and maintains a self-improving skill repository. When fixing issues, it searches for appropriate skills, uses existing ones when available, creates new ones when needed, and updates skills that previously failed.
- Automated PR Fixing: Uses Claude Code with matched skills to fix issues
- Multi-Repository Skill Search: Searches skills across multiple configured repositories
- Semantic Skill Matching: Uses LLM-based matching to find most relevant skills
- Automatic Skill Creation: Creates new skills from successful novel solutions
- Skill Improvement: Updates skills that previously failed
- Skill Testing: Automatically tests new/updated skills before merging
- PR History Tracking: Tracks which skills were used and their success rates
GitHub PR Event
↓
GitHub Actions Workflow (claude-code-action@v1)
↓
Skill-ception Orchestrator
├─→ Load PR Context & History
├─→ Skill Manager (Search & Match)
└─→ Load Matched Skills
↓
Claude Code Execution
↓
Skill Evaluator
├─→ Success Evaluation
└─→ Decision: Create/Update/Nothing
↓
Skill Repository Manager
├─→ Create New Skill (if needed)
├─→ Update Existing Skill (if failed before)
└─→ Submit PR to skill repo
↓
Skill Tester (auto-triggered)
├─→ Generate Test Scenarios
├─→ Run Tests
└─→ Report Results
- Python 3.11+
- uv (Python package manager)
- GitHub repository with Actions enabled
- AWS Bedrock access (for Claude Code via OIDC)
- Anthropic API key (for skill matching and generation)
# Clone the repository
git clone https://github.com/fetch-rewards/skill-ception.git
cd skill-ception
# Install dependencies
uv sync- Configure skill repositories in
.skill-ception/config.yml:
skill_repos:
- url: https://github.com/fetch-rewards/labs-skills
branch: main
enabled: true
priority: 1-
Set up GitHub secrets:
ANTHROPIC_API_KEY: Your Anthropic API keyGITHUB_TOKEN: Automatically provided by GitHub Actions
-
Configure AWS OIDC for Bedrock access:
- Set
OIDC_IAM_ROLErepository variable
- Set
-
Enable workflows in your repository settings
- Create a PR with code that needs fixing
- Add the
ai-fixlabel, OR - Comment
@claudeon the PR
Skill-ception will:
- Search for relevant skills
- Generate a system prompt with matched skills
- Run Claude Code to fix the issue
- Evaluate results and create/update skills if needed
# Test skill matching
python -m skill-ception.skill_manager --match "Add JWT validation to API"
# Test orchestrator (dry run)
python -m skill-ception.orchestrator --pr 123 --dry-run
# Test skill creation
python -m skill-ception.skill_creator --task "Add JWT validation" --solution "Used PyJWT library"
# Test skill testing
python -m skill-ception.skill_tester --test-skill "07-security/jwt-validation"File: skill-ception/orchestrator.py
Main coordination logic:
- Loads PR context and history
- Coordinates skill search and matching
- Generates system prompt for Claude Code
- Handles post-execution evaluation
File: skill-ception/skill_manager.py
Manages skill repositories:
- Clones/updates skill repos
- Searches all skills
- Performs keyword filtering
- Semantic matching with LLM
File: skill-ception/evaluator.py
Evaluates execution results:
- Determines success/failure
- Extracts used skills
- Decides if skill creation/update needed
- Calculates solution complexity
File: skill-ception/skill_creator.py
Creates new skills:
- Generates skill name (gerund form)
- Determines category
- Creates SKILL.md content
- Submits PR to skill repo
- Triggers skill testing
File: skill-ception/skill_updater.py
Updates existing skills:
- Analyzes failures
- Generates improvements
- Updates skill content
- Submits update PR
File: skill-ception/skill_tester.py
Tests skills automatically:
- Generates test scenarios
- Creates test environments
- Runs Claude Code with skill
- Verifies outcomes
- Reports results
File: skill-ception/history_tracker.py
Tracks PR attempts:
- Records skill usage
- Tracks success/failure
- Stores metadata
- Enforces attempt limits
See .skill-ception/config.yml for all options:
- Skill repositories: Configure multiple repos to search
- Skill creation: Auto-create, complexity threshold, approval required
- Skill updates: Auto-update, approval required, max updates per PR
- Skill testing: Enable/disable, test strategy, auto-iteration
- Safety limits: Max attempts per PR, max skills created
Skills follow the One-Agent Skill Standard (OASS):
---
name: skill-name-in-gerund-form
description: Use when [specific scenario]
category: 07-security
tags: [jwt, authentication, security]
---
## Quick Start
[Practical example of using this skill]
## Key Points
- Point 1
- Point 2
- Point 3
## Common Mistakes
- Mistake 1
- Mistake 2
## More Detail
[Additional context and guidance]File: .github/workflows/skill-ception.yml
Triggers:
- PR opened/updated with
ai-fixlabel - Comment with
@claudemention
Steps:
- Load PR context
- Generate system prompt with skills
- Run Claude Code
- Evaluate results
- Create/update skills if needed
File: .github/workflows/skill-test.yml
Triggers:
- Repository dispatch from skill creation
- Manual workflow dispatch
Steps:
- Load skill content
- Generate test scenarios
- Create test environments
- Run tests
- Comment results on skill PR
# Run unit tests
uv run pytest tests/
# Run with coverage
uv run pytest --cov=skill-ception tests/# Run ruff
uv run ruff check skill-ception/
# Auto-fix issues
uv run ruff check --fix skill-ception/uv run mypy skill-ception/- Attempt limits: Max 3 attempts per PR to prevent infinite loops
- Skill creation throttle: Max 1 new skill per PR
- Human review: All skill changes go through PR review
- Test before merge: New skills are automatically tested
- History tracking: Full audit trail of skill usage
- Skill effectiveness metrics across all uses
- Skill recommendations based on usage patterns
- Multi-language support (TypeScript, Rust, Java, etc.)
- Skill versioning with diffs
- Skill marketplace for sharing across orgs
- Advanced testing with adversarial scenarios
- Integration with more AI agent platforms
MIT
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request