Files
session-history/dev-claude-plugin/0071/SESSION-0071.0-TRANSCRIPT-2026-06-12T00-21--INPROGRESS.md
T

3.7 KiB

Session 0071.0 — Transcript

App: dev-claude-plugin Start: 2026-06-12T00-21 (PST) Type: planning-and-executing Posture: yolo Claude-Session: 0434ac82-202f-4f47-a1aa-6eb4c5a4653b Status: PLACEHOLDER — claimed at session start; finalized at session end.

This file reserves session ID 0071 for dev-claude-plugin. The driver replaces this body with the full transcript and renames the file to its final SESSION-0071.0-TRANSCRIPT-2026-06-12T00-21--.md form at session end.

Launch prompt

/goal next → resumed from memory: plan-and-execute SLICE-2 of the design-handoff spec (storage + unpack/normalize + commit → home step) in the plugin repo; depends on SLICE-1 (shipped). Write the JIT plan at session start.

Plan

Anchor: design wiggleverse-dev-claude-plugin-content/specs/2026-06-11-design-handoff-design.md (v1.0.0, graduated) · R2a-ELIGIBLE Anchors-issues: #95 (storage/linkage), #93 (spec field) · this slice = SLICE-2 (home step), PUC-1 Worktree: .claude/worktrees/session-0071-design-handoff-slice2 (concurrent same-app sessions in flight → isolated per §5.4)

SLICE-2 — Storage + unpack/normalize + commit → home step (spec §7.2)

Deliver a deterministic verb that homes a Claude Design export zip into the app's *-content repo under ui/designs/<ticket>-<slug>/, honoring the spec's invariants. SLICE-2 stays offline — the Gitea issue-title slug lookup is SLICE-4's orchestrator job; this script takes an explicit --slug and falls back to the bundle top-dir name.

  • New script: skills/wgl-design-handoff/scripts/home-design-bundle.sh
    • Args: --zip PATH (req), --ticket N (req), --slug SLUG (opt), --repo DIR, --content-remote URL (test override), --subdir PATH, --dry-run.
    • INV-1: home dir keyed by ticket number (verb arg), never the zip name.
    • Normalize both export shapes: single common top-level dir → strip it; rootless → contents land directly. Drop __MACOSX/ + .DS_Store noise.
    • _ds/ snapshot kept embedded (D1) — whole normalized tree is copied.
    • INV-2: idempotent wholesale replace — git rm -rf ui/designs/<ticket>-* (any prior slug for that ticket) then place; identical content → no-op.
    • Slug: explicit --slug, else slugified bundle top-dir name; rootless + no slug → fail asking for --slug. Slugify = lowercase, non-alnum→dash.
    • Resolve content repo via resolve-app.py (assign-then-eval guard, #40); unpack to a temp dir first, clone + commit + push only after a clean unpack (non-destructive on failure).
    • Push with the push-robustness classify-and-retry loop (issue #46), mirrored from publish-transcript.sh.
  • New test: skills/wgl-design-handoff/scripts/test-home-design-bundle.sh — hermetic (local bare repo as *-content remote via --content-remote): handoff-shaped zip (single root), rootless zip, re-handoff wholesale replace, slug derivation (explicit + top-dir fallback + slug drift), __MACOSX strip, dry-run no-push, missing-content fail. ok/bad counters, non-zero on fail.
  • Lint: scripts/lint.sh shellcheck baseline green for the new scripts.
  • Version bump: plugin.json 0.52.0 → 0.53.0 (a plugin slice ships a script).
  • No E2E/PPE — no runtime surface (spec §7.3); DoD = tests + lint green, merged to main, version bumped.

Build order (TDD): write the test harness asserting the DoD behaviors → write the script → green → lint → bump → PR → merge.

Deferred decisions

Autonomous-mode low-confidence calls the driver made and would have liked operator input on. Appended as the session runs; surfaced at finalize. Empty if none.