score
Manually re-invokes the configured reviewer-gates dispatch pipeline against one or more SpecScore artifacts (Ideas, Features, Plans), outside the…
Skill by specscore
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/specscore-score
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/score
What's inside
- Skill name
score- Description
- Manually re-invokes the configured reviewer-gates dispatch pipeline against one or more SpecScore artifacts (Ideas, Features, Plans), outside the producer-skill exit context. Wrapper-only: carries no reviewer logic of its own; defers entirely to `gates.<stage>.reviewers` in `specscore.yaml`. Surfaces the grade + findings produced by the shared reviewer-gates layer; `Approved` means `grade ≥ threshold` (configurable, default `B`). Skips `type: human` entries (manual invocation cannot suspend for human approval). Supports single-artifact, multi-artifact, and recursive tree-wide invocation; `--against REF` controls the diff baseline supplied to AI reviewers (default `HEAD`). Ephemeral by default; `--save` persists a report and `--badge` injects an A–F badge (both opt-in). Triggers: "specstudio:score", "/score", "score this", "re-score this".
- License
- MIT
- Instructions
- 330 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Score
Manual surface for the [`reviewer-gates`](../../spec/features/reviewer-gates/README.md) dispatch pipeline. Implements the [Score Command Feature](../../spec/features/score-command/README.md) (Phase 1 of the [`manual-review-and-score-commands`](../../spec/ideas/manual-review-and-score-commands.md) Idea).
Producer category: **NOT a Producer.** This is a *signal skill* — it produces no canonical artifact under `spec/`. Read-only on `spec/`; writes nothing; emits no events. The Feature's `REQ: no-file-writes` and `REQ: no-new-config` are load-bearing — do not violate them under any circumstances.
## When to Use
- Mid-iteration self-review before re-running a producer skill (which would emit events and update status).
- Audit of an artifact the user did not author.
- Triage across the spec tree to find what needs attention next.
- Pre-PR sanity check on a draft the user paused on.
Do NOT invoke this skill in response to any producer-skill event (`feature.specified`, `idea.approved`, `plan.approved`, etc.). Manual invocation is the only entry point. (`REQ: invocation-triggers`.)
## Anti-Patterns
- **Carrying reviewer logic inside this skill.** Reviewers come exclusively from `gates.<stage>.reviewers` in `specscore.yaml`. No hardcoded baseline. No silent injection. No fallback. (`REQ: reuse-reviewer-gates-pipeline`.)
- **Writing any file under `spec/`, `.specscore/`, or any other repo path.** This skill is read-only. (`REQ: no-file-writes`.)
- **Emitting a SpecStudio event, or writing a file, on the default run.** The default `/score` run is ephemeral. Persistence happens only under the explicit opt-in flags `--save` (report) and `--badge` (badge injection), and manual runs propose the write and ask before applying it. (`REQ: no-file-writes`.)
- **Adding a new key to `specscore.yaml` or any new dotfile or environment variable.** All reviewer behavior is governed by the existing `gates:` block defined by `reviewer-gates`. (`REQ: no-new-config`.)
- **Suspending the user's session waiting for a `type: human` reviewer.** Skip those silently with a one-line note per artifact. (`REQ: human-reviewers-skipped`.)
- **Refusing the invocation when `gates:` is absent.** This skill is a signal skill, not a gate. Report every artifact as skipped, exit zero with the no-verdict warning. (`REQ: missing-gates-block-handling`.)
## Invocation Shape
```
specstudio:score [PATHS...] [-r|--recursive] [--against REF] [--verbose] [--yes]
```
| Argument / Flag | Semantics |
|---|---|
| `PATHS...` (positional, optional) | Files, directories, or glob patterns relative to repo root (or absolute). Empty list → defaults to `spec/`. |
| `-r`, `--recursive` | Descend into sub-artifacts beneath directory entries. Without this flag, sub-artifacts MUST NOT be included. |
| `--against REF` | Diff baseline supplied to `type: ai` reviewers. Default: `HEAD`. |
| `--verbose` | In multi-artifact mode, print per-artifact detail in addition to the summary table. No-op in single-artifact mode. |
| `--yes` | Skip the threshold confirmation prompt regardless of resolved-artifact count. Does NOT skip any other confirmation. |
Any unknown flag (anything starting with `-` that is not in the table above) MUST cause the skill to refuse to run with a usage error and exit non-zero. Do NOT silently ignore unknown flags. (`REQ: invocation-shape`.)
## Pipeline Overview
1. **Parse arguments** — fail fast on unknown flags.
2. **Resolve paths** — empty → `spec/`; directories → `README.md`; globs → shell expansion; `-r` → recursive descent; deduplicate; preserve first-appearance order.
3. **Map each artifact to a stage** — `spec/ideas/` → `ideate`; `spec/features/<slug>/README.md` → `specify`; `spec/plans/` → `plan`; anything else → skipped.
4. **Confirm-at-threshold** — if `-r` AND resolved count > 10 AND no `--yes`, prompt for explicit approval before dispatch.
5. **Per-artifact, in resolved order, serially**:
1. Load `gates.<stage>.reviewers` via the shared loader.
2. Filter out `type: human` entries; record a one-line skip note per artifact.
3. Compute the unified diff `git diff <REF> -- <artifact-path>`.
4. Dispatch surviving `type: ai` entries via the shared runner, passing the artifact body + diff to each.
5. Collect the verdict (`Approved` | `Issues Found`).
6. **Emit output** — per-artifact detail (single-artifact) or summary table + footer (multi-artifact, with `--verbose` adding per-artifact detail).
7. **Exit** — zero if every reviewed artifact returned `Approved`, non-zero if any returned `Issues Found`, zero with no-verdict warning if every artifact was skipped.
The skill writes nothing in `spec/`; emits no events. The single user-facing side effect is the terminal output and the exit code (plus the report/badge only under `--save` / `--badge`).
> **Grade dependency.** The verdict this skill surfaces is whatever the shared reviewer-gates runner returns. The steps below describe the `Approved | Issues Found` shape that `reviewer-gates` returns today. Once `reviewer-gates` ships the grade as its verdict currency — the findings → A–F aggregation plus the configurable Approve threshold (default `B`) — this skill surfaces that grade and derives `Approved` as `grade ≥ threshold`, with no change to path resolution, dispatch, or the no-writes guarantee below.
## Step 1 — Parse Arguments
Tokenize the invocation. Distinguish positional `PATHS` from flags.
- Anything starting with `-` is a flag. The recognized flags are exactly `-r`, `--recursive`, `--against`, `--verbose`, `--yes`. Unknown flags MUST refuse the invocation. (`REQ: invocation-shape`.)
- `--against` MUST take a value (`--against REF` or `--against=REF`). A bare `--against` without a value MUST refuse.
- `-r` and `--recursive` are equivalent.
- `--verbose`, `--yes` are boolean flags.
- Everything else is a positional `PATHS` entry, in user-supplied order.
If parsing fails, print a one-line usage error and exit non-zero. Do not proceed to path resolution.
## Step 2 — Resolve Paths
The output of this step is `resolved_paths` — an ordered, deduplicated list of artifact paths, each tagged with whether it was skipped (and why) before any reviewer dispatch.
### 2a — Default empty PATHS
If `PATHS` is empty, treat it as the single entry `spec/`. (`REQ: empty-paths-default`.)
### 2b — Expand each PATHS entry, in user-supplied order
For each entry `p` in `PATHS`:
1. **If `p` contains a glob character (`*`, `?`, `**`)**: expand using shell-glob semantics against the repo working tree. If the expansion produces zero matches, refuse the entire invocation with `Error: glob pattern '<p>' matched no files in the working tree`; exit non-zero. (`REQ: glob-expansion`.) Add each expansion result (in lexicographic order) to the working list, marked as a "file" entry — globs do NOT recurse on their own.
2. **Else if `p` resolves to a directory**:
- If `<p>/README.md` exists, add `<p>/README.md` to the working list, marked as a "directory-readme" entry.
- If `<p>/README.md` does NOT exist, record the directory as **skipped** with reason `(no README.md in directory)` and continue with remaining entries. (`REQ: directory-resolves-to-readme`.)
- If `-r` is supplied, ALSO add (after the README) every reviewable sub-artifact beneath `<p>` per the patterns in `artifact-to-stage-mapping` (Step 3), in lexicographic order. (`REQ: recursive-descent`.) Reviewable patterns are:
- `<p>/ideas/*.md` (excluding `<p>/ideas/README.md`)
- `<p>/ideas/seeds/*.md`
- `<p>/features/*/README.md`
- `<p>/plans/*.md` (excluding `<p>/plans/README.md`)
3. **Else if `p` resolves to a regular file**: add `p` to the working list, marked as a "file" entry. `-r` is a no-op for file entries (a file has nothing beneath to recurse into) — accept silently per the Feature's Not Doing list.
4. **Else** (`p` does not resolve): refuse the entire invocation with `Error: path '<p>' does not exist`; exit non-zero. (Globs are handled in step 1; reaching this branch means a literal path that does not resolve.)
### 2c — Deduplicate, preserving first-appearance order
Walk the working list. Build `resolved_paths` by appending each entry the first time it appears (key = absolute path of the artifact). Subsequent appearances of the same absolute path MUST be dropped. The order in `resolved_paths` is the order of FIRST appearance in the working list. (`REQ: deduplication-and-order`.)
## Step 3 — Map Each Artifact to a Stage
For each entry in `resolved_paths`, compute its stage using the canonical mapping (`REQ: artifact-to-stage-mapping`):
| Path pattern (relative to repo root) | Stage |
|---|---|
| `spec/ideas/<slug>.md` (not `spec/ideas/README.md`) | `ideate` |
| `spec/ideas/seeds/<slug>.md` (not `spec/ideas/seeds/README.md`) | `ideate` |
| `spec/features/<slug>/README.md` | `specify` |
| `spec/plans/<slug>.md` (not `spec/plans/README.md`) | `plan` |
Any other path — including index `README.md` files at `spec/README.md`, `spec/features/README.md`, `spec/ideas/README.md`, `spec/plans/README.md`, and anything under `spec/research/` — MUST be tagged **skipped** with reason `(no gate configured for this artifact type)`. Do NOT dispatch any reviewer for skipped artifacts. Continue with remaining entries.
## Step 4 — Confirm-at-Threshold
After Step 3, count the artifacts that are NOT yet tagged skipped — call this `reviewable_count`.From specscore/specstudio-skills, MIT.
More from specscore/specstudio-skills
- 0.479score
plan
specscore
Turns an approved SpecScore Feature or Idea into a lint-clean Plan artifact at spec/plans/<slug>.md — an ordered list of tasks where each task references one…
SkillCFreshness: CClaude Code +9 - 0.479score
specify
specscore
Turns an approved SpecScore Idea (or a clear buildable intent) into a SpecScore Feature with requirements and Given/When/Then acceptance criteria at…
SkillCFreshness: CClaude Code +9 - 0.479score
consilium
specscore
Drains captured sidekick (sideline-idea) seeds and produces deterministic verdicts via a 5-stage pipeline: CLI gather → researcher agent → 9-role parallel…
SkillCFreshness: CClaude Code +9 - 0.479score
ideate
specscore
Refines raw ideas into SpecScore Idea artifacts through structured divergent and convergent thinking.
SkillCFreshness: CClaude Code +9 - 0.474score
pull-request
specscore
Gate-and-create-one-PR twin of the ship skill.
SkillCFreshness: CClaude Code +9 - 0.474score
recap
specscore
Consumes an approved SpecScore Feature plus the latest `specstudio:verify` report at HEAD and produces a per-AC drift report at…
SkillCFreshness: CClaude Code +9 - 0.474score
relocate-idea
specscore
Thin wrapper over the `specscore idea relocate` CLI verb.
SkillCFreshness: CClaude Code +9 - 0.474score
ship
specscore
Terminal skill of the SpecStudio pipeline.
SkillCFreshness: CClaude Code +9 - 0.474score
sidekick
specscore
Captures a sideline idea as a lint-clean seed at spec/ideas/seeds/<slug>.md without derailing the host task.
SkillCFreshness: CClaude Code +9 - 0.474score
verify
specscore
Consumes an approved SpecScore Feature and produces a machine-checkable per-AC verdict report at spec/features/<feature-slug>/_verify/<sha>.md.
SkillCFreshness: CClaude Code +9 - 0.474score
close
specscore
Retires a single SpecScore artifact — an Idea, Feature, or sidekick seed — by driving the appropriate `specscore <kind> change-status` CLI verb with an…
SkillCFreshness: CClaude Code +9 - 0.474score
implement
specscore
Turns an approved SpecScore Plan into focused, AC-traceable source-code changes by dispatching one subagent per task in parallel batches computed from the…
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 7
- Last commit (this folder)
- May 29, 2026 (5 months ago)
- Last release
- Jun 6, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/specscore/specstudio-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from specscore
- 0.479score
specify
specscore
Turns an approved SpecScore Idea (or a clear buildable intent) into a SpecScore Feature with requirements and Given/When/Then acceptance criteria at…
SkillCFreshness: CClaude Code +9 - 0.479score
consilium
specscore
Drains captured sidekick (sideline-idea) seeds and produces deterministic verdicts via a 5-stage pipeline: CLI gather → researcher agent → 9-role parallel…
SkillCFreshness: CClaude Code +9 - 0.479score
ideate
specscore
Refines raw ideas into SpecScore Idea artifacts through structured divergent and convergent thinking.
SkillCFreshness: CClaude Code +9 - 0.479score
plan
specscore
Turns an approved SpecScore Feature or Idea into a lint-clean Plan artifact at spec/plans/<slug>.md — an ordered list of tasks where each task references one…
SkillCFreshness: CClaude Code +9 - 0.474score
init
specscore
Bootstraps a SpecScore-managed project in one wizard-driven step.
SkillCFreshness: CClaude Code +9 - 0.474score
implement
specscore
Turns an approved SpecScore Plan into focused, AC-traceable source-code changes by dispatching one subagent per task in parallel batches computed from the…
SkillCFreshness: CClaude Code +9
Cite this page
score skill. Agent Mart. https://agentmart.dev/skills/specscore-score (last updated 2026-10-24)