Skip to content

feat(compound-engineering): add ce-sync wrapper#636

Closed
kesslerio wants to merge 1 commit into
EveryInc:mainfrom
kesslerio:feat/ce-sync-wrapper
Closed

feat(compound-engineering): add ce-sync wrapper#636
kesslerio wants to merge 1 commit into
EveryInc:mainfrom
kesslerio:feat/ce-sync-wrapper

Conversation

@kesslerio
Copy link
Copy Markdown
Contributor

@kesslerio kesslerio commented Apr 22, 2026

Summary

  • Add a standalone ce-sync wrapper that reuses the existing installer for repeatable exports and refreshes.
  • Document the workflow in the plugin README and repo AGENTS guidance.
  • Add CLI coverage to verify --branch forwarding.

Verification

  • bun test tests/cli.test.ts
  • bun test
  • bun run release:validate

Notes

  • Direct pushes to the upstream repo were blocked, so this branch was published from the fork kesslerio/compound-engineering-plugin.

Copy link
Copy Markdown

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

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: 6c9cd85fbb

ℹ️ 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 src/ce-sync.ts
}

const proc = Bun.spawn(["bun", ...childArgs], {
cwd: repoRoot,
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Run installer from caller CWD for relative --output

Spawning the installer with cwd: repoRoot changes how relative paths are resolved inside install, so ce-sync --output ./some-dir writes under the package repo (or fails if that location is not writable) instead of the directory where the user invoked ce-sync. This is a functional regression for common refresh/export workflows that use project-relative output paths; the wrapper should preserve the caller’s working directory when invoking src/index.ts.

Useful? React with 👍 / 👎.

| `/ce-test-browser` | Run browser tests on PR-affected pages |
| `/ce-test-xcode` | Build and test iOS apps on simulator using XcodeBuildMCP |
| `/ce-onboarding` | Generate `ONBOARDING.md` to help new contributors understand the codebase |
| `/ce-sync` | Refresh compound-engineering skills across targets using the bundled installer |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

why is this listed as a skill?

@tmchow
Copy link
Copy Markdown
Collaborator

tmchow commented Apr 22, 2026

Thanks for putting this together. Going to pass on this one.

A few reasons:

  • It’s a thin wrapper: compound-plugin install compound-engineering --to <target> already takes the same flags, so the net ergonomic win is small. Most people woudl be copying and pasting anyways.
  • Most users install via claude /plugin install compound-engineering, not the npm CLI, so the audience for a second bin is narrower.
  • The AGENTS.md additions (“do not invent a second export format”) prescribe against a problem we haven’t actually hit. I’d rather not add rules ahead of a real incident.
  • Hardcoding compound-engineering privileges one plugin in a repo that hosts several.

If there’s a specific workflow where the existing command is getting in your way, happy to hear more about it... that might change the calculus for me. Appreciate the contribution either waay

@tmchow tmchow closed this Apr 22, 2026
@kesslerio
Copy link
Copy Markdown
Contributor Author

Sorry, this should have gone to my fork, not upstream. My bad.

tmchow added a commit that referenced this pull request May 20, 2026
…nces index

A real nugget-demographics plan HTML rendered its Sources & References
section as 9 bare code paths, 4 doc paths, 2 GitHub PR mentions, and a
Linear ticket — none hyperlinked. The reader has to copy-paste every
entry into a browser or IDE to use it. Bare text references are the
HTML format's biggest unforced UX miss: a doc reading like a reference
index loses the format's main affordance over markdown.

New Format-principles rule: hyperlink the reference index. Resolves the
repo's GitHub URL once at compose time from `git remote get-url origin`
and applies linking to three reference shapes:

- Repo-relative code/doc paths → `<repo-url>/blob/main/<path>`
- Named GitHub PRs/issues (`PR #636`, `issue #1048`) →
  `<repo-url>/pull/636` or `<repo-url>/issues/1048`
- Named external trackers (Linear, Jira) → linked only when the
  workspace URL is established in loaded context; otherwise text

Two constraints prevent the rule from going crazy:

- Do not invent URLs. If origin isn't GitHub or the tracker workspace
  isn't established, leave entries as text. A broken or guessed link
  is worse than no link.
- Scope: reference index only. Inline <code> mentions of paths or PRs
  in paragraph prose stay as code — linking every mention clutters.

One new test pins the principle with five assertions: rule presence,
the `git remote get-url origin` resolution, the `blob/main` URL shape,
the URL-invention prohibition, and the reference-index-only scope.
tmchow added a commit that referenced this pull request May 21, 2026
…nces index

A real nugget-demographics plan HTML rendered its Sources & References
section as 9 bare code paths, 4 doc paths, 2 GitHub PR mentions, and a
Linear ticket — none hyperlinked. The reader has to copy-paste every
entry into a browser or IDE to use it. Bare text references are the
HTML format's biggest unforced UX miss: a doc reading like a reference
index loses the format's main affordance over markdown.

New Format-principles rule: hyperlink the reference index. Resolves the
repo's GitHub URL once at compose time from `git remote get-url origin`
and applies linking to three reference shapes:

- Repo-relative code/doc paths → `<repo-url>/blob/main/<path>`
- Named GitHub PRs/issues (`PR #636`, `issue #1048`) →
  `<repo-url>/pull/636` or `<repo-url>/issues/1048`
- Named external trackers (Linear, Jira) → linked only when the
  workspace URL is established in loaded context; otherwise text

Two constraints prevent the rule from going crazy:

- Do not invent URLs. If origin isn't GitHub or the tracker workspace
  isn't established, leave entries as text. A broken or guessed link
  is worse than no link.
- Scope: reference index only. Inline <code> mentions of paths or PRs
  in paragraph prose stay as code — linking every mention clutters.

One new test pins the principle with five assertions: rule presence,
the `git remote get-url origin` resolution, the `blob/main` URL shape,
the URL-invention prohibition, and the reference-index-only scope.
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.

2 participants