|
| 1 | +# Claude Code Instructions |
| 2 | + |
| 3 | +## Skills and Agents |
| 4 | + |
| 5 | +At the start of each session, run `git pull` in `/usr/local/webpros-claude-skills/` to |
| 6 | +ensure you have the latest skills and agents. That directory contains project-wide |
| 7 | +skills (under `skills/`) and agents (under `agents/`) that provide commit message |
| 8 | +standards, workflow conventions, and other shared guidance used across WebPros projects. |
| 9 | + |
| 10 | +## Project Overview |
| 11 | + |
| 12 | +This is the **cPanel ELevate** project — a Perl-based tool that performs in-place OS |
| 13 | +upgrades for cPanel installations (e.g. CentOS 7 → AlmaLinux 8, Ubuntu 20 → 22, etc.). |
| 14 | +It wraps the [Leapp Project](https://leapp.readthedocs.io/en/latest/) for RHEL-based |
| 15 | +systems and `do-release-upgrade` for Ubuntu-based systems. |
| 16 | + |
| 17 | +## Language and Runtime |
| 18 | + |
| 19 | +- Written in **Perl**, packed into a single fat-packed script (`elevate-cpanel`). |
| 20 | +- Uses cPanel's bundled Perl at `/usr/local/cpanel/3rdparty/perl/536/bin/perl`. |
| 21 | +- Library modules live under `lib/Elevate/`. |
| 22 | +- The entry point is `script/elevate-cpanel.PL`, which is packed via `maint/perlpkg.static`. |
| 23 | + |
| 24 | +## Building and Testing |
| 25 | + |
| 26 | +- **Build**: `make build` — produces the fat-packed `elevate-cpanel` script. |
| 27 | +- **Test**: `make test` — runs `sanity` (syntax check all `.pm` files) then the test suite |
| 28 | + via `yath` (with 8 parallel jobs). |
| 29 | +- **Full**: `make` — runs build, test, and coverage. |
| 30 | +- Tests live in `t/` and use standard Perl testing conventions (`Test::More`, etc.). |
| 31 | +- Always run `make test` after making code changes to verify nothing is broken. |
| 32 | + |
| 33 | +## Repository Structure |
| 34 | + |
| 35 | +- `lib/Elevate/` — Perl modules (components, blockers, OS detection, stages, etc.) |
| 36 | +- `script/elevate-cpanel.PL` — main script source |
| 37 | +- `t/` — test files |
| 38 | +- `maint/` — build tooling |
| 39 | +- `.github/workflows/` — CI workflows (OpenStack integration tests per OS target) |
| 40 | +- `docs-website-src/` — Hugo-based public documentation website source |
| 41 | +- `docs/` — built website output (do not edit manually; generated by CI) |
| 42 | + |
| 43 | +## Public Documentation Website |
| 44 | + |
| 45 | +The public docs site at <https://cpanel.github.io/elevate> is built with |
| 46 | +[Hugo](https://gohugo.io/) from source in `docs-website-src/`. |
| 47 | + |
| 48 | +- Content lives in `docs-website-src/content/` as Markdown files. |
| 49 | +- The site is built and deployed automatically via the `.github/workflows/website.yml` |
| 50 | + CD workflow on every push to `main`. Hugo compiles the site into `docs/`, which is |
| 51 | + then force-pushed to the `docs` branch by the workflow. |
| 52 | +- **Never manually edit files in `docs/`** — they are regenerated on every deploy. |
| 53 | +- To update documentation, edit the Markdown files under `docs-website-src/content/`. |
| 54 | +- To preview locally: run `hugo -D` from the `docs-website-src/` directory |
| 55 | + (requires Hugo v0.91.2). |
| 56 | + |
| 57 | +## Commit Message Format |
| 58 | + |
| 59 | +Commits follow the cPanel/WHM convention: |
| 60 | + |
| 61 | +1. **Subject line**: Short summary (imperative mood, ≤50 chars), no case number. |
| 62 | +2. **Blank line** |
| 63 | +3. **Body**: Detailed description; **must begin** with `Case PROJECT-XXXXX:` if a ticket/case exists (use the branch name as the case number when on a case branch). |
| 64 | +4. **Trailers** (in this order): |
| 65 | + - `Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>` |
| 66 | + - `Changelog:` — leave empty for internal-only changes; describe user-visible changes otherwise. |
| 67 | + |
| 68 | +`Changelog:` **must always be the last line** of the commit message. |
0 commit comments