Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jd-opensource/JoySafeter --skill appgit clone --depth 1 https://github.com/jd-opensource/JoySafeterWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jd-opensource/joysafeter/app)<a href="https://agentmods.dev/skills/jd-opensource/joysafeter/app"><img src="https://agentmods.dev/badge/skills/jd-opensource/joysafeter/app/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jd-opensource/joysafeter/app"><img src="https://agentmods.dev/badge/skills/jd-opensource/joysafeter/app.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 218 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
- high Tool Misuse · line 248 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.03746 |
| Opus 5.5 | $0.00000 | $0.01498 |
| Sonnet 5.5 | $0.00000 | $0.00749 |
| Haiku 4.5 | $0.00000 | $0.00375 |
Grade A, and why
app scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 446 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SKILL 后端功能说明文档
概述
SKILL(技能)模块是平台的核心功能之一,用于管理和组织可复用的技能资源。每个技能可以包含描述、内容、标签、文件等丰富的信息,支持公开分享和私有管理。
架构设计
分层架构
SKILL 模块采用经典的分层架构设计:
API Layer (api/v1/skills.py)
↓
Service Layer (services/skill_service.py)
↓
Repository Layer (repositories/skill.py)
↓
Model Layer (models/skill.py)
核心组件
-
模型层 (Models)
Skill: 技能主表模型SkillFile: 技能文件关联表模型
-
仓库层 (Repositories)
SkillRepository: 技能数据访问层SkillFileRepository: 技能文件数据访问层
-
服务层 (Services)
SkillService: 技能业务逻辑和权限校验
-
API层 (API)
- RESTful API 端点,提供完整的 CRUD 操作
数据模型
Skill 模型
技能主表,存储技能的核心信息:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
UUID | 主键,自动生成 |
name |
String(255) | 技能名称,必填 |
description |
Text | 技能描述,必填 |
content |
Text | 技能内容,必填 |
tags |
JSONB | 标签列表,默认为空列表 |
source_type |
String(50) | 来源类型,默认为 "local" |
source_url |
String(1024) | 来源 URL,可选 |
root_path |
String(512) | 根路径,可选 |
owner_id |
String(255) | 拥有者 ID,外键关联 user.id |
created_by_id |
String(255) | 创建者 ID,外键关联 user.id,必填 |
is_public |
Boolean | 是否公开,默认为 False |
license |
String(100) | 许可证信息,可选 |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
约束和索引:
- 唯一约束:
(owner_id, name)- 同一拥有者的技能名称必须唯一 - 索引:
skills_owner_idx: 拥有者索引skills_created_by_idx: 创建者索引skills_public_idx: 公开状态索引skills_tags_idx: 标签 GIN 索引(支持 JSONB 查询)
SkillFile 模型
技能文件关联表,存储技能关联的文件信息:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
UUID | 主键,自动生成 |
skill_id |
UUID | 技能 ID,外键关联 skills.id |
path |
String(512) | 文件路径,必填 |
file_name |
String(255) | 文件名,必填 |
file_type |
String(50) | 文件类型,必填 |
content |
Text | 文件内容,可选 |
storage_type |
String(20) | 存储类型,默认为 "database" |
storage_key |
String(512) | 存储键(如对象存储的 key),可选 |
size |
Integer | 文件大小(字节),默认为 0 |
created_at |
DateTime | 创建时间 |
updated_at |
DateTime | 更新时间 |
索引:
skill_files_skill_idx: 技能 ID 索引skill_files_path_idx: 技能 ID + 路径复合索引
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- __init__.py 50 B runs code
- api/__init__.py 297 B runs code
- api/schemas.py 3.2 KB runs code
- api/v1/__init__.py 2.9 KB runs code
- api/v1/artifacts.py 5.4 KB runs code
- api/v1/auth.py 16 KB runs code
- api/v1/chat.py 20 KB runs code
- api/v1/conversations.py 29 KB runs code
- api/v1/custom_tools.py 3.8 KB runs code
- api/v1/environment.py 3.2 KB runs code
- api/v1/files.py 14 KB runs code
- api/v1/graph_code.py 5.8 KB runs code
- api/v1/graph_deployments.py 7.0 KB runs code
- api/v1/graphs.py 22 KB runs code
- api/v1/mcp.py 13 KB runs code
- api/v1/memory/__init__.py 66 B runs code
- api/v1/memory/memory.py 17 KB runs code
- api/v1/memory/schemas.py 4.1 KB runs code
- api/v1/model_credentials.py 3.3 KB runs code
- api/v1/model_providers.py 4.1 KB runs code
- api/v1/model_usage.py 1.3 KB runs code
- api/v1/MODEL.md 5.3 KB
- api/v1/models.py 6.0 KB runs code
- api/v1/oauth.py 14 KB runs code
- api/v1/openapi_graph.py 5.7 KB runs code
- api/v1/openclaw_chat.py 3.6 KB runs code
- api/v1/openclaw_devices.py 3.9 KB runs code
- api/v1/openclaw_instances.py 4.6 KB runs code
- api/v1/openclaw_proxy.py 7.5 KB runs code
- api/v1/organizations.py 7.8 KB runs code
- api/v1/runs.py 9.2 KB runs code
- api/v1/sandboxes.py 8.5 KB runs code
- api/v1/sessions.py 5.0 KB runs code
- api/v1/skill_collaborators.py 4.5 KB runs code
- api/v1/skill_versions.py 4.0 KB runs code
- api/v1/skills.py 8.3 KB runs code
- api/v1/tokens.py 2.9 KB runs code
- api/v1/tools.py 2.6 KB runs code
- api/v1/traces.py 9.0 KB runs code
- api/v1/users.py 10 KB runs code
- api/v1/version.py 1.0 KB runs code
- api/v1/workspace_files.py 5.0 KB runs code
- api/v1/workspace_folders.py 8.1 KB runs code
- api/v1/workspaces.py 11 KB runs code
- common/auth_dependency.py 3.9 KB runs code
- common/cookie_auth.py 659 B runs code
- common/dependencies.py 6.8 KB runs code
- common/exceptions.py 11 KB runs code
- common/logging.py 5.0 KB runs code
- common/pagination.py 2.3 KB runs code
- common/permissions.py 1.9 KB runs code
- common/response.py 1.8 KB runs code
- common/skill_permissions.py 3.1 KB runs code
- core/__init__.py 178 B runs code
- core/a2a/__init__.py 518 B runs code
- core/a2a/client.py 16 KB runs code
- core/agent/__init__.py 346 B runs code
- core/agent/artifacts/__init__.py 319 B runs code
- core/agent/artifacts/collector.py 4.2 KB runs code
- core/agent/artifacts/resolver.py 8.4 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 446 lines · 0 tokens per session scan A 4198bb047cfd
app is a skill published in the GitHub repository jd-opensource/JoySafeter (314 stars, last pushed 1mo ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 3,746 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
skill-authoring
Author SKILL.md skills: frontmatter, validator limits, structure.
swarmclaw
AI agent runtime and multi-agent orchestration platform. Teaches agents how to use SwarmClaw's 6 primitive tools, persistent memory, dreaming, delegation, connectors, credentials, and the skill system. Use when an agent is running on SwarmClaw and needs to understand the platform's capabilities.
xhs_note
A workflow for creating a Xiaohongshu post, a Chinese image-first social-media note, with short copy, hashtags, and at least three matching vertical images.
dingtalk_channel_connect
A browser-based setup guide for connecting a MateClaw assistant to DingTalk, a Chinese workplace messaging platform. It creates and configures a DingTalk application, then publishes the configuration.
officecli-word-form
Use this skill to create fillable Word forms (.docx) with real Content Controls (SDT) + legacy FormField checkboxes + MERGEFIELD mail-merge placeholders + document protection. Trigger on: 'fillable form', 'form fields', 'content controls', 'SDT', 'word form', 'fill in', 'only editable fields', 'protect document'…
officecli-data-dashboard
Use this skill to build a multi-element Excel dashboard — Dashboard sheet on open, multiple formula-driven KPI cards, multiple charts, sparklines, and conditional formatting — from CSV or tabular input. Trigger on: 'dashboard', 'KPI dashboard', 'analytics dashboard', 'executive dashboard', 'metrics dashboard', 'CSV to…