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.
68
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
The output of a prompt-engineer run: the confirmed REFINED_PROMPT.md
rewritten as a prompt ready to execute, written next to its input. Every
section below is required. scripts/check_engineered.py <refined> <engineered>
must exit 0 on this document before it is returned.
The prompt itself, organised in the contract blocks below, in this order.
Keep only the blocks the input gives content for: a block the user declared
not applicable is omitted, never filled with a plausible default (R3,
R18). Every sentence comes from the input; no locked decision may be
contradicted. No reasoning-scripting phrase and no request to reproduce
internal reasoning — see the anti-pattern checklist in
references/PROMPTING_RULES.md (R9, R10); the checker rejects them here.
The outcome, stated before any method (R1).
The environment and the sources, with their priority when they conflict (R4, R15).
When to use which tool, when not to (R21).
What proceeds autonomously, what needs approval first (R23).
Observable checks, proportionate to the risk, reported as evidence (R25, R27).
What the final deliverable contains (R29).
The observable condition that ends the work (R26).
One entry per change made to the input text, each citing at least one rule
of references/PROMPTING_RULES.md by number.
The input's lock register, copied byte-identical — superseded entries included, still struck-through.
Only residual tensions inside covered blocks — e.g. two locks that pull in
different directions, both kept verbatim. Never a block left uncovered: that
input is rejected and goes back to prompt-loop. n/a when there is none.
n/ahigh
.tessl-plugin
rules
skills
handoff
handoff-skill
openspec-apply-change
openspec-archive-change
openspec-explore
openspec-propose
openspec-sync-specs
plan-judge
plan-mode
prompt-engineer
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