Claude Code Plugin [wpf-dev-pack] 을 만들었습니다.

microsoft-docs plugin의 업데이트

microsoft-docs mcp가 microsoft-docs claude code plugin이 되면서 지속적으로 개선되고 있습니다. 기본적으로 microsoft docs를 검색하는 mcp기능은 microsoft-learn 이라는 mcp로 이름이 변경되었고, 아래 3개의 skill이 추가되었습니다.

microsoft-docs:microsoft-docs

  • Microsoft 기술 개념/튜토리얼/설정/제한/모범 사례 이해 (Azure, .NET, M365, Windows 등) — 공식 문서 질의

microsoft-docs:microsoft-code-reference

  • Microsoft SDK/API 코드 작성·디버깅·리뷰 시 동작 샘플 검색, API 시그니처 검증, 환각·오타·deprecated 패턴 교정

microsoft-docs:microsoft-skill-creator

  • Microsoft 기술용 에이전트 스킬 생성 (공식 문서로 조사 후 로컬 필수 지식 + 동적 조회를 결합한 하이브리드 스킬 생성)

원래는 context7과 ms docs에서 가져올 수 있었던 정보를 굳이 skill로 생성한 다음 그 skill들을 AI를 통해 깎아서 최적화해서 사용하려는 의도였는데 microsoft-docs:microsoft-skill-creator 와 같은 스킬의 등장으로 직접 만들어서 사용할 수 있게되어 많은 스킬을 아카이브 했습니다.


wpf-dev-pack v1.6.0 업데이트

GitHub 릴리스 링크

Microsoft 공식 문서와 중복되는 스킬을 정리하여 Claude Code의 컨텍스트 사용을 최적화한 메이저 릴리스입니다. microsoft-docs MCP 플러그인이 관련 주제를 동적으로 제공하게 되면서 34개의 doc-mirror 스킬을 archive-skills/로 이동했고, 큐레이션 가치가 높은 49개의 스킬만 활성 상태로 유지합니다.

주요 변경사항

:file_cabinet: 34개 doc-mirror 스킬을 archive-skills/로 이동

WPF 개념 (26개): DependencyProperty, ControlTemplate, Storyboard/Animation, Brushes, Dialogs, FlowDocument, Adorners, UI Automation, DragDrop, RoutedCommand, Behaviors/Triggers, Converter MarkupExtension, XAML Property Element Syntax, Content Model, Clipboard, MediaElement, Visual Tree navigation, 2D Graphics, Localization, RTL 지원, Culture-aware formatting, .NET migration 등

.NET 공통 (8개): async/await, Span<T>/ArrayPool, Parallel/PLINQ, HashSet/FrozenSet, System.IO.Pipelines, Pub/Sub, GeneratedRegex 등

:broom: 참조 정리

  • Hooks: WpfKeywordDetector.cs에서 키워드 매핑 158개 제거, 5개 배열 트리밍. BuildErrorDiagnoser.cs의 아카이브된 스킬 참조 삭제.
  • Agents: 9개 에이전트 파일의 frontmatter에서 아카이브 스킬 19개 제거. 본문 참조는 ~~strikethrough~~ (archived) 표기로 보존하여 에이전트 추론 컨텍스트를 유지.
  • Cross-skill refs: implementing-wpf-validation, make-wpf-converterarchive-skills/ 경로와 룰 파일을 참조하도록 업데이트.
  • 플러그인 문서: README.md, README.ko.md, skills/README.md, skills/.claude/CLAUDE.md의 카테고리 테이블·카운트 갱신, 빈 섹션 제거.

:sparkles: v1.5.3 이후 추가 사항

  • managing-unit-tests 스킬 + WPF 단위 테스트 원칙 추가
  • WPF 키보드/포커스 라우팅 룰 3종 추가 (wpf-button-keyboard-behavior.md, wpf-dialog-focus-timing.md, wpf-helixtoolkit-escape-routing.md)

:light_bulb: 활성 스킬 (49개 유지)

의견·워크플로우·3rd-party 통합·사용자 노하우 스킬은 그대로 유지됩니다:

  • 3rd-party 통합: FlaUI, ScottPlot, Nodify, WPF-UI, LiveCharts2, FluentValidation, ErrorOr
  • 프로젝트 스캐폴딩: make-wpf-project, make-wpf-custom-control, make-wpf-viewmodel 외 4종
  • MVVM 워크플로우: CommunityToolkit.Mvvm, Prism 9 (듀얼 프레임워크 지원)
  • 성능 진단: DrawingContext 최적화, 가상화 트러블슈팅, 메모리 누수 패턴
  • 버그 회피 노하우: Popup 포커스, Slider 인덱스, enum 바인딩, 아이콘 폰트 상속

마이그레이션 안내

아카이브된 스킬은 저장소의 archive-skills/ 경로에서 그대로 접근 가능합니다. 이전에 해당 스킬이 다루던 WPF·.NET 개념은 microsoft-docs 플러그인에 관련 키워드(DependencyProperty, Span<T>, Storyboard 등)로 조회하시면 공식 문서 기반의 최신 정보를 얻을 수 있습니다.

함께 설치 권장: microsoft-docs claude code plugin


wpf-dev-pack v1.6.1 업데이트

GitHub 릴리스 링크

v1.6.0 출시 직후 plugin-dev:plugin-validator 에이전트로 플러그인 가이드라인 점검을 수행하여 발견된 이슈를 수정한 패치 릴리스입니다. 잘못 아카이브된 스킬 3개를 되살리고, 문서와 에이전트 참조를 정리했으며, Nodify 소켓 하이라이트 노하우 스킬 1개가 추가되었습니다.

주요 변경사항

:adhesive_bandage: Critical 수정

  • README MVVM 방식 설명 문구 수정 (README.md, README.ko.md 24번째 줄)
    • 기존: “DataTemplate 매핑 또는 ViewModelLocator”
    • 수정: “DataTemplate 매핑 또는 DI 컨테이너 직접 resolve”
    • .claude/rules/prohibitions.md의 ViewModelLocator 금지 규칙과 일치하도록 교정

:package: 잘못 아카이브된 스킬 3개 복구

v1.6.0에서 아카이브했으나 활성 스킬·에이전트가 여전히 참조하고 있던(dead link) 스킬입니다.

  • advanced-data-binding — MultiBinding, PriorityBinding, 고급 바인딩 패턴. make-wpf-converter, wpf-data-binding-expert 에이전트가 참조.
  • using-converter-markup-extension — IValueConverter를 MarkupExtension으로 구현하는 패턴. make-wpf-converter, code-formatter, wpf-data-binding-expert, wpf-code-reviewer가 참조.
  • using-xaml-property-element-syntax — XAML Property Element Syntax 패턴. code-formatter의 Silent Trigger로 사용.

:sparkles: 신규 스킬

  • highlighting-nodify-connections — Nodify 소켓↔연결선 네온 글로우 하이라이트 패턴. ConnectorItemConnectionItem 사이 weak-event 구독, NodeInput/NodeOutput ControlTemplate 내부의 IsMouseOver 함정, 1:N fan-out 상황의 peer-count 전파, 그리고 IsMouseOver를 데이터 기반 IsHighlighted 트리거로 교체하는 로컬 ControlTemplate 오버라이드를 다룹니다.

:wrench: 참조 복원

복구된 3개 스킬에 대한 모든 참조가 다시 연결되었습니다:

  • hooks/WpfKeywordDetector.cs: binding, multibinding, converter, markupextension, property element 키워드 매핑 복원
  • 에이전트 frontmatter: code-formatter, wpf-data-binding-expert, wpf-code-reviewer 업데이트
  • skills/.claude/CLAUDE.md, skills/README.md, skills/README.ko.md: 카테고리 테이블·키워드 인덱스 갱신
  • 플러그인 README 카운트: 49 → 53 Skills

wpf-dev-pack v1.6.2 업데이트

GitHub 릴리스 링크

이번 릴리스는 WPF 애플리케이션의 가장 흔한 런타임 버그 중 하나인 Dispatcher 데드락비동기 종료 처리를 체계적으로 다루는 두 개의 신규 skill을 추가했습니다. 기존 skill 트리거 매핑을 전반적으로 정비하여 자동 활성화 정확도도 함께 개선했습니다.

주요 변경사항

신규 Skill

  • preventing-dispatcher-deadlock — Foundation skill. WPF의 DispatcherSynchronizationContextawait 시 캡처되는 메커니즘과 .GetAwaiter().GetResult(), .Wait(), .Result가 UI 스레드를 교착시키는 과정을 단계별로 설명합니다. 이벤트 핸들러에서 유일하게 안전한 패턴인 async void + try/catch를 강제하고, Task.Run 래핑·ConfigureAwait(false)가 왜 근본 해결책이 아닌지, 재진입 가드와 CommunityToolkit.Mvvm [RelayCommand] / Prism 9 AsyncDelegateCommand 대안까지 다룹니다.

  • shutting-down-wpf-gracefully — Application skill. 위 foundation을 종료 시나리오에 적용합니다. OnExit 오버라이드는 시그니처 고정 탓에 async void로 바꿀 수 없다는 제약을 설명하고, 두 가지 검증된 전략을 제시합니다:

    • Strategy A: ShutdownMode=OnMainWindowClose + Window.OnClosing에서 e.Cancel = trueawait cleanup → Close() 재호출
    • Strategy B: ShutdownMode=OnExplicitShutdown + MainWindow.Closed 이벤트(async void) → cleanup 완료 후 Application.Current.Shutdown()

    추가로 CancellationTokenSource 타임아웃 가드, CommunityToolkit.Mvvm의 IHost.StopAsync teardown, Prism 9 컨테이너 정리 예시를 포함합니다.

개선사항

  • managing-wpf-application-lifecycle의 §3 Shutdown Handling 상단에 두 신규 skill로의 cross-link 추가
  • skills/.claude/CLAUDE.md의 keyword 매핑과 Skill Category Index 대폭 정비 — 신규 2개 + 기존에 트리거 누락되어 있던 skill 8개(managing-wpf-popup-focus, implementing-repository-pattern, configuring-console-app-di, rendering-wpf-architecture, flaui-wpf-element-discovery, flaui-prism-dialog-discovery, implementing-hit-testing, managing-wpf-application-lifecycle)의 키워드·카테고리 등록
  • wpf-dev-pack/.claude/CLAUDE.mdAdding a New Skill — Required Co-updates 섹션 추가. 향후 skill 추가 시 동반 업데이트 지점(keyword 매핑, cross-link, PRISM.md 컴패니언, foundation+application 쌍 패턴)을 체크리스트화
  • wpf-dev-pack/agents/.claude/CLAUDE.md 중복 제거 — 부모 CLAUDE.md와 동일하던 Requirements Interview 사본(49줄)을 포인터로 교체

참고

이번에 추가된 두 skill은 원문 토론(닷넷데브 포럼 글)의 내용을 체계화한 것입니다. 기존 코드베이스에 OnExit 또는 이벤트 핸들러에서 .GetAwaiter().GetResult(), .Wait(), .Result를 사용하는 패턴이 있다면 교체를 권장합니다.


wpf-dev-pack v1.6.3 업데이트

GitHub 릴리스 링크

이번 1.6.3 릴리스의 핵심은 모든 skill과 agent의 frontmatter에서 model: 필드를 제거한 것입니다. 1M context Opus 세션에서 발생하던 모델 전환 API 에러를 해결하고, skill/agent가 사용자의 현재 세션 모델을 그대로 상속하도록 변경했습니다. 추가로 FlaUI/Nodify 관련 skill 3종이 보강되었습니다.

주요 변경사항

동작 변경 (Breaking Behavior Change)

  • 65개 skill 및 agent의 model: frontmatter 일괄 제거 (sonnet / opus / haiku)
  • 변경 이유: 1M context Opus 세션에서 model: sonnet 오버라이드가 작동할 때 API Error: Extra usage is required for 1M context 에러 발생. Sonnet 1M과 Opus 1M은 별도의 extra-usage entitlement가 필요하며, 모델 간에 전이되지 않기 때문
  • 영향: 이제 Opus 1M 세션 사용자도 모델 전환 에러 없이 모든 skill을 호출할 수 있습니다. 토큰 최적화는 skill 단위가 아닌 세션 단위(/model 명령)로 수행하는 방식으로 통일됩니다

Skill 보강

  • flaui-wpf-element-discovery: Microsoft.Win32 Common Dialog (OpenFileDialog / SaveFileDialog) UIA 탐색을 위한 Problem 4 섹션 추가. 3-tier fallback (ModalWindowsGetAllTopLevelWindows → Desktop root + ProcessId 필터) 및 IDE 윈도우 오탐 방지를 위한 exact-title matching 포함
  • highlighting-nodify-connections: Step 6 가이드 정정. 기존 IsMouseOver 트리거를 새 IsHighlighted DataTrigger로 교체하지 않고 함께 유지하도록 변경 (교체 시 미연결 소켓의 기본 hover 피드백이 사라지는 회귀 방지)
  • integrating-nodify: 미연결 소켓에 Disconnect 메뉴를 노출하는 실수, 제스처 기본값 추측 등에 대한 Common Mistakes 항목 추가. Nodify.xml 문서 조회 팁과 Disconnect 메뉴 분기 예시 포함

문서

  • README.md, README.ko.md, agents/README.{md,ko.md} agent 표에서 Model 열 제거
  • “Claude Pro 사용자는 -low 버전 사용” 안내 문구 제거 → /model 전환 안내로 대체

wpf-dev-pack v1.6.4 업데이트

GitHub 릴리스 링크

WPF CustomControl 작성 중 발견된 실전 안티패턴을 반영한 보강 릴리스입니다. 두 개의 신규 스킬 추가, MVVM 용어 정확성 정정 (Microsoft 공식 정의 기준), make-wpf-custom-control 스캐폴더 현대화, Serena MCP 설치 방법 명확화가 포함되었습니다. 강제되는 코드 패턴은 변경되지 않아 기존 프로젝트의 코드 수정은 필요하지 않습니다.

주요 변경사항

신규 스킬

  • collecting-wpf-dev-pack-feedback — 사용자 트리거 스킬. 다른 WPF 작업 세션에서 발견한 wpf-dev-pack 개선 제안을 마크다운 문서로 현재 디렉토리에 생성합니다. 그 md를 dotnet-with-claudecode/FeedbackDocs/에 PR로 기여하면 됩니다.
  • containing-control-decorative-overflow — Focus Ring / Hover Glow / 선택 광원이 잘리는 문제를 진단합니다. 원인은 보통 요소 자신이 아니라 조상의 ClipToBounds / CornerRadius 또는 과소 레이아웃 박스입니다. 콘텐츠/장식 레이어 분리, 사각 vs 둥근 클립 선택, 슬라이더 끝단 z-order 비대칭까지 다룹니다.

스캐폴더 현대화 — make-wpf-custom-control

  • Step 번호 정정 (1→2→3→4).
  • VisualStates / TemplateParts 중첩 const 클래스로 VSM·Template Part 이름 단일 출처화.
  • 선언만 되어 있던 Pressed 상태가 실제로 도달되도록 UpdateVisualState 정정.
  • 다중 제약 Coerce 예시 추가 (관계 제약 먼저, 도메인 클램프 마지막).
  • ColorAnimation 대상 (Background).(SolidColorBrush.Color)오버레이 레이어 Opacity 애니메이션으로 교체 (공유·Frozen·DynamicResource 브러시 함정 회피).
  • Read-only DP (RegisterReadOnly) + RoutedEvent 스텁, Template-Part tolerance, OnApplyTemplate vs Loaded 순서 주석 추가.

기존 스킬 보강

  • authoring-wpf-controls — §3.4 VSM 이름 계약 신설 + §4 다중 제약 Coerce 순서 추가.
  • managing-wpf-popup-focus — §5.8 항목 선택 시 Popup 닫힘 패턴(SelectionChangedToggleButton.IsChecked = false) + §5.9 불투명/반투명 surface 브러시 선택 가이드 추가.
  • managing-literal-strings — VSM 이름 계약으로의 상호링크.
  • optimizing-wpf-memory — 변환 후 복사되는 네이티브 리소스(MatBitmapSource)는 필드 대신 지역 using으로 즉시 해제하는 패턴 추가.

MVVM 용어 정정

docs/TERMINOLOGY.md / TERMINOLOGY.ko.md 추가, Microsoft 공식 정의를 기준으로 라벨을 경로별로 정정했습니다:

  • CommunityToolkit.Mvvm 경로 → ViewModel First Composition + Stateful ViewModel (Mappings.xaml의 lookup key가 ViewModel 타입)
  • Prism 9 경로 → View First Composition + Stateful ViewModel (RegisterForNavigation + IRegionManager의 lookup key가 View name)

이전의 단일 “View First MVVM” 라벨은 CommunityToolkit 경로에 대해 부정확했습니다. 강제 코드 규칙은 변경되지 않습니다.

Serena MCP 설치 방법 명확화

Serena는 Claude Code 플러그인이 아니라 uv로 MCP 서버로 직접 설치해야 합니다. Claude Code 내장 도구 description이 ~16k 토큰을 차지해 플러그인 경로로 등록된 Serena의 도구 사용을 강하게 편향시키기 때문입니다.

기타

  • prohibitions.md — 1개 규칙 → P-001…P-004 (Quick Reference 표 포함).
  • CHANGELOG.md 신설 (영문, 결과 중심 간결).

마이그레이션 노트

  • 코드 수정은 불필요합니다. 라벨만 정정되었고 강제 패턴은 동일합니다.
  • 이전에 Serena를 Claude Code 플러그인 경로로 설치하셨다면 제거 후 Quick Start 절차로 uv를 통해 다시 설치해주세요.

wpf-dev-pack v1.6.5 업데이트

GitHub 릴리스 링크

이번 v1.6.5는 WPF 스플래시 스크린 스킬과 프로젝트별 응답 언어 설정 시스템을 새로 추가하고, 피드백 파이프라인 훅 및 collecting 스킬의 익명성 규칙을 강화한 릴리스입니다.

주요 변경사항

신규 스킬

  • implementing-wpf-splash-screen — 전용 Dispatcher를 사용하는 STA 스레드 스플래시 스크린. MainWindow로의 크로스 스레드 포그라운드 핸드오프를 위한 엄격한 Activate→Close 순서(Win32 SetForegroundWindow 부여 규칙), Show/Close 경쟁을 막는 lock-free Interlocked.CompareExchange 센티넬, App.xaml 리소스에 의존하지 않는 AXAML, 멱등 Close()를 다룹니다.
  • configuring-wpf-dev-pack-language.claude/wpf-dev-pack.local.md에 BCP-47 language: 필드를 기록해 프로젝트별 응답 언어를 설정합니다.

신규 훅

  • LanguagePreferenceLoader (SessionStart) — 세션마다 프로젝트별 응답 언어 지시를 주입합니다.
  • DotnetVersionChecker (SessionStart) — .NET SDK 10.0.300+ 설치를 확인하고, 미달 시 강조 경고를 출력합니다.
  • FeedbackDocAuditor (PostToolUse, collecting-wpf-dev-pack-feedback 스코프) — 새로 작성된 피드백 문서의 익명성을 패턴 기반으로 감사합니다.

개선

  • collecting-wpf-dev-pack-feedback 강화: 익명성 정책 필수화, Sanitize(Step 3)와 독립 Audit(Step 5) 패스 분리, 날짜 prefix 금지 파일명 규칙(<topic>-wpf-dev-pack-feedback.md).
  • shutting-down-wpf-gracefully: “Background Callback Racing Dispatcher Shutdown” 섹션 추가.
  • managing-wpf-application-lifecycle, threading-wpf-dispatcher: 스플래시 스킬로의 상호 링크 추가.
  • 플러그인 CLAUDE.md 문서를 영문화하고 .claude.ko/에 한국어 미러를 추가했습니다.

마이그레이션 노트

  • collecting-wpf-dev-pack-feedback는 이제 날짜 prefix 파일명을 금지합니다. 피드백 파일은 <topic>-wpf-dev-pack-feedback.md 형식으로 작성됩니다.
  • 신규 SessionStart 훅이 자동 활성화됩니다: DotnetVersionChecker는 .NET SDK 10.0.300+를 기대하며, LanguagePreferenceLoader는 선택적 .claude/wpf-dev-pack.local.md를 읽습니다(파일이 없으면 동작 변화 없음).
9개의 좋아요