Skip to content
Back to skills

246 Sources D7bbc253

ASecurity

Skyll aggregates skills from multiple sources, providing a unified search interface.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
documentationpythonbashgitapi

Works with

  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 246-sources_d7bbc253 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 246 Sources D7bbc253?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 246 Sources D7bbc253
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-246-sources-d7bbc253/badge)](https://www.skillsdirectory.com/skills/tools-only-246-sources-d7bbc253)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Skill Sources

Skyll aggregates skills from multiple sources, providing a unified search interface.

## Available Sources

| Source | Description | Install Counts | Status |
|--------|-------------|----------------|--------|
| **[skills.sh](https://skills.sh)** | Vercel's skill marketplace | ✅ Yes | Enabled by default |
| **[Skyll Registry](../registry/SKILLS.md)** | Community-curated list | ❌ No | Enabled by default |

## How Multi-Source Works

1. **Parallel search**: All enabled sources are queried simultaneously
2. **Result merging**: Results are combined into a single list
3. **Deduplication**: Skills are deduplicated by `owner/repo/skill-id` (skills.sh takes priority)
4. **Content fetch**: GitHub API fetches actual SKILL.md content
5. **Ranking**: Combined results are ranked by relevance score

## skills.sh

The primary source, powered by [skills.sh](https://skills.sh). Provides:

- Search API with full-text search
- Install counts (popularity data)
- Metadata about skill repositories

Skills from skills.sh have popularity data, which contributes to ranking.

## Skyll Registry

A community-curated list maintained in this repository at [`registry/SKILLS.md`](../registry/SKILLS.md).

### Contributing to the Registry

1. Edit `registry/SKILLS.md`
2. Add your skill in the format:
   ```markdown
   - skill-id | owner/repo | path/to/skill | Short description
   ```
3. Submit a PR

**Requirements:**
- Your repo must have a valid `SKILL.md` file
- Follow the [Agent Skills Spec](https://agentskills.io)
- Keep descriptions under 80 characters

See [`registry/README.md`](../registry/README.md) for full guidelines.

## Adding Custom Sources

Implement the `SkillSource` protocol:

```python
# src/sources/my_source.py
from src.sources.base import SkillSource, SkillSearchResult

class MyCustomSource:
    """Custom skill source."""
    
    REGISTRY_NAME = "my-source"
    
    def __init__(self, enabled: bool = True):
        self._enabled = enabled
    
    @property
    def name(self) -> str:
        return self.REGISTRY_NAME
    
    @property
    def enabled(self) -> bool:
        return self._enabled
    
    async def __aenter__(self):
        # Initialize (e.g., load data, connect to API)
        return self
    
    async def __aexit__(self, *args):
        # Cleanup
        pass
    
    async def search(self, query: str, limit: int = 10) -> list[SkillSearchResult]:
        """Search for skills matching the query."""
        results = []
        
        # Your search logic here
        # Return SkillSearchResult objects:
        results.append(SkillSearchResult(
            id="skill-id",
            name="Skill Name",
            source="owner/repo",
            source_registry=self.REGISTRY_NAME,
            installs=0,  # Set to 0 if no popularity data
            description="What the skill does",
        ))
        
        return results[:limit]
```

### Register the Source

In `src/core/service.py`:

```python
from src.sources.my_source import MyCustomSource

# In SkillSearchService.__init__:
self._sources = [
    SkillsShSource(enabled=True),
    SkillRegistrySource(enabled=True),
    MyCustomSource(enabled=True),  # Add your source
]
```

### Export from Package

In `src/sources/__init__.py`:

```python
from src.sources.my_source import MyCustomSource

__all__ = [
    # ... existing exports
    "MyCustomSource",
]
```

## Disabling Sources

Use environment variables:

```bash
# Disable the community registry
ENABLE_REGISTRY=false uvicorn src.main:app --port 8000
```

## Source Priority

When the same skill appears in multiple sources:

1. **skills.sh wins**: It has install counts, so its data is preferred
2. **First seen wins**: For ties, the first source to return the skill wins

This ensures popularity data is preserved while allowing community sources to fill gaps.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…