data-goblin/power-bi-agentic-development/tree/main/plugins/reports

pbir CLI를 따르는 리포트 패널에서 Claude가 읽고 변경하는 내용을 보여 주면서 대화형 Power BI 리포트를 만들고, 형식을 지정하고, 최적화하고, 검토합니다.
data-goblin/power-bi-agentic-development/tree/main/plugins/reports

[!WARNING] 이 스킬들은 활발히 개발 중이며 매주 릴리스되므로 이름과 구조가 정기적으로 바뀔 수 있습니다.
26.26부터 26.38까지는 의도적인 호환성 파괴 전환입니다. 이 범위의 주간 릴리스에서는 스킬이 통합되거나 이름이 바뀌거나 제거되거나 자동화 수준이 낮아질 수 있습니다. 전환 전 스킬 구조와 동작이 필요하면 26.25 이하로 고정하고, 한 전환 릴리스에서 다음 릴리스로의 호환성을 가정하지 마세요.
Claude Code를 시작하는 방법입니다. 마켓플레이스를 받으려면 터미널에서 다음을 실행하세요.
claude plugin marketplace add data-goblin/power-bi-agentic-development
마켓플레이스를 추가한 다음 /plugin으로 설치된 마켓플레이스로 이동해 플러그인을 설치합니다.
다른 방법으로 명령줄에서 플러그인을 추가할 수 있습니다.
claude plugin install goblin-mode@power-bi-agentic-development
claude plugin install tabular-editor@power-bi-agentic-development
claude plugin install pbi-desktop@power-bi-agentic-development
claude plugin install pbip@power-bi-agentic-development
claude plugin install semantic-models@power-bi-agentic-development
claude plugin install reports@power-bi-agentic-development
claude plugin install paginated-reports@power-bi-agentic-development
claude plugin install custom-visuals@power-bi-agentic-development
claude plugin install fabric-cli@power-bi-agentic-development
claude plugin install fabric-admin@power-bi-agentic-development
claude plugin install databricks-cli@power-bi-agentic-development
claude plugin install fabric-data-app@power-bi-agentic-development
claude plugin install etl@power-bi-agentic-development
독립 실행형 Copilot CLI는 GitHub 저장소에서 플러그인을 설치할 수 있습니다. Copilot CLI는 이 저장소가 사용하는 동일한 .claude-plugin/marketplace.json 매니페스트를 읽으므로 마켓플레이스와 하위 플러그인 구조를 수정하지 않고 사용할 수 있습니다.
TMDL 파일은 260자를 넘는 저장소 상대 경로에서 문제가 발생합니다. Windows의 레거시 MAX_PATH는 OS와 git 양쪽에서 긴 경로 지원을 켜지 않으면 git clone이 해당 경로를 쓰지 못하게 합니다. 이렇게 하지 않으면 copilot plugin install이 Filename too long으로 중단됩니다.
긴 경로를 활성화하기 위해 관리자 권한 ps 환경에서 실행할 수 있는 스크립트 예시는 useful-stuff/agent-scripts/enable-windows-longpaths.ps1에서 확인하세요. 온라인에서 다른 방법을 찾을 수도 있고, Copilot에게 물어봐도 됩니다. 레지스트리 변경 후 재부팅을 권장합니다. 이는 Maximum Path Length Limitation에 문서화된 Windows OS 제한입니다.
아래 git config 명령도 참고하세요.
git config --system core.longpaths true
</details>
<details>
<summary><strong>추가 설치 지침</strong></summary>
이 저장소는 단일 배포 플러그인이 아니라 Anthropic 형식 플러그인 마켓플레이스(플러그인 모음)이므로 루트 .claude-plugin/에는 marketplace.json만 있습니다. 문서화된 설치 경로는 2가지입니다.
1. 마켓플레이스를 한 번 등록한 뒤 이름이 지정된 하위 플러그인을 설치합니다. 예시:
copilot plugin marketplace add data-goblin/power-bi-agentic-development
copilot plugin install tabular-editor@power-bi-agentic-development
2. 또는 마켓플레이스 등록 없이 하위 디렉터리에서 단일 플러그인을 직접 설치합니다. 예시:
copilot plugin install data-goblin/power-bi-agentic-development:plugins/pbip
두 형식 모두 Copilot CLI 플러그인 참조와 플러그인 방법에 문서화되어 있습니다. 대화형 Copilot 세션에서는 /plugin install PLUGIN-NAME@MARKETPLACE-NAME이 (1)과 같습니다. 한정자가 없는 copilot plugin install data-goblin/power-bi-agentic-development는 루트가 플러그인이 아니라 마켓플레이스 카탈로그이므로 유용한 것을 설치하지 않습니다.
Copilot CLI 안에서 실행합니다.
/env # Loaded instructions, MCP servers, skills, agents, plugins, LSPs, extensions
/plugin list # Installed plugins
/skills list # Available skills
/skills info pbip # Details for a specific skill
/agent # Browse installed agents
</details>
<details>
<summary><strong>호환성 참고</strong></summary>
skills/<name>/SKILL.md를 읽습니다.*.agent.md 확장자를 사용합니다. Claude Code는 agents/의 모든 *.md 파일과 일치하므로 이중 확장자가 두 도구 모두에서 작동합니다..mcp.json(플러그인 루트) 또는 .github/mcp.json에서 로드됩니다. 이 저장소의 플러그인은 현재 MCP 서버를 제공하지 않습니다.hooks/hooks.json(hook별 if 경로 필터 포함)을 읽습니다. Copilot CLI는 .github/plugin/plugin.json을 읽고 여기서 hooks/copilot-hooks.json을 가리킵니다. 동일한 스크립트를 명시적인 bash 및 powershell 명령으로 연결하므로 PATH에 Git Bash가 없는 Windows 호스트에서도 실행 실패 대신 깔끔한 no-op이 됩니다. Copilot에는 if 필터가 없고 0이 아닌 PreToolUse 종료 코드에서 도구 호출을 거부하므로 모든 스크립트가 자체 경로 및 명령 필터를 다시 적용하고 관련 없는 내용에는 0으로 종료합니다. CLAUDE_PLUGIN_ROOT에는 Copilot CLI >= 1.0.26(2026-04-14)이 필요합니다(changelog). 이전 빌드는 실패하지 않고 hooks를 건너뜁니다. 네이티브 Windows bash 사용자는 업스트림에서 추적 중인 별도 경로 형식 버그 claude-code#11984를 만날 수도 있습니다.~/.copilot/installed-plugins/에 설치되고 hooks는 컴퓨터의 모든 세션에서 실행됩니다. 프로젝트별 설치가 없으므로 아래의 “프로젝트 범위 우선” 조언은 Claude Code에만 적용됩니다. Copilot에서는 필요할 때만 플러그인을 설치하세요./plugin rm 또는 copilot plugin uninstall이 Access is denied. (os error 5)로 실패할 수 있습니다. 플러그인 문제가 아니라 공개된 Copilot CLI 버그입니다. 설치 프로그램이 플러그인 폴더의 이름을 바꿔 교체하는데 다른 프로세스가 폴더 핸들을 보유하면 Windows가 이름 변경을 거부합니다. VS Code의 Copilot 확장은 설치된 모든 플러그인의 hooks/, agents/, skills/ 폴더에 디렉터리 감시자를 유지하고 두 번째 Copilot CLI 세션도 같은 작업을 합니다. github/copilot-cli#4095와 #4151에서 추적 중입니다.
%USERPROFILE%\\.copilot\\installed-plugins\\(또는 %COPILOT_HOME%\\installed-plugins\\) 아래의 폴더를 제거하고 Copilot CLI를 다시 시작합니다.hooks 폴더를 삭제합니다.저장소에는 스킬, 에이전트, hooks가 들어 있습니다.
/skill-name으로 수동 호출할 수 있습니다. Claude Code에서는 스킬과 명령이 합쳐졌고 명령은 더 지시적인 스킬 워크플로입니다.hook 검사는 설정 파일로 개별 전환할 수 있습니다. 어떤 검사든 false로 설정하면 비활성화됩니다.
plugins/pbip/hooks/config.yaml -- PBIR, TMDL 및 리포트 바인딩 검증plugins/pbi-desktop/hooks/config.yaml -- DAX 참조, 측정값 메타데이터, 참조 무결성, 메타데이터 캐시<details> <summary><strong>goblin-mode</strong>   시작하고 도구를 설정하며 전체 에이전트 개발 환경을 점검하고 개선하기</summary>[!WARNING] 모든 플러그인을 설치하지 마세요. 각 스킬이 에이전트의 주의와 컨텍스트 창을 놓고 경쟁하므로 필요할 때만 설치하고 필요하지 않으면 제거하세요. 사용자 범위보다 프로젝트 범위 플러그인을 우선해 각 프로젝트에 실제로 사용하는 스킬만 포함되게 하세요.
| 유형 | 이름 | 설명 |
|------|------|-------------|
| 스킬 | help-me-get-started | 에이전트를 처음 접하는 사람을 위한 느리고 친절하며 전문 용어 없는 에이전트 개발 안내입니다. 하고 싶은 일을 듣고 역할과 접근 권한을 확인하며 로컬 대화형 설명으로 다섯 기둥(모델, 컨텍스트, 프롬프트, 도구, 환경)을 가르치고 필요한 항목을 확인하고 설치합니다(Windows/macOS 명령). 전체 튜토리얼 또는 빠른 설치로 속도를 조절합니다 |
| 스킬 | improve-my-agent-setup | 여러 모드(shallow/deep/ultra/yolo)를 지원하는 설정 전체 상태 점검: 스킬, 메모리, 도구, STT, 모델 독립성
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add data-goblin/power-bi-agentic-development claude plugin install reports
[!WARNING] These skills are under active development with a weekly release cadence, so expect regular renaming and restructuring.
Versions 26.26 through 26.38 are a deliberate breaking transition. Skills may be consolidated, renamed, removed, or made less automatic between weekly releases in this range. Pin 26.25 or earlier if you need the pre-transition skill structure and behavior; do not assume compatibility from one transition release to the next.
Here's how you get started in Claude Code; run this in the terminal to get the marketplace:
claude plugin marketplace add data-goblin/power-bi-agentic-development
Click here for a YouTube walkthrough
Add the marketplace, then install plugins via /plugin and navigating to the installed marketplace.
Alternative; add plugins via command line:
claude plugin install goblin-mode@power-bi-agentic-development
claude plugin install tabular-editor@power-bi-agentic-development
claude plugin install pbi-desktop@power-bi-agentic-development
claude plugin install pbip@power-bi-agentic-development
claude plugin install semantic-models@power-bi-agentic-development
claude plugin install reports@power-bi-agentic-development
claude plugin install paginated-reports@power-bi-agentic-development
claude plugin install custom-visuals@power-bi-agentic-development
claude plugin install fabric-cli@power-bi-agentic-development
claude plugin install fabric-admin@power-bi-agentic-development
claude plugin install databricks-cli@power-bi-agentic-development
claude plugin install fabric-data-app@power-bi-agentic-development
claude plugin install etl@power-bi-agentic-development
The standalone Copilot CLI supports plugin installation from GitHub repos. Copilot CLI reads the same .claude-plugin/marketplace.json manifest this repo uses, so the marketplace and child-plugin layout works without modification.
TMDL files have a problem with repository-relative paths over 260 characters. Windows' legacy MAX_PATH blocks git clone from writing them unless long path support is enabled at both the OS and git level. Without this, copilot plugin install aborts with Filename too long.
Check useful-stuff/agent-scripts/enable-windows-longpaths.ps1 as an example of a script you can run from an elevated ps environment to enable long paths; there are other routes to do this that you can find online, too... just ask Copilot. A reboot is recommended after the registry change. This is a Windows OS limitation, documented at Maximum Path Length Limitation.
See also the below git config command:
git config --system core.longpaths true
</details>
<details>
<summary><strong>Additional installation instructions</strong></summary>
This repository is an Anthropic-format plugin marketplace (a set of plugins), not a single distributable plugin, so the root .claude-plugin/ contains only marketplace.json. Two documented install paths work:
1. Register the marketplace once, then install named child plugins. Example:
copilot plugin marketplace add data-goblin/power-bi-agentic-development
copilot plugin install tabular-editor@power-bi-agentic-development
2. Or install a single plugin directly from its subdirectory, no marketplace registration needed. Example:
copilot plugin install data-goblin/power-bi-agentic-development:plugins/pbip
Both forms are documented in the Copilot CLI plugin reference and the plugins how-to. Inside an interactive Copilot session, /plugin install PLUGIN-NAME@MARKETPLACE-NAME is the equivalent of (1). The bare copilot plugin install data-goblin/power-bi-agentic-development (no qualifier) will not install anything useful, because the root is a marketplace catalog, not a plugin.
Inside Copilot CLI:
/env # Loaded instructions, MCP servers, skills, agents, plugins, LSPs, extensions
/plugin list # Installed plugins
/skills list # Available skills
/skills info pbip # Details for a specific skill
/agent # Browse installed agents
</details>
<details>
<summary><strong>Compatibility notes</strong></summary>
skills/<name>/SKILL.md.*.agent.md extension required by Copilot CLI's documented convention. Claude Code matches any *.md file in agents/, so the dual extension works in both tools..mcp.json (plugin root) or .github/mcp.json. The plugins in this repo do not currently ship MCP servers.hooks/hooks.json (with per-hook if path filters). Copilot CLI reads .github/plugin/plugin.json, which points it at hooks/copilot-hooks.json: the same scripts, wired with explicit bash and powershell commands so a Windows host without Git Bash on PATH gets a clean no-op instead of a failed launch. Copilot has no if filter and denies a tool call on any non-zero PreToolUse exit, so every script also re-applies its own path and command filters and exits 0 on anything unrelated. Requires Copilot CLI >= 1.0.26 (2026-04-14) for CLAUDE_PLUGIN_ROOT (changelog); older builds skip the hooks rather than fail. Native Windows bash users may also hit a separate path-format bug tracked upstream at claude-code#11984.~/.copilot/installed-plugins/ and their hooks run in every session on the machine. There is no per-project install, so the "prefer project scope" advice below applies to Claude Code only; in Copilot, install a plugin only while you need it./plugin rm or copilot plugin uninstall can fail with Access is denied. (os error 5). This is an open Copilot CLI bug, not a plugin problem: the installer swaps the plugin folder by renaming it, and Windows refuses the rename while another process holds a handle on it. VS Code's Copilot extension keeps directory watchers on every installed plugin's hooks/, agents/ and skills/ folders, and a second Copilot CLI session does the same. Tracked at github/copilot-cli#4095 and #4151.
%USERPROFILE%\.copilot\installed-plugins\ (or %COPILOT_HOME%\installed-plugins\) and restart Copilot CLI.hooks folder from that same location.The repo contains skills, agents, and hooks.
/skill-name. In Claude Code, skills and commands have coalesced; commands are simply more prescriptive skill workflows.Hook checks can be individually toggled via config files. Set any check to false to disable it:
plugins/pbip/hooks/config.yaml -- PBIR, TMDL, and report binding validationplugins/pbi-desktop/hooks/config.yaml -- DAX references, measure metadata, referential integrity, metadata cache<details> <summary><strong>goblin-mode</strong>   Get started, set up your tools, and audit and improve your whole agentic setup</summary>[!WARNING] Don't install every plugin. Each skill competes for the agent's attention and context window, so install a plugin only when you need it and remove it when you don't. Prefer installing plugins scoped to a project rather than to your user, so each project carries only the skills it actually uses.
| Type | Name | Description |
|------|------|-------------|
| Skill | help-me-get-started | A slow, friendly, jargon-free guide to agentic development for people new to agents; talks through what you want to do, feels out your role and access, teaches the five pillars (model, context, prompt, tools, environment) with local interactive explainers, and checks and installs what you need (Windows/macOS commands). Adapts pace: full tutorial or a fast install run |
| Skill | improve-my-agent-setup | Setup-wide health check with modes (shallow/deep/ultra/yolo): skills, memory, tools, STT, model independence, other clients, harness config, git, permission/isolation, network and autonomous-agent exposure, safety enforcement, secrets and PII hygiene, and workflow habits; then offers to fix what's weak. Absorbs the old /audit-context |
| Type | Name | Description |
|------|------|-------------|
| Skill | bpa-rules | Create and improve Best Practice Analyzer rules for models |
| Skill | c-sharp-scripting | C# scripting and macros for TE |
| Skill | te-cli | Cross-platform Tabular Editor CLI (te, preview) for semantic models from the terminal |
| Skill | te2-cli | Tabular Editor 2 CLI usage and automation (not TE3) |
| Skill | te-docs | Tabular Editor documentation search, TE3 config files. Uses pbi-search CLI |
| Command | /suggest-rule | Generate BPA rules from descriptions |
| Agent | bpa-expression-helper | Debug and improve BPA rule expressions |
| Type | Name | Description |
|------|------|-------------|
| Skill | connect-pbid | Explore, query, and modify a model in Power BI Desktop, and reload/screenshot the report canvas via the Desktop Bridge |
| Agent | query-listener | Capture DAX queries from Power BI Desktop visuals in real time |
| Hook | DAX reference validation | Validates table, column, and measure references against the connected model; suggests corrections |
| Hook | Measure metadata enforcement | Blocks adding measures without DisplayFolder, Description, and FormatString |
| Hook | Referential integrity check | Reports unmatched many-side keys after relationship or column changes |
| Hook | Metadata cache refresh | Auto-snapshots model metadata on TOM connect or model modification |
| Hook | Compatibility level check | Reports features available by upgrading; optional auto-upgrade |
| Type | Name | Description |
|------|------|-------------|
| Skill | pbip | Power BI Project (PBIP) format, structure, and file types |
| Skill | tmdl | Author and edit TMDL files directly |
| Skill | pbir-format | Author and edit PBIR metadata files directly (visual.json, report.json, themes, filters, report extensions, visual calculations) |
| Agent | pbip-validator | Validate PBIP project structure, TMDL syntax, and PBIR schemas |
| Hook | PBIR validation | Validates PBIR structure, required fields, naming conventions, and schema URLs |
| Hook | Report binding validation | Validates semantic model binding (byPath directory exists; byConnection model exists via fab exists) |
| Hook | TMDL validation | Validates TMDL structural syntax |
| Type | Name | Description |
|------|------|-------------|
| Skill | create-pbi-report | Step-by-step workflow for building a complete report from scratch via the pbir CLI: model discovery, pages, theme, visuals, field binding, filtering, formatting, validation, publishing |
| Skill | pbi-report-design | The Power BI report design canon: design identity, visual hierarchy, layout, color discipline, chart selection, KPI/table design, accessibility. Shared reference used by the other report skills |
| Skill | modifying-theme-json | Design, enforce, audit, and validate report themes through the pbir CLI |
| Skill | review-report | Actionable feedback on report quality, usage, and effectiveness; usage analysis, health checks |
| Skill | pbir-cli | Programmatic report manipulation via the pbir CLI, including live Power BI Desktop refresh and page screenshots |
| Mod | /report-pane | Report pane: pages, visuals, bookmarks, filters and report measures of the .Report folder as a tree that follows pbir, with live highlights of what Claude reads or changes. Optional arg: a path to a .Report folder. Icons: FabricSymbols NF |
| Agent | deneb-reviewer | Review Deneb visual specs for Vega/Vega-Lite syntax and conventions |
| Agent | svg-reviewer | Review SVG DAX measures for syntax and design quality |
| Agent | r-reviewer | Review R visual scripts (ggplot2) for Power BI conventions |
| Agent | python-reviewer | Review Python visual scripts (matplotlib/seaborn) for Power BI conventions |
| Type | Name | Description |
|------|------|-------------|
| Skill | paginated-report | Author, validate, publish, and test Power BI paginated reports in RDL format (Report Builder, PBIRS/SSRS-compatible); connect to a semantic model, render to PDF/Excel |
| Hook | RDL validation | Validates .rdl structure after Write/Edit and on Bash commands touching .rdl files; blocks on structural errors only |
| Type | Name | Description |
|------|------|-------------|
| Skill | deneb-visuals | Deneb visual creation, Vega/Vega-Lite spec authoring, Deneb best practices for PBIR reports |
| Skill | r-visuals | Custom R visuals (ggplot2) for Power BI reports |
| Skill | python-visuals | Custom Python visuals (matplotlib/seaborn) for Power BI reports |
| Skill | svg-visuals | SVG generation via DAX measures and extension measures for inline chart visualizations (sparklines, bullet charts, KPI indicators, and more) |
| Skill | powerbi-custom-visuals | Power BI developer custom visual (.pbiviz) development with the pbiviz toolchain and its MCP server: scaffold, build, debug, package, certify, publish to AppSource |
Reviewer agents for these visual types (deneb-reviewer, svg-reviewer, r-reviewer, python-reviewer) ship in the reports plugin above.
| Type | Name | Description |
|------|------|-------------|
| Skill | semantic-model | Design, build, refresh, and review semantic models through a te-first tool cascade |
| Skill | standardize-naming-conventions | Audit and standardize naming conventions in semantic models |
| Skill | refresh-semantic-model | Trigger or troubleshoot refreshes |
| Skill | lineage-analysis | Trace downstream reports from a semantic model across workspaces |
| Skill | power-query | Write M expressions, debug query folding, execute M locally or via Fabric API |
| Skill | dax | Write, debug, and optimize DAX in semantic models. Contributed by Justin Martin |
| Agent | semantic-model-auditor | Audit semantic models for quality, memory, DAX, and design issues |
| Type | Name | Description |
|------|------|-------------|
| Skill | fabric-cli | Fabric CLI (fab) for any remote operation in Power BI or Fabric (works fully on Pro, PPU; Fabric not required) |
| Command | /migrating-fabric-trial-capacities | Migrate workspaces from trial to production capacity |
| Mod | /fabric-pane | Fabric pane: workspaces and items as a tree that follows fab, with live highlights, copy of fab paths, open in Fabric, and open semantic models in te. Optional arg: a workspace to reveal. Icons: FabricSymbols NF |
| Type | Name | Description |
|------|------|-------------|
| Skill | audit-tenant-settings | Audit Fabric and Power BI tenant settings, delegated overrides, and Entra security group membership |
| Type | Name | Description |
|------|------|-------------|
| Mod | /databricks-pane | Databricks pane: workspace, Unity Catalog, compute, jobs, pipelines, apps and dashboards as a tree that follows databricks, with live highlights, profile switching (-p or DATABRICKS_CONFIG_PROFILE), copy of CLI arguments, and open in Databricks. Optional arg: a profile. Icons: DatabricksSymbols NF |
| Type | Name | Description |
|------|------|-------------|
| Mod | /fabric-app-pane | Fabric app pane: every Fabric App (rayfin/rayfin.yml) under the working directory with its data sources, deploy state and files, as a tree that follows rayfin, with live highlights of what Claude deploys or changes. Optional arg: a folder. Icons: FabricSymbols NF |
| Type | Name | Description |
|------|------|-------------|
| Skill | executing-spark | Execute arbitrary Python or PySpark code on Fabric Spark compute without creating a notebook artifact; ephemeral Livy sessions with full Delta table access |
| Skill | using-duckdb | Query Fabric lakehouse and warehouse data with DuckDB, locally or inside a Fabric notebook; data freshness and quality checks |
[!WARNING] Mods only work in Claude Code 2.1.287 or newer. In other tools, such as Copilot CLI, the panes do not appear.
Mods add a pane to Claude Code's sidebar. These panes show your Fabric tenant, Databricks workspace, Power BI report or Fabric data apps as a tree beside the conversation, highlight what Claude reads, downloads, uploads, deploys or changes through the CLI, say when Claude is working, show spinners while a command runs, and pass the item you select to Claude as context. See the Claude Code mod docs.
/fabric-pane from the fabric-cli plugin follows fab: workspaces grouped by domain, items, lakehouse tables and files.
/databricks-pane from the databricks-cli plugin follows databricks: workspace, Unity Catalog, compute, jobs, pipelines, apps and dashboards.
/report-pane from the reports plugin follows pbir: pages, visuals, bookmarks, filters and report measures of a .Report folder.
/fabric-app-pane from the fabric-data-app plugin follows rayfin: every Fabric App under the working directory, its data sources, deploy state and files.
/tui fullscreen, or "tui": "fullscreen" in ~/.claude/settings.json) and a terminal at least 110 columns wide. In the default layout or tmux the panes stay hidden and their command tells you how to switch. In a fullscreen session the Fabric, Databricks and report panes open by themselves on Claude's first fab, databricks or pbir command, and the Fabric app pane when the working directory holds a Fabric Appglyphs optionglyphs forces an icon set; follow (Follow Claude) decides whether the tree scrolls to what Claude touches; fontHint turns off the one-line install hint Claude gets once per session when the icons fall back to plain UnicodeGeneral-purpose agent resources that don't fit into a plugin: defensive hooks, patterns, and tools. See useful-stuff/.
These plugins are intended for free community use.
You do not have the license to copy and incorporate them into your own products, trainings, courses, or tools. If you copy these skills - manually or by using an agent to rewrite them - you must include attribution and a link to this original project. That includes you, Microsoft.
<br> <p align="center"> <img src="media/bg22-06-2.png" alt="" width="800"> </p>