AUDIT.md
# Skill Review Report (Self-Audit)
## 1) Snapshot
- Skill name: `skill-review-audit`
- Skill path: `agent/skills/skill-review-audit`
- Source/provenance: copied from local skill directory (`~/.claude/skills/skill-review-audit`) on 2026-01-31
- Files: 8 files total (`scripts/` + `references/` present; no `assets/`)
- Intended environment: any agent runner that can read Markdown; optional Bash for `scripts/scan_skill.sh` (uses `find`, `du`, `sort`, `head`, `sed`; `rg` is optional)
## 2) What It Does
- Primary purpose: provides a structured workflow and templates to audit an AI agent “skill” directory for scope, triggers, tools/side-effects, and risks.
- Supported tasks:
- Inventory a skill directory (tree, file sizes, provenance hints)
- Evaluate triggers (frontmatter)
- Map commands/tooling and side effects
- Assess security/privacy/safety/supply-chain risks
- Produce a written report using a template
- Inputs it expects: a skill name/path, target agent environment + constraints, and intended usage context.
- Outputs it produces: a written audit report (template provided); optionally heuristic scan output from `scripts/scan_skill.sh`.
- Assumptions/dependencies: basic Markdown literacy; if using the script, a POSIX-ish shell + common CLI tools.
## 3) What It Does NOT Do (Or Should Not Be Used For)
- Explicit non-goals:
- Does not automatically “fix” skills; it guides a review and can suggest changes.
- Does not guarantee a skill is safe—only helps assess and document risks.
- Missing limitations (recommended additions):
- Treat scan outputs as sensitive; avoid pasting unredacted logs/config publicly.
## 4) Trigger Audit (Frontmatter)
- Trigger quality notes: specific (“review / interpret / audit an AI agent skill”), with clear objects of interest (`SKILL.md`, scripts, references, assets).
- False positives: may trigger for generic “review my prompt/tooling” requests that are not about skills.
- False negatives: could miss requests phrased as “validate this skill before install” unless the runner’s trigger matcher keys off the description’s second clause.
- Recommended rewrite (if any): optional—add “validate before installing/deploying” earlier in the description for stronger matching.
## 5) Tooling & Side-Effects Map
| Action | Where in skill | Side effects | Permissions | Risk | Safer alternative |
|---|---|---|---|---|---|
| Run `scripts/scan_skill.sh <dir>` | `scripts/scan_skill.sh` | Reads files and prints matching lines/file names | FS read | Output may include sensitive strings if shared | Run on a sanitized copy; redact output before sharing |
| Preview provenance files (first 120 lines) | `scripts/scan_skill.sh` | Prints file contents | FS read | Accidental secrets disclosure | Manually inspect locally; avoid sharing previews |
| Read templates/taxonomies | `references/` | None | FS read | Low | N/A |
## 6) Risks (Security / Privacy / Safety / Supply Chain)
| Risk | Category | Severity | Likelihood | Evidence | Mitigation |
|---|---|---|---|---|---|
| Accidental disclosure when sharing scan output | Privacy & data handling | Medium | Possible | `scan_skill.sh` prints previews and heuristic matches | Warn users to redact; avoid printing secret-like matching lines (implemented) |
| Overconfidence in “audit” result | Safety & integrity | Low | Possible | Skill is a framework, not a validator | Encourage verification and uncertainty markers |
## 7) Quality Review
- Correctness issues: none found (script is read-only; workflow is internally consistent).
- Completeness gaps: could add a short “When NOT to use” / “Redaction” callout earlier (partially addressed via note).
- UX / clarity issues: README now includes a concrete usage example for the script.
- Maintainability issues: minimal; content is cleanly split into `references/`.
## 8) Recommendations (Prioritized)
1. P0: Keep “treat output as sensitive” warnings prominent (done in `SKILL.md` + README).
2. P1: Continue improving `scan_skill.sh` to minimize leaking secrets (done by printing only filenames for secret-like patterns).
3. P2: Consider adding an explicit “When NOT to use” section (e.g., when the target environment forbids reading local files or when outputs can’t be shared safely).
## 9) Suggested Skill Diffs (Optional)
- Proposed changes (high level): additional redaction guidance and safer scan defaults.
- Files to edit: `agent/skills/skill-review-audit/SKILL.md`, `agent/skills/skill-review-audit/scripts/scan_skill.sh`, `agent/skills/skill-review-audit/README.md`, `agent/skills/skill-review-audit/README.zh-CN.md`.
README.md
# skill-review-audit
Use when a user asks to review, interpret, or audit an AI agent skill (SKILL.md plus bundled scripts/references/assets) for capabilities, triggering behavior, tool/command usage, safety & privacy risk, supply-chain provenance, quality gaps, and improvement recommendations; also use when validating a skill before installing or deploying it.
## What's included
- `SKILL.md`
- `scripts/` (optional)
- `references/` (optional)
- `assets/` (optional)
## Installation
> Installing a skill means your coding tool / agent runner can discover the `SKILL.md` inside it (typically via a `skills/` directory, or via a built-in “install from Git” feature).
### Option A: copy
From this repo root:
Set `SKILLS_DIR` to whatever skills folder your tool scans (examples: `~/.codex/skills`, `~/.claude/skills`, `~/.config/opencode/skills`, etc):
```bash
SKILLS_DIR=~/.codex/skills
mkdir -p "$SKILLS_DIR"
rm -rf "$SKILLS_DIR/skill-review-audit"
cp -R agent/skills/skill-review-audit "$SKILLS_DIR/skill-review-audit"
```
### Option B: symlink
From this repo root:
```bash
SKILLS_DIR=~/.codex/skills
mkdir -p "$SKILLS_DIR"
rm -rf "$SKILLS_DIR/skill-review-audit"
ln -s "$(pwd)/agent/skills/skill-review-audit" "$SKILLS_DIR/skill-review-audit"
```
### Option C: install from GitHub/Git via openskills
Prereqs for openskills:
- Requires Node.js (18+ recommended).
- No install needed if you use `npx openskills ...` (it will download and run).
- Optional global install: `npm i -g openskills` (or `pnpm add -g openskills`).
Install from a cloneable repo URL (do **not** use a GitHub `.../tree/...` subdirectory link):
```bash
npx openskills install https://github.com/okwinds/miscellany
```
When prompted, select `skill-review-audit` (repo path: `agent/skills/skill-review-audit`).
Verify / read back:
```bash
npx openskills list
npx openskills read skill-review-audit
```
### Option D: give your tool the GitHub link
Many coding tools can install/load skills directly from a GitHub/Git URL. If yours supports it, point it at this repo and select/target `agent/skills/skill-review-audit`.
### After install
Many tools require a restart / new session to re-scan skills.
## Usage
Run the bundled (read-only) scanner to quickly inventory a skill directory:
```bash
bash ./scripts/scan_skill.sh /path/to/target-skill
```
Treat the output as sensitive (it may surface tokens/keys depending on the target); redact before sharing.
README.zh-CN.md
# skill-review-audit
Use when a user asks to review, interpret, or audit an AI agent skill (SKILL.md plus bundled scripts/references/assets) for capabilities, triggering behavior, tool/command usage, safety & privacy risk, supply-chain provenance, quality gaps, and improvement recommendations; also use when validating a skill before installing or deploying it.
## 包含内容
- `SKILL.md`
- `scripts/`(可选)
- `references/`(可选)
- `assets/`(可选)
## 安装
> 安装 skill 的本质是:让你的编码工具 / Agent 运行器能发现这个目录里的 `SKILL.md`(通常是放进某个 `skills/` 目录,或使用工具内置的“从 Git 安装”能力)。
### 方式 A:复制安装
在仓库根目录执行:
把 `SKILLS_DIR` 改成你的工具会扫描的 skills 目录(示例:`~/.codex/skills`、`~/.claude/skills`、`~/.config/opencode/skills` 等):
```bash
SKILLS_DIR=~/.codex/skills
mkdir -p "$SKILLS_DIR"
rm -rf "$SKILLS_DIR/skill-review-audit"
cp -R agent/skills/skill-review-audit "$SKILLS_DIR/skill-review-audit"
```
### 方式 B:软链接安装
在仓库根目录执行:
```bash
SKILLS_DIR=~/.codex/skills
mkdir -p "$SKILLS_DIR"
rm -rf "$SKILLS_DIR/skill-review-audit"
ln -s "$(pwd)/agent/skills/skill-review-audit" "$SKILLS_DIR/skill-review-audit"
```
### 方式 C:用 openskills 从 GitHub/Git 安装
先准备 openskills:
- 需要 Node.js(建议 18+)。
- 不想安装:直接用 `npx openskills ...`(会自动下载并运行)。
- 想全局安装:`npm i -g openskills`(或 `pnpm add -g openskills`)。
从**可 clone 的仓库 URL** 安装(不要用 GitHub 的 `.../tree/...` 子目录链接):
```bash
npx openskills install https://github.com/okwinds/miscellany
```
安装时选择 `skill-review-audit`(仓库内路径:`agent/skills/skill-review-audit`)。
验证/读取:
```bash
npx openskills list
npx openskills read skill-review-audit
```
### 方式 D:直接给工具一个 GitHub 链接
不少编码工具支持“从 GitHub/Git URL 安装/加载 skill”。如果你的工具支持,指向本仓库并选择/定位到 `agent/skills/skill-review-audit`。
### 安装完成后
不少工具需要重启/新开会话,才会重新扫描 skills。
## 使用方法
运行内置的(只读)扫描脚本,快速盘点一个 skill 目录:
```bash
bash ./scripts/scan_skill.sh /path/to/target-skill
```
请把输出当作敏感信息对待(取决于目标目录,可能会扫到 token/密钥等);分享前务必脱敏/删改。
SKILL.md
---
name: skill-review-audit
version: 0.1.2
description: Use when a user asks to review, interpret, or audit an AI agent skill (SKILL.md plus bundled scripts/references/assets) for capabilities, triggering behavior, tool/command usage, safety & privacy risk, supply-chain provenance, quality gaps, and improvement recommendations; also use when validating a skill before installing or deploying it.
---
# Skill Review & Audit
Produce a **systematic, multi-dimensional review** of any skill directory (a `SKILL.md` plus optional `scripts/`, `references/`, `assets/`, and install metadata).
## Non-Mutating Constraint (Default)
- **Default is read-only**: do not create, delete, or modify any files (including `apply_patch`, `sed -i`, overwriting configs, auto-fixes, `git commit`, etc.).
- If the user wants changes applied, **ask for explicit human authorization first** and wait for a clear “yes, apply these edits” (or equivalent) before touching the filesystem.
- You may still propose fixes as text (recommendations or patch snippets), but **do not apply** them without authorization.
## Outcomes
- A clear description of what the skill teaches and *what it does not*.
- A map of **tooling + side effects** the skill may cause when followed (commands, network, file writes, permissions).
- A **risk assessment** (security, privacy, safety, supply chain) with mitigations.
- A **quality assessment** (correctness, completeness, maintainability, UX) with prioritized improvements.
- Optional scoring using `references/scoring-rubric.md`.
- A report formatted using `references/report-template.md`.
## Inputs To Request (If Missing)
- Skill identifier: name and/or filesystem path to the skill directory.
- Target agent environment (e.g. Codex CLI / Claude Code / other) and any constraints (offline, no web, sandboxed, etc.).
- Intended usage context (what kinds of user prompts should trigger it; what “done” looks like).
## Workflow (Do In Order)
### 0) Scope The Review
- Confirm whether the review is **(a)** informational only (read-only) or **(b)** includes proposing patches (still read-only unless explicitly authorized to apply).
- Define what “safe enough” means for the target environment (network allowed? can write files? secrets present?).
- Restate the **Non-Mutating Constraint** and ask for authorization if the user requests edits to be applied.
### 1) Inventory & Provenance
1. List the full directory tree and file sizes.
2. Identify install/provenance files (common: `.openskills.json`, `package.json`, `pyproject.toml`, git submodule markers).
3. Record:
- Skill root path
- Total file count
- Presence of `scripts/`, `references/`, `assets/`
- Any external source URL + install timestamp (if present)
4. Flag anything unexpected (executables, binaries, obfuscated blobs, huge files, symlinks pointing elsewhere).
Optional helper: run `scripts/scan_skill.sh` (read it first; it is intended to be read-only).
Note: `scan_skill.sh` may surface sensitive strings (e.g., tokens, private keys) depending on the target directory. Treat its output as sensitive; redact before sharing.
### 2) Trigger Contract (Frontmatter Audit)
Read `SKILL.md` YAML frontmatter and assess:
- **Name**: unique, stable, correctly scoped (not overly broad).
- **Description** (primary trigger): includes concrete triggers/symptoms; avoids vague “does everything”.
- **False positives/negatives**: prompts it might match incorrectly vs fail to match.
- **Overlap risk**: collisions with other skills (same domain, similar trigger phrases).
Output: “Trigger Strength” rating + rewrite suggestions.
### 3) Capability Model (What It Teaches)
Extract and summarize:
- Core tasks it claims to support.
- Preconditions and assumptions (tech stack, tools installed, access levels).
- Deliverables (expected outputs, formats, artifacts).
- Anti-scope (“When NOT to use”) and limitations (explicit or missing).
- Degree-of-freedom: where it’s prescriptive vs heuristic.
If the skill includes references, don’t assume the main SKILL.md is complete—sample or selectively read reference files to confirm scope.
### 4) Tooling & Side-Effects Map
Build a table of *everything the skill instructs the agent to do*:
- Shell commands (including examples).
- Network access (curl/wget, HTTP clients, package installs, API calls).
- File system writes (what paths, destructive operations, deletes).
- Privilege/permissions (sudo, elevated access, credential usage).
- External dependencies (libraries, CLIs, SaaS).
For each, record: intent, required permissions, risk, and safe alternatives (sandbox, dry-run, allowlists).
### 5) Security / Privacy / Safety Risk Assessment
Use `references/risk-taxonomy.md` to assess:
- **Prompt injection** exposure (especially if the skill fetches external content).
- **Command injection** risks (string interpolation into shell; unsafe copy/paste patterns).
- **Destructive operations** (rm -rf, overwriting, migrations, irreversible actions).
- **Secrets handling** (API keys, env vars, logs, redaction).
- **Supply-chain** risks (install scripts, unpinned deps, untrusted sources).
- **Data exfiltration** (uploading files, telemetry, “paste logs here” patterns).
Output: severity × likelihood per risk + mitigations + “safe-by-default” recommendations.
### 6) Quality & Correctness Review
- Verify examples for internal consistency (missing imports, wrong prop precedence, mismatched ARIA ids, etc.).
- Check for missing edge cases (cancellation, cleanup, concurrency, accessibility, i18n).
- Check “progressive disclosure” quality: is SKILL.md lean and navigational, with details in `references/`?
- Check for outdated or unstable advice (versions, APIs likely to change); suggest pinning and dates.
### 7) Maintainability & Operational Fit
- Structure: clear headings, searchable keywords, minimal duplication.
- Update strategy: versioning, ownership, changelog expectations (even if no file).
- Testability: are scripts tested? is there a validation workflow?
- Portability: OS assumptions, shell assumptions, tool availability.
### 8) Improvement Plan (Prioritized)
Provide:
- Quick wins (low effort / high impact).
- Structural changes (refactor into references, add scripts, add checklists).
- Safety hardening (guardrails, confirmations, allowlists).
- “Definition of Done” for the next iteration.
### 9) Produce The Report
Use `references/report-template.md` and keep:
- Facts separated from recommendations
- Explicit uncertainty markers when you did not verify something
- Concrete examples (commands, paths, prompts) where useful
## Red Flags — Stop And Re-check
- Only read `SKILL.md` and ignored `scripts/` / `references/`.
- Listed risks without mapping concrete commands/side effects.
- No provenance/supply-chain notes.
- No severity/likelihood distinction (everything “risky”).
- Suggested running scripts you did not read.
- Gave recommendations without tying them to a specific observed gap.
## Deep Checklist (Optional)
If you need a more exhaustive pass, use `references/review-checklist.md` and score with `references/scoring-rubric.md`.
references/report-template.md
# Skill Review Report Template
## 1) Snapshot
- Skill name:
- Skill path:
- Source/provenance:
- Files: (count, scripts/references/assets present?)
- Intended environment:
## 2) What It Does
- Primary purpose:
- Supported tasks:
- Inputs it expects:
- Outputs it produces:
- Assumptions/dependencies:
## 3) What It Does NOT Do (Or Should Not Be Used For)
- Explicit non-goals:
- Missing limitations (recommended additions):
## 4) Trigger Audit (Frontmatter)
- Trigger quality notes:
- False positives:
- False negatives:
- Recommended rewrite (if any):
## 5) Tooling & Side-Effects Map
| Action | Where in skill | Side effects | Permissions | Risk | Safer alternative |
|---|---|---|---|---|---|
| | | | | | |
## 6) Risks (Security / Privacy / Safety / Supply Chain)
| Risk | Category | Severity | Likelihood | Evidence | Mitigation |
|---|---|---|---|---|---|
| | | | | | |
## 7) Quality Review
- Correctness issues:
- Completeness gaps:
- UX / clarity issues:
- Maintainability issues:
## 8) Recommendations (Prioritized)
1. P0:
2. P1:
3. P2:
## 9) Suggested Skill Diffs (Optional)
- Proposed changes (high level):
- Files to edit:
references/review-checklist.md
# Skill Review Checklist (Deep)
Use this when the user asks for a *comprehensive* audit or when the skill will be widely deployed.
## A) Inventory & Structure
- [ ] Skill root contains `SKILL.md`.
- [ ] YAML frontmatter has only `name` and `description`.
- [ ] `scripts/`, `references/`, `assets/` are used appropriately (not everything dumped in SKILL.md).
- [ ] No unexpected binaries or opaque blobs.
- [ ] Large files are justified and navigable (TOC, selective load guidance).
## B) Trigger & Discoverability
- [ ] Description includes concrete trigger phrases / symptoms.
- [ ] Description avoids being so broad it triggers everywhere.
- [ ] “When NOT to use” guidance exists (or is recommended).
- [ ] Collision analysis: overlap with adjacent skills and likely prompt ambiguity.
## C) Behavioral Contract
- [ ] Clear inputs required from user.
- [ ] Clear outputs/deliverables (files, formats, artifacts).
- [ ] Preconditions and assumptions explicitly stated.
- [ ] Degree-of-freedom is appropriate (guardrails where fragile).
- [ ] “Verification” steps exist (tests, lint, dry-run).
## D) Bundled Scripts (If Any)
- [ ] Scripts are readable, small, and do one thing well.
- [ ] Defensive flags: `set -euo pipefail` (bash), timeouts, safe temp dirs.
- [ ] No hidden network calls unless explicitly required.
- [ ] No destructive defaults; destructive ops require explicit confirmation.
- [ ] Output is deterministic and parseable when helpful.
## E) Tool/Command Usage
- [ ] All commands are shown with safe defaults.
- [ ] Any required credentials are referenced safely (env vars, secret stores; no copy/paste tokens).
- [ ] Paths are parameterized; avoids writing into global/system dirs by default.
- [ ] “Dry-run” or “preview” exists where possible.
## F) Network & External Content
- [ ] Any browsing/fetching content is treated as untrusted.
- [ ] Prompt-injection mitigations exist (summarize → extract facts → decide; don’t execute copied commands blindly).
- [ ] External deps are pinned where possible; registries are trusted.
## G) Security / Privacy / Safety
- [ ] Data classification guidance exists (what can/can’t be shared).
- [ ] Redaction guidance exists for logs and config.
- [ ] Clear boundaries: what the agent may execute vs must ask before doing.
- [ ] Supply chain provenance is captured or recommended.
## H) Correctness & Examples
- [ ] Examples are internally consistent (imports, ids, API usage).
- [ ] Edge cases are acknowledged.
- [ ] “Common mistakes” section exists or is recommended.
- [ ] If guidance is time-sensitive, it includes dates or version constraints.
## I) Maintainability
- [ ] Minimal duplication between SKILL.md and references.
- [ ] Keywords for search are present in description and headings.
- [ ] Update process is suggested (how to evolve the skill safely).
references/risk-taxonomy.md
# Skill Risk Taxonomy (For Reviews)
Use this as a checklist when auditing *any* skill.
## Security
- **Command injection**: untrusted input interpolated into shell commands; `eval`; unsafe quoting.
- **Destructive operations**: deletes, overwrites, migrations, irreversible state changes.
- **Privilege escalation**: `sudo`, system config edits, credential store access.
- **Insecure defaults**: e.g. binding `0.0.0.0`, disabling TLS verification, permissive CORS.
## Privacy & Data Handling
- **Secrets exposure**: API keys in logs, examples that print env vars, copying tokens into chat.
- **Data exfiltration**: uploading files/logs to third parties; “paste full config here”.
- **Sensitive data retention**: writing outputs to shared locations, leaving temp files.
## Safety & Integrity
- **Prompt injection**: instructions to fetch external content and follow it blindly.
- **Unverified execution**: “run this script” without review or validation steps.
- **Ambiguous authority**: wording that discourages verification (“always do X”, “skip checks”).
## Supply Chain
- **Unpinned dependencies**: `latest`, floating versions, untrusted registries.
- **Install-time scripts**: `postinstall`, curl | bash patterns, remote installers.
- **Provenance gaps**: no source URL, unclear origin, no update cadence.
## Reliability & UX
- **Non-determinism**: relies on external services without retries/caching; race conditions.
- **Environment coupling**: OS-specific assumptions; missing prerequisites.
- **Context bloat**: large SKILL.md body that crowds out task context.
## Rating Guidance (Simple)
- **Severity**: impact if it goes wrong (Low/Med/High/Critical)
- **Likelihood**: how easy/likely to trigger (Rare/Possible/Likely)
references/scoring-rubric.md
# Skill Scoring Rubric (Optional)
Score each dimension 1–5 (1 = poor, 3 = acceptable, 5 = excellent). Add short evidence notes.
## 1) Trigger Quality
- 1: vague, overly broad, many false triggers
- 3: reasonable triggers, some ambiguity
- 5: precise triggers + anti-triggers, low collision risk
## 2) Safety & Risk Controls
- 1: risky commands/exfil patterns, no guardrails
- 3: basic cautions, partial mitigations
- 5: safe-by-default, confirmations/allowlists, clear boundaries
## 3) Correctness & Reliability
- 1: examples inconsistent/outdated, missing verification steps
- 3: mostly consistent, some gaps
- 5: verified flows, edge cases covered, clear verification
## 4) Clarity & UX
- 1: confusing, missing inputs/outputs, hard to follow
- 3: usable but could be tighter
- 5: crisp workflow, predictable outputs, minimal ambiguity
## 5) Maintainability
- 1: bloated, duplicated, unstructured
- 3: acceptable structure, some cleanup needed
- 5: progressive disclosure, references well organized, easy to extend
## Reporting
Provide:
- Total (optional): sum / 25
- Top 3 issues (P0)
- Top 3 improvements (P0/P1)
scripts/scan_skill.sh
#!/usr/bin/env bash
set -euo pipefail
skill_dir="${1:-}"
if [[ -z "${skill_dir}" ]]; then
echo "usage: scan_skill.sh /path/to/skill-dir" >&2
exit 2
fi
if [[ ! -d "${skill_dir}" ]]; then
echo "error: not a directory: ${skill_dir}" >&2
exit 2
fi
echo "== Skill Directory =="
echo "${skill_dir}"
echo
echo "== Tree (depth 3) =="
find "${skill_dir}" -maxdepth 3 -print | sed 's|^| - |'
echo
echo "== File Sizes (top 30) =="
if command -v gdu >/dev/null 2>&1; then
gdu -ah "${skill_dir}" | sort -hr | head -30
else
du -ah "${skill_dir}" | sort -hr | head -30
fi
echo
echo "== Provenance Files (if present) =="
for f in ".openskills.json" "package.json" "pyproject.toml" "requirements.txt" "Pipfile" "Gemfile" "go.mod"; do
if [[ -f "${skill_dir}/${f}" ]]; then
echo "-- ${f}"
sed -n '1,120p' "${skill_dir}/${f}" || true
echo
fi
done
echo "== Risky Pattern Scan (heuristic) =="
line_patterns=(
"rm -rf"
"mkfs"
"dd if="
"sudo "
"curl .*\\|.*sh"
"wget .*\\|.*sh"
"Invoke-WebRequest"
"powershell"
"ssh "
"scp "
"kubectl"
"docker"
"npm install"
"pnpm add"
"pip install"
"brew install"
"http://"
"https://"
)
sensitive_patterns=(
"API_KEY"
"SECRET"
"TOKEN"
"BEGIN PRIVATE KEY"
)
if command -v rg >/dev/null 2>&1; then
for p in "${line_patterns[@]}"; do
rg -n --hidden --no-heading -S --color never "${p}" "${skill_dir}" && echo || true
done
# For secret-like patterns, avoid printing matching lines (which may contain values).
for p in "${sensitive_patterns[@]}"; do
rg -n --hidden --no-heading -S --color never --files-with-matches "${p}" "${skill_dir}" && echo || true
done
else
for p in "${line_patterns[@]}"; do
grep -RIn --exclude-dir=.git -E "${p}" "${skill_dir}" && echo || true
done
# For secret-like patterns, avoid printing matching lines (which may contain values).
for p in "${sensitive_patterns[@]}"; do
grep -RIl --exclude-dir=.git -E "${p}" "${skill_dir}" && echo || true
done
fi