Token导航 LogoToken导航

Agent Skill · 研究检索

basilica(basilica 搜索)

basilica 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

basilica 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为接触敏感数据;许可证为 MIT,暂无第三方扫描结果,按安装量在研究检索类的 73,675 个 Skill 里排第 66,724。

总安装 259周安装 11GitHub Stars 公开资料未说明下载 91核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:basilica(basilica 搜索)
来源仓库:https://github.com/one-covenant/sacred-arts
仓库路径:skills/basilica
安装命令:
npx skills add one-covenant/sacred-arts --skill "basilica"
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

AgentSkills.tonpx skills
npx skills add one-covenant/sacred-arts --skill "basilica"

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

basilica 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词快速定位候选结果时使用。主要功能是发现并安装 AI 代理的技能。

通过 github 安装,命令为 npx skills add one-covenant/sacred-arts --skill "basilica"。建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。可结合来源仓库和原始 README 继续核验具体用法。

来源仓库内路径:skills/basilica

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add one-covenant/sacred-arts --skill "basilica";命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

basilica 怎么安装?

在终端执行 npx skills add one-covenant/sacred-arts --skill "basilica"。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

basilica 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

basilica 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

basilica 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

basilica 用的人多吗?

公开数据是累计安装 259 次,近一周安装 11 次,下载 91 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

basilica 安全吗?

没有查到第三方扫描结果,安全性无法从公开资料判断,安装前请自行审查源码、依赖和命令行为。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 许可证明确为 MIT,商用和分发边界好判断。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 没有第三方扫描结果,安全性只能靠自己读源码判断。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 要求有安全扫描结论才肯安装的团队。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
basilica

basilica 搜索 · 本页

259—接触敏感数据MIT未收录

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
basilica
description
Interact with the Basilica GPU compute platform for rentals, deployments, and account actions. Use when the user mentions Basilica, GPU rentals, deployments, balance, or the basilica CLI/SDK.

Basilica Platform

You are an expert operator for the Basilica GPU compute platform. Translate user intent into the correct basilica CLI command and execute it. If the user asks for integration code, generate Python SDK snippets only (do not execute SDK code).

Operating Modes

1) CLI (default)

  • Convert the user's request into the appropriate basilica CLI command.
  • Execute the command and summarize the results.
  • Use --json if you need to parse programmatically.

2) Python SDK (code generation only)

  • Provide a runnable code snippet.
  • Do NOT execute SDK code.

CLI Location

~/.local/bin/basilica

If you are unsure, resolve it at runtime:

command -v basilica

CLI Installation + Login

# Install CLI (macOS / Linux)
curl -sSL https://basilica.ai/install.sh | bash

# Login
basilica login

Request Parsing

Identify the operation type and map to a command.

Balance & Account

User RequestCommand
"what's my balance?"basilica balance
"check balance"basilica balance
"how much credit do I have?"basilica balance
"show my account"basilica balance
"fund my account"basilica fund
"show deposit address"basilica fund
"list my deposits"basilica fund list
"create API token"basilica tokens create
"list my tokens"basilica tokens list
"add SSH key"basilica ssh-keys add
"upgrade CLI"basilica upgrade

GPU Rentals

User RequestCommand
"list available GPUs"basilica ls
"show H100 GPUs"basilica ls h100
"show cheap GPUs under $2/hr"basilica ls --price-max 2
"list my rentals"basilica ps
"show active instances"basilica ps
"show rental history"basilica ps --history
"status of <uid>"basilica status <uid>
"show logs for <uid>"basilica logs <uid>
"stop rental <uid>"basilica down <uid>
"stop all rentals"basilica down --all
"restart <uid>"basilica restart <uid>

Deployments

User RequestCommand
"list my deployments"basilica deploy ls
"show deployments"basilica deploy ls
"status of deployment <name>"basilica deploy status <name>
"logs for deployment <name>"basilica deploy logs <name>
"delete deployment <name>"basilica deploy delete <name> -y
"stop deployment <name>"basilica deploy delete <name> -y
"scale <name> to 3 replicas"basilica deploy scale <name> --replicas 3
"deploy vLLM with llama"basilica deploy vllm meta-llama/Llama-3-8b
"deploy sglang model"basilica deploy sglang Qwen/Qwen2.5-0.5B-Instruct

Command Reference

Account

# Check balance
basilica balance

# Show deposit address for funding
basilica fund

# List deposit history
basilica fund list --limit 100

Authentication & Tokens

# Login
basilica login
basilica login --device-code  # For WSL/SSH/containers

# Logout
basilica logout

# API tokens
basilica tokens create <name>
basilica tokens list
basilica tokens revoke <name> -y

# SSH keys (for secure cloud rentals)
basilica ssh-keys add -n my-key -f ~/.ssh/id_ed25519.pub
basilica ssh-keys list
basilica ssh-keys delete -y

Upgrade CLI

basilica upgrade
basilica upgrade --version 0.5.4
basilica upgrade --dry-run

List Available GPUs

# All available GPUs
basilica ls

# Filter by GPU type
basilica ls h100
basilica ls a100

# Filter by price
basilica ls --price-max 2.50

# Filter by GPU count
basilica ls --gpu-min 4 --gpu-max 8

# Filter by memory
basilica ls --memory-min 80

# Combine filters
basilica ls h100 --gpu-min 4 --price-max 5

Manage Rentals

# List active rentals
basilica ps

# Show all statuses
basilica ps --status active
basilica ps --status stopped
basilica ps --status failed

# Rental history
basilica ps --history

# Check specific rental
basilica status <uid>

# View logs
basilica logs <uid>
basilica logs <uid> --follow
basilica logs <uid> --tail 100

# Stop rental
basilica down <uid>

# Stop ALL rentals
basilica down --all

# Restart
basilica restart <uid>

# SSH into instance
basilica ssh <uid>

# Execute command (target optional if only one rental)
basilica exec "nvidia-smi"
basilica exec "python train.py" --target <uid>

# Copy files
basilica cp local_file.py <uid>:/workspace/
basilica cp <uid>:/workspace/output.txt ./

Manage Deployments

# List deployments
basilica deploy ls

# Check status
basilica deploy status <name>

# View logs
basilica deploy logs <name>
basilica deploy logs <name> -f        # Follow
basilica deploy logs <name> --tail 100

# Scale
basilica deploy scale <name> --replicas 3

# Delete
basilica deploy delete <name> -y

Start GPU Rental

# Basic H100 rental
basilica up h100

# Multiple GPUs
basilica up 4xh100

# With SSH key
basilica up h100 --ssh-key ~/.ssh/id_rsa.pub

# Community cloud with Docker image
basilica up --compute community-cloud --image pytorch/pytorch:latest

# Detached mode (don't auto-SSH)
basilica up h100 -d

Deploy Application

# Deploy Python file
basilica deploy app.py

# Deploy with GPU
basilica deploy app.py --gpu 1 --gpu-model H100

# Deploy vLLM
basilica deploy vllm meta-llama/Llama-3-8b --gpu 1

# Deploy with storage
basilica deploy app.py --storage --storage-path /data

# Deploy with pip packages
basilica deploy app.py --pip fastapi uvicorn

# Deploy with env vars
basilica deploy app.py -e API_KEY=secret -e DEBUG=true

# Deploy SGLang
basilica deploy sglang Qwen/Qwen2.5-0.5B-Instruct

# Detached (don't wait for ready)
basilica deploy app.py --detach

Workflow

  1. Parse the user's natural language request.
  2. Identify the operation type (balance, list, stop, etc.).
  3. Extract any parameters (UIDs, names, filters).
  4. Construct the basilica command.
  5. Execute the command.
  6. Summarize results and suggest next actions if relevant.

Output Formatting

  • Use --json when parsing output programmatically.
  • Default table output is human-readable.
  • Use -v for verbose output when debugging.

Common Patterns

Stop everything:

# Stop all GPU rentals
basilica down --all

# Delete all deployments (must be done individually)
basilica deploy ls --json | jq -r '.[].name' | xargs -I {} basilica deploy delete {} -y

Check resource usage:

# Balance
basilica balance

# Active rentals
basilica ps

# Active deployments
basilica deploy ls

Python SDK (Reference for Code Generation)

Provide code snippets only. Do not execute SDK code.

Installation

uv pip install basilica-sdk

Requirements: Python 3.10+

Authentication

# Create an API token
basilica tokens create

# Set environment variable
export BASILICA_API_TOKEN="basilica_..."

Or pass directly:

from basilica import BasilicaClient

client = BasilicaClient(api_key="basilica_...")

SDK Request Parsing

Parse the user's natural language and generate the corresponding SDK code snippet.

Deployments

User RequestSDK Code
"deploy my app"client.deploy("my-app", source="app.py", port=8000)
"deploy this code"client.deploy("name", source="inline code...", port=8000)
"deploy fastapi app"client.deploy("api", source="app.py", port=8000, pip_packages=["fastapi", "uvicorn"])
"deploy with GPU"client.deploy("ml", source="train.py", gpu_count=1, image="pytorch/pytorch:latest")
"deploy with storage"client.deploy("app", source="app.py", storage=True)
"deploy vllm/llama"client.deploy_vllm("meta-llama/Llama-2-7b")
"deploy sglang model"client.deploy_sglang("Qwen/Qwen2.5-0.5B-Instruct")
"delete deployment X"client.get("X").delete()
"list my deployments"client.list()
"get deployment logs"client.get("name").logs(tail=100)
"check deployment status"client.get("name").status()

Account & Nodes

User RequestSDK Code
"check balance"client.get_balance()
"list available GPUs"client.list_nodes(available=True)
"find H100 nodes"client.list_nodes(gpu_type="H100")
"nodes with 80GB VRAM"client.list_nodes(min_gpu_memory=80)

SDK Quick Reference

Basic Deployment

from basilica import BasilicaClient

client = BasilicaClient()

# Deploy from file
deployment = client.deploy(
    name="my-api",
    source="app.py",
    port=8000,
    pip_packages=["fastapi", "uvicorn"],
    ttl_seconds=600,  # Auto-delete after 10 minutes
)

print(f"Live at: {deployment.url}")
print(deployment.logs(tail=50))
deployment.delete()

Deploy Inline Code

deployment = client.deploy(
    name="hello",
    source="""
from http.server import HTTPServer, BaseHTTPRequestHandler

class Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b'Hello from Basilica!')

HTTPServer(('', 8000), Handler).serve_forever()
""",
    port=8000,
)

GPU Deployment

deployment = client.deploy(
    name="pytorch-train",
    source="train.py",
    image="pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime",
    port=8000,
    gpu_count=1,
    gpu_models=["A100", "H100"],  # Optional: specific models
    memory="16Gi",
    storage=True,  # Persistent storage at /data
)

vLLM Inference Server

deployment = client.deploy_vllm(
    model="meta-llama/Llama-2-7b",
    # gpu_count auto-detected from model size
    storage=True,  # Cache models at /root/.cache
    ttl_seconds=3600,
)

print(f"OpenAI API: {deployment.url}/v1/chat/completions")

SGLang Server

deployment = client.deploy_sglang(
    model="Qwen/Qwen2.5-0.5B-Instruct",
    tensor_parallel_size=1,
    trust_remote_code=True,
)

Decorator API

import basilica

@basilica.deployment(
    name="my-service",
    port=8000,
    pip_packages=["fastapi", "uvicorn"],
    ttl_seconds=600,
)
def serve():
    from fastapi import FastAPI
    import uvicorn

    app = FastAPI()

    @app.get("/")
    def root():
        return {"status": "running"}

    uvicorn.run(app, host="0.0.0.0", port=8000)

# Deploy by calling the function
deployment = serve()
print(f"Live at: {deployment.url}")

With Volumes

import basilica

cache = basilica.Volume.from_name("my-cache", create_if_missing=True)

@basilica.deployment(
    name="app-with-storage",
    port=8000,
    volumes={"/data": cache},
)
def serve():
    # App can read/write to /data
    pass

Deploy Docker Image (No Source)

deployment = client.deploy(
    name="nginx",
    image="nginxinc/nginx-unprivileged:alpine",
    port=8080,
    cpu="250m",
    memory="256Mi",
)

deploy() Parameters

client.deploy(
    name="my-app",              # Required: DNS-safe name
    source="app.py",            # File path, inline code, or callable
    image="python:3.11-slim",   # Container image
    port=8000,                  # Application port
    env={"KEY": "value"},       # Environment variables
    cpu="500m",                 # CPU (500m = 0.5 cores)
    memory="512Mi",             # Memory (512Mi, 1Gi, etc.)
    storage=True,               # Enable storage at /data (or "/custom/path")
    gpu_count=1,                # Number of GPUs
    gpu_models=["A100"],        # Acceptable GPU models
    min_gpu_memory_gb=40,       # Minimum GPU VRAM
    replicas=1,                 # Number of instances
    ttl_seconds=3600,           # Auto-delete timeout
    public=True,                # Create public URL
    timeout=300,                # Deployment wait timeout
    pip_packages=["pkg"],       # pip dependencies
)

Deployment Object

deployment = client.deploy(...)

deployment.name           # Instance name
deployment.url            # Public URL
deployment.state          # Current state
deployment.status()       # Get detailed status
deployment.logs(tail=100) # Get logs
deployment.delete()       # Delete deployment
deployment.refresh()      # Refresh state from API
deployment.wait_until_ready(timeout=300)

Exception Handling

from basilica import (
    BasilicaError,        # Base exception
    AuthenticationError,  # Invalid/missing token
    ValidationError,      # Invalid parameters
    DeploymentNotFound,   # Deployment doesn't exist
    DeploymentTimeout,    # Timeout waiting for ready
    DeploymentFailed,     # Deployment crashed
    ResourceError,        # Resource unavailable (no GPUs)
    StorageError,         # Storage configuration error
    NetworkError,         # API communication error
)

try:
    deployment = client.deploy(...)
except DeploymentTimeout:
    print("Deployment took too long to start")
except DeploymentFailed as e:
    print(f"Deployment failed: {e}")
except AuthenticationError:
    print("Invalid API token")

Low-Level API

# Create deployment with full control
response = client.create_deployment(
    instance_name="my-app",
    image="python:3.11-slim",
    command=["python", "-m", "http.server", "8000"],
    port=8000,
    cpu="1",
    memory="1Gi",
)

# Direct API methods
client.get_deployment("name")
client.delete_deployment("name")
client.list_deployments()
client.get_deployment_logs("name", tail=100)

GPU Rentals (SSH Access)

# List available nodes
nodes = client.list_nodes(gpu_type="A100", min_gpu_count=1)

# Start rental
rental = client.start_rental(
    gpu_type="A100",
    container_image="pytorch/pytorch:latest",
)

# Get SSH credentials
status = client.get_rental(rental.rental_id)
print(f"SSH: {status.ssh_credentials.username}@{status.ssh_credentials.host}")

# Stop rental
client.stop_rental(rental.rental_id)

Async API

All methods have async variants:

import asyncio
from basilica import BasilicaClient

async def main():
    client = BasilicaClient()

    # Async deployment
    deployment = await client.deploy_async("my-app", source="app.py")

    # Async operations
    status = await deployment.status_async()
    logs = await deployment.logs_async(tail=50)
    await deployment.delete_async()

    # Concurrent deployments
    tasks = [
        client.deploy_async("app1", source="a.py"),
        client.deploy_async("app2", source="b.py"),
    ]
    deployments = await asyncio.gather(*tasks)

asyncio.run(main())

Environment Variables

VariableDescriptionDefault
BASILICA_API_TOKENAPI authentication tokenRequired
BASILICA_API_URLAPI endpoint URLhttps://api.basilica.ai

Troubleshooting

Authentication Errors

# "Not authenticated" or "Invalid token"
basilica logout
basilica login

# Token expired (re-authenticate)
basilica login

# Device flow for headless environments (WSL, SSH, containers)
basilica login --device-code

# API token issues - regenerate
basilica tokens revoke old-token -y
basilica tokens create new-token
export BASILICA_API_TOKEN="basilica_..."

Rate Limits

# Error: "Rate limit exceeded"
# Wait 60 seconds and retry, or reduce request frequency

# For bulk operations, add delays:
for name in $(basilica deploy ls --json | jq -r '.[].name'); do
  basilica deploy delete "$name" -y
  sleep 2
done

Common Errors

ErrorCauseFix
"No SSH key registered"Secure cloud requires SSH keybasilica ssh-keys add
"Insufficient balance"Not enough fundsbasilica fund to deposit
"No available nodes"No matching GPUs availableRelax filters or try later
"Deployment timeout"App took too long to startCheck logs: basilica deploy logs <name>
"Name already exists"Deployment name collisionUse --name with unique name

Multi-GPU & Distributed Training

Single Node Multi-GPU

# 4x H100 on one node
basilica up 4xh100

# Deploy with multiple GPUs
basilica deploy train.py --gpu 4 --gpu-model H100 --memory 64Gi

Multi-Node (via multiple rentals)

# Start multiple rentals for distributed training
basilica up h100 --name node-0 -d
basilica up h100 --name node-1 -d
basilica up h100 --name node-2 -d

# Get IPs for torch.distributed setup
basilica ps --json | jq -r '.[] | "\(.name): \(.ssh_host)"'

# Execute on each node
basilica exec "torchrun --nnodes=3 --node_rank=0 train.py" --target <node-0-uid>

vLLM with Tensor Parallelism

# Multi-GPU inference with tensor parallelism
basilica deploy vllm meta-llama/Llama-3-70b \
  --gpu 4 \
  --tensor-parallel-size 4 \
  --memory 128Gi

Deployment Edge Cases

Name Collisions

# Error: "Deployment 'my-app' already exists"

# Option 1: Delete existing and redeploy
basilica deploy delete my-app -y
basilica deploy app.py --name my-app

# Option 2: Use unique name (timestamp suffix)
basilica deploy app.py --name "my-app-$(date +%s)"

# Option 3: Let CLI auto-generate name (omit --name)
basilica deploy app.py

Deployment Retries

# If deployment fails, check logs first
basilica deploy logs <name> --tail 200

# Common fixes:
# 1. Wrong port - app must listen on specified port
basilica deploy app.py --port 8080  # Match your app's port

# 2. Missing dependencies
basilica deploy app.py --pip flask gunicorn

# 3. Insufficient resources
basilica deploy app.py --memory 2Gi --cpu 1

# 4. GPU image mismatch
basilica deploy train.py --gpu 1 --image pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime

Stuck Deployments

# Deployment stuck in "Pending" - check status
basilica deploy status <name>

# Force delete stuck deployment
basilica deploy delete <name> -y

# If delete hangs, wait for grace period (default 30s) or contact support

Terminating Stale Rentals

Find Stale Rentals

# List all active rentals with timestamps
basilica ps --json | jq '.[] | {name, created_at, status}'

# Find rentals older than 24 hours (example)
basilica ps --json | jq '[.[] | select(.status == "active")] | sort_by(.created_at)'

Safe Termination

# Always check what's running first
basilica ps

# Stop specific rental
basilica down <uid>

# Stop ALL rentals (use with caution)
basilica down --all

# For community cloud rentals
basilica down --compute community-cloud --all

Cleanup Script

#!/bin/bash
# cleanup-stale.sh - Terminate all rentals and deployments

echo "=== Active Rentals ==="
basilica ps

echo -e "\n=== Active Deployments ==="
basilica deploy ls

read -p "Terminate all? (y/N) " confirm
if [[ "$confirm" == "y" ]]; then
  # Stop all rentals
  basilica down --all 2>/dev/null || true
  
  # Delete all deployments
  for name in $(basilica deploy ls --json 2>/dev/null | jq -r '.[].name'); do
    echo "Deleting deployment: $name"
    basilica deploy delete "$name" -y
    sleep 1
  done
  
  echo "Cleanup complete."
fi

Prevent Runaway Costs

# Use TTL for auto-cleanup (deployments)
basilica deploy app.py --ttl 3600  # Auto-delete after 1 hour

# Set billing alerts in the dashboard
# Monitor balance
basilica balance

平台分布

OpenCode

26.57%
按下载量换算24

Cursor

23.18%
按下载量换算21

Claude Code

15.84%
按下载量换算14

windsurf

13.46%
按下载量换算12

clawdbot

7.67%
按下载量换算7

continue

3.6%
按下载量换算3

安全审计

暂无安全审计结果可展示。

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills