- Shell 64.6%
- JavaScript 35.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| ci | ||
| repo-map | ||
| test | ||
| user-guide/.claude/skills/user-guide | ||
| readme.md | ||
omp-templates
Starter kits that the omp project rooms copy into their own repositories. This repository only ships the templates; every room owns, commits and tunes its own copy. Changes go through a pull request from the omp-bot room.
The omp-bot room keeps a clone at /root/omp-matrix-bot/omp-templates. Other rooms cannot read that path, so they clone their own copy (see below).
repo-map
repo-map/ stops a fresh session spending tokens rediscovering a repository's layout (omp-matrix-bot#27).
| Path | Goes to | Purpose |
|---|---|---|
common/.claude/skills/repo-map/SKILL.md |
.claude/skills/repo-map/ |
The discipline: map, then search, then read line ranges. omp and Claude Code both discover it from the repository root; only its one-line description costs context until it triggers |
common/.claude/skills/repo-map/repo-map.sh |
same | Prints layout (depth 3), one line of classes and functions per source file, and stack extras: Laravel route:list --json (static scan of routes/*.php when artisan cannot boot) and migrations, CodeIgniter spark routes and migrations, Moodle component, tables, capabilities, services, tasks and observers, MAUI projects and XAML pages, package.json scripts. Needs bash, awk and ripgrep; under a second on the Laravel skeleton |
<stack>/CLAUDE.md |
repository root | Skeleton with {{PLACEHOLDERS}}: stack, where things live, exact commands, conventions |
<stack>/.ignore |
repository root | Lock files, minified files and source maps for ripgrep and fd. omp's own grep does not read .ignore; the skill's rules cover it |
<stack>/gitignore.add |
merge into .gitignore |
Dependency and build directories |
Stacks: laravel (hildasql, topick-web, dcfcymru, booking), codeigniter (leaverequest), maui (topick-app), moodle, node. Rooms not on that list start from the closest one. repo-map.sh detects the stack itself; --stack overrides it.
Installing from a room's repository root, Laravel shown. The clone is anonymous HTTPS: /root/.gitconfig rewrites forge URLs to SSH (url.forgejo-lan.insteadof), and a room's deploy key cannot read this repository, so GIT_CONFIG_GLOBAL=/dev/null skips the rewrite. git rev-parse --git-path finds the shared exclude file from a worktree too.
GIT_CONFIG_GLOBAL=/dev/null git clone -q --depth 1 https://forge.mrjjones.co.uk/James/omp-templates .omp-templates
echo .omp-templates/ >> "$(git rev-parse --git-path info/exclude)"
T=.omp-templates/repo-map
cp -rn "$T/common/.claude" .
cp -n "$T/laravel/CLAUDE.md" "$T/laravel/.ignore" .
cat "$T/laravel/gitignore.add" # add the missing lines to .gitignore by hand
bash .claude/skills/repo-map/repo-map.sh
rm -rf .omp-templates
cp -n never overwrites: the current Laravel skeleton already ships a CLAUDE.md and AGENTS.md, so merge the skeleton's sections into those instead. In a Laravel Boost repository put the sections above the <laravel-boost-guidelines> block in both files: php artisan boost:update rewrites only that block, so anything inside it is lost. Lines marked {{DELETE ...}} go when the repository lacks that part, for example the npm, Vite and lang/ lines in a repository with no Node build. omp only discovers the skill in the directory it starts in, so the moodle room (workdir /root/moodle) installs it at the Moodle root. There repo-map.sh maps only the top level and summarises each plugin clone inside core; repo-map.sh local/<plugin> maps one plugin in full.
Monorepos: stack detection, SYMBOL_ROOTS and the stack extras (routes, migrations, package.json) all look at the directory the script runs in, so an app in a subdirectory maps as generic with no routes or migrations. repo-map.sh apps/web maps just the app. For one map of the whole repository with the app's extras, tune the room's copy: TheoryBook added an APP=apps/web setting that drives detection, symbol roots (including its React SPA under resources/js) and the extras, while the layout still covers the whole repository.
Rollout is tracked in omp-matrix-bot#27: each project room is asked by room-msg to install and tune the template, and its reply is recorded there.
ci
ci/faster-ci.md is the leaverequest room's guide to faster Forgejo Actions runs: a CI image built once on the runner instead of apt installs on every job, and the test database on a memory disk. It cut a leaverequest merge from about 2 minutes 40 seconds of CI to about 20 seconds. Rooms read it from their clone and change their own .forgejo/workflows/; nothing here is copied in as it stands.
user-guide
user-guide/ is a skill that writes an illustrated user guide for a room's app (omp-matrix-bot#88). It maps the app's routes into user journeys and confirms the list with James, signs in once with a seeded demo account from vault-get, records each journey with browse run (one screenshot per step, Welsh and English for a bilingual app), writes one guide per task in docs/guide/ following the house rules, and opens a pull request in the room's own repository. The journey scripts stay in docs/guide/journeys/ so the guide can be regenerated after a UI change.
| Path | Goes to | Purpose |
|---|---|---|
.claude/skills/user-guide/SKILL.md |
.claude/skills/user-guide/ |
The workflow. Its one-line description is all it costs until a request for a user guide triggers it |
.claude/skills/user-guide/login.example.mjs |
same | Starter sign-in script for browse login. Reads the demo login from the environment, never from a file |
.claude/skills/user-guide/journey.example.mjs |
same | Starter journey script for browse run, with per-locale labels and numbered shot() calls |
omp loads project skills from <repository root>/.claude/skills/<name>/SKILL.md (Claude provider) as well as .omp/skills/<name>/SKILL.md (native provider). This template uses .claude/skills/ like repo-map, so both omp and Claude Code find it. Installing from a room's repository root, with the same anonymous clone as repo-map:
GIT_CONFIG_GLOBAL=/dev/null git clone -q --depth 1 https://forge.mrjjones.co.uk/James/omp-templates .omp-templates
echo .omp-templates/ >> "$(git rev-parse --git-path info/exclude)"
cp -rn .omp-templates/user-guide/.claude .
rm -rf .omp-templates
The skill needs the room's browse hosts set in rooms.json and a seeded demo account in the room's Vaultwarden collection. Without either it stops and says what is missing. omp reads skills when a session starts, so the next session picks it up.
Tests
node --test
Needs Node 20.11 or later, bash, awk, ripgrep and git. The CodeIgniter routes test also needs PHP and is skipped without it. No dependencies to install.