RepoPilotOpen in app →

OrchardCMS/OrchardCore

Orchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.

Healthy

Healthy across the board

Use as dependencyHealthy

Permissive license, no critical CVEs, actively maintained — safe to depend on.

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 1d ago
  • 21+ active contributors
  • Distributed ownership (top contributor 24% of recent commits)
Show 3 more →
  • BSD-3-Clause licensed
  • CI configured
  • No test directory detected

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/orchardcms/orchardcore)](https://repopilot.app/r/orchardcms/orchardcore)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/orchardcms/orchardcore on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: OrchardCMS/OrchardCore

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/OrchardCMS/OrchardCore shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

GO — Healthy across the board

  • Last commit 1d ago
  • 21+ active contributors
  • Distributed ownership (top contributor 24% of recent commits)
  • BSD-3-Clause licensed
  • CI configured
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live OrchardCMS/OrchardCore repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/OrchardCMS/OrchardCore.

What it runs against: a local clone of OrchardCMS/OrchardCore — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in OrchardCMS/OrchardCore | Confirms the artifact applies here, not a fork | | 2 | License is still BSD-3-Clause | Catches relicense before you depend on it | | 3 | Default branch main exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 31 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>OrchardCMS/OrchardCore</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of OrchardCMS/OrchardCore. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/OrchardCMS/OrchardCore.git
#   cd OrchardCore
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of OrchardCMS/OrchardCore and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "OrchardCMS/OrchardCore(\\.git)?\\b" \\
  && ok "origin remote is OrchardCMS/OrchardCore" \\
  || miss "origin remote is not OrchardCMS/OrchardCore (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(BSD-3-Clause)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"BSD-3-Clause\"" package.json 2>/dev/null) \\
  && ok "license is BSD-3-Clause" \\
  || miss "license drift — was BSD-3-Clause at generation time"

# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
  && ok "default branch main exists" \\
  || miss "default branch main no longer exists"

# 4. Critical files exist
test -f "OrchardCore.slnx" \\
  && ok "OrchardCore.slnx" \\
  || miss "missing critical file: OrchardCore.slnx"
test -f "Directory.Build.props" \\
  && ok "Directory.Build.props" \\
  || miss "missing critical file: Directory.Build.props"
test -f ".scripts/assets-manager/build.mjs" \\
  && ok ".scripts/assets-manager/build.mjs" \\
  || miss "missing critical file: .scripts/assets-manager/build.mjs"
test -f "NuGet.config" \\
  && ok "NuGet.config" \\
  || miss "missing critical file: NuGet.config"
test -f ".github/workflows/main_ci.yml" \\
  && ok ".github/workflows/main_ci.yml" \\
  || miss "missing critical file: .github/workflows/main_ci.yml"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 31 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~1d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/OrchardCMS/OrchardCore"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

Orchard Core is a modular, multi-tenant application framework and CMS built on ASP.NET Core, consisting of two layers: the Orchard Core Framework (for building pluggable business applications) and Orchard Core CMS (a production-grade content management system). It solves the problem of building enterprise-scale, customizable web applications with shared infrastructure across multiple tenants while maintaining content and business logic modularity. Monorepo structure: core framework logic in the root with language-specific builds (C# in src/, JavaScript/TypeScript in npm packages), asset management orchestrated through .agents/ skill modules for module creation, testing, and theme creation. Module system uses .NET convention: each module has its own directory with manifest, features organized into pluggable components. Assets pipeline uses Parcel 2.13.3 with multi-transformer setup (Vue 2/3, Sass, PostCSS-RTL) for RTL/LTR-aware CSS generation.

👥Who it's for

ASP.NET Core developers and architects building multi-tenant SaaS platforms, enterprise content management systems, or modular business applications that need plugin-based extensibility, role-based access control, and content versioning without building from scratch.

🌱Maturity & risk

Production-ready and actively maintained at v2.2.1. The project demonstrates maturity through comprehensive CI/CD workflows (main_ci.yml, functional_all_db.yml, integration_tests.yml), NuGet package distribution to both stable (release/2.2) and nightly (main) channels, and active GitHub Actions for release management. Actively developed with clear release milestones and v2.2.1 marked as 'capable of serving large, mission-critical applications.'

Moderate complexity risk: the codebase spans 10.4M lines of C# with significant JavaScript/TypeScript (1.8M lines) and CSS (1.4M lines), requiring multi-language proficiency. Dependency risk includes 40+ Parcel/SWC/Webpack packages in the asset management toolchain (build.mjs ecosystem) which could introduce supply-chain vulnerabilities. The monolithic nature with 60+ critical files suggests tight coupling between framework and CMS features; single breaking changes in core APIs could cascade through all modules.

Active areas of work

Active development tracked through GitHub Actions: main_ci.yml runs on every push (unit/integration tests), functional_all_db.yml tests against multiple databases, preview_ci.yml publishes nightly builds to Cloudsmith. The .agents/skills/ directory indicates recent investment in AI-assisted development (module creator, tester, theme creator skills). Release cycles are managed through release_ci.yml (stable v2.2 branch) and preview_ci.yml (main nightly channel). Backport workflow suggests patch releases are actively maintained.

🚀Get running

git clone https://github.com/OrchardCMS/OrchardCore.git
cd OrchardCore
dotnet restore
dotnet build
# For assets (JS/CSS):
cd src/OrchardCore.Cms.Web
npm install  # Uses @orchardcore/assets-manager v1.0.0
npm run build  # Orchestrated through build.mjs
dotnet run

Daily commands:

# .NET/CMS core
dotnet run --project src/OrchardCore.Cms.Web

# Asset development (watches src/ for changes)
cd src/OrchardCore.Cms.Web && npm run watch

# Run CI test suite locally
dotnet test

🗺️Map of the codebase

  • OrchardCore.slnx — Master solution file that defines all projects and build configuration; essential for understanding the entire codebase structure
  • Directory.Build.props — Central MSBuild configuration file that defines shared properties, versioning, and build settings across all projects
  • .scripts/assets-manager/build.mjs — Core asset build orchestrator that manages compilation of TypeScript, SASS, and frontend bundles for the entire framework
  • NuGet.config — NuGet package source and dependency resolution configuration that controls external library availability
  • .github/workflows/main_ci.yml — Primary continuous integration pipeline defining build, test, and validation gates that all pull requests must pass
  • global.json — Defines the required .NET SDK version and build tools configuration across all environments
  • CONTRIBUTING.md — Outlines contribution guidelines, coding standards, and development workflow that all contributors must follow

🛠️How to make changes

Create a New OrchardCore Module

  1. Review module structure patterns in the reference guide (.agents/skills/orchardcore-module-creator/references/module-structure.md)
  2. Use the module creator skill to scaffold the module with proper conventions (.agents/skills/orchardcore-module-creator/SKILL.md)
  3. Follow the patterns specified in the patterns reference (.agents/skills/orchardcore-module-creator/references/patterns.md)
  4. Review example implementations for guidance (.agents/skills/orchardcore-module-creator/references/examples.md)
  5. Ensure module follows contribution guidelines (CONTRIBUTING.md)

Create a New Theme for OrchardCore CMS

  1. Understand theme directory structure and organization (.agents/skills/orchardcore-theme-creator/references/theme-structure.md)
  2. Learn how to manage and organize theme assets (.agents/skills/orchardcore-theme-creator/references/assets.md)
  3. Use the theme creator skill for scaffolding (.agents/skills/orchardcore-theme-creator/SKILL.md)
  4. Build and bundle theme assets using the asset manager (.scripts/assets-manager/build.mjs)

Add Frontend Assets and Build Integration

  1. Configure asset groups in the asset manager (.scripts/assets-manager/assetGroups.mjs)
  2. Set up Parcel bundler configuration if using modern bundling (.scripts/assets-manager/parcel.mjs)
  3. Configure SASS compilation if using stylesheets (.scripts/assets-manager/sass.mjs)
  4. Run the build system to process assets (.scripts/assets-manager/build.mjs)

Set Up Local Development Environment

  1. Review required .NET SDK version (global.json)
  2. Review recommended IDE settings and extensions (.vscode/settings.json)
  3. Install Node.js version specified for asset tooling (.node-version)
  4. Read contribution guidelines for development workflow (CONTRIBUTING.md)
  5. Build the solution using the main solution file (OrchardCore.slnx)

🔧Why these technologies

  • ASP.NET Core — Foundation for building modular, multi-tenant web applications with modern .NET ecosystem and performance
  • Parcel 2.x / Webpack / Vite bundlers — Multi-bundler support allows flexibility in asset processing; Parcel 2 is primary for modern projects, Webpack for legacy compatibility
  • GitHub Actions — Native CI/CD integrated with repository, enabling comprehensive automated testing across databases and platforms
  • Docker — Containerized builds ensure consistent environment between local development and CI/CD; enables testing in isolated environments
  • Node.js (TypeScript/JavaScript) — Frontend asset compilation and modern web tooling; separate from .NET backend for clear concern separation

⚖️Trade-offs already made

  • Multi-bundler support (Parcel, Webpack, Vite)

    • Why: Gradual migration path for legacy projects while supporting modern tooling
    • Consequence: Increased complexity in asset build configuration; developers must understand multiple bundler configurations
  • Monorepo structure (single slnx with many projects)

    • Why: Unified versioning and dependency management across framework, CMS, and modules
    • Consequence: Large repository size; longer clone times; all commits affect entire project CI pipeline
  • Multi-database testing in CI (functional_all_db.yml)

    • Why: Ensures ORM and data layer compatibility across SQL Server, PostgreSQL, MySQL, and SQLite
    • Consequence: Longer CI pipeline execution time (~30-45 min); more resource-intensive infrastructure requirements
  • Centralized package versioning (Directory.Packages.props)

    • Why: Enforces consistent dependency versions across all projects, reducing compatibility issues
    • Consequence: Version bumps require central coordination; transitive dependency conflicts harder to debug

🚫Non-goals (don't propose these)

  • Does not provide real-time content collaboration (no operational transformation or CRDT)
  • Does not include built-in user authentication—delegates to identity providers and ASP.NET Core identity
  • Does not manage cloud infrastructure—framework is cloud-agnostic
  • Does not provide graphical UI builder for modules—all module creation is code-based
  • Does not include integrated analytics or monitoring—delegates to external solutions

🪤Traps & gotchas

  1. Dual dependency management: C# NuGet packages AND npm packages must both be restored; .github/actions/setup-dotnet/action.yml configures .NET version but Node is separate. 2. Asset pipeline complexity: Parcel uses module transformers (vue2, vue3, sass, postcss-rtl) defined globally; incorrectly ordered transforms cause RTL failures or broken bundling. 3. Multi-tenant state: Orchard assumes tenant isolation via middleware; tests must account for CurrentTenant context or tests fail mysteriously. 4. Database agnostic ORM: Framework supports SQL Server, PostgreSQL, MySQL, SQLite—migrations must be written generically or fail on certain databases. 5. Module manifest required: Every module MUST have a manifest file with feature declarations; missing manifest silently prevents module loading. 6. RTL/LTR CSS generation: PostCSS-RTL requires specific asset structure; RTL CSS not generated if build.mjs configuration misses locale settings.

🏗️Architecture

💡Concepts to learn

  • Multi-tenancy — Orchard Core's core differentiator; allows single deployment to serve multiple isolated clients with shared infrastructure—critical for SaaS. Framework handles tenant routing, data isolation, and feature activation per tenant.
  • Modular plugin architecture — Features are packaged as independent, loadable modules with manifests; required to understand how to extend Orchard without modifying core code and how to avoid tight coupling.
  • Dependency Injection (DI) containers — Orchard leverages ASP.NET Core's built-in DI heavily for service registration across modules; understanding service lifetime (singleton, scoped, transient) is essential for correct multi-tenant behavior.
  • Content versioning & content types — Orchard's CMS layer supports versioned, schema-flexible content via 'content types' (similar to Contentful's content models); required to understand how content is stored and retrieved.
  • Liquid templating — Orchard uses Liquid (Shopify's templating language) for theme rendering; 45K lines of Liquid in repo shows it's first-class, not just an optional feature.
  • Bidirectional layout (RTL/LTR) — PostCSS-RTL + RTLCSS packages (45K line investment) indicate Orchard is built for global, right-to-left languages (Arabic, Hebrew); core CSS pipeline must generate dual stylesheets.
  • Tree-shaking & dynamic bundling — Parcel's transformer chain (Vue, Sass, CSS, image optimization) must handle module-specific assets; incorrect bundling breaks lazy-loaded modules or inflates bundle size.
  • umbraco/Umbraco-CMS — Alternative modular CMS on .NET; both support plugins and multi-tenancy, but Umbraco prioritizes content-first vs Orchard's framework-first approach
  • dotnet/aspnetcore — Upstream dependency providing core framework; Orchard is built atop ASP.NET Core's modular host, DI, and middleware system
  • OrchardCMS/OrchardCoreContrib — Community-contributed modules and themes extending Orchard Core; users of this repo often depend on contrib modules for niche features
  • strapi/strapi — Modern headless CMS alternative; Orchard can also serve as headless CMS with API modules, but Strapi uses Node.js instead of .NET
  • dapr/dapr — Distributed application runtime; Orchard's multi-tenant, module-isolation patterns share architectural goals with Dapr's sidecar model for microservices

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add comprehensive unit tests for assets-manager build orchestration scripts

The .scripts/assets-manager/ directory contains critical build orchestration logic (build.mjs, config.mjs, concat.mjs, copy.mjs, etc.) but there's no corresponding test directory. Given this is a public CLI tool (@orchardcore/assets-manager), adding unit tests would ensure reliability for contributors and catch regressions in asset pipeline builds. This is especially important since asset compilation affects the entire CMS UI.

  • [ ] Create .scripts/assets-manager/tests/ directory with test setup (Jest or Vitest with ESM support)
  • [ ] Add unit tests for config.mjs parsing logic and validation
  • [ ] Add unit tests for concat.mjs, copy.mjs, and build.mjs file operations with mocked fs-extra
  • [ ] Add integration test for the full build pipeline in .github/workflows/ if not already covered by assets_validation.yml

Create unified documentation for AI agent skills in .agents/skills/

The repo has three specialized AI skills (orchardcore-module-creator, orchardcore-tester, orchardcore-theme-creator) with individual SKILL.md files and references, but there's no consolidated index or overview. A new contributor (or AI agent) browsing the repo cannot easily understand which skill to use when, or how they relate. Adding a .agents/README.md and structured metadata would improve discoverability and standardization.

  • [ ] Create .agents/README.md documenting the purpose of each skill directory
  • [ ] Add a skills registry file (.agents/skills/REGISTRY.md) listing all skills with use-cases and required inputs
  • [ ] Ensure each skill's SKILL.md has a standardized 'When to use this skill' section with examples
  • [ ] Link from root README.md to .agents/README.md for contributor visibility

Add GitHub Actions workflow for validating asset-manager CLI and build output

The repo has assets_validation.yml workflow, but examining the dependencies shows the assets-manager is a complex multi-tool orchestrator (Parcel, Webpack, Vite, SWC). There's no dedicated workflow that validates the CLI runs successfully with sample configurations or that built assets meet expected structure/size thresholds. This gap could let breaking changes slip through PRs affecting the entire CMS UI.

  • [ ] Create .github/workflows/assets-manager-validation.yml that runs on changes to .scripts/assets-manager/**
  • [ ] Add step to execute npm run build in assets-manager with a test asset configuration to catch CLI errors
  • [ ] Add step to verify output artifacts exist and have non-zero file sizes (prevent silent failures)
  • [ ] Add step to validate generated sourcemaps and bundle report outputs (using @parcel/reporter-bundle-analyzer)

🌿Good first issues

  • Add missing TypeScript type definitions for @orchardcore/assets-manager CLI; currently no .d.ts files exist, making programmatic asset management difficult for TypeScript projects. Locate build.mjs exports and create interfaces in a new types/ subdirectory.
  • Document the multi-database test matrix in CONTRIBUTING.md; .github/workflows/functional_all_db.yml runs 4+ database variants but onboarding docs don't explain how to test locally against PostgreSQL/MySQL. Add concrete commands to run single-DB test suite.
  • Add missing RTL theme example; .agents/skills/orchardcore-theme-creator/references/assets.md references PostCSS-RTL but no example theme demonstrates RTL layout structure. Create a minimal RTL theme under src/OrchardCore.Themes/ with proper PostCSS configuration.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 9c69caa — Fix Icons Alignments (#19228) (MikeAlhayek)
  • 5034c7b — Rename use full_text Liquid filter to use full - docs only (#19227) (MichaelPetrinolis)
  • 75e8189 — add ghazi1567 as a contributor for code (#19225) (allcontributors[bot])
  • d2bc42d — Support ReCaptcha config via appsettings and env vars (#19206) (ghazi1567)
  • a8c7a16 — fix: enforce IsEnabled check on all login paths (#19218) (#19221) (okalangkenneth)
  • f81f51b — Do not show check boxes on the list part admin list (#19193) (gvkries)
  • ea610c3 — Use Jint async scripting APIs (#19199) (sebastienros)
  • 70e914e — Use Fontawsome styles instead of scripts (#19222) (MikeAlhayek)
  • d3f039d — Transliteration Refactoring (#19156) (hishamco)
  • c7081d7 — Update dotnet/arcade digest to 597f2e6 (#19207) (renovate[bot])

🔒Security observations

  • High · Multiple Outdated Parcel Dependencies with Known Vulnerabilities — .scripts/assets-manager/package.json - all @parcel/* dependencies (v2.13.3). The assets-manager package.json uses Parcel 2.13.3 and multiple @parcel/* packages from the same version. Parcel has had several security vulnerabilities in versions before 2.14.x and later. Using outdated dependencies exposes the build pipeline to known exploits. Fix: Upgrade Parcel and all @parcel/* packages to the latest stable version (2.14.x or higher). Review the Parcel security advisories and test thoroughly after upgrade.
  • High · Vulnerable JSON5 Dependency — .scripts/assets-manager/package.json - json5: ^2.2.3. json5 version 2.2.3 may have known vulnerabilities. JSON5 has had CVEs related to prototype pollution and code injection. The pinned version should be verified against security databases. Fix: Update json5 to the latest patched version. Run 'npm audit' and address any reported vulnerabilities. Consider using exact version pinning instead of caret ranges for security-sensitive dependencies.
  • Medium · Outdated Lodash Dependency — .scripts/assets-manager/package.json - lodash: ^4.17.21. lodash 4.17.21 is several versions behind and may contain known vulnerabilities related to prototype pollution and other attack vectors. While it's a commonly used library, outdated versions should be updated. Fix: Update lodash to version 4.17.21 or check if you can migrate to lodash-es. Run security audits and test compatibility before deploying.
  • Medium · Webpack Dev Server in Production Dependencies — .scripts/assets-manager/package.json - webpack-dev-server: ^5.2.0. webpack-dev-server is included in the main dependencies (not devDependencies). This is a development-only tool that should never be in production builds. It includes debugging features and potential attack vectors. Fix: Move webpack-dev-server to devDependencies only. Ensure build scripts do not include dev tools in production bundles. Add pre-commit hooks to prevent accidental production deployments with dev dependencies.
  • Medium · Missing .dockerignore Security Review — Dockerfile - COPY operations. While a .dockerignore file exists, the Dockerfile copies source code directly. No verification that sensitive files (keys, credentials, .env files) are properly excluded from the Docker build context. Fix: Verify .dockerignore contains all sensitive patterns: .env*, .key, secrets/, credentials/, App_Data/, etc. Use multi-stage builds to ensure dev dependencies don't reach final image. Consider using --chown flags on COPY operations.
  • Medium · Exposed Container Port Without Explicit Security Headers — Dockerfile - EXPOSE 80. The Dockerfile exposes port 80 (HTTP) without explicit mention of HTTPS/TLS termination. While ASP.NET Core apps should handle this, there's no evidence of HSTS or other security headers in the visible configuration. Fix: Configure ASP.NET Core to enforce HTTPS via middleware. Implement HSTS headers. Use reverse proxy (nginx/traefik) for TLS termination in production. Consider exposing only 443 if possible.
  • Low · Caret Version Ranges on Critical Dependencies — .scripts/assets-manager/package.json - multiple caret-ranged dependencies. Most dependencies use caret (^) version ranges (e.g., ^5.2.1, ^11.3.0), which allow minor and patch updates automatically. While beneficial for stability, this can inadvertently pull in vulnerable transitive dependencies. Fix: Consider using more restrictive version pinning for security-sensitive dependencies. Implement automated dependency scanning with tools like Dependabot or Snyk. Run 'npm audit' regularly in CI/CD pipelines.
  • Low · Missing Security Headers Configuration — Orchard Core CMS Web Application configuration. No visible security headers configuration (CSP, X-Frame-Options, X-Content-Type-Options, etc.) in the provided files for the ASP.NET Core application. Fix: Implement

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Healthy signals · OrchardCMS/OrchardCore — RepoPilot