Add OpenAI provider integration - #11
Conversation
Teach the managed installer the repository-local Grok skill path so install, status, update, and uninstall track .grok/skills the same way as Codex, Claude, and Cursor.
Extend installer tests and CI dogfood so managed .grok/skills installs are discovered by fledge let find skills for host grok, then disappear after uninstall.
The CorvidLabs/let plugin build hook requires Bun; install it so the Grok placement proof can run fledge let find skills on ubuntu-latest.
- Recognize openai as a managed host with .openai/skills/<skill> destination - Update installer usage, status, and auto-resolution for openai - Document OpenAI host in README compatibility table - Add installer tests covering openai install, status, uninstall, auto host, and Let skill discovery - Include openai in CI dogfood host loop
There was a problem hiding this comment.
馃挕 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2117fbb771
鈩癸笍 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".
| printf -v row '%s\t%s\t%s\t%s\t%s\t%s' \ | ||
| "$skill" "$host" "$destination_rel" "$revision" "$install_mode" "$expected_digest" | ||
| records+=("$row") | ||
| done < <(manifest_rows "$manifest") |
There was a problem hiding this comment.
Reject manifest parsing failures before lifecycle mutations
When a manifest contains a valid managed entry followed by a malformed entry (for example {}), manifest_rows emits the valid row and then exits nonzero, but the process substitution hides that failure from this loop. As a result, uninstall can remove the valid skill and its manifest entry and exit successfully despite printing a Python traceback; update and status use the same pattern and can likewise act on or report partial data. Capture the rows and verify manifest_rows completed successfully before processing any entry.
Useful? React with 馃憤聽/ 馃憥.
| interface: | ||
| display_name: "Rune Session Control" | ||
| short_description: "Observe and control confirmed agent sessions" | ||
| default_prompt: "Use to safely observe or control this confirmed CLI-agent session." |
There was a problem hiding this comment.
Restore the missing skill tokens in OpenAI default prompts
When users launch these skills through the catalog-provided default prompt, the intended $<skill-name> reference is absent: Rune has no token at all, while seven other new descriptors contain truncated forms such as -coordination, -release-hygiene, and -sync. Unlike the existing OpenAI descriptors and the new Let descriptor, these prompts therefore do not explicitly invoke their installed skill; restore the complete $rune, $agent-coordination, $ci-release-hygiene, $corvid-swift-package, $fledge-workflows, $public-release-audit, $spec-sync-routing, and $spec-sync tokens.
Useful? React with 馃憤聽/ 馃憥.
| managed_link_is_owned "$repo" "$skill" "$destination_rel" || | ||
| fail "refusing to update $skill on $host: managed link was changed or removed" | ||
| else | ||
| [[ "$state" == "current" ]] || fail "refusing to update $skill on $host: state is $state" |
There was a problem hiding this comment.
Detect metadata-only changes before overwriting copies
When a user changes a managed file's executable bit or adds an empty directory, symlink, or other non-regular entry, directory_digest remains unchanged because it hashes only regular-file contents and paths. This check consequently treats the copy as current, allowing the newly added update path to overwrite those local changes (and uninstall to remove them) despite the documented guarantee that local work is never overwritten or removed; include relevant modes and the complete directory-entry inventory in the managed digest or reject such differences separately.
Useful? React with 馃憤聽/ 馃憥.
| claude) printf '.claude/skills' ;; | ||
| cursor) printf '.cursor/skills' ;; | ||
| grok) printf '.grok/skills' ;; | ||
| openai) printf '.openai/skills' ;; |
There was a problem hiding this comment.
Install OpenAI skills into a discovered skill root
When --host openai is used with the current OpenAI Codex client, this destination is not scanned, so the installer reports success and status reports current while the skill is unavailable to the agent. I verified this with codex debug prompt-input in otherwise identical repositories: probes under .agents/skills and .codex/skills appeared in the model-visible skill list, while a probe under .openai/skills did not. Use a supported OpenAI skill root such as .agents/skills rather than introducing .openai/skills.
Useful? React with 馃憤聽/ 馃憥.
Summary\n\nAdds OpenAI as a managed provider host for CorvidLabs skills, mirroring the existing Codex/Claude/Cursor/Grok conventions.\n\n## Changes\n\n-
bin/corvid-skills: recognizeopenaias a host, resolve.openai/skills/, and include it in auto-detection and status checks.\n-README.md: document the OpenAI host in the compatibility table and host selection examples.\n-tests/installer.sh: add OpenAI install/status/uninstall coverage, auto-host inference, and a conditionalfledge let find skills --host openaiproof.\n-.github/workflows/ci.yml: includeopenaiin the dogfood lifecycle host loop.\n\n## Cross-repo dependency\n\nThe Let skill-discovery proof requires.openai/skillssupport in the Let plugin. That change is proposed in CorvidLabs/let#6. When Let is patched, the installer test proves OpenAI placement is discoverable; with unpatched Let the test skips gracefully.\n\n## Verification\n\n-bash tests/installer.shpasses locally with patched Let.\n-fledge lanes validate . --strictandfledge lanes run verifypass.\n-shellcheck bin/corvid-skills bin/fledge-skills tests/installer.shpasses.\n- No private paths, secrets, or background jobs introduced.