Skip to content

feat(warp): add project skills support - #1738

Open
clay-good wants to merge 1 commit into
mainfrom
codex/warp-skills-320
Open

feat(warp): add project skills support#1738
clay-good wants to merge 1 commit into
mainfrom
codex/warp-skills-320

Conversation

@clay-good

@clay-good clay-good commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Status

LGTM from independent implementation review. All 4,239 local tests and the Linux, macOS, and Windows CI suites pass, along with build, lint, type checking, security, release tracking, and the docs deployment. Ready for final human review; not merged.

The OpenSpec Cloud scan is neutral, not clean. Its five findings were independently checked against the base and are pre-existing spec/code discrepancies, not Warp regressions; one requirement remains unverified by the scan. See the additional hardening review and triage, including passing multi-tool and profile-transition checks. No additional code changes were warranted.

What was missing

Warp supports native agent skills, but OpenSpec had no Warp option in init, tool detection, or update. Users had to choose another integration or configure files manually.

Closes #320.

What it does

  • Add warp to the existing tool registry, installing selected workflows in .warp/skills/openspec-*/SKILL.md.
  • Use the existing skill-invocation capability so both, skills, and commands delivery all retain usable skills. Warp invokes them with /openspec-*; no command adapter or command files are added.
  • Detect .warp and legacy WARP.md, without treating shared AGENTS.md or other tools' directories as Warp.
  • Reuse profile selection, refresh, pruning, and onboarding. Preserve Warp settings, rules, custom skills, and other tools' files.
  • Document setup and the shared agents alternative; include a minor changeset.

The path and invocation follow Warp's skill documentation. WARP.md detection follows its documented backward compatibility.

Proof it works

  • Initial regressions on unchanged main: 8 failures / 9 cases, exposing the missing registry entry, rejected tool ID, and absent detection.
  • Final Warp coverage: 10 passing tests. Covers all delivery modes, core/full/custom workflows, valid frontmatter, invocation syntax, update pruning, non-forced version refresh, reinitialization, current-state detection, and preservation of unrelated files.
  • Full local suite on Node 20.19.0: 146 files, 4,239 tests passed. The focused integration/detection/reference suite has 161 passing tests.
  • Cross-platform CI passes on Linux, macOS, and Windows for commit 695c8950f. Required checks are green.
  • Built-CLI smoke on Node 26.7.0: init, forced update, and normal update pass in all three delivery modes, with exactly 6 core skills and no command files.
  • Build, source and changed-test type checking, lint, changeset validation, and whitespace checks pass. The added documentation section was rendered at desktop and narrow widths.

Notes

No workflow, schema, profile default, permission, dependency, or global-install changes. Runtime behavior changes are limited to one registry entry and the existing skill-invocation classification. No live Warp application session was exercised; generated-file compatibility is checked against its published contract.

CodeRabbit was rate-limited after the PR left draft, so it has not completed automated review. Independent subagent reviews found no actionable implementation issues.

The initial full local run inherited unrelated machine settings: the same Cursor, global-tool detection, completion-tip, and temporary-runner assertions fail on main. Sandbox-only local HTTP-server failures also reproduce on main. The final passing run isolates XDG config/data and USERPROFILE, unsets ZSH/ZSH_CUSTOM, and uses Node 20.19.0 outside npm's temporary-runner path, with permission for local HTTP fixtures. No unrelated tests or production behavior were changed to obtain the pass.

@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 5 minutes.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6eb4082f-5a2c-405e-9c83-702166c7f6f8

📥 Commits

Reviewing files that changed from the base of the PR and between a0ddb60 and 695c895.

📒 Files selected for processing (6)
  • .changeset/tidy-warps-listen.md
  • docs/supported-tools.md
  • src/core/command-surface.ts
  • src/core/config.ts
  • src/utils/command-references.ts
  • test/core/warp.test.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying openspec-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 695c895
Status: ✅  Deploy successful!
Preview URL: https://5e4fc5cb.openspec-docs.pages.dev
Branch Preview URL: https://codex-warp-skills-320.openspec-docs.pages.dev

View logs

@clay-good
clay-good marked this pull request as ready for review August 28, 2026 19:30
@clay-good
clay-good requested a review from a team as a code owner August 28, 2026 19:30
@clay-good
clay-good requested review from alfred-openspec and removed request for a team August 28, 2026 19:30
@openspec-cloud

Copy link
Copy Markdown

▶ View full results and scan again

🔎 5 requirements drifted — 5 pointing at code.

AI-generated · A citation proves the line exists, not that it makes the case — verify before acting.

On 695c895; 1 requirement could not be verified — not a clean result.

🔴 Path configuration for supported tools — code is wrong · high

Expectedopenspec/specs/ai-tool-paths/spec.md:21

The `AI_TOOLS` array SHALL include `skillsDir` for tools that support the Agent Skills specification.

Observedsrc/core/config.ts:101

windsurf: 'devin',
First observed in retained OpenSpec Cloud history695c895 in PR #1738.

Next → fix the code at src/core/config.ts:101 so it satisfies the requirement.
Protect the fix: add a regression check and link it from this requirement.

Agent prompt

Update the implementation starting at src/core/config.ts:101 so it satisfies the requirement in openspec/specs/ai-tool-paths/spec.md (line 21). Add or update a regression check for that behavior. Do not edit the requirement or any specification file.

🔴 Archive Command Argument Support — code is wrong · high

Expectedopenspec/specs/cli-update/spec.md:155

The archive slash command template SHALL support optional change ID arguments for tools that support `$ARGUMENTS` placeholder.

Observedsrc/core/command-generation/adapters/opencode.ts:42

description: ${escapeYamlValue(content.description)}
First observed in retained OpenSpec Cloud history695c895 in PR #1738.

Next → fix the code at src/core/command-generation/adapters/opencode.ts:42 so it satisfies the requirement.
Protect the fix: add a regression check and link it from this requirement.

Agent prompt

Update the implementation starting at src/core/command-generation/adapters/opencode.ts:42 so it satisfies the requirement in openspec/specs/cli-update/spec.md (line 155). Add or update a regression check for that behavior. Do not edit the requirement or any specification file.

🔴 Slash Command Updates — code is wrong · high

Expectedopenspec/specs/cli-update/spec.md:52

The update command SHALL refresh existing slash command files for configured tools without creating new ones, and ensure the OpenCode archive command accepts change ID arguments.

Observedsrc/core/command-generation/adapters/opencode.ts:23

(input) => `${input}${eol}**Provided arguments**: $ARGUMENTS`
First observed in retained OpenSpec Cloud history695c895 in PR #1738.

Next → fix the code at src/core/command-generation/adapters/opencode.ts:23 so it satisfies the requirement.
Protect the fix: add a regression check and link it from this requirement.

Agent prompt

Update the implementation starting at src/core/command-generation/adapters/opencode.ts:23 so it satisfies the requirement in openspec/specs/cli-update/spec.md (line 52). Add or update a regression check for that behavior. Do not edit the requirement or any specification file.

2 more findings are in the full check.

View results · Click Refresh, then Scan again in the check. Or comment /openspec-cloud.

@clay-good

Copy link
Copy Markdown
Collaborator Author

Additional hardening review

LGTM for the Warp change at 695c8950f. No additional code changes are warranted. Independent audits confirmed that it uses existing path, delivery, profile, and skill-reference behavior without changing core workflows or other tools.

The OpenSpec Cloud scan is neutral, not clean: five findings and one unverified requirement. We checked all five findings against base a0ddb60d:

Finding Verified disposition
Tool paths / Windsurf Pre-existing spec drift after the Devin rebrand. The existing windsurf → devin alias is unchanged. Warp supplies its own skillsDir as required.
Archive argument support Pre-existing frontmatter wording mismatch. The unchanged OpenCode adapter injects $ARGUMENTS in the command body; current adapter tests cover argument forwarding.
Slash-command updates Same unchanged OpenCode behavior, not a Warp regression. Warp has no command adapter or command files.
Schema source labels Real pre-existing mismatch: human-readable package schemas omit an explicit package label. Schema listing is unchanged by this PR.
Telemetry properties Pre-existing wording mismatch around fixed surface: 'cli'; $ip: null is separately required by the telemetry spec. This PR changes neither telemetry nor its payload.

The cited specs and OpenCode, schema-listing, and telemetry implementations are byte-identical to the base. The only change in config.ts is the Warp registry entry. The scan's remaining unverified core-files requirement was not reported as passing. These findings do not justify changing unrelated product behavior or specifications in this integration PR.

Fresh checks passed: 147 tests in the design audit, 190 Warp/adjacent lifecycle tests in the regression audit, and 1,128 adapter/schema/telemetry tests during scan triage. These are overlapping targeted runs, not additional unique tests beyond the full-suite total. The existing 4,239-test full-suite result and Linux/macOS/Windows CI remain valid for the unchanged head.

An additional isolated built-CLI smoke passed with Warp, Claude, and shared agents installed together in a path containing spaces. It covered both → commands → skills → both, core/custom profile pruning and expansion, and archive's sync dependency. Every non-forced update settled to “up to date,” with each tool retaining its intended delivery surface.

No live Warp client session was tested. CodeRabbit remains rate-limited. Ready for final human review; not merged.

@alfred-openspec alfred-openspec left a comment

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.

Review of 695c8950f

The runtime integration is sound: Warp's current documentation confirms .warp/skills/<name>/SKILL.md, /name invocation, .agents/skills as a supported alternative, and WARP.md backward compatibility. The dedicated registry entry, skills-invocable classification, preservation behavior, focused tests, and green hosted matrix all look right.

Two repository-contract gaps still block merge:

  1. Update the living OpenSpec contract. openspec/specs/ai-tool-paths/spec.md owns project skill-path metadata and carries tool-specific scenarios, but this PR adds Warp's .warp path and detection behavior without moving that spec. Add the Warp scenario, including the dedicated skill root and the adapterless, directly invocable behavior that keeps skills usable under commands delivery.
  2. Complete documentation parity. docs/cli.md explicitly says its supported-ID list mirrors AI_TOOLS, but it still omits warp. The skills-only lists in docs/commands.md, docs/how-commands-work.md, and docs/troubleshooting.md also omit Warp, even though docs/supported-tools.md adds it. Update those maintained surfaces together so users do not get contradictory setup and invocation guidance.

The current implementation and tests can remain as-is unless the living-contract update exposes a behavior mismatch. Once the spec and maintained docs move with the registry change, this should be ready to approve.

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.

Request: Support Warp Terminal

2 participants