feat(warp): add project skills support - #1738
Spec drift: 5 drifted, 1 needs review
🔎 5 requirements drifted — 5 pointing at code.
AI-generated · A citation proves the line exists, not that it makes the case — verify before acting.
Scan completed; verification needs review. All 42 selected requirements were processed; 1 remained unverified after bounded recovery. This is not a clean result.
🔴 Fix your code (5)
🔴 Path configuration for supported tools — code is wrong · high
Expected — openspec/specs/ai-tool-paths/spec.md:21
The `AI_TOOLS` array SHALL include `skillsDir` for tools that support the Agent Skills specification.
Observed — src/core/config.ts:101
windsurf: 'devin',
First observed in retained OpenSpec Cloud history —695c895in 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:101so it satisfies the requirement inopenspec/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
Expected — openspec/specs/cli-update/spec.md:155
The archive slash command template SHALL support optional change ID arguments for tools that support `$ARGUMENTS` placeholder.
Observed — src/core/command-generation/adapters/opencode.ts:42
description: ${escapeYamlValue(content.description)}
First observed in retained OpenSpec Cloud history —695c895in 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:42so it satisfies the requirement inopenspec/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
Expected — openspec/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.
Observed — src/core/command-generation/adapters/opencode.ts:23
(input) => `${input}${eol}**Provided arguments**: $ARGUMENTS`
First observed in retained OpenSpec Cloud history —695c895in 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:23so it satisfies the requirement inopenspec/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.
🔴 Schemas command shows source — code is wrong · high
Expected — openspec/specs/schema-resolution/spec.md:85
The `openspec schemas` command SHALL display the source of each schema.
Observed — src/commands/workflow/schemas.ts:45
let sourceLabel = '';
First observed in retained OpenSpec Cloud history —695c895in PR #1738.
Next → fix the code at src/commands/workflow/schemas.ts:45 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/commands/workflow/schemas.ts:45so it satisfies the requirement inopenspec/specs/schema-resolution/spec.md(line 85). Add or update a regression check for that behavior. Do not edit the requirement or any specification file.
🔴 Command execution tracking — code is wrong · high
Expected — openspec/specs/telemetry/spec.md:9
including only the command name and OpenSpec version as properties.
Observed — src/telemetry/index.ts:166
sendEvent(userId, 'command_executed', {
First observed in retained OpenSpec Cloud history —695c895in PR #1738.
Next → fix the code at src/telemetry/index.ts:166 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/telemetry/index.ts:166so it satisfies the requirement inopenspec/specs/telemetry/spec.md(line 9). Add or update a regression check for that behavior. Do not edit the requirement or any specification file.
Run details
OpenSpec Cloud found 5 findings on 695c895.
5 implementation findings · 0 safe spec findings · 0 decisions needed
Act first
- Fix implementation — Path configuration for supported tools —
src/core/config.ts:101
behavioral · high confidence · Why it matters: Required and observed behavior differ - Fix implementation — Archive Command Argument Support —
src/core/command-generation/adapters/opencode.ts:42
behavioral · high confidence · Why it matters: Required and observed behavior differ - Fix implementation — Slash Command Updates —
src/core/command-generation/adapters/opencode.ts:23
behavioral · high confidence · Why it matters: Required and observed behavior differ
2 more findings in the full check.
All findings
Review all 5 annotations in this check for verified evidence and coverage detail.
Findings with verified citations: 5 · Requirements not completed: 0
Scan completed; verification needs review. All 42 selected requirements were processed. 1 requirement could not be verified; this is not a clean result.
Judged 42 PR-selected requirements (255 total in the repository).
| Outcome | Count |
|---|---|
| Clean | 36 |
| Not assessed | 1 |
| Contradicted | 5 |
| — behavioral | 5 |
Clean and not-assessed are counted separately. A not-assessed requirement was not verified.
Coverage, across the 42 requirement(s) this run selected, of 255 parsed:
| Coverage | Count |
|---|---|
| Checked — a check exists | 0 |
| Judged — a model decided | 41 |
| Uncovered | 1 |
Coverage is not a verdict. A checked requirement has a check that exists; it was located and read, never run.
Nothing verifies these requirement(s) (1):
cli-update/core-files-always-updated#5
| Run metric | Value |
|---|---|
| Tool calls | 515 |
| Input tokens | 1,829,981 |
| Output tokens | 57,891 |
| Cache read tokens | 3,188,992 |
| Cache write tokens | 0 |
| Cost | $0.6530 |
| Wall clock | 182.7s |
| Recovery (2 passes) | 3 recovered / 5 retried; 1 unresolved |
| Independent confirmation | 5 confirmed / 8 rechecked; 3 withheld |
Annotations
Check failure on line 21 in openspec/specs/ai-tool-paths/spec.md
openspec-cloud / OpenSpec Cloud PR Scan
Fix implementation: Path configuration for supported tools (behavioral)
**Expected** — `openspec/specs/ai-tool-paths/spec.md:21`
> The \`AI\_TOOLS\` array SHALL include \`skillsDir\` for tools that support the Agent Skills specification.
**Observed** — `src/core/config.ts:101`
> windsurf: 'devin',
**First observed in retained OpenSpec Cloud history** — [`695c895`](https://github.com/Fission-AI/OpenSpec/commit/695c8950fabbf8d2f4639c457bfebe50875db94c) in [PR #1738](https://github.com/Fission-AI/OpenSpec/pull/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.
Check failure on line 155 in openspec/specs/cli-update/spec.md
openspec-cloud / OpenSpec Cloud PR Scan
Fix implementation: Archive Command Argument Support (behavioral)
**Expected** — `openspec/specs/cli-update/spec.md:155`
> The archive slash command template SHALL support optional change ID arguments for tools that support \`$ARGUMENTS\` placeholder.
**Observed** — `src/core/command-generation/adapters/opencode.ts:42`
> description: ${escapeYamlValue(content.description)}
**First observed in retained OpenSpec Cloud history** — [`695c895`](https://github.com/Fission-AI/OpenSpec/commit/695c8950fabbf8d2f4639c457bfebe50875db94c) in [PR #1738](https://github.com/Fission-AI/OpenSpec/pull/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.
Check failure on line 52 in openspec/specs/cli-update/spec.md
openspec-cloud / OpenSpec Cloud PR Scan
Fix implementation: Slash Command Updates (behavioral)
**Expected** — `openspec/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.
**Observed** — `src/core/command-generation/adapters/opencode.ts:23`
> (input) =\> \`${input}${eol}\*\*Provided arguments\*\*: $ARGUMENTS\`
**First observed in retained OpenSpec Cloud history** — [`695c895`](https://github.com/Fission-AI/OpenSpec/commit/695c8950fabbf8d2f4639c457bfebe50875db94c) in [PR #1738](https://github.com/Fission-AI/OpenSpec/pull/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.
Check failure on line 85 in openspec/specs/schema-resolution/spec.md
openspec-cloud / OpenSpec Cloud PR Scan
Fix implementation: Schemas command shows source (behavioral)
**Expected** — `openspec/specs/schema-resolution/spec.md:85`
> The \`openspec schemas\` command SHALL display the source of each schema.
**Observed** — `src/commands/workflow/schemas.ts:45`
> let sourceLabel = '';
**First observed in retained OpenSpec Cloud history** — [`695c895`](https://github.com/Fission-AI/OpenSpec/commit/695c8950fabbf8d2f4639c457bfebe50875db94c) in [PR #1738](https://github.com/Fission-AI/OpenSpec/pull/1738).
**Next → fix the code** at `src/commands/workflow/schemas.ts:45` so it satisfies the requirement.
**Protect the fix:** add a regression check and link it from this requirement.
Check failure on line 9 in openspec/specs/telemetry/spec.md
openspec-cloud / OpenSpec Cloud PR Scan
Fix implementation: Command execution tracking (behavioral)
**Expected** — `openspec/specs/telemetry/spec.md:9`
> including only the command name and OpenSpec version as properties.
**Observed** — `src/telemetry/index.ts:166`
> sendEvent(userId, 'command\_executed', {
**First observed in retained OpenSpec Cloud history** — [`695c895`](https://github.com/Fission-AI/OpenSpec/commit/695c8950fabbf8d2f4639c457bfebe50875db94c) in [PR #1738](https://github.com/Fission-AI/OpenSpec/pull/1738).
**Next → fix the code** at `src/telemetry/index.ts:166` so it satisfies the requirement.
**Protect the fix:** add a regression check and link it from this requirement.