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.