mono-repo-integration

Merges standalone Grails plugin repositories into the grails-core monorepo as Gradle subprojects.

2.9k|973|Updated Feb 10, 2010
One-click install
npx skills add https://github.com/apache/grails-core --skill mono-repo-integration
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: mono-repo-integration
Source: https://github.com/apache/grails-core/tree/main/.agents/skills/mono-repo-integration
Command: npx skills add https://github.com/apache/grails-core --skill mono-repo-integration

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Merging a previously standalone Grails plugin repository (such as grails-spring-security or grails-redis) into the grails-core monorepo involves dozens of error-prone steps: stripping duplicated build infrastructure, rewiring Gradle configuration, migrating documentation, and reproducing CI test matrices. This Skill provides a phased, checklist-driven process that prevents missed steps like lost RAT excludes, collapsed test matrices, or ungated publishing.

Core Features & Use Cases

  • Phased merge process: Six phases covering history-preserving import, infrastructure port-or-delete decisions, Gradle build integration, documentation migration into the AsciiDoc guide, functional test app rewiring, and cleanup verification.
  • Monorepo convention enforcement: Eliminates hard-coded dependency versions in favor of the Grails BOM, routes publishing through shared publish-config, merges plugin authors into PublishPlugin.groovy with emeritus classification, and registers coordinate renames in RENAME.md.
  • CI and quality gating: Reproduces imported test matrices (e.g. TESTCONFIG variants), wires Testcontainers-based service dependencies, and ensures new test jobs block the publish job.
  • Use Case: A maintainer importing grails-redis into grails-core follows the phases to subtree-merge the repo, delete its standalone gradle files, add modules to settings.gradle and publishedProjects, convert the README into a guide section, and verify with build, codeStyle, rat, and doc builds.

Quick Start

Ask the AI to merge the standalone grails-<name> plugin repository into the grails-core monorepo following the mono-repo-integration phased process, starting with a history-preserving import.

Frequently Asked Questions about mono-repo-integration

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I merge a standalone Grails plugin into the grails-core monorepo?▼

Follow the phased process: import the repo with a history-preserving subtree merge, port or delete its standalone infrastructure, wire modules into settings.gradle and the shared gradle config, migrate docs into the guide, relocate example apps to grails-test-examples, then verify with build, codeStyle, and rat.

How do I preserve git history when importing a plugin repository?▼

Add the source repo as a remote, then run git merge -s ours --no-commit --allow-unrelated-histories followed by git read-tree --prefix=grails-<name>/ -u and commit. This joins the imported history while populating the working tree under the new prefix.

Should monorepo plugin modules use project dependencies or Maven coordinates?▼

Plugin and library modules depend on sibling monorepo modules via project(':grails-...') syntax. Apps under grails-test-examples instead consume those same modules by Maven coordinates (org.apache.grails:grails-...) as published artifacts.

How are dependency versions managed for imported Grails plugins?▼

Remove hard-coded versions and rely on the Grails BOM via platform("org.apache.grails:grails-bom:$grailsVersion"). Only add a version to dependencies.gradle and gradle.properties when the dependency is genuinely not managed by an existing BOM.

Why do imported plugin tests pass in CI but cover almost nothing?▼

Imported CI often ran functional tests across a config matrix (e.g. TESTCONFIG variants) gated by @IgnoreIf checks, so a single run silently skips most configs. Reproduce every matrix axis as dedicated CI jobs rather than collapsing them into one run.

Where does imported plugin documentation go in the monorepo?▼

Documentation migrates into grails-doc/src/en/guide as AsciiDoc, registered in toc.yml with globally unique section keys. READMEs are converted to .adoc, and release history, author lists, and hard-coded legacy doc URLs are removed.