Enterprise Submodule Setup
Use this skill when making changes to the enterprise submodule (`.source/`) or enterprise packages (`enterprise/packages/*`), or when the enterprise submodule needs to be initialized/updated.
Best use case
Enterprise Submodule Setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use this skill when making changes to the enterprise submodule (`.source/`) or enterprise packages (`enterprise/packages/*`), or when the enterprise submodule needs to be initialized/updated.
Teams using Enterprise Submodule Setup should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/enterprise-submodule/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Enterprise Submodule Setup Compares
| Feature / Agent | Enterprise Submodule Setup | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use this skill when making changes to the enterprise submodule (`.source/`) or enterprise packages (`enterprise/packages/*`), or when the enterprise submodule needs to be initialized/updated.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Marketing
Discover AI agents for marketing workflows, from SEO and content production to campaign research, outreach, and analytics.
AI Agents for Startups
Explore AI agent skills for startup validation, product research, growth experiments, documentation, and fast execution with small teams.
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
SKILL.md Source
# Enterprise Submodule Setup Use this skill when making changes to the enterprise submodule (`.source/`) or enterprise packages (`enterprise/packages/*`), or when the enterprise submodule needs to be initialized/updated. ## Overview Novu uses a git submodule at `.source` pointing to `git@github.com:novuhq/packages-enterprise.git`. The enterprise packages in `enterprise/packages/` have their `src` directories symlinked to `.source/<package>/src`. ## Initial Setup 1. **Configure git for submodule recursion:** ```bash git config --global submodule.recurse true ``` 2. **Initialize the submodule:** ```bash git submodule update --init --recursive ``` If SSH is unavailable (e.g., in cloud environments), configure HTTPS fallback: ```bash git config --global url."https://github.com/".insteadOf "git@github.com:" gh auth setup-git ``` 3. **Add enterprise env vars** to `apps/api/src/.env` and `apps/worker/src/.env`: ``` NOVU_ENTERPRISE=true ``` 4. **Install and build with enterprise:** ```bash pnpm install:with-ee pnpm build ``` `install:with-ee` runs `pnpm install` then `pnpm symlink:submodules` which symlinks `src` dirs from `.source/` into `enterprise/packages/`. ## Pulling Changes 1. `git pull` in the main repository (with `submodule.recurse=true`, submodule changes are fetched but NOT merged). 2. For development in the submodule: `cd .source && git checkout <branch> && git pull` ## Making Changes in the Submodule 1. Pull latest from both repos. 2. Create branches in both the main repo and submodule using the same Conventional Commits name (e.g., `feat/scope-description-fixes-NOV-123`). **Start from a branch in the submodule, not a detached HEAD.** 3. Implement changes. 4. Commit in the **submodule first**, then the main repo. 5. Push the submodule branch from inside `.source/`: `git push` 6. Create the enterprise PR from the workspace root (do NOT `cd` into the submodule): ```bash gh pr create --repo novuhq/packages-enterprise --head <branch-name> --base next --title "..." --body "..." ``` If this fails due to permissions, give the user this link instead: ``` https://github.com/novuhq/packages-enterprise/compare/next...<branch-name> ``` 7. Push the main repo branch and create its PR with `gh pr create`. Mention the enterprise PR link in the body. 8. **Merge the submodule PR first**, then the main repo PR (to avoid broken builds for teammates). ## Troubleshooting - `fatal: could not get a repository handle for submodule '.source'`: - Delete `.git/modules/` contents - Run `git submodule update --init --recursive` - Untracked working tree files error on checkout: - `git submodule deinit -f enterprise` - Checkout to branch and pull - `git submodule update --init --recursive` - Nuclear option: ```bash pnpm run clean rm -rf node_modules pnpm i pnpm run symlink:submodules pnpm nx run-many --target=build --all --skip-nx-cache ``` ## Key Points - The `.source` directory contains the actual enterprise source code (private repo). - `enterprise/packages/*/src` are symlinks to `.source/*/src`. - Enterprise packages: `@novu/ee-auth`, `@novu/ee-api`, `@novu/ee-dal`, `@novu/ee-billing`, `@novu/ee-translation`, `@novu/ee-shared-services`. - The `check-ee.mjs` script in each enterprise package only builds if the `src` folder exists (graceful degradation for OSS contributors).
Related Skills
run-api-e2e-tests
Run e2e tests for the API service. Use when the user wants to run API E2E tests.
better-auth-best-practices
Skill for integrating Better Auth - the comprehensive TypeScript authentication framework.
react-email
Use when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.
email-best-practices
Use when building email features, emails going to spam, high bounce rates, setting up SPF/DKIM/DMARC authentication, implementing email capture, ensuring compliance (CAN-SPAM, GDPR, CASL), handling webhooks, retry logic, or deciding transactional vs marketing.
odoo-hr-payroll-setup
Expert guide for Odoo HR and Payroll: salary structures, payslip rules, leave policies, employee contracts, and payroll journal entries.
odoo-accounting-setup
Expert guide for configuring Odoo Accounting: chart of accounts, journals, fiscal positions, taxes, payment terms, and bank reconciliation.
observability-monitoring-monitor-setup
You are a monitoring and observability expert specializing in implementing comprehensive monitoring solutions. Set up metrics collection, distributed tracing, log aggregation, and create insightful da
ab-test-setup
Structured guide for setting up A/B tests with mandatory gates for hypothesis, metrics, and execution readiness.
gtm-enterprise-onboarding
Four-phase framework for onboarding enterprise customers from contract to value realization. Use when implementing new enterprise customers, preventing churn during onboarding, or solving the adoption cliff that kills deals post-go-live. Includes the Week 4 ghosting pattern.
gtm-enterprise-account-planning
Strategic account planning and execution for enterprise deals. Use when planning complex sales cycles, managing multiple stakeholders, applying MEDDICC qualification, tracking deal health, or building mutual action plans. Includes the "stale MAP equals dead deal" pattern.
aws-cdk-python-setup
Setup and initialization guide for developing AWS CDK (Cloud Development Kit) applications in Python. This skill enables users to configure environment prerequisites, create new CDK projects, manage dependencies, and deploy to AWS.
roundup-setup
Interactive onboarding that learns your communication style, audiences, and data sources to configure personalized status briefings. Paste in examples of updates you already write, answer a few questions, and roundup calibrates itself to your workflow.