close
Retires a single SpecScore artifact — an Idea, Feature, or sidekick seed — by driving the appropriate `specscore <kind> change-status` CLI verb with an…
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-close
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: writing, productivity
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/close
What's inside
- Skill name
close- Description
- Retires a single SpecScore artifact — an Idea, Feature, or sidekick seed — by driving the appropriate `specscore <kind> change-status` CLI verb with an optional/required `--note`, never by hand-editing. One artifact, one change-status call: the status transition, the `## Resolution` note, any relocation, and the index sync all happen atomically in that single verb. Negative transitions (e.g. a seed `Rejected`) require a reason. Close confirms the terminal status, drives the verb, and branches on its exit code — it never edits the `**Status:**` line, frontmatter, `type:`, or an index row, even on CLI failure. Trigger: "close", "/close", "specstudio:close", "retire this artifact".
- License
- MIT
- Instructions
- 138 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Close
Retire one SpecScore artifact when its work is done. `close` is a thin driver
over the `specscore <kind> change-status` CLI verbs: it resolves the artifact's
kind, confirms the terminal status with the user, captures a reason when one is
required, and performs **exactly one** `change-status` call. That single call
does the status rewrite, writes any `## Resolution` note (`--note`), relocates a
seed to `archived/`, and syncs the index — atomically, with rollback on failure.
**Load-bearing invariant:** `close` NEVER hand-edits status. Every transition
goes through the CLI verb — not as a primary path, and not as a fallback on
failure. A hand-edit anywhere is a contract violation.
Implements the [Close Skill Feature](../../spec/features/skills/close/README.md).
## When to Use
- A single Idea, Feature, or sidekick seed has reached end-of-life (shipped,
superseded, rejected, or parked) and the user wants to retire it.
- The user types `/close <artifact>` or asks to retire/close/reject an artifact.
**Refuse and redirect when:**
- The invocation does not resolve to exactly one existing artifact, or resolves
ambiguously to more than one kind → stop and ask the user which artifact;
write nothing. (AC: `resolves-kind-and-verb`)
- The transition would be illegal for the resolved artifact (the CLI returns
exit `4`) → surface the current status and the legal source set; do not
retry, do not hand-edit. (AC: `surfaces-illegal-transition`)
## Kind → verb → terminal statuses
`close` resolves the artifact's **kind by location**, which selects the verb and
the candidate terminal statuses:
| Kind | Resolved at | Verb | Candidate terminals |
|---|---|---|---|
| Idea | `spec/ideas/<slug>.md` | `specscore idea change-status` | `Implemented`, `Rejected`, `Stale` |
| Feature | `spec/features/<id>/README.md` | `specscore feature change-status` | `Deprecated` |
| sidekick seed | `spec/ideas/seeds/<slug>.md` | `specscore sidekick change-status` | `Implemented`, `Rejected`, `Stale` |
Archival is **orthogonal to status** — it is not a terminal status. An artifact is closed to one of the terminals above and *retains* that status when filed away; filing it out of active view is a separate archive action, never a `change-status --to=Archived` call.
(Resolving the kind is a filesystem check — **not** a CLI call. `close` does not
query the CLI and then call it again.)
## The close flow
1. **Resolve the artifact and kind** (REQ `resolve-artifact-kind`). Take the
slug / feature-id / path argument and resolve it by location to exactly one
of the three kinds above. If it resolves to nothing, or ambiguously to more
than one kind, STOP and ask the user — never guess.
2. **Present the candidate terminals and confirm** (REQ
`confirm-terminal-before-close`). Closing is terminal, so present the
candidate terminal status(es) for the resolved kind and obtain an **explicit**
user choice. Never auto-select a terminal status.
3. **Capture the reason** (REQ `reason-for-negative-transitions`).
- For a **negative** transition (an Idea or seed `Rejected`), a reason is
**mandatory**. Collect it up front and pass it via `--note`. Do not invoke
the verb without it — the CLI also enforces this with exit `2`, but
collecting it first avoids a wasted round-trip.
- For a **passive-decay** transition (an Idea or seed `Stale` — nobody decided
against it, it simply was never carried forward), OFFER to record an
optional `--note` (e.g. why it lost relevance).
- For a **positive/neutral** transition (`Implemented` / `Deprecated`), OFFER
to record an optional `--note` (the rationale or where the work shipped).
- **When `close` is invoked by another skill** (non-interactive), the reason
MUST be supplied by the caller as an explicit argument. `close` MUST NOT
fabricate or auto-generate a reason for a reason-required transition; if the
caller passed none, refuse and surface the requirement. (AC:
`ai-caller-must-pass-reason`)
4. **Drive the verb — one call** (REQ `cli-only-transition`). Invoke exactly one
`specscore <kind> change-status <id> --to=<status> [--note <markdown>]`. That
single call atomically performs the status rewrite, the `## Resolution` note
write, any seed relocation + `type:` tag, and the `spec lint --fix` index
sync, with rollback on any failure. Do **not** issue a second mutating call,
a follow-up `edit`, or a manual index fix-up.
> **Single-call guardrail.** If a future need ever makes one call
> insufficient to close atomically (multi-artifact, cross-repo, or a
> transition the CLI can't express as one verb), that is the signal to add a
> dedicated `specscore close` command in the CLI — **not** to multi-call from
> this skill.
5. **Branch on the exit code** (REQ `branch-on-cli-exit`) — and NEVER fall back
to a hand-edit on any non-zero:
| Exit | Meaning | Action |
|---|---|---|
| `0` | success | Surface the verb's `<id>: <from> → <to>` line. Done. (AC: `closes-via-cli-on-success`) |
| `1` | archive collision | Surface the conflict; stop. |
| `2` | invalid args / missing required reason | Collect the reason and retry, or correct `--to`. |
| `3` | artifact not found | Surface; stop. |
| `4` | illegal transition | Surface the current status + legal source set; stop. |
| `10` | rollback applied (lint/IO) | Surface the error; stop. |
| `127` | CLI missing | `/specscore:install`, then retry. |
| `8` | CLI too old | upgrade, then retry. |
## Kind availability (REQ `seed-close-requires-verb`)
Closing a **seed** depends on the `cli/sidekick/change-status` verb (shipped in
`specscore-cli` ≥ v0.12.0). If the installed `specscore` lacks it (exit `127` /
`8` on the `sidekick change-status` call), surface install/upgrade guidance —
do NOT hand-edit the seed as a workaround. Idea and Feature closes are
unaffected (their `change-status` verbs predate this).
## Not Doing
- **Bulk close.** One artifact per invocation. Closing several in one call
(e.g. a batch of seeds) is out of scope for the MVP — it is N invocations.
- **Reopen / un-close.** `close` only moves an artifact to a terminal status;
reversing a close is not its job.
- **Deploy, verify, recap, or plan side effects.** `close` records a terminal
status and nothing else.
## VerificationFrom specscore/specstudio-skills, MIT.
More from specscore/specstudio-skills
- 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
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
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
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
score
specscore
Manually re-invokes the configured reviewer-gates dispatch pipeline against one or more SpecScore artifacts (Ideas, Features, Plans), outside the…
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
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 - 0.474score
init
specscore
Bootstraps a SpecScore-managed project in one wizard-driven step.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 7
- Last commit (this folder)
- Jun 17, 2026 (4 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
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
ideate
specscore
Refines raw ideas into SpecScore Idea artifacts through structured divergent and convergent thinking.
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
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.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
close skill. Agent Mart. https://agentmart.dev/skills/specscore-close (last updated 2026-10-24)