From 49710b63efb83bc57b3ecc4bb05b15b8e433f8cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olu=CC=81was=CC=A3e=CC=80yi=CC=81=20S=CC=A3o=CC=81bande?= =?UTF-8?q?=CC=81?= Date: Thu, 15 Oct 2026 06:05:42 +0100 Subject: [PATCH] Install Alarina domain packs alongside core (#150) --- README.md | 4 ++-- base/plugins.yaml | 2 +- tests/test_workflow_fallback.py | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 97b89a3..6b24a6d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Goal: this machine runs the base setup for Claude Code and Codex, and the user's 3. **Do.** After the user agrees, install only what is missing, apply the files (back up first), and refresh plugins and skills. Use `steps/` when it fits. 4. **SIGIDI.** If no `SIGIDI*.app` is in `/Applications` (and the Mac is arm64), install the latest arm64 DMG from the pre-release builds of `quantipixels/sigidi-release`. 5. **Verify.** Run `mise run doctor`. Fix what fails, or report the exact error. -6. **Engineering workflow.** Setup checks GitHub read access to `quantipixels/alarina` and tries its plugin separately on each host. With access it installs the core `alarina` plugin and the optional packs listed under `packs` (maintainer, extras, personal, sharing, host maintenance, Yorùbá) from the same marketplace. If access or any of those installs fails, it installs the public `qp-skills` plugin from `quantipixels/skills`. Restart each host and confirm the selected plugin's `alarina` router loads. If Alárinà was selected, run `alarina setup`; qp-skills has no `idasile` setup skill, so report requested migration, linking or configuration work as pending. Keep tech-stack as the standards source. +6. **Engineering workflow.** Setup checks GitHub read access to `quantipixels/alarina` and tries its plugin separately on each host. With access it installs the core `alarina` plugin and the optional packs listed under `packs` (software engineering, productivity, sharing, host maintenance, Yorùbá) from the same marketplace. If core access or installation fails, it installs the public `qp-skills` plugin from `quantipixels/skills`. A failed domain or optional pack is reported without replacing the installed core. Restart each host and confirm the selected plugin's `alarina` router loads. If Alárinà was selected, run `alarina setup`; qp-skills has no `idasile` setup skill, so report requested migration, linking or configuration work as pending. Keep tech-stack as the standards source. 7. **Scan.** Read-only. Look in the Claude, Codex, and tool setup for stale or duplicate items, broken paths, leftover temp and cache folders, outdated tools, and secrets in config. Change nothing; end with recommended cleanups, each with its reason and exact command. Impeccable manages its own design hook per project; turn it on inside a project with `$impeccable hooks on`. The base installs no Impeccable hook. @@ -32,7 +32,7 @@ Done when doctor passes and the report lists what changed, what was skipped, ava ## Personal instructions and project tools -Alárinà is preferred; QP Skills is the public fallback/default. Both provide the workflow router. The selected plugin’s `asami` skill owns personal defaults in one user-owned skill, `ofin`, at `~/.agents/skills/ofin/SKILL.md`; its `asoju` skill owns models and delegation rules. Agent-setup seeds `ofin` from `base/shared/instructions.md` (two lines on how to talk) only when missing, and never overwrites an existing one. It is never installed through a skill manager. +Alárinà is preferred; QP Skills is the public fallback/default. Both provide the workflow router. The `productivity` pack’s `asami` skill (or the public fallback’s copy) owns personal defaults in one user-owned skill, `ofin`, at `~/.agents/skills/ofin/SKILL.md`; core `alarina` (or the public fallback) supplies `asoju` for models and delegation rules. Agent-setup seeds `ofin` from `base/shared/instructions.md` (two lines on how to talk) only when missing, and never overwrites an existing one. It is never installed through a skill manager. Claude Code reads it through `~/.claude/CLAUDE.md`, whose first line is `@~/.agents/skills/ofin/SKILL.md` (the file, not the folder); Claude-only lines may follow the import and are kept. Codex ignores `@path` imports, so `~/.codex/AGENTS.md` is a symlink to the same file. Existing host instruction files that need replacement require `--yes` after approval and are backed up under `~/.agent-setup/backups/`. `mise run plan`, `steps/apply --dry-run`, and `steps/setup --dry-run` show the changes and backups without writing. Doctor checks this layout. diff --git a/base/plugins.yaml b/base/plugins.yaml index 330862c..4cd402b 100644 --- a/base/plugins.yaml +++ b/base/plugins.yaml @@ -47,7 +47,7 @@ plugins: claude: alarina@alarina codex: alarina@alarina # Optional Alárinà packs from the same private marketplace, installed with the core. - packs: [alarina-maintainer, alarina-extras, qp-personal, private-share, host-maintenance, yoruba] + packs: [software-eng, productivity, private-share, host-maintenance, yoruba] - job: Modern web guidance claude: modern-web-guidance@claude-plugins-official codex: modern-web-guidance@openai-curated-remote diff --git a/tests/test_workflow_fallback.py b/tests/test_workflow_fallback.py index ebe36c8..6d7e131 100644 --- a/tests/test_workflow_fallback.py +++ b/tests/test_workflow_fallback.py @@ -37,6 +37,8 @@ def test_preferred_success_is_per_host_and_drives_rendering(self): self.assertNotIn('qp-skills@qp-skills', initial['enabledPlugins']) commands = self.install('claude') self.assertTrue(any('alarina@alarina' in command for command in commands)) + self.assertTrue(any('software-eng@alarina' in command for command in commands)) + self.assertTrue(any('productivity@alarina' in command for command in commands)) self.assertFalse(any('qp-skills@qp-skills' in command for command in commands)) self.assertEqual(self.engine.workflow_selections(), {'claude': 'alarina@alarina'}) self.assertEqual(next(row for row in self.engine.plugin_rows('claude') if row.get('preferred'))['claude'], 'alarina@alarina') @@ -47,7 +49,9 @@ def test_preferred_success_is_per_host_and_drives_rendering(self): self.assertTrue(any(pack + '@alarina' in command for command in commands)) self.assertTrue(settings['enabledPlugins'][pack + '@alarina']) self.assertEqual(settings['extraKnownMarketplaces']['alarina']['source']['repo'], 'quantipixels/alarina') - self.install('codex') + commands = self.install('codex') + self.assertIn(['codex', 'plugin', 'add', 'software-eng@alarina'], commands) + self.assertIn(['codex', 'plugin', 'add', 'productivity@alarina'], commands) config = self.engine.desired([])[self.engine.HOME / '.codex/config.toml'] self.assertIn('https://github.com/quantipixels/alarina.git', config)