feat(orca-skills): vendor Orca's orca-cli, computer-use, orchestration - #44
Conversation
`npx skills add --global` cannot install on a Steelbore OS machine. Every
global target it writes to — the canonical `~/.agents/skills` and all nine
per-agent fan-out directories — is a symlink into the read-only Nix store, so
each write fails with EROFS. The CLI prints those failures but still exits 0
with a green "Done!", which is why the install looked successful and Orca's
own check still saw nothing. The empty `"skills": {}` left in
`~/.agents/.skill-lock.json` is the machine-readable proof it landed nothing.
Vendoring is the only route that survives: the skill tree is rebuilt from this
flake on every `skills-sync`, so anything written imperatively is replaced on
the next pointer move even where a write happens to land.
Merged into the base tree unconditionally, unlike the opt-in Android set. The
`orca` CLI resolves its skills by exact leaf name, so `computer-use` and
`orchestration` are vendored under their generic upstream names rather than a
vendor prefix — CREDITS.md records that those names are now reserved.
Replaces the hand-rolled copy loop in the Android branch with `mkMerged`, which
takes any number of { source; names; } pairs, so a third vendored tree no
longer means a third special case in `mkSkills`.
Vendored verbatim from stablyai/orca at fe95698, MIT, © Lovecast Inc.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fca62321a4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| mkdir -p $out/${n} | ||
| cp -r ${source}/${n}/. $out/${n}/ |
There was a problem hiding this comment.
Include Orca's MIT notice in packaged skill outputs
When consumers build .#skills, .#skills-with-android, or an individual .#orca-* package, this loop copies only each leaf directory, while the copyright and MIT license notice lives at orca-skills/LICENSE.txt one level above. The resulting Nix distributions therefore contain the Orca SKILL.md content without the notice that the MIT license requires in copies or substantial portions; copy the notice into the packaged tree or otherwise ensure every Orca package carries it.
Useful? React with 👍 / 👎.
| path = "orca-skills/**" | ||
| precedence = "override" | ||
| SPDX-FileCopyrightText = "Lovecast Inc." | ||
| SPDX-License-Identifier = "MIT" |
There was a problem hiding this comment.
Scope the Orca copyright override to upstream files
The wildcard also covers the newly authored orca-skills/README.md and orca-skills/CREDITS.md, so REUSE inventories and generated SBOMs incorrectly report Lovecast Inc. as the sole copyright holder of those local documents. Restrict this override to the verbatim upstream files (the three SKILL.md files and license), and give the local catalogue/provenance documents their actual copyright metadata.
AGENTS.md reference: AGENTS.md:L437-L439
Useful? React with 👍 / 👎.
Why
npx skills add --globalcannot install on a Steelbore OS machine. Every global target it writes to — the canonical~/.agents/skillsand all nine per-agent fan-out directories — is a symlink into the read-only Nix store, so each write fails withEROFS.The CLI prints those failures but still exits
0with a greenDone!, which is why the install looked successful while Orca's own check saw nothing. The empty"skills": {}left in~/.agents/.skill-lock.jsonis the machine-readable proof it landed nothing. Orca's blessedorca skills installresolves to the same command with--agent universal, so it fails identically.Vendoring is the only route that survives: the skill tree is rebuilt from this flake on every
skills-sync, so anything written imperatively is replaced on the next pointer move even where a write happens to land.What
orca-skills/— threeSKILL.mdfiles vendored verbatim fromstablyai/orcaatfe95698(MIT, © Lovecast Inc.), plusLICENSE.txt,CREDITS.md(§15.3) and aREADME.md.REUSE.toml—orca-skills/**→MIT, same non-relicensing posture as theandroid-skillsentry (§4.2).flake.nix— merged into the base tree unconditionally, unlike the opt-in Android set: theorcaCLI resolves its skills by exact leaf name, so they must be present wherever an agent reads skills from rather than behind a toggle.Leaf names
computer-useandorchestrationare vendored under their generic upstream names rather than a vendor prefix, because renaming them would vendor the content while breaking the tool that consumes it.CREDITS.mdrecords that both names are now reserved against future Spacecraft skills.Refactor
Replaces the hand-rolled copy loop in the Android branch with
mkMerged, which takes any number of{ source; names; }pairs — so a third vendored tree no longer means a third special case inmkSkills.Verification
nix build .#skills→ 47 skills, all three Orca leaves present, no strayLICENSE/CREDITS/READMEat top level.#skills-with-android(66) and.#skills-grokstill buildreuse lint→ compliant, licenses nowApache-2.0, GFDL-1.3-or-later, GPL-3.0-or-later, MITcheck-skill-refs.pyreports one problem, pre-existing onmain(an archived chat transcript pinning a document version); catalogue 46 → 49🤖 Generated with Claude Code