Skip to content
Back to skills

Spec Scout

ASecurity

Audit a repo's OpenSpec adoption and report drift between openspec/specs/ and the code. Use when the user says "spec-scout", "audit specs", "are our specs current" or "check spec drift".

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 20, 2026
ai-agentsgobashgit

Works with

  • cli

Security analysis

A100/100

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

Scanned October 20, 2026

npx -y skills add oneafrikan/the-grid --skill spec-scout --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spec Scout?

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

Security grade badge for Spec Scout
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oneafrikan-spec-scout/badge)](https://www.skillsdirectory.com/skills/oneafrikan-spec-scout)

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: spec-scout
description: Audit a repo's OpenSpec adoption and report drift between openspec/specs/ and the code. Use when the user says "spec-scout", "audit specs", "are our specs current" or "check spec drift".
---

# spec-scout

The `skill-scout` shape, pointed at specs instead of skills: **survey and
propose, never act.** Reports adoption status and drift; does not run
`openspec init`, does not write specs, does not edit `openspec/`. The user
decides what to fix — and fixes go through the normal
`/openspec-propose` → review → `/openspec-apply-change` flow, not through this
skill.

Convention reference: `project-factory/templates/_common/SPECS.md`.
Requires the `openspec` CLI only for the optional validation step (step 4);
everything else is filesystem reads and git.

## Scope

Default target is the current repo. If the user names a directory of repos
(e.g. `~/code`), scan each immediate subdirectory that is a git repo and report
a summary table first, then detail only the ones with findings.

## How to run

### 1. Classify adoption

For each target repo, check for `openspec/`:

| State | Signal |
|---|---|
| **none** | No `openspec/` directory |
| **initialised** | `openspec/` exists, `specs/` empty or absent |
| **active** | `openspec/specs/*/spec.md` exists |

For **none**, say so in one line and stop there for that repo — a repo with no
specs has no drift to report, only a decision to make. Don't lecture.

### 2. Inventory

For an **active** repo, list:

- Capabilities: each `openspec/specs/<capability>/spec.md`.
- In-flight changes: each `openspec/changes/<id>/` (excluding `archive/`).
- Archived changes: count from `openspec/changes/archive/`.

### 3. Drift signals

Read `sections/drift-signals.md` for the signals to check.

### 4. Validate (optional)

If the `openspec` CLI is installed, run its own validation and fold the output
in:

```bash
openspec validate 2>&1 || true
```

If the CLI is missing, note it and skip — do not install it, and do not
hand-roll the check.

### 5. Report

```
## <repo> — <state>

Capabilities: N   In-flight: N   Archived: N

| Finding | Where | Evidence | Suggested next step |
|---|---|---|---|
```

Rules for the report:

- Every finding cites a file path, and a line number where one applies.
- "Evidence" is what you observed, not what you infer from it.
- Rank by cost of being wrong: contradicted specs first, then stale changes,
  then coverage gaps.
- Separate **confirmed** (you read both sides) from **suspected** (heuristic
  match only). Never present a heuristic hit as a confirmed contradiction.
- End with the exact commands the user would run, but **do not run them**:

```bash
openspec init                    # adopt (state: none)
/openspec-propose <change>       # fix drift the normal way
/openspec-archive-change         # close out a finished change
```

## Notes

- Absence of a spec is not automatically a defect. `SPECS.md` prescribes
  incremental adoption, so a brownfield repo with three specs and forty modules
  is following the convention correctly, not failing it. Report coverage as a
  fact; only call it a gap where the code is actively changing.
- Never edit `openspec/specs/` to "fix" drift. Deltas go in a change folder —
  editing current-truth specs directly is exactly the failure mode the
  convention prevents.
- Keep the report short enough to read in one screen per repo. Detail belongs
  behind the file paths.

## Sections
Read a section only when its condition applies; do not preload them.
- sections/drift-signals.md: read when running step 3 (drift signals)

Files in this skill

  • SKILL.md3.5 KB
  • sections/drift-signals.md1.7 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.