Skip to content
Back to skills

Bugs

ASecurity

> **Status:** Open > **Severity:** Medium > **Points:** 3 > **Affects:** .claude/skills/sdlc-studio/scripts/verify_ac.py, .claude/skills/sdlc-studio/scripts/tests/test_verify_ac.py, .claude/skills/sdlc-studio/reference-verify.md, changelog.d/BG0961.md > **Evidence:** Field report, 2026-10-07, grooming Sprint 0 stories on sdlc-studio-lens. validate.py instructions forbids a tool-specific skill path in committed instructions (BG0853). A story Verify line that has to run a skill script has nowhe...

  • 23 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 7, 2026
ai-agentsshellexpress

Security analysis

A100/100

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

Scanned October 7, 2026

npx -y skills add DarrenBenson/sdlc-studio --skill bugs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bugs?

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

Security grade badge for Bugs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/darrenbenson-bugs-d0051d55/badge)](https://www.skillsdirectory.com/skills/darrenbenson-bugs-d0051d55)

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
# BG0961: A Verify line cannot name the skill: <skill> is a shell redirect, not a path

> **Status:** Open
> **Severity:** Medium
> **Points:** 3
> **Affects:** .claude/skills/sdlc-studio/scripts/verify_ac.py, .claude/skills/sdlc-studio/scripts/tests/test_verify_ac.py, .claude/skills/sdlc-studio/reference-verify.md, changelog.d/BG0961.md
> **Evidence:** Field report, 2026-10-07, grooming Sprint 0 stories on sdlc-studio-lens. validate.py instructions forbids a tool-specific skill path in committed instructions (BG0853). A story Verify line that has to run a skill script has nowhere legal to point. Reproduced at HEAD: verify_ac.run_verifier('shell test -f <skill>/scripts/verify_ac.py') returns ok=False, stderr '/bin/sh: line 1: skill: No such file or directory'.
> **Created:** 2026-10-07
> **Created-by:** sdlc-studio file
> **Raised-by:** Grok 4.7; agent; v1
> **Raised-in-batch:** none open - raised outside a delivery batch, 2026-10-07T08:41:35Z

## Summary

BG0853 made the skill placeholder the only path a committed AGENTS.md may use, and said not to bake one machine's install path into a shared file. verify_ac never expands that placeholder. A Verify line is also committed and shared, and it is executed by the shell. In the shell the placeholder is input redirection, so a check of the form "test -f <skill>/scripts/verify_ac.py" fails looking for a file named skill. A consuming project's check that is itself a skill command (validate.py instructions, engagement_floor.py check) has to probe ~/.claude and ~/.agents inside the verifier instead.

## Steps to Reproduce

1. From a project root, run verify_ac on the expression: shell test -f, then the skill placeholder, then /scripts/verify_ac.py. 2. The result is ok=False, exit 1, stderr "skill: No such file or directory". 3. The file does exist under the skill directory this process loaded.

## Proposed Fix

Before a shell verifier is executed, replace the skill placeholder with the skill directory this process loaded (loaded_skill_dir). Do not write that absolute path back into the story. A Verify line keeps the placeholder, and the shell never sees the angle brackets.

## Acceptance Criteria

- [ ] **AC1** A shell verifier that checks the skill's verify_ac.py via the skill placeholder passes when verify_ac runs it
  - **Verify:** pytest .claude/skills/sdlc-studio/scripts/tests/test_verify_ac.py::HardeningTests::test_run_verifier_shell_pass_and_fail_resolves_the_skill_placeholder
- [ ] **AC2** After `verify_ac.py run` stamps such a criterion Verified, its Verify line still reads the placeholder; no absolute install path is written into the artefact
  - **Verify:** pytest .claude/skills/sdlc-studio/scripts/tests/test_verify_ac.py::HardeningTests::test_the_placeholder_is_never_written_back
- [ ] **AC3** A skill directory whose path holds a space is substituted quoted, so the shell sees one argument; a check that should fail still fails
  - **Verify:** pytest .claude/skills/sdlc-studio/scripts/tests/test_verify_ac.py::HardeningTests::test_a_skill_path_with_a_space_is_quoted

## Triage

- Reproduced at fb1ce886: `run_verifier('shell test -f <skill>/scripts/verify_ac.py', 30, '.')` returns ok=False, exit 1, stderr "skill: No such file or directory". `sdlc_md.loaded_skill_dir()` already exists to substitute. Never expanded; not a regression.
- `reference-verify.md` should name the placeholder as the portable way for a Verify line to reach a skill script, so a consuming project stops probing install directories.

## Revision History

| Date | Author | Change |
| --- | --- | --- |
| 2026-10-07 | Grok 4.7 | Filed |
| 2026-10-07 | Claude Opus 5.5 (triage) | Groomed: reproduced at fb1ce886 (`run_verifier` exits 1 with 'skill: No such file or directory'); criteria added for write-back and quoting; reference-verify.md and a changelog fragment added to Affects |

Files in this skill

  • BG0001-workflow-cr-status-vocabulary-diverges-across-refe.md2.8 KB
  • BG0002-reconcile-py-and-status-py-both-omit-bug-and-workf.md2.4 KB
  • BG0003-verify-ac-py-only-parses-ac-headings-silently-igno.md2.3 KB
  • BG0004-review-prep-persona-check-reads-personas-md-while.md2.2 KB
  • BG0005-prd-performance-nfr-falsely-claims-all-scripts-are.md1.6 KB
  • BG0006-prd-names-its-own-artifact-metadata-format-two-inc.md1.6 KB
  • BG0007-prd-quality-assessment-conceals-four-open-bugs-inc.md2.1 KB
  • BG0008-trd-script-contract-rule-5-is-incomplete-verify-ac.md2.2 KB
  • BG0009-trd-181-script-layer-tests-all-must-pass-before-re.md2 KB
  • BG0010-tsd-instruction-hygiene-release-gate-validate-py-i.md1.6 KB
  • BG0011-tsd-availability-gate-is-inverted-the-cited-test-p.md1.8 KB
  • BG0012-tsd-lint-links-gate-is-skill-scoped-so-the-sdlc-st.md1.9 KB
  • BG0013-persona-section-headings-carry-a-high-suffix-that.md2.1 KB
  • BG0014-story-verify-lines-do-not-test-what-their-acs-asse.md3.2 KB
  • BG0015-epic-ownership-double-mapping-github-sync-review-p.md2.6 KB
  • BG0016-ep0004-s-prd-reference-points-to-section-10-with-a.md1.6 KB
  • BG0017-rfc0003-buries-a-fixable-false-guarantee-reconcile.md2 KB
  • BG0018-reconcile-index-status-parser-matches-title.md3.1 KB
  • BG0019-determinism-checks-mishandle-bug-artifact-class.md2.7 KB
  • BG0020-parser-rejects-consuming-repo-house-templates.md3.1 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.