This repository is the SkyCMS-maintained CKEditor 5 integration. It exists to keep the SkyCMS editor implementation current with upstream CKEditor fixes and features while preserving SkyCMS-specific plugins, runtime behavior, and deployment assets.
SkyCMS-specific additions in this repository include:
- an AI writing assistant integration for standard and advanced SkyCMS editor profiles,
- page-link integration for linking to SkyCMS-managed website pages,
- file-link integration for linking to files stored in SkyCMS,
- host-aware image insertion that supports upload, website storage, and external image URLs,
- SignalR integration hooks used by the SkyCMS editor host,
- VS Code editor integration support,
- title/mode indication and SkyCMS toolbar profile behavior.
This is a downstream integration repository, not a contribution fork. Upstream CKEditor development still happens in the official ckeditor/ckeditor5 repository, while this repository packages and validates the version of CKEditor used by SkyCMS.
Branch intent:
skycms/mainis the SkyCMS product branch and the default branch that should be shown to repository visitors.vendor/ckeditor5is the upstream mirror branch synced from CKEditor.- Upstream updates are reviewed into
skycms/mainby pull request after SkyCMS validation.
For the official CKEditor 5 project, documentation, and contribution guidelines, see https://github.com/ckeditor/ckeditor5.
- Quick start
- Documentation and support
- Release and sync model
- Contributing and project organization
- License
Use this repository when you need to:
- maintain the CKEditor build deployed by SkyCMS,
- develop or validate SkyCMS-specific CKEditor plugins under
integrations/skycms/, - mirror upstream CKEditor updates into a controlled vendor branch,
- review upstream changes before promoting them into the SkyCMS product branch.
If you want the upstream CKEditor source repository for contribution or general framework development, use https://github.com/ckeditor/ckeditor5.
Branch model:
This repository follows a vendor-mirror workflow:
skycms/mainis the SkyCMS customization and deployment branch.vendor/ckeditor5mirrors the selected upstream CKEditor branch.masteris considered legacy if it still exists and should not be used for new work.
The sync sequence is:
- Mirror upstream into
vendor/ckeditor5. - Open a pull request from
vendor/ckeditor5intoskycms/main. - Review, test, and merge only after SkyCMS validation.
See FORK_MAINTENANCE_CHECKLIST.md for the GitHub setup and first-run steps.
From the repository root:
pnpm install
pnpm --filter @skycms/ckeditor-integration devCKEditor 5 is a TypeScript project. Starting from v37.0.0, official packages provide native type definitions. Useful commands:
pnpm --filter @skycms/ckeditor-integration buildpnpm --filter @skycms/ckeditor-integration build:libpnpm --filter @skycms/ckeditor-integration testpwsh ./scripts/sync-fork.ps1 -WhatIf
The SkyCMS-specific code lives under integrations/skycms/ and includes:
- custom plugins such as page link, file link, image insertion, SignalR hooks, and VS Code editor integration,
- a local playground used to validate SkyCMS runtime behavior against the current CKEditor version,
- deployment helpers that copy built assets back into the main SkyCMS repository.
Start there when you need to validate or extend the SkyCMS editor behavior.
When you need official CKEditor guidance, use the upstream resources:
For SkyCMS integration workflow details, start with integrations/skycms/README.md and FORK_MAINTENANCE_CHECKLIST.md.
For CKEditor framework documentation, updates, and examples, use the upstream documentation portal:
- Installing CKEditor 5
- CKEditor 5 features
- CKEditor 5 examples
- Updating CKEditor 5
- Getting CKEditor 5 support
For FAQ please go to the CKEditor Ecosystem help center. For a high-level overview of the project see the CKEditor Ecosystem website.
This repository follows a vendor-mirror release model:
- Upstream CKEditor changes are mirrored into
vendor/ckeditor5. - A review PR is opened from
vendor/ckeditor5intoskycms/main. - SkyCMS-specific validation happens on
skycms/mainbefore merge. - Built assets are synced into the main SkyCMS Editor repository after validation.
Track upstream release notes in the CKEditor changelog and use that information during SkyCMS review.
SkyCMS builds on CKEditor 5 features and adds its own integration-specific behaviors. For the broader CKEditor feature set, see the upstream features catalog:
Refer to the CKEditor 5 Features documentation for details.
Use this repository for SkyCMS-specific editor integration work, custom plugin maintenance, and release preparation for the version deployed by SkyCMS.
Use this repository for SkyCMS-specific editor integration work, custom plugin maintenance, and release preparation for the version deployed by SkyCMS.
If you want to contribute to CKEditor core itself, use the upstream repository at https://github.com/ckeditor/ckeditor5.
Development:
CKEditor 5 is a modular, multi-package, monorepo project. This repository keeps a SkyCMS-oriented downstream integration of that upstream codebase.
The ckeditor5 repository is the place that centralizes the development of CKEditor 5. It bundles different packages into a single place, adding the necessary helper tools for the development workflow, like the builder and the test runner. Basic information on how to set up the development environment can be found in the documentation.
For SkyCMS integration work in this repository, start with integrations/skycms/README.md, then use the branch and sync process documented below. If you intend to contribute to CKEditor itself, use the official contributors' guide and work against the upstream project.
Fork maintenance (SkyCMS):
This repository uses a SkyCMS-first branch model:
skycms/mainis the SkyCMS customization and deployment branch.vendor/ckeditor5is the upstream-tracking mirror branch synced from CKEditor.
Use the sync script in this repository to refresh the vendor mirror branch:
pwsh ./scripts/sync-fork.ps1What the script does:
- Verifies the working tree is clean.
- Fetches the configured upstream branch, defaulting to
upstream/stable. - Resets
vendor/ckeditor5to exactly match that upstream ref. - Optionally pushes
vendor/ckeditor5tooriginwhen-Pushis used.
Promotion into skycms/main is intentionally not done by this script. That step happens through review.
Supported examples:
# Preview only
pwsh ./scripts/sync-fork.ps1 -WhatIf
# Mirror upstream/stable into vendor/ckeditor5 and push to origin
pwsh ./scripts/sync-fork.ps1 -PushGitHub Actions automation:
.github/workflows/sync-upstream-vendor-branch.ymlRuns weekly and also supports manual runs. It mirrors the configured upstream branch intovendor/ckeditor5..github/workflows/open-vendor-pr-into-skycms-main.ymlManual-only workflow. Run this when you are ready to review upstream changes inskycms/main. It creates or reuses a PR fromvendor/ckeditor5intoskycms/main.
For GitHub settings, branch protection, and first-run validation, see FORK_MAINTENANCE_CHECKLIST.md.
SkyCMS editor asset sync:
To sync built CKEditor assets from this repository into the SkyCMS Editor application, use:
pwsh -NoProfile -File .\sync-ckeditor5-to-editor.ps1This script copies CKEditor distribution files (JS/CSS/browser/translations/license) into the SkyCMS Editor wwwroot/lib/ckeditor folder.
For the full SkyCMS integration workflow (including building and deploying skycms-plugins.js), see:
integrations/skycms/README.md
Report SkyCMS-specific integration issues, build problems, or plugin regressions in this repository.
Report SkyCMS-specific integration issues, build problems, or plugin regressions in this repository.
Report CKEditor core bugs and framework feature requests in the upstream ckeditor5 repository. Read more in the Getting support section of the CKEditor 5 documentation.
Licensed under a dual-license model, this software is available under:
- the GNU General Public License Version 2 or later,
- or commercial license terms from CKSource Holding sp. z o.o.
For more information, see: https://ckeditor.com/legal/ckeditor-licensing-options.
