ktg-plugin-marketplace/plugins/ultra-cc-architect/tests/fixtures/skill-factory
Kjell Tore Guttormsen ab504bdf8c 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>
2026-04-30 17:18:47 +02:00
..
draft-accepted.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00
draft-needs-review.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00
draft-rejected.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00
README.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00
source-accepted.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00
source-needs-review.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00
source-rejected.md refactor(marketplace): split cc-architect from ultraplan-local into its own plugin 2026-04-30 17:18:47 +02:00

Skill-factory calibration fixtures

These fixtures calibrate the IP-hygiene thresholds used by scripts/ngram-overlap.mjs. Each pair (source-*, draft-*) is hand-tuned so that the n-gram containment verdict lands in a specific band, anchoring the empirical thresholds against representative prose.

Pairs

Pair Target verdict Containment Longest run Notes
source-accepted.mddraft-accepted.md accepted 0.014 3 Heavy paraphrase; concept-equivalent without phrase reuse
source-needs-review.mddraft-needs-review.md needs-review 0.211 12 Mixed: paraphrased frame, retained domain phrasing
source-rejected.mddraft-rejected.md rejected 0.676 74 Light edit on top of source; verbatim runs survive

Verdict bands

The verdict bands match the constants in scripts/ngram-overlap.mjs:

  • accepted — containment < 0.15 AND longestRun < 8
  • needs-review — between accepted and rejected
  • rejected — containment ≥ 0.35 OR longestRun ≥ 15

If you change the thresholds in ngram-overlap.mjs, re-verify each fixture pair to confirm the calibration still holds. The fixtures are content-stable; the thresholds are the variable.

Why these topics

The fixtures use Claude Code reference prose (session-start hooks, subagent delegation, output styles) so they live near the kind of source material the skill-factory will actually paraphrase in production. Drift between fixture domain and production domain would weaken the calibration signal.

Regeneration

These files are committed to the repo as ground-truth fixtures. Do not regenerate them ad-hoc — edit deliberately, re-run the verification commands listed in plan.md Step 5, and commit intentionally.

node scripts/ngram-overlap.mjs tests/fixtures/skill-factory/draft-accepted.md \
  tests/fixtures/skill-factory/source-accepted.md