Skip to content
Back to skills

Bug Fix

ASecurity

Status: implemented

  • 12 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 23, 2026
ai-agentsgotestinggit

Security analysis

A100/100

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

Scanned September 23, 2026

npx -y skills add Sivan757/dsh-agent-plugins-market --skill bug-fix --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bug Fix?

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

Security grade badge for Bug Fix
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sivan757-bug-fix/badge)](https://www.skillsdirectory.com/skills/sivan757-bug-fix)

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
# Agent Note: A path carrying SKILL.md is one skill

Status: implemented

## Problem

A manifest may declare its skills as individual directories rather than as one container. `mattpocock/skills` does exactly that: `.claude-plugin/plugin.json` lists all 25 skill directories (`./skills/engineering/codebase-design`, …). A skill directory holds the skill's own documents beside its `SKILL.md` — `DESIGN-IT-TWICE.md`, `DEEPENING.md`, `MISSION-FORMAT.md`, `references/`, `scripts/`.

Skill discovery ran its flat `*.md` scan on each declared path before checking whether that path carried its own `SKILL.md`, so every document beside the skill was read as a flat skill. Scanning the real checkout produced 22 `skill "<name>": missing YAML frontmatter` diagnostics naming reference documents (`PHASE-BOUNDARIES`, `DESIGN-IT-TWICE`, `LOGIC`, …) on the suite's detail panel. The failure was not limited to noise: a reference document that happens to carry `name` and `description` frontmatter was registered as a skill nobody declared.

## Decision

A path that carries `SKILL.md` is one skill directory. Discovery reads that document and stops: the flat `*.md` scan, the child-directory scan and the category scan all apply only to a path with no `SKILL.md` of its own.

The rule is about the path being read, not about its depth, so it holds whether a manifest declares the skill directory, the conventional `skills/` container contains it, or a category directory two levels above contains it. `discoverSkills` checks `SKILL.md` before it lists anything.

## Alternatives considered

**Skip documents whose names look like references** (uppercase stems, a `references/` parent directory). Rejected: the name is a convention, not a contract, and a rule built on guessing which Markdown files are "real" skills would drop legitimate flat skills the moment a collection spelled them differently.

**Stop the nested scans from entering a skill directory.** Rejected: they never did. The child and category scans look only for `child/SKILL.md`, so a skill's `references/` was already invisible to them. The defect was the flat scan running on a path that is itself a skill.

**Require manifests to declare a container.** Rejected: declaring individual skills is valid, the plugin already accepts it (`declaredSkillDirs` resolves each entry), and refusing the shape would break a working source to avoid reading its own files.

## Consequences

A path that carries `SKILL.md` and also holds flat `*.md` skills now contributes only the one skill. That combination is self-contradictory — the same directory cannot be one skill and a collection of skills — and no source in the compatibility set ships it: no directory named `skills` in the fourteen configured checkouts carries a `SKILL.md` of its own.

Suites whose manifests list individual skill directories stop reporting their reference documents, and stop registering frontmatter-bearing references as skills. The count on the market card matches what sessions can invoke.

## Testing

`tests/discovery.test.ts` scans `tests/fixtures/declared-skill-dirs/`, a mattpocock-shaped fixture whose two declared skill directories each carry reference documents, one of them with valid `name` and `description` frontmatter. The test pins the discovered skill set to the two declared names, the empty diagnostic list, and the absence of the frontmatter-bearing reference. Scanning the fourteen configured source checkouts before this change reported 22 such diagnostics from the mattpocock checkout; afterwards it reports none.

Files in this skill

  • 2026-09-12-bounded-zip-entry-writes.md3 KB
  • 2026-09-12-bounded-zip-entry-writes.zh.md2.8 KB
  • 2026-09-12-path-containment-by-path-relations.md5.3 KB
  • 2026-09-12-path-containment-by-path-relations.zh.md5.1 KB
  • 2026-09-12-route-field-types.md3.4 KB
  • 2026-09-12-route-field-types.zh.md3.2 KB
  • 2026-09-13-legacy-profile-lsp-layer-removal.md6.1 KB
  • 2026-09-13-legacy-profile-lsp-layer-removal.zh.md5.6 KB
  • 2026-09-13-mcp-identity-without-session-namespace.md5.6 KB
  • 2026-09-13-mcp-identity-without-session-namespace.zh.md5.4 KB
  • 2026-09-14-suite-text-paths-and-dynamic-context.md8.2 KB
  • 2026-09-15-optional-host-services-read-through-the-service-store.md7.9 KB
  • 2026-09-15-optional-host-services-read-through-the-service-store.zh.md7.7 KB
  • 2026-09-22-declared-skill-directory-is-one-skill.md3.5 KB
  • 2026-09-22-declared-skill-directory-is-one-skill.zh.md3.3 KB

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.