aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-29 18:44:30 -0500
committerCraig Jennings <c@cjennings.net>2026-05-29 18:44:30 -0500
commitbb28cfa331d3cba9ae9f265f7c448b5bd6b4fa6c (patch)
treea0f104a12f1efa533a4fd7a98262366e15bab3bc
parent7355d21d9a36716afbeeb7d63de58dff302f44c1 (diff)
downloadrulesets-bb28cfa331d3cba9ae9f265f7c448b5bd6b4fa6c.tar.gz
rulesets-bb28cfa331d3cba9ae9f265f7c448b5bd6b4fa6c.zip
feat(workflows): add -spec.org precondition to spec-review and spec-response
Both workflows now check that the file under review (or the spec being responded to) ends with -spec.org before proceeding. If it does not, the workflow stops and surfaces the mismatch with the rename suggestion. The suffix is the identifier per Craig's spec-naming convention: every design, decision, or planning document under a project's docs/ directory ends with -spec.org. The .org extension alone is not enough because docs/ holds non-spec org files too (tutorials, frozen inventories, reference material). spec-review.org gained a top-level Precondition section between When to Use and Approach. spec-response.org gained the same Precondition section in the parallel position, with a note that the review-file convention <spec-basename>-review.org means a misnamed spec produces a mis-pointed review file too. Inbox source: 2026-05-28-0858-from-home-spec-naming-convention-apply-to-spec.org. Home renamed two docs to the new convention and asked rulesets to update the template workflows so the next startup rsync in every project picks up the guard.
-rw-r--r--.ai/workflows/spec-response.org16
-rw-r--r--.ai/workflows/spec-review.org16
-rw-r--r--claude-templates/.ai/workflows/spec-response.org16
-rw-r--r--claude-templates/.ai/workflows/spec-review.org16
4 files changed, 64 insertions, 0 deletions
diff --git a/.ai/workflows/spec-response.org b/.ai/workflows/spec-response.org
index 99619cc..c659a0e 100644
--- a/.ai/workflows/spec-response.org
+++ b/.ai/workflows/spec-response.org
@@ -50,6 +50,22 @@ Trigger when:
Not for: drafting a spec from scratch (that's a design conversation), or informal inline comments (handle those conversationally / via the cj-comment flow).
+* Precondition: spec filename
+
+Before Phase 0, verify the spec being responded to ends with =-spec.org=. Every design, decision, or planning document under a project's =docs/= directory carries that suffix as its identifier. The =.org= extension alone is not enough because =docs/= holds non-spec org files too.
+
+If the spec does not end with =-spec.org=, stop immediately and surface the mismatch:
+
+#+begin_example
+The spec <path> does not end with -spec.org. Either the wrong file was named, or
+the file should be renamed first. Spec workflows require the -spec.org suffix as a
+guard against pointing the workflow at tutorial, inventory, or setup docs.
+#+end_example
+
+The review file the response consumes follows the convention =<spec-basename>-review.org=, so a misnamed spec produces a mis-pointed review file too. Fix the spec name first.
+
+The user resolves the mismatch and re-invokes the workflow. Do not proceed with the response against a misnamed spec.
+
* Approach: How We Work Together
** Phase 0: Orient
diff --git a/.ai/workflows/spec-review.org b/.ai/workflows/spec-review.org
index b4ca437..159202e 100644
--- a/.ai/workflows/spec-review.org
+++ b/.ai/workflows/spec-review.org
@@ -44,6 +44,22 @@ Trigger when:
Run it *early* — design review exists to catch viability problems and costly mistakes before implementation, not after.
+* Precondition: spec filename
+
+Before Phase 1, verify the file under review ends with =-spec.org=. Every design, decision, or planning document under a project's =docs/= directory carries that suffix as its identifier. The =.org= extension alone is not enough because =docs/= holds non-spec org files too (tutorials, frozen inventories, reference material).
+
+If the file does not end with =-spec.org=, stop immediately and surface the mismatch:
+
+#+begin_example
+The file <path> does not end with -spec.org. Either the wrong file was named, or
+the file should be renamed first. Spec workflows require the -spec.org suffix as a
+guard against pointing the workflow at tutorial, inventory, or setup docs.
+#+end_example
+
+The user resolves the mismatch (rename the file, or point at a different one) and re-invokes the workflow. Do not proceed with the review against a misnamed file.
+
+Anywhere the rest of this workflow refers to "the spec," "the spec file," or "the file under review," the path is the =-spec.org= file confirmed here.
+
* Approach: How We Work Together
** Phase 1: First-pass readiness gate
diff --git a/claude-templates/.ai/workflows/spec-response.org b/claude-templates/.ai/workflows/spec-response.org
index 99619cc..c659a0e 100644
--- a/claude-templates/.ai/workflows/spec-response.org
+++ b/claude-templates/.ai/workflows/spec-response.org
@@ -50,6 +50,22 @@ Trigger when:
Not for: drafting a spec from scratch (that's a design conversation), or informal inline comments (handle those conversationally / via the cj-comment flow).
+* Precondition: spec filename
+
+Before Phase 0, verify the spec being responded to ends with =-spec.org=. Every design, decision, or planning document under a project's =docs/= directory carries that suffix as its identifier. The =.org= extension alone is not enough because =docs/= holds non-spec org files too.
+
+If the spec does not end with =-spec.org=, stop immediately and surface the mismatch:
+
+#+begin_example
+The spec <path> does not end with -spec.org. Either the wrong file was named, or
+the file should be renamed first. Spec workflows require the -spec.org suffix as a
+guard against pointing the workflow at tutorial, inventory, or setup docs.
+#+end_example
+
+The review file the response consumes follows the convention =<spec-basename>-review.org=, so a misnamed spec produces a mis-pointed review file too. Fix the spec name first.
+
+The user resolves the mismatch and re-invokes the workflow. Do not proceed with the response against a misnamed spec.
+
* Approach: How We Work Together
** Phase 0: Orient
diff --git a/claude-templates/.ai/workflows/spec-review.org b/claude-templates/.ai/workflows/spec-review.org
index b4ca437..159202e 100644
--- a/claude-templates/.ai/workflows/spec-review.org
+++ b/claude-templates/.ai/workflows/spec-review.org
@@ -44,6 +44,22 @@ Trigger when:
Run it *early* — design review exists to catch viability problems and costly mistakes before implementation, not after.
+* Precondition: spec filename
+
+Before Phase 1, verify the file under review ends with =-spec.org=. Every design, decision, or planning document under a project's =docs/= directory carries that suffix as its identifier. The =.org= extension alone is not enough because =docs/= holds non-spec org files too (tutorials, frozen inventories, reference material).
+
+If the file does not end with =-spec.org=, stop immediately and surface the mismatch:
+
+#+begin_example
+The file <path> does not end with -spec.org. Either the wrong file was named, or
+the file should be renamed first. Spec workflows require the -spec.org suffix as a
+guard against pointing the workflow at tutorial, inventory, or setup docs.
+#+end_example
+
+The user resolves the mismatch (rename the file, or point at a different one) and re-invokes the workflow. Do not proceed with the review against a misnamed file.
+
+Anywhere the rest of this workflow refers to "the spec," "the spec file," or "the file under review," the path is the =-spec.org= file confirmed here.
+
* Approach: How We Work Together
** Phase 1: First-pass readiness gate