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_Storenoise. _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.
- Args:
- New test:
skills/wgl-design-handoff/scripts/test-home-design-bundle.sh— hermetic (local bare repo as*-contentremote via--content-remote): handoff-shaped zip (single root), rootless zip, re-handoff wholesale replace, slug derivation (explicit + top-dir fallback + slug drift),__MACOSXstrip, dry-run no-push, missing-content fail.ok/badcounters, non-zero on fail. - Lint:
scripts/lint.shshellcheck baseline green for the new scripts. - Version bump:
plugin.json0.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.