refactor(marketplace): split cc-architect from ultraplan-local into its own plugin
Extract `/ultra-cc-architect-local` and `/ultra-skill-author-local` plus all 7 supporting agents, the `cc-architect-catalog` skill (13 files), the `ngram-overlap.mjs` IP-hygiene script, and the skill-factory test fixtures from `ultraplan-local` v2.4.0 into a new `ultra-cc-architect` plugin v0.1.0. Why: ultraplan-local had drifted into containing two distinct domains — a universal planning pipeline (brief → research → plan → execute) and a Claude-Code-specific architecture phase. Keeping them together forced users to inherit an unfinished CC-feature catalog (~11 seeds) when they only wanted the planning pipeline, and locked the catalog and the pipeline into the same release cadence. The architect was already optional and decoupled at the code level — only one filesystem touchpoint remained (auto-discovery of `architecture/overview.md`), which already handles absence gracefully. Plugin manifests: - ultraplan-local: 2.4.0 → 3.0.0 (description + keywords updated) - ultra-cc-architect: new at 0.1.0 (pre-release; catalog is thin, Fase 2/3 of skill-factory unbuilt, decision-layer empty, fallback list still needed) What stays in ultraplan-local: brief/research/plan/execute commands, all 19 planning agents, security hooks, plan auto-discovery of `architecture/overview.md` (filesystem-level contract, not code-level). What moved (28 files via git mv, R100 — full history preserved): - 2 commands, 8 agents, 1 skill catalog (13 files), 2 scripts, 8 fixtures Documentation updates: plugin CLAUDE.md and README.md for both plugins, root README.md (added ultra-cc-architect section, updated ultraplan-local section), root CLAUDE.md (added ultra-cc-architect to repo-struktur), marketplace.json (registered ultra-cc-architect), ultraplan-local CHANGELOG.md (v3.0.0 entry with migration guidance). Test verification: ngram-overlap.test.mjs passes 23/23 from new location. Memory updated: feedback_no_architect_until_v3.md now points at the new plugin and reframes the threshold around catalog maturity rather than an ultraplan-local milestone. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
97c5c9d934
commit
ab504bdf8c
48 changed files with 627 additions and 177 deletions
|
|
@ -1,159 +0,0 @@
|
|||
# Skill-drafter slug-collision — expected output fixture
|
||||
|
||||
This fixture documents the expected confirmation-message shape from
|
||||
`skill-drafter` when it detects a slug collision at the catalog root.
|
||||
It is a reference fixture — not an auto-executed test — used to
|
||||
verify the agent by running a synthetic scenario by hand and
|
||||
comparing output against the shapes below.
|
||||
|
||||
## Scenario A — no collision (baseline)
|
||||
|
||||
### Synthetic input
|
||||
|
||||
- **Catalog root:** `skills/cc-architect-catalog/`
|
||||
- **Concept JSON (from concept-extractor):**
|
||||
```json
|
||||
{
|
||||
"cc_feature": "worktrees",
|
||||
"layer": "pattern",
|
||||
"concept": "parallel feature isolation",
|
||||
"description": "Isolate concurrent feature work in per-task worktrees to avoid git race conditions.",
|
||||
"source_path": "/tmp/worktrees-notes.md",
|
||||
"out_of_scope": false
|
||||
}
|
||||
```
|
||||
- **Catalog state at time of run:** no `worktrees-pattern.md` present
|
||||
at catalog root (only `worktrees-reference.md`).
|
||||
|
||||
### Expected confirmation output
|
||||
|
||||
```
|
||||
Drafted: /Users/…/skills/cc-architect-catalog/.drafts/worktrees-pattern.md
|
||||
Word count: 312
|
||||
Frontmatter: 9 fields, review_status=pending, ngram_overlap_score=null
|
||||
Collision: none
|
||||
Next: ip-hygiene-checker for IP scoring
|
||||
```
|
||||
|
||||
No warning block. `Collision: none`.
|
||||
|
||||
## Scenario B — approved collision (primary case)
|
||||
|
||||
### Synthetic input
|
||||
|
||||
- **Catalog root:** `skills/cc-architect-catalog/`
|
||||
- **Concept JSON:**
|
||||
```json
|
||||
{
|
||||
"cc_feature": "hooks",
|
||||
"layer": "pattern",
|
||||
"concept": "observability progressive alerts",
|
||||
"description": "Progressive-alert observability pattern for hook-driven telemetry.",
|
||||
"source_path": "/tmp/hooks-telemetry-notes.md",
|
||||
"out_of_scope": false
|
||||
}
|
||||
```
|
||||
- **Catalog state:** `hooks-pattern.md` exists with
|
||||
`review_status: approved` (the v2.3.0 seed).
|
||||
|
||||
### Expected confirmation output
|
||||
|
||||
```
|
||||
⚠️ Slug collision at catalog root
|
||||
Existing: skills/cc-architect-catalog/hooks-pattern.md (review_status=approved)
|
||||
Draft: skills/cc-architect-catalog/.drafts/hooks-pattern.md (this run)
|
||||
Risk: manual `mv` during promotion will silently overwrite the existing file.
|
||||
Suggested qualified slug: hooks-observability-pattern.md
|
||||
Reason for qualifier: concept handle names "observability" as the named sub-pattern.
|
||||
Action: rename the draft before `mv`, or revise the existing baseline.
|
||||
|
||||
Drafted: /Users/…/skills/cc-architect-catalog/.drafts/hooks-pattern.md
|
||||
Word count: 287
|
||||
Frontmatter: 9 fields, review_status=pending, ngram_overlap_score=null
|
||||
Collision: approved
|
||||
Next: ip-hygiene-checker for IP scoring
|
||||
```
|
||||
|
||||
The warning is prepended. The draft is still written — the collision
|
||||
check is a hint, not a block. `Collision: approved` appears in the
|
||||
confirmation for downstream-log parsers.
|
||||
|
||||
## Scenario C — soft collision (pending existing)
|
||||
|
||||
### Synthetic input
|
||||
|
||||
- **Catalog state:** `subagents-pattern.md` exists with
|
||||
`review_status: pending` (a prior draft that was `mv`-ed up without
|
||||
the status being flipped, or a skill-factory auto-merged entry).
|
||||
|
||||
### Expected confirmation output
|
||||
|
||||
```
|
||||
⚠️ Slug collision at catalog root
|
||||
Existing: skills/cc-architect-catalog/subagents-pattern.md (review_status=pending)
|
||||
Draft: skills/cc-architect-catalog/.drafts/subagents-pattern.md (this run)
|
||||
Risk: manual `mv` during promotion will silently overwrite the existing file.
|
||||
Suggested qualified slug: subagents-delegation-pattern.md
|
||||
Reason for qualifier: concept handle centers on "delegation chains".
|
||||
Action: rename the draft before `mv`, or revise the existing baseline.
|
||||
|
||||
Drafted: /Users/…/skills/cc-architect-catalog/.drafts/subagents-pattern.md
|
||||
Word count: 256
|
||||
Frontmatter: 9 fields, review_status=pending, ngram_overlap_score=null
|
||||
Collision: pending
|
||||
Next: ip-hygiene-checker for IP scoring
|
||||
```
|
||||
|
||||
`Collision: pending` signals a soft collision — the existing file is
|
||||
not necessarily a guaranteed baseline. Reviewer decides.
|
||||
|
||||
## Scenario D — collision but no good qualifier
|
||||
|
||||
### Synthetic input
|
||||
|
||||
- **Concept handle:** `generic feature note` (no specific noun)
|
||||
- **Catalog state:** `skills-reference.md` exists (approved).
|
||||
|
||||
### Expected confirmation output
|
||||
|
||||
```
|
||||
⚠️ Slug collision at catalog root
|
||||
Existing: skills/cc-architect-catalog/skills-reference.md (review_status=approved)
|
||||
Draft: skills/cc-architect-catalog/.drafts/skills-reference.md (this run)
|
||||
Risk: manual `mv` during promotion will silently overwrite the existing file.
|
||||
Suggested qualified slug: none — reviewer must pick one manually.
|
||||
Action: rename the draft before `mv`, or revise the existing baseline.
|
||||
|
||||
Drafted: /Users/…/skills/cc-architect-catalog/.drafts/skills-reference.md
|
||||
Word count: 198
|
||||
Frontmatter: 9 fields, review_status=pending, ngram_overlap_score=null
|
||||
Collision: approved
|
||||
Next: ip-hygiene-checker for IP scoring
|
||||
```
|
||||
|
||||
The fallback line replaces the "Suggested qualified slug" value.
|
||||
`Reason for qualifier` is omitted.
|
||||
|
||||
## How to verify against this fixture
|
||||
|
||||
This is not an auto-run test. To verify:
|
||||
|
||||
1. Stage a synthetic concept JSON matching one of the scenarios above.
|
||||
2. Invoke `skill-drafter` via the `Agent` tool with the concept JSON,
|
||||
source path, and catalog root.
|
||||
3. Capture the confirmation output.
|
||||
4. Compare structurally against the corresponding scenario. The exact
|
||||
word counts and paths will differ; the warning block, collision
|
||||
field, and suggested-slug line are the load-bearing shapes.
|
||||
|
||||
If a future change alters the confirmation format, update this file
|
||||
alongside the agent prompt so the two remain in lockstep.
|
||||
|
||||
## Why a reference fixture and not a unit test
|
||||
|
||||
`skill-drafter` is a prompt-driven Sonnet agent. There is no in-repo
|
||||
harness that executes prompts deterministically, so a unit test is
|
||||
not practical. The reference fixture is the next-best anchor — it
|
||||
documents the expected shape for human verification and for
|
||||
downstream agents that parse the confirmation (e.g., the
|
||||
skill-author-orchestrator's summary phase).
|
||||
Loading…
Add table
Add a link
Reference in a new issue