Skip to content

Opus 4.8, Agent Skills (+per-project toggle), Claude Design import, Nuxt generation, provider-aware Git + reliability & tests#83

Open
holoduke wants to merge 1 commit into
opactorai:mainfrom
holoduke:feat/skills-opus-nuxt-selfhost
Open

Opus 4.8, Agent Skills (+per-project toggle), Claude Design import, Nuxt generation, provider-aware Git + reliability & tests#83
holoduke wants to merge 1 commit into
opactorai:mainfrom
holoduke:feat/skills-opus-nuxt-selfhost

Conversation

@holoduke

@holoduke holoduke commented Jun 25, 2026

Copy link
Copy Markdown

Summary

A broad capabilities + hardening pass on top of upstream: Claude Opus 4.8, per-project Agent Skills with a real on/off toggle, importing designs from Claude Design, full Nuxt app generation, a provider-aware Git layer (GitHub or Gitea), plus a reliability/security sweep and the repo's first automated tests.

Highlights

Build & agent

  • Claude Opus 4.8 via the Agent SDK with adaptive thinking + an effort selector (Auto / Deep / Off) in the composer.
  • Full Nuxt generation — new projects scaffold a multi-page Nuxt 4 + Nuxt UI app (layout with header/footer, shared navigation, Home / Pricing / About / Contact + a custom error page), not a single bare page.
  • Provider-aware Git (`GIT_PROVIDER` = `github` | `gitea`) for repo create, push and reading CI deploy status; provider-agnostic "Git" wording in the UI.

Agent Skills

  • Per-project + global skills, shown in settings and a quick-access modal (checkboxes + live search) in the chat toolbar.
  • Hard per-project enable/disable: by default skills auto-load; the moment any skill is disabled the project switches to a staged model that loads only the enabled set (enabled project skills as dirs, enabled globals as symlinks) — a disabled skill is genuinely not loaded. Untouched projects behave exactly as before.

Import from Claude Design

  • Upload a claude.ai/design `.zip`; the screens, fonts and assets are staged into a gitignored `design-reference/` folder (design-process noise filtered out, single wrapper directories handled), then the agent gets an editable instruction to port them into the app's own components/structure.

UI

  • Resizable chat/preview split (draggable divider, width persisted).
  • Publish flow shows the real CI deploy run (queued / running / success) plus the last deployed commit and relative time.

Reliability & security

  • Encrypt provider tokens at rest (same crypto as env vars); legacy plaintext rows migrate on read.
  • Preview dev servers: idle eviction + LRU so a small port pool can't be exhausted; stop leaking orphaned processes (group-kill of the detached tree); keep the server warm across refresh; fix a tight auto-start retry loop; clear deploy poll intervals on unmount; `no-store` on the status endpoint.
  • Persist the encryption key so secrets survive a restart; DB indexes + crash recovery for stuck requests; keep prerender `failOnError` disabled so deploys don't break on a placeholder link.

Code quality & tests

  • First automated tests: vitest + 59 unit tests (path utils, chat serializer, design-import, skill-id guards, formatting, tool-metadata parsers).
  • Extractions / de-dup: pure skill-id module, agent system prompt to its own file, formatting helpers, and the tool-use metadata parsers now shared between the CLI adapters and the chat log (removing a triplicated copy).

Test plan

  • vitest suite green (59 tests)
  • Self-hosted deploy flow (repo create → push → CI build → live URL) verified end-to-end
  • Skills: disable removes a skill from the staged set (not loaded); re-enable restores it; untouched projects unchanged
  • Design import stages screens/fonts/assets (flat and wrapped zips), noise filtered
  • Preview: warm-refresh reuse, idle eviction reclaims ports, no retry-loop
  • Token encryption: stored value is ciphertext, reads decrypt, legacy migrates
  • Resizable split drags + persists

@holoduke holoduke force-pushed the feat/skills-opus-nuxt-selfhost branch 3 times, most recently from ca6a6e2 to b1d7211 Compare June 27, 2026 18:50
@holoduke holoduke changed the title Opus 4.8, Agent Skills, Nuxt generation, thinking control, provider-aware Git + reliability fixes Opus 4.8, Agent Skills (+per-project toggle), Claude Design import, Nuxt generation, provider-aware Git + reliability & tests Jun 27, 2026
…ort, Nuxt generation, provider-aware Git, reliability & tests

A broad set of capabilities on top of upstream, plus a hardening pass.

Build & agent
- Claude Opus 4.8 via the Agent SDK with adaptive thinking + an effort selector
  (Auto / Deep / Off) in the composer.
- New projects scaffold a full multi-page Nuxt 4 + Nuxt UI app (layout with
  header/footer, shared nav, Home/Pricing/About/Contact pages, error page).
- Provider-aware Git layer (GIT_PROVIDER = github | gitea) for repo create, push
  and reading CI deploy status; provider-agnostic "Git" wording in the UI.

Agent Skills
- Per-project + global skills in settings and a quick-access modal (checkboxes +
  live search) in the chat toolbar.
- Hard per-project enable/disable: default auto-load; once any skill is disabled
  the project loads only the enabled set (project dirs + global symlinks), so a
  disabled skill is genuinely not loaded. Untouched projects unchanged.

Import from Claude Design
- Upload a claude.ai/design .zip; screens/fonts/assets are staged into a gitignored
  design-reference/ folder (noise filtered, wrapper dirs handled), then the agent
  gets an editable instruction to port them into the app's own components.

UI
- Resizable chat/preview split (draggable divider, width persisted; an overlay
  keeps the drag working over the cross-origin preview iframe).
- Publish flow shows the real CI deploy run plus the last deployed commit + time.

Reliability & security
- Encrypt provider tokens at rest (legacy plaintext migrates on read).
- Preview dev servers: idle eviction + LRU so the port pool can't be exhausted;
  stop leaking orphaned processes; keep warm across refresh; fix a tight auto-start
  retry loop; clear deploy poll intervals on unmount; no-store on the status endpoint.
- Persist the encryption key; DB indexes + crash recovery; keep prerender
  failOnError disabled so deploys don't break on a placeholder link.

Code quality & tests
- vitest + 59 unit tests (path, chat serializer, design-import, skill-id, formatting,
  tool-metadata parsers).
- Extractions/de-dup: pure skill-id module, agent system prompt file, formatting
  helpers, and the tool-use metadata parsers shared between CLI adapters and the
  chat log (removing a triplicated copy).
@holoduke holoduke force-pushed the feat/skills-opus-nuxt-selfhost branch from b1d7211 to 7f0f336 Compare June 27, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant