feat(agents): add native plugins for Codex Claude and Cursor - #73
Conversation
roodboi
left a comment
There was a problem hiding this comment.
Requesting changes because the migration currently has no safe cutover boundary: a normal interactive Hack command can remove the working standalone integration before the native plugin is installed or enabled.
What I verified on this head:
- full
bun testexits successfully - the focused plugin/setup suite passes (48 tests, 193 assertions)
bun run typecheck,bun run check, andgit diff --checkpass- hosted CI is green across test, runtime-images, Docker E2E, and secret scan
- live
codex plugin list --jsonandclaude plugin list --jsonoutput match the new parsers
What still needs direct verification before merge:
- Fresh marketplace add + plugin install for Codex, Claude Code, and Cursor using current stable clients.
- A cutover matrix for plugin missing / disabled / enabled × project / user legacy artifacts × generated / customized artifacts. Missing or disabled must retain the working legacy integration; enabled may remove only exact generated copies.
- After a new session, prove both skills, the Claude hooks / Cursor rule, and
hack mcp serveare actually loaded from each installed plugin. - Exercise interactive
hack initandhack setupoutput so missing/disabled plugins are warnings with non-success status.
Please also complete the PR description's Summary, Verification, Release Signal, Semantic Surfaces, and Risks sections. This is a user-facing feat and the release decision must be explicit per repository policy.
| cursor-agent plugin marketplace add hack-dance/hack | ||
| ``` | ||
|
|
||
| Open `/plugin` in Cursor, choose the **Hack Dance** marketplace, and install **Hack**. Cursor bundles |
There was a problem hiding this comment.
[P2] Validate and document the current Cursor installation surface. Cursor's current official plugin documentation says to install in the editor with /add-plugin (or Settings → Plugins), while /plugin is not documented: https://cursor.com/changelog/2-5. Because this is the only recovery path printed after cleanup, an invalid slash command strands the user without either integration. Update the canonical guidance and all generated copies, then verify on current stable Cursor and Cursor Agent CLI that the marketplace is accepted, Hack installs/enables, and its rules, skills, and MCP server appear after a new session.
roodboi
left a comment
There was a problem hiding this comment.
Re-reviewed the two new commits (e21feee and 6808a21). The original unsafe-cleanup, missing-plugin success, Cursor guidance, and PR-description findings are substantially addressed.
What I verified on this head:
- focused plugin/cutover/setup suite: 36 tests, 217 assertions, 0 failures
- direct CLI TypeScript check and direct Ultracite check on all changed TS/test files
- CLI build and
git diff --check - the readiness matrix preserves legacy content while plugins are missing/disabled
Two false-green cases remain when the plugin is enabled but customized legacy content is preserved; see the inline comments. Please test enabled-plugin cutover with a customized primary artifact and customized MCP entry for all three clients, both scopes, through hack setup <client>, hack setup sync --all-scopes, automatic sync, and interactive hack init. Every path must preserve the customization, warn, and exit nonzero until the duplicate legacy integration is manually reconciled.
Hosted CI has not executed: run 243 is action_required with zero jobs, consistent with the fork workflow awaiting maintainer approval. Please approve/run CI and get it green. A live current-stable Cursor + Cursor Agent CLI marketplace/install/load check also remains outstanding before approval.
roodboi
left a comment
There was a problem hiding this comment.
CI is now running, and the main test/typecheck/build, runtime-image, and secret-scan jobs pass. Docker E2E fails deterministically in agent-docs-sync because this PR changed missing native plugins to a non-success sync result without updating the existing E2E contract. See the inline comment for the required coverage. After updating it, run bun run test:e2e:local:docker and keep the earlier customized-artifact cutover cases in scope.
roodboi
left a comment
There was a problem hiding this comment.
Re-reviewed 7f72688 plus the merge head 3d71e07.
Verified in an isolated checkout:
- focused plugin/cutover/setup suite: 27 tests, 307 assertions, 0 failures
agent-docs-syncE2E passes locally, and hosted run 247'sdocker-e2ejob is green- CLI TypeScript, changed-file Ultracite, CLI build, and
git diff --checkpass - customized primary and MCP artifacts are preserved and return non-success across all three clients and both scopes
The prior functional findings are fixed. One merge-generated artifact drift remains: the 3.5.2 merge left the new plugin manifests and bundled Codex skill at 3.5.1, producing four deterministic test failures. See the inline comment.
After regenerating, please run bun test tests/claude-plugin.test.ts tests/cursor-plugin.test.ts tests/codex-plugin.test.ts tests/agent-instruction-source.test.ts and get the hosted test job green. The existing live current-stable Cursor install/load verification thread also remains open.
| { | ||
| "name": "hack", | ||
| "displayName": "Hack", | ||
| "version": "3.5.1", |
There was a problem hiding this comment.
[P1] Regenerate the native-plugin artifacts after merging the 3.5.2 release. package.json is now 3.5.2, but this manifest and the Cursor/Codex manifests still declare 3.5.1, and plugins/hack/skills/hack-cli/SKILL.md still embeds v3.5.1 guidance. On 3d71e07, bun test tests/claude-plugin.test.ts tests/cursor-plugin.test.ts tests/codex-plugin.test.ts tests/agent-instruction-source.test.ts fails exactly those four parity checks (the same root cause already failed run 247's test job). Run bun run generate:agent-plugins, commit every generated artifact, rerun that focused command, and get the hosted test job green.
Summary
Verification
Release Signal
Semantic Surfaces
Risks / Follow-up