Spec-driven development on OpenSpec, with mechanical spec-as-source enforcement: a custom 'spec-as-source' OpenSpec schema adds file-ownership (targets) and test-verification ([@test]) metadata to every capability spec, three scripts (link check, ownership check, manifest build) keep code and specs from drifting apart, plus requirement-gathering, spec-writer, work-review, and a session-handoff skill with a proactive context-warning hook.
73
92%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
This document is the loop's state. Everything the loop knows lives here — current round, scores, open questions, locked decisions — not in conversation memory. Instantiate it at the start of a prompt-loop session and update it every round; it is an artifact of the conversation, not a repo deliverable.
Original prompt (verbatim, never edited):
<the user's incoming prompt, quoted exactly as received>
Repeat this whole section once per round, in order. Do not rewrite or delete earlier rounds — they are the audit trail.
The full text of this round's prompt revision. Round 1 restates the
original prompt unchanged. Every revision MUST carry all entries of the
## Locked register forward unchanged. Any information the revision needs
but the user never gave is marked n/a or listed as an open question
below — never invented.
Score against SCORING_RUBRIC.md. Every score above 0 requires a verbatim
quote from this round's prompt revision as evidence — no quote, no points.
| Dimension | Score (0–2) | Evidence (verbatim quote) |
|---|---|---|
| Objective clarity | ||
| Scope boundaries | ||
| Verifiability of outcomes | ||
| Completeness of constraints and edge cases | ||
| Absence of invented or assumed facts |
Total: <0–10> — Decision-tree band: <9–10 proceed / 6–8 targeted questions / 0–5 broad re-elicitation>
Questions for the interview phase, derived from the dimensions that scored
below 2 this round. Ask them ONE at a time; record each answer as a new
entry under ## Locked before asking the next.
User-confirmed decisions, recorded verbatim — the exact answer or approved summary line, not a paraphrase. Every rewrite MUST carry these forward unchanged, and later questions MUST NOT reopen or contradict them.
A lock changes only when the user spontaneously overrides it: record the
new decision as a new entry marked as superseding, and keep the old entry
struck-through (~~old text~~ — superseded by L<n> in round <N>) for
audit. Never delete a lock.
.tessl-plugin
skills
handoff
handoff-skill
openspec-apply-change
openspec-archive-change
openspec-explore
openspec-propose
openspec-sync-specs
prompt-loop
requirement-gathering
spec-as-source-setup
templates
openspec-schema
spec-as-source
templates
spec-ci-sync
spec-loop
spec-rebuild
spec-verify
spec-writer
work-review