fix(ultraplan-local): v2.3.2 — skill-drafter slug-collision hint
skill-drafter now reads {catalog_root}/<slug>.md before writing its
draft and prepends a warning block to its confirmation output when
an existing skill would be overwritten during manual `mv` promotion.
The draft is still written to .drafts/<slug>.md — the check is a
hint, not a block.
Closes v2.3.0 dogfood finding (post_dogfood_findings[0]): the
drafter produced .drafts/hooks-pattern.md when an approved
hooks-pattern.md seed already existed, giving no signal that `mv`
during promotion would silently overwrite the seed. v2.3.1
introduced the qualified-slug mechanism to resolve such collisions;
v2.3.2 surfaces them at the right moment — before promotion.
Changes:
- agents/skill-drafter.md — new Step 2 between slug computation and
source reading. Reads {catalog_root}/<slug>.md, inspects
review_status, derives a kebab-case qualifier from the concept
handle (or source basename fallback). Subsequent steps renumbered
3→7. Output format gains Collision: field and optional warning
block. New Hard Rule.
- tests/fixtures/skill-drafter/slug-collision-expected.md — reference
fixture documenting expected confirmation shape across four
scenarios (no collision, approved collision, soft pending
collision, collision with no good qualifier). Skill-drafter is
prompt-driven; fixture anchors shape for human verification and
downstream parsers.
- CHANGELOG [2.3.2], plugin.json 2.3.1→2.3.2, README badge, plugin
CLAUDE.md slug-convention Collision-hint bullet, marketplace root
README summary, marketplace root CLAUDE.md plugin table.
Non-breaking. No frontmatter/drafts-layout/tool-scope/regex changes.
Existing pipelines see one extra field and an optional warning —
both purely additive.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
4bbd17cbfa
commit
efbb43094f
8 changed files with 276 additions and 11 deletions
|
|
@ -4,6 +4,50 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [2.3.2] - 2026-04-18
|
||||
|
||||
### Fixed — skill-drafter slug-collision hint
|
||||
|
||||
`skill-drafter` now checks for an existing file at
|
||||
`{catalog_root}/<slug>.md` before writing its draft to `.drafts/`.
|
||||
When a collision is detected, the agent prepends a warning block to
|
||||
its confirmation output showing the overwrite risk and a suggested
|
||||
qualified slug derived from the concept handle. The draft is still
|
||||
written to `.drafts/<slug>.md` — the check is a hint, not a block.
|
||||
|
||||
**Why.** v2.3.0 dogfood surfaced the risk (logged as
|
||||
`post_dogfood_findings[0]` in that run's `progress.json`): when the
|
||||
drafter produced `.drafts/hooks-pattern.md` with an existing approved
|
||||
`hooks-pattern.md` seed present at the catalog root, the pipeline
|
||||
gave no signal that manual `mv` during promotion would silently
|
||||
overwrite the seed. The v2.3.1 qualified-slug convention gave us the
|
||||
mechanism to resolve collisions, but `skill-drafter` still didn't
|
||||
surface them at the right moment — before promotion, not after.
|
||||
|
||||
**Changes.**
|
||||
|
||||
- `agents/skill-drafter.md` — new Step 2 "Check for slug collision at
|
||||
the catalog root" between slug computation (Step 1) and reading the
|
||||
source (Step 3). Subsequent workflow steps renumbered 3→7. New
|
||||
"Suggesting a qualifier" guidance derives a kebab-case qualifier
|
||||
from the `concept` field (or source basename as fallback). Output
|
||||
format gains a `Collision:` field (`none | approved | pending |
|
||||
auto-merged | soft`) and an optional warning block when the
|
||||
collision is non-none. New Hard Rule "Slug-collision pre-write
|
||||
check".
|
||||
- `tests/fixtures/skill-drafter/slug-collision-expected.md` — new
|
||||
reference fixture documenting the expected confirmation-output
|
||||
shape across four scenarios (no collision, approved collision,
|
||||
soft pending collision, collision with no good qualifier).
|
||||
Skill-drafter is prompt-driven and not auto-tested; the fixture
|
||||
anchors the shape for human verification and downstream parsers.
|
||||
|
||||
**Non-breaking.** No changes to `.drafts/` layout, frontmatter
|
||||
contract, tool scope, or filename regex. Existing pipelines see an
|
||||
extra field (`Collision:`) and an optional warning block — both
|
||||
purely additive. No version-gated changes in
|
||||
`skill-author-orchestrator` or `ip-hygiene-checker`.
|
||||
|
||||
## [2.3.1] - 2026-04-18
|
||||
|
||||
### Added — Qualified slug convention for cc-architect-catalog
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue