New skill
A cross-device synced catalog for Claude and Codex skills, agents, and workflows.
npx -y skills add ada-ggf25/AI-Tools --skill new-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Author a new, well-formed Claude Code skill, agent, or hook from a one-line intent. Decides the right artifact type (skill vs agent vs hook) and placement (global vs project), then writes a correct SKILL.md / agent file / settings.json hook with engineered trigger phrasing, a clear procedure, and guardrails. Global and project-agnostic. Trigger when the user says "new skill", "new-skill", "create a skill", "make an agent", "scaffold a skill/agent/hook", or "author a Claude command".
SKILL.md
7.3 KB, as published. Nobody here has run it
Author a new skill / agent / hook
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.
The judgment this skill exists to encode
Two mistakes are easy to make by hand; this skill must get them right:
- Artifact type.
- Skill = a repeatable procedure the user invokes (
/name); runs in the main thread with project context. - Agent = isolatable / parallel / noisy work (large reads, fan-out, web search), 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.
- Hook = deterministic automation that must always run on an event
(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 theupdate-configskill.
- Skill = a repeatable procedure the user invokes (
- Trigger quality. A skill only auto-fires when its
descriptionnames concrete trigger phrases and conditions. A vague description = a skill that never runs. Engineer thedescriptionfor retrieval: state what it does AND when to use it, with example trigger phrases, and (where useful) when NOT to use it.
Placement
- Global (
~/.claude/skills/<name>/SKILL.md,~/.claude/agents/<name>.md) only when genuinely project-agnostic. - Project (
./.claude/...) when coupled to this repo's conventions/paths; it then travels and is versioned with the repo. This is the default when there is any coupling. - Ask when ambiguous. In a submodule/monorepo, confirm which package owns it.
Procedure
1. Capture intent
- Use the user's one-line description. If missing or vague, ask up to ~3 questions: what it does, when it should trigger, and global vs project.
2. Classify the artifact (and say why)
- Decide skill / agent / hook per the judgment above; state the reason in one line.
- If it is really a hook, do not write a SKILL.md - hand off to
update-configand stop. - If it needs noisy fan-out/web work, propose an accompanying agent the skill will call.
3. Pick name + placement
- Kebab-case
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.
4. Write the file
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.
5. Validate
- Confirm the YAML/JSON parses, the name is unique, and the path/folder is correct.
- Sanity-check that the
descriptionwould actually trigger on the intended phrases.
6. Hand off
- Report what was created and where. Remind the user that skills/agents are indexed at
session start, so a restart is needed before the new
/commandautocompletes.
Authoring an agent (the agent branch of step 4)
When an agent is actually warranted
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:
- Isolatable / context-noisy - large reads, repo-wide fan-out, or web research whose intermediate output would pollute the main thread; the agent returns only a conclusion.
- Parallelizable - several independent investigations run at once.
- Role-stable - the same constrained job recurs across tasks, so a named role beats
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) orgeneral-purposeagent instead, and say so.
Choose a minimal toolset (least privilege)
Grant the smallest tools set the role needs; every extra tool is surface area and noise.
- Read-only research / search role:
Read, Grep, Glob(+WebSearch, WebFetchif it needs the internet). NoEdit/Write/Bash- it reports, it does not mutate. - Code-writing role: add
Edit, Writeand a scopedBashonly if it must run commands; never grant broad shell access "just in case". - Omit the
toolsfield only when the role genuinely needs the full default set; prefer an explicit allowlist so the role's boundaries are legible. - Mirror the restraint of
/setup-permissions: never hand an agent destructive Bash (rm,sudo, force-push) unless that is its explicit, reviewed purpose.
Write a role-shaped definition
- Frontmatter:
name(kebab-case), a retrieval-engineereddescriptionthat states what the agent is for AND when to delegate to it (so the parent model picks it), an explicittoolslist, and an optionalmodeloverride only if the role needs it. - Body: write the agent's operating instructions as a role, not a procedure for the 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").
Pair it with its caller
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.
Guardrails
- Always classify artifact type first; never write a SKILL.md for what is really a hook
(route hooks to
update-config). - Engineer the
descriptionfor triggering; a skill with weak triggers is a bug. - For agents: grant a minimal least-privilege
toolslist and specify the final-message shape; prefer a built-in agent over a new custom one when the need is one-off or generic. - Default to project placement when there is any repo coupling; global only when agnostic.
- Check for name collisions before writing; never clobber an existing skill/agent.
- Write thin, single-purpose artifacts that reference sources of truth rather than duplicating them; keep guardrails explicit.
- Never fabricate facts about the repo or the harness.