Skip to content

feat(omp): add native marketplace and skill support - #1358

Merged
tmchow merged 12 commits into
mainfrom
fix/omp-native-support
Aug 12, 2026
Merged

feat(omp): add native marketplace and skill support#1358
tmchow merged 12 commits into
mainfrom
fix/omp-native-support

Conversation

@tmchow

@tmchow tmchow commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Compound Engineering can now install and update natively through oh-my-pi (omp) without a converter, writer, or separate release component. The marketplace catalog supplies the release version that omp's update checker requires. User handoffs stay concise: visible skills use ordinary /skill-name prompts, while hidden or manual-only skills use omp's deterministic /skill:<name> command.

This replacement carries forward @caelaxie's work from #1323 and resolves its conflicts with current main. The separate omp session-history integration remains in #1333.

Fixes #1224.

Design decisions

  • Use omp's native plugin surface. .omp-plugin/marketplace.json points at this repository, and the existing package.json pi manifest remains the runtime package entry. There is no --to omp conversion path.
  • Keep updates release-managed. omp skips versionless catalog entries, so the root release component writes plugins[0].version. Release validation checks catalog parity, version drift, and the co-located source path.
  • Choose invocation syntax by reachability. omp can model-route an unknown /skill-name prompt to a visible discovered skill. Native /skill:<name> remains the deterministic path for skills hidden from model routing. Focused contracts verify each exceptional target's frontmatter instead of adding that implementation detail to runtime prose.
  • Keep orchestration capability-first. Blocking questions and subagent dispatch remain semantic capabilities instead of hardcoding omp-specific ask or task names.
  • Detect native installations. --to all recognizes user and project omp directories and reports native support instead of attempting conversion.

Validation

  • bun run release:validate — metadata in sync; 0 agents, 32 skills, 0 MCP servers.
  • bun run plugin:validate — strict marketplace and plugin validation passed.
  • Focused invocation contracts — 354 passed, 0 failed.
  • Skill behavior evals — omp rendered /ce-babysit-pr … posture:stack-ready for a visible resume target and /skill:ce-polish for a hidden manual-only target.
  • bun run test — 2,927 passed, 0 failed across 111 files.
  • Review — no actionable findings in the final invocation-rendering diff.

Security Disclosure

No security-relevant changes. This adds catalog metadata, native-install detection, documentation, skill prose, and validation coverage; it does not add shell execution, credential handling, permission changes, or dependencies.

Agent Disclosure

  • Model: Oh My Pi (omp) · kimi-code/k3 (bulk implementation); Orca · openai-codex/gpt-5.6-sol (conflict resolution, invocation simplification, and verification)

caelaxie and others added 9 commits August 5, 2026 01:11
- detect omp (~/.omp, project .omp/) so `--to all` reports it as a
  native plugin install instead of attempting conversion; no --to omp
  converter, writer, or manifest (per CONCEPTS.md native-plugin-surface)
- docs/specs/omp.md target spec verified against omp 17.2.7; README
  gains omp install/local-dev/limitations coverage
- skills: omp built-in `ask` in blocking-question lists, `task` in
  closed subagent enumerations, and `/skill:<name>` user-facing
  invocation form across the rendering-rule copies, AGENTS.md, and the
  authoring guide
- ce-compound session history: discover omp sessions under
  ~/.omp/agent/sessions and named-profile roots (honoring
  PI_CODING_AGENT_SESSION_DIR/PI_CODING_AGENT_DIR/PI_CONFIG_DIR), detect
  omp JSONL via its physical title-slot line before the pi-shaped
  header, and reuse pi extraction for omp platform identity
- tests: detection, --to all note, session fixture + discovery/extract
  coverage, invocation-rendering parity, and a guarded
  omp-native-install smoke test

Closes #1224
- deduplicate all-platform discovery output: Pi and omp share the
  PI_CODING_AGENT_SESSION_DIR flat override, so both discoverers emitted
  the same files (Codex review P2)
- glob omp's sanitized bucket basename ([^a-zA-Z0-9._-]+ -> "-", edge
  dashes stripped, capped at the last 80 chars, empty -> "project",
  mirroring session-paths.ts getDefaultSessionDirName) so repos whose
  basename omp normalizes (e.g. spaces) are still discovered
- SKILL.md: include omp sessions in the mandatory keyword rerun clause —
  omp session headers carry cwd but no git branch, same as Codex/Pi
…pport

# Conflicts:
#	skills/ce-doc-review/references/walkthrough.md
Address PR #1323 review feedback by updating the historian prompt's platform enum, cwd metadata, cross-tool synthesis guidance, and provenance header. Add a contract regression guard.
omp 17.2.9 restored the legacy raw bucket naming (-<home-rel>,
-tmp-<rel>, --<abs>--) and removed automatic migration (#7646), so both
raw and hashed bucket shapes exist in the wild. Discovery globbed only
the sanitized basename, missing raw buckets whose basename contains
characters the hashed scheme normalizes (e.g. "my repo" in
--Users-test-Code-my repo--).

Add an exact raw-bucket probe for --cwd (canonicalized via physical
paths like omp's resolveEquivalentPath), a raw-basename glob alongside
the sanitized one, and awk dedup for buckets hit by both probe and
glob. Update docs/specs/omp.md for the restored naming scheme.
# Conflicts:
#	skills/ce-commit/SKILL.md
Split out per maintainer request (#1224): omp's session-bucket naming
is still moving (17.2.9 restored the raw scheme), so the install and
prose work here should not be blocked behind it.
omp's update checker skips catalog entries without a plugin-entry
version, so CE was invisible to omp plugin upgrade, the 24h catalog
refresh, and marketplace.autoUpdate. Ship .omp-plugin/marketplace.json
(omp's preferred catalog path, read ahead of the Claude copy when both
exist) with a version wired to the root release component via
extra-files jsonpath $.plugins[0].version, mirroring the existing
kimi/grok/devin native-catalog pattern. release:validate gains an omp
arm: plugin-list parity with the Claude catalog, version presence and
drift detection, and a co-located source check.

README now leads with the marketplace flow plus autoUpdate guidance
(notify mode only writes to the debug log), demoting omp install
<git-url> to pin-style and omp plugin link to contributor dev. The
target spec's causal claim is corrected: skills load via provider
scanning of the root skills/ directory; the pi manifest is the
discovery gate and an install-time validation risk, not the loader.
@cursor

cursor Bot commented Aug 12, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Touches release-please extra-files and release-metadata validation for a new marketplace catalog, so a bad version or parity check could break omp upgrades. No auth, credentials, or runtime converters are involved.

Overview
Adds native oh-my-pi (omp) support so Compound Engineering installs and updates through omp's marketplace without a converter or --to omp path.

Ships .omp-plugin/marketplace.json with a release-managed plugin version (required by omp's update checker), wires that field into release-please extra-files, and extends release-metadata sync to enforce catalog parity, required version, and co-located source: "./". Tool detection treats omp as a native-install target skipped by the Bun CLI.

User-facing skill handoffs across skills and authoring docs now render /skill:<name> on omp (alongside /skill-name and Codex $skill-name), while keeping agent-to-agent routing capability-first. README and docs/specs/omp.md document marketplace install, auto-update, and local link workflows.

Reviewed by Cursor Bugbot for commit e414cc0. Bugbot is set up for automated code reviews on this repo. Configure here.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0fd8857c6b

ℹ️ 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".

Comment thread .omp-plugin/marketplace.json

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9b6e0c0579

ℹ️ 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".

Comment thread docs/specs/omp.md Outdated
- clarify that all omp session-history discovery is deferred
@tmchow
tmchow merged commit 106cd52 into main Aug 12, 2026
5 checks passed
@github-actions github-actions Bot mentioned this pull request Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: add native oh-my-pi (omp) support

2 participants