Token导航 LogoToken导航

Agent Skill · 开发

syncfusion-blazor-smart-rich-text-editor(syncfusion Blazor 智能富文本编辑器)

syncfusion-blazor-smart-rich-text-editor 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

syncfusion-blazor-smart-rich-text-editor 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为接触敏感数据;许可证信息还不明确,第三方扫描有提醒项,按安装量在开发类的 21,746 个 Skill 里排第 15,006。

总安装 636周安装 26GitHub Stars 公开资料未说明下载 206核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:syncfusion-blazor-smart-rich-text-editor(syncfusion Blazor 智能富文本编辑器)
来源仓库:https://github.com/syncfusion/blazor-ui-components-skills
仓库路径:skills/syncfusion-blazor-smart-rich-text-editor
安装命令:
npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-smart-rich-text-editor
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-smart-rich-text-editor

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态、代码变更或协作事项进行整理。通过 npx skills add 命令从指定 GitHub 仓库安装使用。

安装前需确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写操作。syncfusion-blazor-smart-rich-text-editor 属于开发类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/syncfusion-blazor-smart-rich-text-editor

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

syncfusion-blazor-smart-rich-text-editor 怎么安装?

在终端执行 npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusio…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

syncfusion-blazor-smart-rich-text-editor 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

syncfusion-blazor-smart-rich-text-editor 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

syncfusion-blazor-smart-rich-text-editor 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

syncfusion-blazor-smart-rich-text-editor 用的人多吗?

公开数据是累计安装 636 次,近一周安装 26 次,下载 206 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

syncfusion-blazor-smart-rich-text-editor 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
syncfusion-blazor-smart-rich-text-editor

syncfusion Blazor 智能富文本编辑器 · 本页

636—接触敏感数据未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Syncfusion Blazor Smart Rich Text Editor

A comprehensive skill for implementing and configuring the Syncfusion Blazor Smart Rich Text Editor (SfSmartRichTextEditor) — an AI-powered WYSIWYG editor that extends the full-featured SfRichTextEditor with intelligent content assistance. Supports OpenAI, Azure OpenAI, Ollama, and custom AI backends. Provides a Smart Action dropdown toolbar, an AI query dialog (Alt+Enter), and a fully customizable AI Assistant popup via AssistViewSettings.

When to Use This Skill

Use this skill when the user needs to:

  • Install and set up SfSmartRichTextEditor in a Blazor Server or Web App project
  • Configure an AI backend: OpenAI, Azure OpenAI, Ollama, or a custom IChatClient
  • Register IChatInferenceService / SyncfusionAIService in Program.cs
  • Use the Smart Action dropdown toolbar for AI commands (summarize, expand, adjust tone)
  • Add Name = "AI Commands" and Name = "AI Query" to ToolbarItemModel list to render AI toolbar buttons
  • Open the AI Query dialog with Alt+Enter for free-form AI prompts
  • Configure AssistViewSettings: Commands, Suggestions, Prompts, Placeholder, MaxPromptHistory, popup sizing
  • Customize the AI Assistant popup (BannerTemplate, HeaderToolbarSettings, PromptToolbarSettings, ResponseToolbarSettings)
  • Handle AI events: AIPromptRequested, AIResponseStopped, AIToolbarItemClicked, AIPopupOpening, AIPopupClosing
  • Use AI Assistant methods: ShowAIPopupAsync, HideAIPopupAsync, ExecuteAIPromptAsync, UpdateAIResponseAsync, GetAIPromptHistoryAsync, ClearAIPromptHistoryAsync
  • Style or animate the AI Assistant popup (.e-rte-aiquery-dialog)
  • Use all inherited SfRichTextEditor features: toolbar, images, tables, events, methods, data binding, paste cleanup, import/export, accessibility

Quick Start

1. Install NuGet packages:

dotnet add package Syncfusion.Blazor.SmartRichTextEditor
dotnet add package Syncfusion.Blazor.Themes
dotnet add package Microsoft.Extensions.AI
dotnet add package Microsoft.Extensions.AI.OpenAI

2. Register services in Program.cs:

using Syncfusion.Blazor;
using Syncfusion.Blazor.AI;
using Microsoft.Extensions.AI;
using OpenAI;

builder.Services.AddSyncfusionBlazor();

string openAIApiKey = "YOUR_API_KEY";
string openAIModel = "gpt-4";
OpenAIClient openAIClient = new OpenAIClient(openAIApiKey);
IChatClient chatClient = openAIClient.GetChatClient(openAIModel).AsIChatClient();
builder.Services.AddChatClient(chatClient);
builder.Services.AddSingleton<IChatInferenceService, SyncfusionAIService>();

3. Add to _Imports.razor:

@using Syncfusion.Blazor
@using Syncfusion.Blazor.SmartRichTextEditor

4. Add CSS/JS in App.razor (Server) or index.html (WASM):

<link href="_content/Syncfusion.Blazor.Themes/tailwind.css" rel="stylesheet" />
<script src="_content/Syncfusion.Blazor.Core/scripts/syncfusion-blazor.min.js"></script>

5. Add the component:

@rendermode InteractiveServer

<SfSmartRichTextEditor>
    <h2>Welcome to Smart Rich Text Editor</h2>
    <p>Select text and use the Smart Action toolbar, or press Alt+Enter to open the AI Query dialog.</p>
    <AssistViewSettings Placeholder="Ask AI to rewrite or generate content." />
</SfSmartRichTextEditor>

Navigation Guide

Getting Started & AI Service Setup

📄 Read: references/getting-started.md

  • NuGet installation: Syncfusion.Blazor.SmartRichTextEditor + Syncfusion.Blazor.Themes
  • Full setup for Blazor Server App (Visual Studio and VS Code) and Blazor Web App (.NET 8+)
  • OpenAI, Azure OpenAI, Ollama, and custom IChatClient configuration in Program.cs
  • AddInteractiveServerComponents() registration pattern for Web App
  • CSS theme and JS script references (.NET 6 through.NET 10)
  • Adding the component with AssistViewSettings
  • Content retrieval methods (GetTextAsync, GetCharCountAsync)
  • Common setup issues and fixes

AI Backend Configuration

📄 Read: references/ai-backends.md

  • OpenAI: API key, supported models (gpt-4-turbo, gpt-4, gpt-3.5-turbo), OpenAIClient setup, environment variables and User Secrets
  • Azure OpenAI: resource deployment, AzureOpenAIClient + ApiKeyCredential, appsettings.json config, Managed Identity (production recommended), HIPAA/SOC 2 compliance, monitoring, cost optimization
  • Ollama: local model installation (mistral, llama2), OllamaApiClient + OllamaSharp NuGet, Docker Compose, GPU acceleration, model recommendations
  • Custom IChatClient: implementing IChatClient for internal/proprietary AI, registering in Program.cs, streaming responses, retry logic, error handling, corporate AI API example

AssistViewSettings — Properties

📄 Read: references/assist-view-settings.md

  • Commands (List<AICommands>): Smart Action dropdown with nested sub-commands and icon CSS
  • PopupMaxHeight / PopupWidth: control popup dimensions (CSS values or pixel numbers)
  • Placeholder: placeholder text in the AI prompt textarea
  • Prompts (List<AssistViewPrompt>): predefined prompt/response templates loaded into the popup
  • Suggestions (List<string>): quick suggestion chips shown in the AI popup
  • MaxPromptHistory: maximum conversation entries retained (default: 20)
  • BannerTemplate: custom branding/header RenderFragment for the AI popup
  • HeaderToolbarSettings / PromptToolbarSettings / ResponseToolbarSettings: toolbar customization with AssistViewToolbarItem

AssistViewSettings — Events

📄 Read: references/ai-events.md

  • AIPromptRequested (AssistViewPromptRequestedEventArgs): intercept/modify prompt before AI call; set Cancel=true to prevent; modify Response, PromptSuggestions, ResponseToolbarItems
  • AIResponseStopped (ResponseStoppedEventArgs): user clicked "Stop Responding"; provides DataIndex and Prompt
  • AIToolbarItemClicked (AssistViewToolbarItemClickedEventArgs): handle custom toolbar button clicks; access Item, DataIndex, Event; set Cancel=true
  • AIPopupOpening (BeforeOpenEventArgs): cancel popup opening with args.Cancel = true; access Element reference
  • AIPopupClosing (BeforeCloseEventArgs): cancel popup closing; access ClosedBy, IsInteracted, PreventFocus

AssistViewSettings — Methods

📄 Read: references/ai-methods.md

  • ShowAIPopupAsync(): open the AI Assistant popup programmatically
  • HideAIPopupAsync(): close the AI Assistant popup
  • ExecuteAIPromptAsync(string prompt): send a prompt programmatically (as if user typed it)
  • UpdateAIResponseAsync(string response, bool isFinalUpdate): stream or inject AI response; set isFinalUpdate=true to hide Stop button
  • GetAIPromptHistoryAsync(): retrieve all saved prompts/responses as AssistViewPrompt[] (chronological, limited to MaxPromptHistory)
  • ClearAIPromptHistoryAsync(): reset all conversation history
  • Complete example combining all six methods with @ref

AI Popup Appearance & CSS

📄 Read: references/ai-appearance.md

  • CSS selectors for the AI popup: .e-rte-aiquery-dialog, .e-aiassistview
  • Customizing popup background, border, box-shadow
  • Targeting .e-view-header, .e-view-content.e-toolbar, .e-footer sub-sections for fine-grained control
  • Full custom popup styling example

Toolbar Configuration

📄 Read: references/toolbar.md

  • Enabling or disabling the toolbar with RichTextEditorToolbarSettings.Enable
  • Toolbar types: Expand, MultiRow, Scrollable, Popup
  • Floating toolbar and offset configuration
  • Toolbar position (top or bottom)
  • Configuring toolbar items with ToolbarItemModel
  • Custom toolbar items (template-based)

Built-in Toolbar Tools Reference

📄 Read: references/built-in-tools.md

  • Default toolbar items for SfSmartRichTextEditor
  • AI-specific toolbar items — Name = "AI Commands" (Smart Action dropdown) and Name = "AI Query" (Ask AI button); must use Name property, NOT ToolbarCommand enum
  • Complete list of all ToolbarCommand enum values
  • Text formatting, font & styling, alignment, lists, hyperlinks
  • Image/table/link quick toolbar item commands using SfSmartRichTextEditor
  • Undo/redo, fullscreen, print, source code, preview tools
  • Removing or reordering default toolbar items

Text Formatting

📄 Read: references/text-formatting.md

  • Bold, italic, underline, strikethrough, subscript, superscript, inline code
  • Text alignment (left, center, right, justify)
  • Ordered/unordered lists with custom number and bullet styles
  • Heading formats (H1–H6, paragraph, blockquote, code)
  • Line height configuration
  • Horizontal line, format painter, clear format
  • Markdown auto-format (inline and block shortcuts)

Images, Video & Audio

📄 Read: references/images-and-media.md

  • Image insertion from local machine or URL
  • RichTextEditorImageSettings: SaveUrl, Path, AllowedTypes, EnableResize
  • Base64 vs server-side upload
  • Image quick toolbar configuration
  • Video and audio insertion and settings

Tables

📄 Read: references/tables.md

  • Creating tables with CreateTable toolbar item
  • RichTextEditorTableSettings: width, resize, custom styles
  • Table quick toolbar: add/remove rows & columns, merge cells, properties
  • Advanced table manipulation (cell selection, split, custom borders)

Editor Modes

📄 Read: references/editor-modes.md

  • HTML editor mode (default WYSIWYG)
  • Markdown editor mode (EditorMode.Markdown)
  • IFrame vs DIV rendering mode
  • Source code view toggling

Inline Mode

📄 Read: references/inline-mode.md

  • Enabling inline toolbar (InlineMode)
  • Inline toolbar display on text selection
  • Use cases: comment editors, in-place content editing

Custom Tools & Exec Commands

📄 Read: references/custom-tools.md

  • Adding custom toolbar buttons with ToolbarItemModel and templates
  • Executing commands programmatically with ExecuteCommandAsync
  • Slash commands (/ trigger menu) configuration
  • Format painter advanced settings (RichTextEditorFormatPainterSettings)

Events (RTE)

📄 Read: references/events.md

  • RichTextEditorEvents child component usage and wiring pattern
  • Lifecycle events: Created, Destroyed
  • Focus/interaction: Focus, Blur, OnToolbarClick, SelectionChanged
  • Content events: ValueChange, BeforePasteCleanup, AfterPasteCleanup
  • Toolbar lifecycle: OnActionBegin, OnActionComplete
  • Dialog events: OnDialogOpen, DialogOpened, OnDialogClose, DialogClosed
  • Quick toolbar: OnQuickToolbarOpen, QuickToolbarOpened, QuickToolbarClosed
  • Image events: OnImageSelected, BeforeUploadImage, OnImageUploadSuccess, OnImageUploadFailed, ImageUploadChange, OnImageDrop, ImageDelete
  • Media events: FileSelected, FileUploading, FileUploadSuccess, FileUploadFailed, FileUploadChange, OnMediaDrop, MediaDeleted
  • Resize events: OnResizeStart, OnResizeStop
  • Toolbar status: UpdatedToolbarStatus
  • Export events: OnExport, OnExportFailure
  • Slash menu: SlashMenuItemSelecting
  • Complete EventArgs class reference with all properties

Methods (RTE)

📄 Read: references/methods.md

  • Focus & selection: FocusAsync, FocusOutAsync, SaveSelectionAsync, RestoreSelectionAsync, SelectAllAsync, GetSelectionAsync
  • Content retrieval: GetTextAsync, GetSelectedHtmlAsync, GetCharCountAsync, GetXhtmlAsync
  • Command execution: all ExecuteCommandAsync overloads with typed args (image, link, table, video, audio, code block, format painter)
  • Toolbar control: EnableToolbarItem, DisableToolbarItem, RemoveToolbarItem
  • Dialog & UI control: ShowDialogAsync, CloseDialogAsync, ShowFullScreenAsync, PrintAsync, RefreshUIAsync, ShowSourceCodeAsync
  • Undo/redo: ClearUndoRedoAsync
  • Full CommandName, ToolbarCommand, and DialogType enum references

Properties (RTE)

📄 Read: references/properties.md

  • Content & value: Value, Placeholder, Readonly, Enabled, MaxLength, ShowCharCount
  • Editor behaviour: EditorMode, EnterKey, ShiftEnterKey, EnableTabKey, EnableAutoUrl, EnableMarkdownAutoFormat, EnableClipboardCleanup, EnableXhtml, EnableHtmlEncode, EnableResize
  • Appearance & layout: Height, Width, CssClass, ShowTooltip, FloatingToolbarOffset
  • IFrame mode: RichTextEditorIFrameSettings child component with Enable, Attributes, Resources
  • Security & sanitization: EnableHtmlSanitizer, AdditionalSanitizeAttributes, AdditionalSanitizeTags, DeniedSanitizeSelectors
  • Keyboard & shortcuts: KeyConfigure with full ShortcutKeys default bindings table
  • Persistence & auto-save: EnablePersistence, SaveInterval, AutoSaveOnIdle
  • Undo/redo config: UndoRedoSteps, UndoRedoTimer
  • HTTP integration: HttpClientInstance
  • Full 38-property summary table

Data Binding & Value Management

📄 Read: references/data-binding.md

  • Two-way binding with @bind-Value
  • One-way binding and programmatic value updates
  • ValueChange event for detecting edits
  • Read-only mode (Readonly property)
  • Max length enforcement and character count display

Paste Cleanup

📄 Read: references/paste-and-cleanup.md

  • RichTextEditorPasteCleanupSettings configuration
  • Stripping/keeping specific HTML attributes and styles on paste
  • Forcing plain text paste
  • Enter key behavior (EnterKey, ShiftEnterKey)
  • Undo/redo manager configuration

Import & Export

📄 Read: references/import-export.md

  • Importing Word documents into the editor
  • Exporting content to Word (.docx) and PDF
  • HTTP client configuration for import/export services
  • Mail merge with dynamic data
  • WebAssembly performance optimizations for large documents

Accessibility & Globalization

📄 Read: references/accessibility-globalization.md

  • WCAG 2.1 compliance details
  • Keyboard shortcuts and navigation reference
  • ARIA roles and screen reader support
  • RTL layout (EnableRtl)
  • Localization and culture configuration
  • XHTML validation

Common Patterns

Basic Smart Rich Text Editor with AI

@rendermode InteractiveServer
@using Syncfusion.Blazor.SmartRichTextEditor

<SfSmartRichTextEditor @bind-Value="@Content">
    <AssistViewSettings Placeholder="Ask AI to rewrite or generate content." />
</SfSmartRichTextEditor>

@code {
    private string Content { get; set; } = "<p>Start editing...</p>";
}

AI with custom Smart Action commands

<SfSmartRichTextEditor>
    <AssistViewSettings Commands="@MyCommands" Suggestions="@QuickSuggestions" />
</SfSmartRichTextEditor>

@code {
    private List<AICommands> MyCommands = new()
    {
        new AICommands { Text = "Summarize", Prompt = "Summarize this content concisely" },
        new AICommands { Text = "Expand", Prompt = "Add more details and examples" },
        new AICommands
        {
            Text = "Translate",
            Items = new List<AICommands>
            {
                new AICommands { Text = "To French", Prompt = "Translate to French" },
                new AICommands { Text = "To Spanish", Prompt = "Translate to Spanish" }
            }
        }
    };

    private List<string> QuickSuggestions = new()
    {
        "Fix grammar", "Make shorter", "More formal", "Simplify"
    };
}

Programmatic AI popup control

<SfSmartRichTextEditor>
    <AssistViewSettings @ref="AssistViewRef" MaxPromptHistory="10" />
</SfSmartRichTextEditor>
<button @onclick="OpenAI">Open AI</button>
<button @onclick="RunPrompt">Run Prompt</button>

@code {
    private AssistViewSettings AssistViewRef;

    private async Task OpenAI() =>
        await AssistViewRef.ShowAIPopupAsync();

    private async Task RunPrompt() =>
        await AssistViewRef.ExecuteAIPromptAsync("Improve the clarity of this text");
}

Two-way bound editor with character count

<SfSmartRichTextEditor @bind-Value="@HtmlContent" ShowCharCount="true" MaxLength="2000">
    <AssistViewSettings Placeholder="Ask AI for writing help." />
</SfSmartRichTextEditor>

@code {
    private string HtmlContent { get; set; } = string.Empty;
}

Read-only display

<SfSmartRichTextEditor Value="@HtmlContent" Readonly="true">
    <RichTextEditorToolbarSettings Enable="false" />
</SfSmartRichTextEditor>

Markdown editor mode

<SfSmartRichTextEditor EditorMode="EditorMode.Markdown" @bind-Value="@MarkdownContent">
    <AssistViewSettings Placeholder="Ask AI to help with your Markdown content." />
</SfSmartRichTextEditor>

@code {
    private string MarkdownContent { get; set; } = "**Hello** world!";
}

Handle AI prompt event to intercept requests

<SfSmartRichTextEditor>
    <AssistViewSettings AIPromptRequested="OnAIPrompt" />
</SfSmartRichTextEditor>

@code {
    private async Task OnAIPrompt(AssistViewPromptRequestedEventArgs args)
    {
        // Log, validate, or modify args.Prompt before it is sent to AI
        Console.WriteLine($"Prompt: {args.Prompt}");
        // To cancel: args.Cancel = true;
    }
}

平台分布

Codex

33.53%
按下载量换算69

Claude

32.46%
按下载量换算67

Cursor

17.96%
按下载量换算37

Gemini CLI

10.14%
按下载量换算21

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills