Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion base/plugins.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 5 additions & 1 deletion tests/test_workflow_fallback.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand All @@ -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)

Expand Down
Loading