Skip to content
Back to skills

Sdd Tool Skills

ASecurity

Turn a project's own search tools into small generated skills, one per kind of question — "who calls this symbol", "who writes this component", "where is this asset used" — each an order with its reason and a verified call, so the agent reaches for the tool at the moment it chooses instead of grepping. Scans what the session and the project offer, or asks the owner directly; keeps a registry of the generated skills to change, re-check or delete them. Use when the user invokes sdd-tool-skills ...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
developmentgoc#

Works with

  • claude code
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add zakyrion/sdd-flow --skill sdd-tool-skills --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sdd Tool Skills?

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

Security grade badge for Sdd Tool Skills
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zakyrion-sdd-tool-skills/badge)](https://www.skillsdirectory.com/skills/zakyrion-sdd-tool-skills)

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

Download with Pro
SKILL.md
---
name: sdd-tool-skills
description: Turn a project's own search tools into small generated skills, one per kind of question — "who calls this symbol", "who writes this component", "where is this asset used" — each an order with its reason and a verified call, so the agent reaches for the tool at the moment it chooses instead of grepping. Scans what the session and the project offer, or asks the owner directly; keeps a registry of the generated skills to change, re-check or delete them. Use when the user invokes sdd-tool-skills or /sdd-tools, or when the survey finds the registry missing or stale and the owner agrees.
---

# Load

```clojure
{:requires [".sdd-flow/references/CLOJURE_NOTATION.md"]
 :light "this file is the whole procedure — the glossary is the only other read"
 :missing (:then (stop!)
                 (tell-user! "run sdd-flow doctor ."))
 :project (when (project-adapter-present? ".sdd-flow/project.md")
            (:then (read-last! ".sdd-flow/project.md")))
 :registry (when (file-present? ".sdd-flow/tool-skills.md")
             (:then (read! ".sdd-flow/tool-skills.md")))
 :adapter-gives "# Tools and # Bans — what the project already declared, and what must never be called"}
```

# Activate

```clojure
{:why "a tool listed in a file the agent read once is a suggestion; a skill whose description names the question stands in the agent's context at the moment it chooses how to search"
 :by #{"the user invokes the skill or /sdd-tools"
       "the survey, when the registry is missing or the session offers tools it does not know — it asks the owner first"}
 :operations {:build "no registry yet — scan, propose, generate"
              :refresh "a registry exists — scan again, propose only what is new or stale"
              :change "one generated skill rewritten — /sdd-tools change <skill>"
              :remove "one generated skill deleted with its registry entry — /sdd-tools remove <skill>"
              :check "every registered skill's call run again; a failing one is marked :stale and shown to the owner"}
 :runs-in "this session"
 :writes #{".claude/skills/<generated>/SKILL.md when the project uses Claude Code"
           ".agents/skills/<generated>/SKILL.md when the project uses Codex"
           ".sdd-flow/tool-skills.md — the registry"}
 :owned-by "the project — generated files stay out of sdd-flow's manifest; update and uninstall never touch them"}
```

# Scan

```clojure
{:sources #{"the tools the session lists — MCP servers, their tool names and their instructions"
            "the skills and commands the session lists"
            "the adapter's # Tools and # Bans"
            "the agent documents — CLAUDE.md, AGENTS.md — and the files they point to"
            "scripts and CLIs the project's own documents name"
            "the MCP configuration the project keeps"}
 :ask "then ask the owner directly: which tools do you reach for when you search this code, and which ones did the scan miss"
 :banned "a tool the adapter's bans forbid is never used — not even listed"
 :check "every candidate is called once for real, on this project, before anything is proposed — a listed tool is not a working tool; the call and one line of its answer are kept"}
```

# Questions

```clojure
{:unit "one generated skill per kind of question, never one per tool — the agent chooses by the question it has"
 :derive "from what the checked tools answer and from the questions a survey asks of every task: which code a change touches and who calls it, which data it writes and who else writes it, where a type or an asset is used, what the conventions are"
 :size "five to eight skills — every description costs context in every session"
 :several-tools "a question two tools answer names both, in order, with what each is blind to"
 :propose "the whole set at once, in prose: each question, the tool it orders, why, and a 0-100 rating that the skill will be used; the owner confirms, cuts or renames before anything is written"}
```

# Generate

```clojure
{:name "tool-<question>, in the words of the question — tool-who-calls, tool-who-writes-component"
 :frontmatter {:name "tool-<question>"
               :description "the question first, then the order and its reason, in under four hundred characters — «Who calls or references a C# symbol: ask roslyn find_references, never grep — grep misses overloads and matches comments»"
               :user-invocable "false where Claude Code reads it — the skill is for the agent, hidden from the / menu"}
 :body {:question "the question, in the project's words"
        :order "which tool to call, as an order"
        :because "why it beats a search or a read here"
        :invoke "the exact call that was checked"
        :example "the checked call and one line of what it returned"
        :blind-spots "what the tool cannot see, and which tool or read covers that"
        :fallback "when no tool answers: a targeted search, and the finding says why the tool could not"}
 :form "a Clojure map in one fence, under a heading — short enough to read in one glance"
 :write "each file written, then read back; its entry written into the registry and read back"}
```

```clojure
{:tool-skill "<tool-question>"
 :question "<the question, in the project's words>"
 :order "<call this tool>"
 :because "<why it beats grep here>"
 :invoke "<the exact call that was checked>"
 :example {:call "<the call>" :returned "<one line of its answer>"}
 :blind-spots #{"<what it cannot see — and what covers it>"}
 :fallback "<a targeted search, with the reason in the finding>"}
```

# Registry

```clojure
{:file ".sdd-flow/tool-skills.md — the project's own file, one fence, a vector of entries"
 :entry {:skill "tool-<question>"
         :question "the question it answers"
         :tools "the tools it orders, in order"
         :paths "the generated files"
         :verified-at "the date of the last real call"
         :verified-by "the call and one line of what it returned"
         :status "#{:active :stale}"}
 :adapter "each tool a generated skill orders also stands in the adapter's # Tools with :use-when naming that skill — written with the same confirmation"
 :stale "a skill whose call fails is not deleted by the agent — it is marked :stale and shown to the owner, who changes or removes it"
 :never #{"a generated skill missing from the registry"
          "a registry entry whose files are gone"
          "a skill the owner did not confirm"
          "a tool name written into canon"}}
```

# Report

```clojure
{:tell "in prose: what was found, what was checked, the skills written or changed, what went stale — and what the scan could not reach"
 :next "the survey reads the registry and uses the generated skills first; how many of its findings they answered is in every survey report"
 :owner {:brief "one screen of prose: what changes for whoever uses it, what changes in the code in plain words, what is uncertain"
         :questions "numbered — inside a FLOW by the register, the numbers running through the flow; options lettered and rated, one the simplest; the owner answers «1A, 2B, 3 — as you propose», through the harness's choice dialog where it offers one"
         :never "a file, a keyword or an entry id the owner has not seen"}}
```

Files in this skill

  • SKILL.md7.2 KB
  • agents/openai.yaml273 B

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.