opencode: handle string store paths in skill sources

Add support for store directory paths provided as strings, in addition
to the existing path type check for directories.
Context: certain project will include a `SKILL.md` file, and instead of
managing them via some 3rd party manager or manually, why not include
them from the source itself! I implemented this in my setup, since I
wanted to include the `SKILL.md` file from the
[beads](https://github.com/steveyegge/beads) project.
This commit is contained in:
Mirza Arnaut 2026-01-25 01:01:32 +01:00 committed by Austin Horstman
parent db9cf9232f
commit 63ecc7d495
3 changed files with 43 additions and 2 deletions

View file

@ -16,6 +16,7 @@
opencode-mixed-content = ./mixed-content.nix;
opencode-skills-inline = ./skills-inline.nix;
opencode-skills-path = ./skills-path.nix;
opencode-skills-store-path = ./skills-store-path.nix;
opencode-skills-directory = ./skills-directory.nix;
opencode-skills-bulk-directory = ./skills-bulk-directory.nix;
opencode-themes-inline = ./themes-inline.nix;

View file

@ -0,0 +1,24 @@
{ pkgs, ... }:
let
src = pkgs.writeTextDir "skills/external-skill/SKILL.md" ''
# Mock Skill
This content simulates a skill living inside a package source.
'';
in
{
programs.opencode = {
enable = true;
skills = {
# We reference the specific subfolder inside the store path
internal-skill = "${src}/skills/external-skill";
};
};
nmt.script = ''
assertFileExists home-files/.config/opencode/skill/internal-skill/SKILL.md
assertFileContent home-files/.config/opencode/skill/internal-skill/SKILL.md \
"${src}/skills/external-skill/SKILL.md"
'';
}