33 commits since v0.4.0. Headline: two skills go from nonexistent to fully shipped — ult-autoscaffold-content (fills empty-case skeleton content a repo's own layout can't supply, in four phases: generation, large-repo triage, optional domain-pack consumption, wizard/CI integration) and Journey 3 of ult-cep-wizard (mechanizes ult-cep-retrofit's read → draft → apply flow as a second, orthogonal wizard journey, also in four phases). ult-layout-wizard is renamed ult-cep-wizard and gains a full visual design pass, a guided brownfield-onboarding mode, and an in-app docs viewer. ult-repo-layout gains a standalone layout_decision_grammar.py module. All of it is exercised together against a real, unrelated 55K-line OSS repo (robotframework-wizard-ui case study) plus two more UI bugs found via direct Playwright walkthroughs and fixed.
Added
ult-autoscaffold-content (new skill, four phases). Generates skeleton content for the "empty case" — files a repo's own layout conventions can't supply on their own (a missing CONTRIBUTING.md, an undocumented module, a domain glossary with no source of truth) — so ult-repo-layout's scaffolding doesn't leave placeholder gaps for a human to fill by hand.
Phase A — empty-case content generation: detects which scaffolded slots have no real source material behind them and generates first-draft content for each.
Phase B — large-repo triage/tiering + resume/checkpoint: scaffold_state.py tiers candidate modules by in_degree (graphify-derived), and a durable TRIAGE-STATE.json lets a long run against a large repo survive an interruption and resume rather than restart.
Phase C — domain-pack strawman schema + optional consumption: an optional structured domain-pack input a project can supply to steer generated content, consumed only if present.
Phase D — wizard integration + CI wiring: surfaced inside ult-cep-wizard's onboarding flow and wired into CI.
ult-cep-wizard: Journey 3 (consumer/retrofit) wizard UI, shipped in four independently-mergeable phases. Mechanizes ult-cep-retrofit's read → select → draft → apply flow as a second, orthogonal wizard journey. Two deliberate v1 scope limits, both documented: no LLM in the loop (every drafted sentence is a fixed, contract-specific template, rendered into an editable textarea for a human to finish); retrofit target must be a subdirectory of the project's own repo root (the same containment boundary the picker already enforces everywhere else).
Phase A — read-only inventory view, with a new top-level "Retrofit a Skill Library" nav entry, target picker, inventory table, and per-row recommendation badges.
Phase B — reference resolution + draft + batch diff preview, with durable state so a multi-round-trip run survives a browser refresh or wizard restart.
Phase C — write path: atomic splice-write, freshness re-check, per-unit exception isolation, the wired-up "Apply changes" button. Widens the wizard's write surface from two fixed CEP-owned artifacts to any file under the project the target picker can reach, with a SECURITY.md entry describing what stays the same and what's new.
Phase D — docs/housekeeping: a new Journey-3 reference doc; scrub-check coverage extended to ult-cep-retrofit.
Exercised end-to-end via 87 new automated tests and manual Playwright walkthroughs against fabricated fixture libraries.
ult-cep-wizard: renamed from ult-layout-wizard, Phase 2 (guided brownfield onboarding), and a full visual design pass. The rename reflects the wizard's scope having grown beyond layout-only onboarding to also drive retrofit. Phase 2 adds a four-state router so a brownfield repo gets a guided, question-by-question onboarding flow instead of a blank form; a parallel greenfield (init) guide-only flow keeps new-project onboarding equally structured. Design pass: a redesigned top bar, refined color scheme, the approved CEP ribbon logo integrated into both the wizard topbar and the README hero, and an in-app docs viewer.
ult-repo-layout: layout_decision_grammar.py extraction. Pulls the layout-decision grammar used by both layer discovery and the wizard's end-to-end checks out into its own standalone module.
case-studies/robotframework-wizard-ui: a new case study exercising the redesigned wizard's layout-onboarding UI and ult-autoscaffold-content Phase B against a real, unrelated 55K-line OSS repo (RobotFramework's libdoc lazy-languages feature).
Fixed
ult-cep-wizard docs viewer: scroll position not reset between docs, and an ordered/unordered-list continuation-line bug that broke numbering (1./1./1. instead of 1./2./3.) — both found via a manual Playwright walkthrough.
ult-autoscaffold-content Phase B: silent tiering corruption on a graphify cwd/path-relativity mismatch — every real module could silently default to in_degree: 0 and land the wrong tier, with no error anywhere. Now cross-checked and surfaced as an error or warning wherever an operator looks.
ult-cep-retrofit inventory: returned target-relative paths instead of repo-root-relative, breaking any downstream consumer that assumed repo-root-relative paths.
Doc-accuracy corrections found via self-review: a stale D24 glossary row, a stale SECURITY.md Scope claim, and README/user-guide updates to reflect ult-autoscaffold-content and demo-write-user-stories now existing.
Full Changelog: v0.4.0...v0.5.0