Repository navigation
Add template-version header to generated skills for drift detection - #33
Merged
Merged
Conversation
Closes #22 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
dmccoystephenson
left a comment
Member
Author
There was a problem hiding this comment.
Self-review rubric:
- Scope: PASS — 2 files; each addition directly maps to AC 1–3 or the CLAUDE.md PR-27 rule.
- Tests-new: PASS — both new placeholders have substitution-table rows with concrete shell commands (
git rev-parse --short HEADanddate -u +%Y-%m-%dT%H:%M:%SZ) that make them executable rather than aspirational. - Tests-fix: N/A — not a bug fix.
- Sibling structure: PASS — new substitution rows match the format of neighboring rows (single-line markdown table cells with command-in-backticks).
- Sibling renames: N/A.
- Docs: PASS — Phase 7 sources (
create-dev-loop.md,README.md) reviewed; README is high-level overview and doesn't mention HTML-comment headers (correctly out of scope for the README). RESEARCH.md §8 gets an Implementations entry per PR-27 rule. - Issue resolution: PARTIAL-but-disclosed — AC 1, 2, 3 met; AC 4 (
cdl-dev-loopPhase 9 drift detection) explicitly deferred in PR body because it modifies a different repo's skill, which the cdl-dev-loop skill itself forbids self-modifying. - Validation: PASS —
grep -oP '\{\{[A-Z_]+\}\}'shows both{{TEMPLATE_VERSION}}and{{GENERATED_AT}}in template body and substitution table; no fenced blocks introduced inside the outer template (HTML comments don't need escaping). - {{EXTERNAL_SIGNAL_LABEL}}: N/A — no CI for this repo; manual validation against the diff served as the anchor.
- Placeholder-consistency: PASS — both new placeholders documented; no orphan rows.
- Escaping: PASS — HTML comments are not fenced code blocks; no triple-backtick escape concern.
Adversarial probe — 'The issue says Step 6; you put it in Step 4. Is that a deviation?' Yes, but the deviation is rationalized in the PR body: Step 4 is where ALL placeholders are populated, so adding two placeholders there is consistent with the existing architecture. The end behavior (header populated at generation time with the right SHA) matches the issue's intent. If a reviewer pushes back, an inline reference in Step 6 pointing at Step 4 is a 1-line fix.
This was referenced May 25, 2026
3 of 4 tasks
dmccoystephenson
added a commit
that referenced
this pull request
Aug 3, 2026
) Closes #22 Co-authored-by: BuildTools <unconfigured@null.spigotmc.org> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every newly generated
<slug>-dev-loopskill now starts with two HTML comments recording the template state at generation time:TEMPLATE_VERSIONresolves to the short SHA of thecreate-dev-looprepo at generation time (git -C <path-to-create-dev-loop> rev-parse --short HEAD);GENERATED_ATresolves to an ISO-8601 UTC timestamp. Both are HTML comments so they don't render in the skill's prose but are grep-able for drift detection.The substitution-table descriptions tell the generating agent exactly how to derive each value at Step 4 time — the issue mentioned Step 6, but Step 4 is the natural integration point (where ALL placeholders are populated). The end behavior matches the issue's intent.
Closes #22
Test plan
create-dev-loop.md)TEMPLATE_VERSIONandGENERATED_ATwith concrete commands for capturegrep -oP '\\{\\{[A-Z_]+\\}\\}'confirms both placeholders appear in the template AND have substitution-table rows — placeholder-consistency invariant holds<!-- ... -->) chosen so the comments don't render in skill output but remain grep-able# <slug>-dev-loopheading at line 92 before edit; insertion above it lands the comments at the very top of the rendered skillgh issue view 22and confirmed title/body matchcreate-dev-loop.md,RESEARCH.md; no matchesDeferred AC
example-h-dev-loopPhase 9 drift-detection step) belongs in thedmccoystephenson/example-h-dev-looprepo, not this one — Phase 9 ofexample-h-dev-loopexplicitly forbids self-modification from inside a cycle. Filing a follow-up issue against that repo is the right channel; recording it here as deferred.drafted by Claude on behalf of Daniel Stephenson