new-skill-cf592f — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited new-skill-cf592f (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Project-agnostic, global skill. It turns a one-line intent into a correct, well-formed Claude Code extension - choosing the right artifact type and placement, then writing the file in the house style used across these skills. It is the correct-builder downstream of propose-automation (which decides what to build); this one builds one well.
Two mistakes are easy to make by hand; this skill must get them right:
/name); runs in the mainthread with project context.
with a restricted toolset. Often spawned inside a skill, not as the top-level UI. Define a custom agent only when you need a named, reusable role.
(PreToolUse/PostToolUse/Stop/etc.), wired in settings.json. Any "from now on when X / every time X / before-after X" request is a HOOK, not a skill - the harness runs it, not Claude. Route those to the update-config skill.
description names concretetrigger phrases and conditions. A vague description = a skill that never runs. Engineer the description for retrieval: state what it does AND when to use it, with example trigger phrases, and (where useful) when NOT to use it.
~/.claude/skills/<name>/SKILL.md, ~/.claude/agents/<name>.md) only whengenuinely project-agnostic.
./.claude/...) when coupled to this repo's conventions/paths; it thentravels and is versioned with the repo. This is the default when there is any coupling.
it does, when it should trigger, and global vs project.
update-config and stop.name; check it does not collide with an existing skill/agent (scan~/.claude/skills, ~/.claude/agents, and ./.claude/...). Choose global vs project and the exact target path; confirm if ambiguous.
For a skill (SKILL.md): YAML frontmatter with name and a retrieval-engineered description (what + when + trigger phrases + optional skip conditions), then a title, a short purpose line, a numbered Procedure, and a Guardrails section. Add a "Deferred / not worth it" pattern only where it fits. Match the concise house style of the existing skills. For an agent (.claude/agents/<name>.md), follow the agent-authoring guidance below.
description would actually trigger on the intended phrases.session start, so a restart is needed before the new /command autocompletes.
Prefer a skill, or letting a skill spawn a built-in agent, over defining a custom one. Define a custom agent (.claude/agents/<name>.md) only when you need a named, reusable role with a restricted toolset, typically because the work is:
intermediate output would pollute the main thread; the agent returns only a conclusion.
re-describing it each time. If the need is one-off or generic, do NOT create a custom agent - have the skill spawn the built-in Explore (read-only fan-out search) or general-purpose agent instead, and say so.
Grant the smallest tools set the role needs; every extra tool is surface area and noise.
Read, Grep, Glob (+ WebSearch, WebFetch if itneeds the internet). No Edit/Write/Bash - it reports, it does not mutate.
Edit, Write and a scoped Bash only if it must runcommands; never grant broad shell access "just in case".
tools field only when the role genuinely needs the full default set; prefer anexplicit allowlist so the role's boundaries are legible.
/setup-permissions: never hand an agent destructive Bash(rm, sudo, force-push) unless that is its explicit, reviewed purpose.
name (kebab-case), a retrieval-engineered description that stateswhat the agent is for AND when to delegate to it (so the parent model picks it), an explicit tools list, and an optional model override only if the role needs it.
user - it runs autonomously and cannot ask follow-ups mid-run. Cover: its objective and scope, what it must NOT do, how to handle ambiguity without a human, and the exact shape of the final message it returns (the parent only sees that final output, so specify it - e.g. "return a ranked list with one-line rationales, no file dumps").
An agent is usually a step inside a skill, not a user-facing command. When you create one, say which skill should spawn it and how, and note that users do not invoke agents with a slash command the way they invoke skills.
(route hooks to update-config).
description for triggering; a skill with weak triggers is a bug.tools list and specify the final-messageshape; prefer a built-in agent over a new custom one when the need is one-off or generic.
duplicating them; keep guardrails explicit.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.