본문으로 건너뛰기
cccskills
무료GitHub에 공개

wfa-harden-decompose

Phase G of a WinForms-to-Avalonia migration: decompose oversized UI state and orchestration, harden asynchronous workflows and external boundaries, preserve composition lifetimes, keep Headless tests process-isolated, and update ownership documentation. Use only when an explicit migration has post-port structural or resilience debt, or when the orchestrator routes here. Baseline input security belongs in the phase that introduces the boundary, not only here.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(2)

  • SKILL.md4.3 KB
  • references/decomposition-checklist.md1.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Phase G — Harden and decompose

Keep the Avalonia trunk secure and maintainable after features accumulate. Behavior-preserving structural changes preferred; ship large work as ordered PR slices.

Read decomposition checklist to select the tracks supported by code evidence; do not introduce a session/workspace abstraction by default.

Track G1 — Typed state aggregate, when warranted

Composition root
  └── Main ViewModel (thin: commands + bindable projections)
        └── State aggregate
              ├── Domain/application state
              ├── Interaction mode (typed, not flag soup)
              ├── Pending changes
              ├── Derived presentation state
              └── Operation preferences
  └── Workflow coordinators
  └── Narrow collaborator ports
  • Mode transitions as pure functions where possible
  • Bindings own options; remove scrape-before-command
  • Route UI actions by stable identifiers, not localized display text
  • Collaborators do not take the full main ViewModel when a narrow port suffices
  • Shared application behavior across every relevant surface and host

Anti-stale async

RuleBehavior
RevisionMonotonic; superseding work advances it
ProgressApply only if revision current
CommitAtomic if revision/context still match
Incremental updateRevision + context token match
CancelNo partial mutation
Stale failureMust not clobber newer state

Require regression tests when touching this.

Track G2 — Extract workflows

Move multi-step orchestration out of the ViewModel:

CollaboratorOwns
Primary workflow coordinatorasync state machine + revision
State transition serviceselection/mode and structural changes when present
Presentation projectionderived view state and option snapshots
Status presenterstatus, progress, and diagnostic formatting

ViewModel remains INPC façade. Half-extraction ban: extracted modules must be wired or deleted.

Expect bridge/proxy lines to remain (bindings need VM properties).

Track G3 — Command surface

Keep one command semantics on the ViewModel; code-behind contains only control/host adapters.

Track G4 — Composition lifecycle

Shared long-lived services; identity tests if needed; controls re-bind when services arrive (not only constructor fallbacks for production hosts).

Track G5 — Headless isolation

  • Dedicated Headless project (separate process)
  • Serial collection inside Headless
  • Never merge into unit assemblies “to simplify”
  • Behavior tests; avoid long sleeps
  • Sequential multi-project dotnet test

Track G6 — External-boundary security review

  • Recheck size, depth, count, recursion, and allocation bounds before consuming untrusted data.
  • Deny external resource access unless explicitly required and constrained.
  • Constrain dynamic execution by capabilities, time, memory, cancellation, and isolation.
  • Use compact negative fixtures for each boundary actually present.

Track G7 — Alignment docs

  • Spec scenario ↔ implementation matrix after large moves
  • Remediation: finding → design → steps → tests → acceptance
  • Maintainer code map updated in the same change
  • Three-way gate: plan item ↔ OpenSpec task ↔ code/tests/command evidence before checking off
  • Prefer plan review before apply and after structural slices

Deliverables

  • Typed state aggregate if flag soup existed
  • Anti-stale tests
  • Real workflow ownership; dead modules gone
  • Headless isolation intact
  • Security bounds tested
  • Ownership map updated

Handoff

Product features → wfa-post-port-evolve Legacy delete → wfa-parity-verify

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tautcony/ChapterTool1132026년 10월 14일 업데이트

Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tautcony/ChapterTool1132026년 10월 14일 업데이트

Archive multiple completed changes at once. Use when archiving several parallel changes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tautcony/ChapterTool1132026년 10월 14일 업데이트

Continue working on an OpenSpec change by creating the next artifact. Use when the user wants to progress their change, create the next artifact, or continue their workflow.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tautcony/ChapterTool1132026년 10월 14일 업데이트

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tautcony/ChapterTool1132026년 10월 14일 업데이트

Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tautcony/ChapterTool1132026년 10월 14일 업데이트

tautcony의 스킬 모두 보기

이 스킬의 문제 신고