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

Claude Code 에서 사용할 수 있는 WPF Plugin 을 만들었습니다.

Claude MAX 구독하시면서 WPF 쓰시는 분들 한번씩 써보시고 피드백 주시면 감사드리겠습니다.

13개의 좋아요

1.3.0을 배포했습니다.

wpf-dev-pack은 아래 4개의 mcp를 사용하고 있습니다.

microsoftdocs, serena, context7, sequential-thinking

그 중에서 serena, context7, sequential-thinking mcp는 claude code 공식 mcp 라서 많이들 claude code에서 사용 중이실 것입니다. 저도 그렇고…

그래서 mcp가 2중으로 설치되어 토큰을 중복해서 먹을 수 있어서 microsoft docs mcp를 제외한 mcp를 제거했습니다.

혹시 사용하시는 분들은 update 부탁드립니다.

4개의 좋아요

1.4 버전을 배포했습니다.


● wpf-dev-pack v1.4.0 변경 요약

  1. 서드파티 라이브러리 스킬 5개 신규 추가 (57 → 62개)
  • integrating-wpfui-fluent — WPF-UI (Wpf.Ui) 4.2.x: Fluent Design, FluentWindow, NavigationView
  • integrating-livecharts2 — LiveCharts2 2.0: 실시간 차트, CartesianChart, PieChart
  • validating-with-fluentvalidation — FluentValidation 12.x: INotifyDataErrorInfo 브리지 패턴
  • handling-errors-with-erroror — ErrorOr 2.x: 서비스 계층 Result 패턴, Switch/Match
  • integrating-nodify — Nodify 7.2.x: 노드 기반 에디터 (MVVM 구조)
  1. 기존 스킬 개선
  • CommunityToolkit.Mvvm — .NET 8 호환을 위해 backing field 방식을 기본값으로 변경, partial property는 .NET 9+ 업그레이드 가이드로 분리
  • Prism — 9.0.537 대응 (DialogCloseListener, IEventAggregator Pub/Sub, 듀얼 라이선스 안내)
  1. 적응형 인터뷰 시스템

기존 고정 4단계 인터뷰를 경로 기반 적응형 인터뷰로 교체:

  • 경로 A: 새 프로젝트 생성 (7단계)
  • 경로 B: 분석/개선 (5단계)
  • 경로 C: 기능 구현 (5단계)
  • 경로 D: 디버깅/수정 (4단계)

자유 입력에서 키워드 분석 → 후속 단계 기본값 자동 설정. 예: “차트 대시보드” 입력 시 LiveCharts2, 성능 관련 스킬 자동 추천

  1. .NET 버전 정책 명확화
  • wpf-dev-pack 실행: .NET SDK 10.0+ 필수 (file-based app 훅)
  • 생성 프로젝트 대상: .NET 8 이상 선택 가능 (이전에는 .NET 10만 지원)
8개의 좋아요

v1.4.1

Prism 9 듀얼 프레임워크 지원

  • 13개 스킬에 PRISM.md 컴패니언 파일 추가
    • 기존 SKILL.md(CommunityToolkit.Mvvm)와 PRISM.md(Prism 9 Community License)가 상호 참조
    • ViewModel, DI, Navigation, Dialog, Validation 등 주요 MVVM 영역을 Prism 9 패턴으로 제공
  • 대상 스킬: implementing-communitytoolkit-mvvm, configuring-dependency-injection, structuring-wpf-projects, mapping-viewmodel-view-datatemplate, creating-wpf-dialogs, managing-wpf-application-lifecycle, binding-enum-command-parameters, handling-wpf-input-commands,
    implementing-wpf-validation, managing-wpf-collectionview-mvvm, validating-with-fluentvalidation, implementing-repository-pattern, displaying-slider-index
  • MVVM 프레임워크 자동 감지 시스템 (mvvm-framework.md) — csproj NuGet 패키지 또는 키워드로 Prism/CommunityToolkit 자동 판별
  • Command에서 Skill로 마이그레이션 (Claude Code 2.1.3 agent skill 2.0 대응)

v1.4.2

FlaUI 크로스 프로세스 입력 보정 스킬 추가 (77번째 스킬)

  • 새 스킬: flaui-cross-process-input
    • FlaUI로 WPF 앱을 UI 자동화할 때 발생하는 크로스 프로세스 입력 전달 문제 해결 가이드
  • 다루는 문제:
    a. Stuck Keys — Keyboard.Press() 후 key-up이 처리되기 전 마우스 이벤트가 전달되어 WPF 제스처 매칭이 무시되는 현상 → ReleaseAllKeys() 패턴 제공
    b. SetCursorPos vs SendInput — Mouse.MoveTo()가 WM_MOUSEMOVE를 주입하지 않아 WPF 히트 테스트가 갱신되지 않는 현상 → SendInput(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE) 해결법 제공
    c. Adorner 깜빡임 — 드래그 중 보간 포인트가 다른 인터랙티브 존을 통과하며 발생하는 플리커 → 스텝 수/딜레이 조절 및 경로 우회 전략
  • 진단 체크리스트 (Keyboard state → Mouse.Captured → ClickCount → Hit test → Binary 확인) 포함
  • 키워드 자동 트리거: flaui, cross-process, sendinput, keybd_event, stuck key
2개의 좋아요

v1.4.5

Hook 출력 개선 및 3rd Party 키워드 확장

  • WpfKeywordDetector 출력 포맷 재설계 — 트리거된 스킬의 가시성 향상
  • 3rd Party 라이브러리 키워드 30개 이상 추가
    • FlaUI, Nodify, WPF-UI, LiveCharts2, FluentValidation, ErrorOr 관련 키워드
    • 해당 라이브러리 언급 시 관련 스킬 자동 트리거
  • flaui-cross-process-input 스킬 강화
    • xUnit 병렬 테스트 비활성화(xunit.runner.json) 전제조건 추가
    • 스킬 설명 및 평가 데이터에 xUnit 관련 트리거 키워드 반영

v1.4.6

HandMirrorMcp 통합 (.NET API 검증용 MCP 서버)

  • HandMirrorMcp를 MCP 서버로 추가 — MCP 서버 수 1개 → 2개 (MicrosoftDocs + HandMirrorMcp)
    • .NET 어셈블리 및 NuGet 패키지의 실제 컴파일된 API를 검사하여 네임스페이스, 메서드 시그니처, 확장 메서드 위치를 정확히 확인
    • Context7, MicrosoftDocs와 병행 사용하여 NuGet/API 할루시네이션 감소
  • PreToolUse Hook 추가: HandMirrorReminder.cs
    • Context7 또는 MicrosoftDocs MCP 호출 전 .NET/NuGet 관련 질의를 감지 (58개 .NET 지표 기반)
    • 해당 시 HandMirrorMcp 우선 사용을 자동 리마인드
  • 버전 릴리즈 검증 Hook: VersionReleaseChecker.cs
    • git push 시 자동 실행 — GitHub 릴리즈 존재 여부, README 수치(Skills/Agents/MCP), GitHub 프로필 수치 동기화를 검증
  • README 스킬 수 보정: 77개 → 78개
    • 카테고리 테이블에 누락된 9개 스킬 추가, flaui-wpf-element-discovery를 3rd Party 섹션에 반영
6개의 좋아요

v1.5.0

View First MVVM 공식 채택, 자동화 Hook 강화, 신규 스킬 3종, Progressive Disclosure 적용

View First MVVM을 공식 MVVM 방식으로 선언

  • View가 먼저 생성되고, View가 자신의 ViewModel을 결정하는 방식
  • View-ViewModel 연결 규칙을 CommunityToolkit.Mvvm / Prism 9 별도 rules 파일로 정의
  • ViewModelLocator, ViewModel First Navigation을 금지 규칙(prohibitions.md)으로 명시

신규 Hook 2종 추가

  • BuildErrorDiagnoser — dotnet build 실패 시 에러코드(CS0234, CS0246, NU1101 등)를 파싱하여 HandMirror MCP 도구 자동 안내
  • MvvmViolationDetector — ViewModel 파일에서 System.Windows.* 참조 감지 시 MVVM 위반 경고 (System.Windows.Input.ICommand는 예외)

XamlValidator 규칙 확장 (5개 → 8개)

  • TextBox에 UpdateSourceTrigger=PropertyChanged 누락 감지
  • ElementName=“self” 사용 시 RelativeSource Self 안내
  • TextBlock에 Mode=TwoWay 바인딩 감지

신규 스킬 3종 추가 — 스킬 수 79개 → 81개

  • make-wpf-viewmodel — ViewModel + View + DI 등록 + DataTemplate 매핑을 한 번에 생성 (Prism 9 PRISM.md 포함)
  • make-wpf-service — 서비스 인터페이스 + 구현 클래스 + DI 등록 자동 생성
  • testing-wpf-viewmodels — xUnit + NSubstitute 기반 ViewModel 단위 테스트 패턴 (Prism 9 PRISM.md 포함)

기능 의도 키워드 감지 추가 — 라이브러리 이름을 몰라도 원하는 기능만 말하면 스킬 자동 추천

  • “차트/그래프/대시보드” → integrating-livecharts2
  • “입력 검증/폼 검증” → validating-with-fluentvalidation
  • “모던 UI/플루언트 디자인” → integrating-wpfui-fluent
  • “느려/렉/대용량 데이터” → rendering-wpf-high-performance, virtualizing-wpf-ui
  • “다국어 지원” → localizing-wpf-applications 외 다수

Progressive Disclosure 적용 — 대형 스킬 8개에서 고급 패턴을 ADVANCED.md로 분리 (평균 47% 축소)

  • creating-wpf-animations, routing-wpf-events, implementing-wpf-automation, understanding-wpf-content-model, structuring-wpf-projects, rendering-with-drawingcontext, managing-wpf-collectionview-mvvm, handling-wpf-input-commands

플러그인 품질 개선

  • 11개 에이전트 전부 color 필드 추가 (Claude Code UI 시각적 구분)
  • 7개 scaffolding 스킬 description에 “Use when” 트리거 구문 추가
  • 삭제된 스킬에 대한 4개 에이전트 참조 수정
  • scottplot 스킬 description 중복 수정 및 누락 evals 생성

Others

  • mapping-viewmodel-view-datatemplate 스킬 삭제 → rules로 이전 (스킬 수 -1)
  • 내장 MicrosoftDocs MCP 제거 — claude official marketplace의 microsoft-docs 플러그인으로 분리 (MCP 서버 수 2개 → 1개)
5개의 좋아요

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개의 좋아요

제가 바이브코딩으로 만들었던 프로젝트에 적용하니까 최적화 할게 많이 나오네요. 감사합니다. 많은 도움이 되고 있습니다.

3개의 좋아요

이용해 주셔서 정말 감사드립니다..!

3개의 좋아요

안녕하세요. 혹시 ViewModel First가 아닌 View First를 채택하신 이유를 알려주실 수 있으실까요?

안녕하세요.

제 경험에는 UI가 있는 대다수의 프로젝트에서 View First가 ViewModel First 보다 일반적이라고 말할 수 있을 정도로 많이 사용하고 있다는 생각 때문입니다. WPF 뿐만 아니라 다른 React나 Blazor 같은데에서도 입니다.

프로그래밍에서 반복적으로 나타나는 행위인 패턴이라 불리는 것들은 허상이고 이론적인 것이 아니라 실무에서 파생된, 자주 사용되는 유형이 안착된다고 생각합니다. 따라서 패턴을 위한 패턴, 코드 아트, 이렇게 해야 개발자 답게 개발하지, 같은 것은 필요 없다고 생각합니다.

개인적으로 ViewModel First를 위와 같이 생각하고 있습니다. ViewModel First에 대해 경험이 없어서 부정적인거라고도 스스로 생각은 하고 있습니다.

모델-View-ViewModel - .NET | Microsoft Learn

저는 이 문장에 동의합니다.

MVVM이 익숙한 사람에게 MVVM 에 대한 기준은 명확합니다. View와 ViewModel이 서로를 모르는 것이죠. 그렇게 하기 위해 WPF에서의 기준은 ICommand 인터페이스를 제외한 System.Windows~ 에 속하는 모든 Type을 ViewModel 의 의미를 갖는 Class에서 사용하지 않는 것이 될 수 있습니다.

하지만 처음 MVVM을 배우는 사람에겐 MVVM조차 생소할 수 있고 이걸 왜 그렇게까지 해야하지? 라는 문장부터 동료를 이해시켜야합니다. 고도의 추상화를 위해 ViewModel과 View를 서로 모르게 하기 위한 다양한 기법들이 존재하지만 제품이 고도화 되면서 추상화가 깊어지고, 중간에 합류한 동료라던지, 지식수준이 서로 다른 동료들의 소통 비용을 줄이기 위해 MVVM은 마지노선이 될 뿐 더 복잡해져서는 안될 기본충족조건이라고 보며, 그렇다면 더 직관적인 View First를 하지, ViewModel First는 MVVM을 도입한 동료들 간 소통비용을 증가시킬 수 있다는 생각입니다.

그리고 결정적으로, WPF는 대한민국에서는 주로 제가 경험하기론 Solution 회사는 몇군데 없습니다. 자체 키오스크를 만들어서 제공하는 곳들이죠. F&B 같은 사업분야입니다, 포토부스 산업도 제가 알기로는 100% WPF 분야입니다. 하지만 WPF 개발자나 수요가 절대 다수로 많은 곳은 공장 같은 제조 산업, 또는 병원 키오스크에서 사용됩니다. 고객의 일을 외주로 처리하는 형태를 주로 보여 줍니다.

제가 고객일 때도 여전히 주의하고 싶어도 늘 스스로에게 어려운 점이지만,

보통은 고객은 스스로도 자신이 무엇을 원하는지 명확하게는 모릅니다.

업체에게 지시하고 결과물을 가져와서 보여주고, 아닌거같다고하면 다시 가져가서 보여주는 피드백과 맞쳐보는 작업이 절대 다수라고 생각합니다. 그리고 코드 레벨에서 아무리 잘 짜여졌다고 해도 View로 보여주는 것만큼 직관적으로 고객에게 보여줄 수 있는 방법이 없습니다. ViewModel First로 한다고해도, 고객이 갑자기 UI를 변경해야한다고 하면 어차피 후반엔 View First형태로…View에 끌려다니는 ViewModel을 유지보수하게 될 거라는 생각입니다.

그럼 자체 개발하는 솔루션 회사라면 괜찮을까 싶지만, 이 부분은 제가 경험해본적은 없어서 잘 모르겠습니다. 하지만 사내에서 개발자가 아닌 경영진 조직을 설득시킬 때에도 역시 View로 보여주고 설득하는 게 편할꺼고, UI 조직이 따로 있다면 역시 UI 시안을 제공받아서 그 UI 화면대로 ViewModel을 개발하게 된다면 어차피 View First가 될 꺼라는 짐작입니다.

WPF에서 사용하던 ViewModel을 따로 분리해서 Blazor에 쓸 수도 있지 않냐고 할 수도 있지만, 전 제품이 마이그레이션될 때는 다양한 이해구조가 추가로 들어간다고 생각하기 때문에 보통은 거의 새로 만든다고 생각하는 편이고, 어느 정도 가져다 쓸 수 있을 뿐, Class Library Project 형태로 완전 호환 형태로 갖다 쓰는 건 마감기한이라는 유한한 자원구조상 불가능하다고 생각합니다.

전 MVVM은 오래되었지만 무척 고도화된 좋은 패턴이라고 생각합니다. 이걸 많은 사람이 알면 좋겠고, 많이 쓰면 좋겠고 무엇보다 제 wpf-dev-pack을 통해 접근하게 하고 싶습니다. 그런데 제가 만들어낸 도구로 더 복잡한 유지보수 불가능한 프로젝트를 생산하게 되면 나중엔 AI없이는 개발을 못할 거 같습니다. 그러면 고객 경험이 안좋아질꺼고, 여전히 WPF는 찬밥신세로, 다음 프로젝트는 WPF로 안하고 점점 이 Windows Programming 산업 자체가 시간이 지나면 죽는거 아닌가 라는 너무 많이 내다본 생각도 약간은 하고 있습니다.

그래서 개인적인 경험과 생각과 짐작으로 더 많이 사용할 것 같은 View First를 강제로 해놨습니다.

참고가 되셨으면 좋겠습니다.

6개의 좋아요

@Vincent 님이 경험에서 우러난 좋은 조언을 해주셨습니다.

여기에 조금 살을 붙이자면, 뷰의 본질은 아래와 같다고 생각합니다.

class View {
   event EventHandler<> Happend;
   event EventHandler<> Happend2;
   event EventHandler<> Happend3;
  // ...

   void ViewWith(a, b, c, // ... )
}

ViewWith의 파라미터들 (a, b, c, // ... ) 을 한 객체에 모아 놓으면, 시그니처는 아래와 같이 변경될 것입니다.

void ViewWith(ViewParams)

MVVM에서는 ViewParams 는 뷰모델이라고 부르고, 뷰의 BindingContext 혹은 DataContext 속성에 할당됩니다.

View-Model FirstViewParams 를 먼저 작성하라는 의미로, 작성자는 ViewWith 가 뭘 할 것인지는 (우선) 신경 쓰지 말라는 의미입니다.

뷰모델은 뷰를 몰라야 한다.

책임의 분리 관점에서는 매우 이상적이나, 현실은 그 이상과 조금 동떨어져 있다고 생각합니다.

현실적인 UI 소프트웨어 고객의 요구 사항은 아래의 함수로 나타낼 수 있고,

// 甲
IEnumerable<Requirement> Feedback(View);

뷰는 아래의 함수로 나타낼 수 있습니다.

// 乙
View Feedback(IEnumerable<Requirement>);

갑의 지위로 인해 Feedback(View)Empty 를 반환할 때까지, Feedback(IEnumerable<Requirement>)는 끊임 없이 호출되기에,

뷰는 매우 자주 변경된다는 특징이 있습니다.

ViewModel 은 개발자의 언어라서, 이 피드백 루프에 끼지도 못할 확률이 높습니다.

IEnumerable<Requirement> Feedback(ViewModel) =>
   throw new ArgumentExeption("눈에 보이는 거 가져와");

이러한 실무의 흐름은 뷰가 ViewParams 을 결정하게 만드는데, 이것이 View-First 입니다.

실무에서 ViewViewModel 의 관계가 대부분 1:1 - 다시 말하면 뷰모델 재사용이 거의 없다면 자신도 모르게 뷰우선으로 개발하고 있을 확률이 높습니다.

한발 더 나아가면, 웹에서는 ViewParams 를 url 파라미터나 쿼리 파라미터로 받는 게 자연스럽습니다. 즉, 그들에게는 ViewParams 보다는 (a, b, c) 형태가 더 친화적인 것이죠.

참고: 블레이저는 이 두 가지 형태를 모두 지원합니다.

이들과 전통적인 MVVM 뷰의 차이는 Validation 책임이라고 생각합니다.

// 뷰모델 신뢰
class View(ViewModel) {}
// 파라미터 불신
class View
{
   Param1; Param2; // ...

   // 자동 호출됨
   void OnParametersSet() 
   {
      // 파리미터 검증
   }
}

결론적으로 "뷰우선(대세)이냐 뷰모델 우선(특수)이냐"의 논쟁은 "밥그릇을 놓고 먹느냐(대세)와 들고 먹느냐(특수)"와 비슷하다고 생각합니다.

1개의 좋아요

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

GitHub 릴리스 링크

이번 v1.7.0은 약 50개의 WPF 지식 스킬을 새 WpfDevPackMcp MCP 서버로 이전한 대규모 구조 변경입니다. 지식 토픽이 더 이상 세션 스킬 목록을 차지하지 않으면서, 순수 마크다운으로 즉시 편집 가능합니다.

주요 변경사항

:brain: WPF 지식을 WpfDevPackMcp MCP 서버로 이전

  • MVVM, 렌더링, 스레딩, 스타일링, 서드파티 라이브러리, .NET 공통, Prism 9 컴패니언, 테스트 등 ~50개 WPF 지식 토픽이 더 이상 플러그인 스킬로 번들되지 않습니다.WpfDevPackMcp MCP 서버가 get_wpf_topic / search_wpf_topics로 온디맨드 제공하며, 로컬 저장소 클론의 wpf-dev-pack/knowledge/<id>/TOPIC.md에서 마크다운을 직접 읽습니다.
  • 세션 스킬 목록에서 ~50개 스킬 설명이 빠져 세션 컨텍스트가 크게 절약됩니다. 콘텐츠 수정 시 MCP 재빌드나 플러그인 버전업이 필요 없습니다.
  • 키워드 감지기(WpfKeywordDetector)가 지식 키워드는 MCP로, 커맨드 키워드는 /wpf-dev-pack:<skill>로 라우팅합니다.

:puzzle_piece: 신규 커맨드 스킬 & 훅

  • set-repo-path — WpfDevPackMcp가 지식을 읽어올 로컬 저장소 클론 경로를 설정합니다(~/.wpf-dev-pack-mcp/config.json 작성, 또는 WPFDEVPACK_REPO_PATH 환경변수).
  • RepoPathGuard (PreToolUse 훅) — 경로 미설정 상태에서 WpfDevPackMcp 도구 호출을 차단하고 안내합니다.

:electric_plug: MCP

  • .mcp.json이 이제 두 개의 서버를 등록합니다: HandMirrorMcp, WpfDevPackMcp(@0.1.1, framework-dependent dnx NuGet tool).

:books: 문서

  • README / README.ko: “카테고리별 스킬” 표를 11개 번들 커맨드 스킬 + 지식-via-MCP 안내로 교체, 통계·구조 갱신.
  • applying-wpf-dev-pack-feedback가 이제 지식 베이스(knowledge/<id>/TOPIC.md)를 대상으로 동작합니다.
  • flaui-cross-process-input 지식 보강(DPI 스케일링, ValuePattern 텍스트 입력, Mouse.MoveTo 보간).

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

GitHub 릴리스 링크

이번 v1.7.1은 WpfDevPackMcp 지식 저장소 경로가 미설정일 때 작동하는 RepoPathGuard(PreToolUse 훅)의 신뢰성을 높이는 버그 픽스 릴리스입니다. 콜드 스타트 시 훅이 타임아웃으로 통과(fail-open)되던 문제를 고치고, “미설정” 안내 메시지를 정비했습니다.

주요 변경사항

:shield: RepoPathGuard 신뢰성 개선 (기계적 게이트)

  • 콜드 스타트 fail-open 수정. 지식 저장소 경로가 미설정일 때 WpfDevPackMcp 도구 호출을 막는 PreToolUse 훅의 타임아웃이 5초였는데, dotnet file-based 앱의 콜드 컴파일이 이를 넘겨 훅이 강제 종료 → 호출이 서버로 통과되곤 했습니다(이후 에이전트가 클론을 탐색하고 set-repo-path를 스스로 실행). 훅 timeout30초로 올려 deny가 확실히 동작합니다(웜 실행 ~750ms, 콜드 비용은 플러그인 버전당 첫 호출 1회뿐).
  • “미설정” 메시지가 사용자에게 위임하도록 변경. RepoPathGuard deny 사유와 서버측 RepoNotConfiguredException 모두, 이것이 사용자의 일회성 설정임을 명시하고 에이전트가 직접 파일시스템을 탐색하거나 set-repo-path를 실행하지 말 것을 지시합니다. 이중 방어: 훅이 혹시 또 fail-open해도 MCP 서버의 코드 레벨 체크가 막습니다.

:electric_plug: MCP

  • .mcp.jsonWpfDevPackMcp 핀을 @0.1.2 로 갱신(정비된 서버 메시지 포함).

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

GitHub 릴리스 링크

이번 v1.7.2는 플러그인 내부 구조를 정리한 유지보수 릴리스입니다. 키워드 라우팅을 담당하던 훅을 제거하고, WPF 지식 토픽 전달을 전적으로 WpfDevPackMcp MCP 서버에 위임했습니다. 사용자 입장에서 동작 방식은 그대로 유지되며, 설치되는 플러그인 용량이 크게 줄었습니다.

주요 변경사항

제거됨 (Removed)

  • WpfKeywordDetector 키워드 라우터 훅 제거 (약 520줄). 이제 WPF 지식·스킬 트리거는 UserPromptSubmit 키워드 훅을 거치지 않고, WpfDevPackMcp MCP 서버의 자체 instructions(search_wpf_topics / get_wpf_topic)로 동작합니다. hooks.json에서도 해당 훅 등록이 빠졌습니다 (남은 훅 10개).
  • 플러그인 패키지에서 knowledge/ 디렉터리 제거. 지식 토픽은 이제 저장소 루트(knowledge/<id>/TOPIC.md)에 존재하며 WpfDevPackMcp가 로컬 클론에서 필요할 때 읽어 제공합니다. 따라서 설치되는 플러그인에는 더 이상 번들되지 않습니다 (약 16,000줄 감소).

변경됨 (Changed)

  • WpfDevPackMcp가 NuGet에서 검색 가능한 MCP 서버 패키지로 전환. .mcp.json에서 dnx로 핀 고정되며, 서버가 사용 안내(instructions)를 직접 노출하여 키워드 훅 없이도 에이전트가 자연스럽게 호출하도록 했습니다.


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

GitHub 릴리스 링크

이번 v1.7.3은 make-wpf-* 생성기들이 하나의 일관되고 빌드되는 표준 WPF 앱을 만들도록 정비하고, 실제 dotnet build로 검증한 릴리스입니다. 정적 리뷰가 놓친 컴파일 버그 2건도 함께 수정했습니다.

주요 변경사항

수정 (Fixed)

  • make-wpf-custom-control: 존재하지 않는 OnIsEnabledChanged 오버라이드(CS0115)를 제거했습니다. IsEnabled 변화는 생성자에서 IsEnabledChanged 이벤트 구독으로 처리합니다.
  • make-wpf-project: 기본 스캐폴드가 이제 빌드됩니다. 정의되지 않은 IDialogService 의존성(CS0246)을 제거하고 누락된 $0.ViewModels global using을 추가했습니다. dotnet build로 end-to-end 검증(CTK 8.4.* / Hosting 10.0.* / Behaviors.Wpf 1.1.* restore, Generic.xaml + ThemeInfo 커스텀 컨트롤 XAML 컴파일).

변경 (Changed)

  • make-wpf-* 생성기 표준화: 앱 프로젝트 접미사 .WpfApp(viewmodel/service 탐색과 일치), ViewModel-First 네비 스캐폴드(Mappings.xaml + ContentControl 호스트 + CurrentViewModel), CTK 8.4.* / Hosting 10.0.*, MarkupExtension 컨버터, 서비스 인터페이스 .Core 배치, 커스텀 컨트롤 Themes/Generic.xaml + ThemeInfo 자동 구성, UserControl 디자인타임 d:DataContext 전용.
  • 문서 정합화: knowledge→MCP / 키워드 라우터 제거 리팩토링 이후 남아있던 stale 서술 정리(README·CLAUDE·skills/hooks/agents 문서), 고아 sequential-thinking MCP 항목 제거, 누락된 wpf-code-auditor 추가, 무효 슬래시 명령을 출력하던 훅 2건 수정.

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

GitHub 릴리스 링크

이번 릴리스는 스트리밍 LLM 채팅 스킬, MCP 설정 스킬 3종, 항상 적용되는 WPF 작성 규칙 훅, 그리고 애니메이션 ControlTemplate·테마 지식 토픽을 추가합니다. 커맨드 스킬이 11개 → 19개로 늘었습니다.

주요 변경사항

신규 스킬 (11 → 19)

  • LLM 채팅 (5): make-wpf-chatclient(원버튼 전체 스트리밍 클라이언트), make-wpf-chatclient-factory, make-wpf-chat-orchestrator, make-wpf-chat-bubble-template, make-wpf-markdown-presenter
  • MCP 설정 (3): show-wpf-dev-pack-config(config.json/state.json 경로·값·env 오버라이드 출력), set-repo-branch(추적 브랜치 설정), set-repo-managed(파괴적/비파괴적 refresh를 제어하는 서버 관리 플래그 설정)

신규 훅

  • WpfAuthoringRulesLoader (SessionStart): 매 세션에 WPF ControlTemplate/Style/애니메이션 작성 강제 규칙을 주입합니다(필수 PART_ 이름, 애니메이션 안전 규칙, Freezable 대상 Setter → MC4111, StaticResource 전방 참조, (UIElement.Children)[n] 경로 함정, enter/exit 페어링, 런타임 검증). 플러그인 .claude/rules는 설치 사용자에게 자동 로드되지 않으므로 훅으로 제공합니다.

신규 지식 토픽 (WpfDevPackMcp 온디맨드 제공)

  • animating-wpf-controltemplates, building-swappable-wpf-themes, setting-up-flaui-ui-tests, hosting-extensions-ai-chatclient-in-wpf-mvvm, sharing-httpclient-across-llm-sdks, consuming-mcp-tools-in-extensions-ai, rendering-markdown-in-wpf, displaying-selectable-rich-text-in-wpf, styling-chat-bubbles-in-wpf, storing-api-keys-and-binding-passwordbox-in-wpf, building-a-provider-settings-panel

변경

  • make-wpf-custom-controlanimating-wpf-controltemplates 토픽으로 cross-link
4개의 좋아요

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

GitHub 릴리스 링크

이번 릴리스는 플러그인의 컨텍스트 전달 방식을 전면 개편하고, C# LSP 설정을 플러그인에 내장한 업데이트입니다. 배포 플러그인에서 자동 로드되지 않는 CLAUDE.md/.claude/에 의존하던 구조를 걷어내고, Claude Code가 공식 지원하는 채널(skill·agent·hook)로만 컨텍스트를 전달하도록 정리했습니다.

Claude Code는 Plugin으로 배포된 CLAUDE.md나 .claude/CLAUDE.md 에 대해 파일 자체를 포함하여 배포하지만 CLAUDE.md 또는 .claude/CLAUDE.md 파일들의 본래 의의인 ‘자동 주입’ 개념은 Plugin 의 경로가 cache 경로에서 수행되므로 경로가 달라서 세션 중 점진적 자동 context injection을 발생시키지 않습니다. 따라서 CLAUDE md 문서의 내용들을 context의 지식 md 파일들로 전환하여, session start hook을 사용해서 주입하도록 변경했습니다. 마찬가지로 .claude/rules/* 내용도 적절하게 분할했습니다.

주요 변경사항

컨텍스트 전달 개편

  • 플러그인의 CLAUDE.md.claude/ 디렉터리를 제거했습니다. 이들은 설치 사용자 세션에 자동 로드되지 않습니다(플러그인은 skill·agent·hook으로만 컨텍스트를 전달).
  • 항상 적용되는 핵심 정책(Essential 룰, MVVM Composition, .NET 버전 매트릭스, 트리거/위임 가이드, 일반 WPF 룰 3종)은 신규 CorePolicyLoader SessionStart 훅이 context/*.md에서 읽어 세션 시작 시 주입합니다. SessionStart matcher에 compact가 포함되어 context compaction 이후에도 정책이 자동 재주입됩니다.
  • 상세 WPF 룰은 preload 가능한 wpf-rule-* 스킬(user-invocable: false)로 전환했고, 각 전문 에이전트의 skills: frontmatter로 결정적으로 preload됩니다(플러그인 에이전트는 hooks를 무시하고 @rules import도 확장되지 않으므로 preload가 신뢰 가능한 경로).

C# LSP

  • 외부 csharp-lsp 플러그인 의존에서 번들 .lsp.json(csharp-ls)로 전환했습니다.

문서/유지보수

  • 메인테이너 레시피를 .github/CONTRIBUTING.md로 이전했고, README·docs/TERMINOLOGY·core-policy 참조를 새 위치로 갱신했습니다.

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

GitHub 릴리스 링크

이번 v1.8.1은 v1.8.0에서 도입했던 C# LSP 번들 방식을 공식 csharp-lsp 플러그인 의존으로 되돌리고, 실험적 컴포넌트인 테마와 모니터를 추가한 업데이트입니다.

주요 변경사항

C# LSP — csharp-lsp 플러그인 의존으로 롤백

  • v1.8.0에서 번들했던 .lsp.json을 제거하고, 다시 공식 csharp-lsp 플러그인에 의존합니다.
  • 이유: 여러 플러그인이 각자 csharp-ls LSP를 선언하면 Claude Code가 서버를 중복 실행해 상충하는 진단(한쪽 성공/한쪽 실패) 으로 사용자에게 혼선을 줄 수 있습니다.
  • 공식 문서상, .lsp.json 을 사용하는 것은 claude code plugin marketplace에 존재하지 않는 lsp 서버 설정을 위한 것으로, lsp 서버가 plugin에 올라온 것이 있다면 그것을 사용하도록 가이드하고 있습니다. 다만, .lsp.json던, 공식 LSP Plugin 이던 '설정’에 관련된 것이고 실제 LSP 서버 바이너리는 Local PC에 설치해야합니다.

신규 실험적 컴포넌트

  • 테마 (experimental.themes): .NET 브랜드 퍼플 #512BD4 강조의 wpf-dev-pack .NET Purple 다크/라이트 2종. /theme에서 선택 가능합니다.
  • 모니터 (experimental.monitors): wpf-build-watchdotnet watch build로 빌드 에러를 라이브로 알려줍니다. make-wpf-project 스킬 호출 시 시작됩니다.
2개의 좋아요