Repository navigation
feat: bundle UI design catalog and shared project routing - #102
Conversation
Add pinned UI skills, portable TypeScript helpers, full-only Impeccable engine integration, bootstrap routing and automatic project team adoption. Preserve native configurations and document deferred ports and acceptance gaps. Assisted-by: Codex:GPT-6 [Node.js, Git, research tools]
Assisted-by: Codex:GPT-6 [Git, Node.js]
Assisted-by: Codex:GPT-6 [Git]
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3ea2a87495
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,55 @@ | |||
| import fs from 'node:fs'; | |||
There was a problem hiding this comment.
Commit bundled skill scripts as executable
The newly bundled runtime scripts, including this CLI and the Pro Max helpers, are committed with mode 100644, so installations do not preserve the repository-required executable script contract. Commit the files under skills/*/scripts/ with executable mode so packaged consumers can invoke them consistently.
AGENTS.md reference: AGENTS.md:L257-L262
Useful? React with 👍 / 👎.
| const id=crypto.createHash('sha256').update(changed.map(w=>w.file+w.content.toString('base64')).join('\n')).digest('hex').slice(0,16); | ||
| const backup=safeTarget(root,path.join(root,'.prometheus/recovery/uiux-'+id+'.json')); | ||
| fs.mkdirSync(path.dirname(backup),{recursive:true}); | ||
| if(!fs.existsSync(backup))fs.writeFileSync(backup,JSON.stringify({schemaVersion:1,files:changed.map(w=>({path:path.relative(root,w.file),before:w.before?.toString('base64')??null,encoding:'base64'}))},null,2)+'\n'); |
There was a problem hiding this comment.
Include prior contents in recovery receipt identity
When the same catalog version is reinstalled after a user edits an installed skill, this ID is unchanged because it hashes only target paths and desired contents. Since an existing receipt is then retained, its before bytes may describe an earlier installation—often null—rather than the files being overwritten now, making the advertised recovery data destructive or unusable. Include each write's current before bytes in the receipt identity, as the team installer already does.
Useful? React with 👍 / 👎.
| for(const w of changed){ | ||
| fs.mkdirSync(path.dirname(w.file),{recursive:true}); | ||
| const temp=w.file+'.prometheus-'+crypto.randomBytes(6).toString('hex'); | ||
| fs.writeFileSync(temp,w.content,{flag:'wx'}); fs.renameSync(temp,w.file); | ||
| } |
There was a problem hiding this comment.
Roll back earlier files when installation fails
If a later one of the hundreds of writes fails—for example because a destination becomes unwritable or storage is exhausted—the loop propagates the error without restoring files already renamed. This can leave the routing pointer installed while only part of its skill catalog exists, and the recovery receipt is not applied automatically. Track completed writes and restore their recorded before values in a catch path.
Useful? React with 👍 / 👎.
| uiux_args=(install --project "$project_path" --target "$target") | ||
| [[ "$dry_run" == "1" ]] && uiux_args+=(--dry-run) | ||
| exec node "$uiux_runtime" "${uiux_args[@]}" |
There was a problem hiding this comment.
Preserve refresh behavior for the UI routing pack
When --pack uiux-routing --refresh is requested, this early exec bypasses the refresh block below and never forwards the parsed refresh flag to the canonical installer. The command therefore exits successfully without probing sources or updating the UI roster dates, silently breaking the documented refresh operation for exactly this pack.
Useful? React with 👍 / 👎.
Preserve verbatim license evidence with a packaging preface and regenerate pinned catalog assets and portable distribution. Assisted-by: Codex:GPT-6 [Node.js, Git]
UI tasks now share a context-first protocol and selectively load design, craft and platform guidance. Existing project teams become the default for code work through real manifests and native definitions.
Validation: full legacy/v4 bootstrap and injector passed; 50 pinned Pro Max comparisons and 19 persistence/package checks passed across both packs. All 41 UI skills passed strict validation (0 errors, 75 upstream-description warnings). Generated distribution check passes after merging main. Independent source and skill-contract review evidence is recorded.
Acceptance gaps: native Windows and full live-harness/installed-app coverage remain unverified. The deep-research review/export pipeline is not claimed complete. See docs/research/ui-ux-routing/DELIVERY.md and the open OpenSpec change for evidence and limitations.
Coordinate with the companion mini and The Boss PRs; this full-pack PR can merge independently.
Companion PRs: mini #3 and The Boss #4.