Skip to content

Conversation

@TabishB
Copy link
Contributor

@TabishB TabishB commented Jan 14, 2026

Summary

Implements the /opsx:verify skill to validate that implementations match their change artifacts (specs, tasks, design) before archiving. This addresses the user request for a verification step to ensure implementation completeness, correctness, and coherence.

Changes

  • Added getVerifyChangeSkillTemplate() to src/core/templates/skill-templates.ts

    • Comprehensive verification logic covering three dimensions:
      • Completeness: Task completion + spec coverage
      • Correctness: Requirement implementation + scenario coverage
      • Coherence: Design adherence + code pattern consistency
    • Generates prioritized reports (CRITICAL/WARNING/SUGGESTION)
  • Added getOpsxVerifyCommandTemplate() to src/core/templates/skill-templates.ts

    • Slash command variant for explicit invocation
  • Integrated verify into artifactExperimentalSetupCommand in src/commands/artifact-workflow.ts

    • Added to skills array (8th skill)
    • Added to commands array
    • Updated help text
  • Created design.md documenting the architectural decision to use dynamic generation via the existing setup system rather than static skill files

Verification Dimensions

The skill validates three aspects:

  1. Completeness: Are all tasks done? Are all spec requirements implemented?
  2. Correctness: Do implementations match requirement intent? Are scenarios covered?
  3. Coherence: Does implementation follow design decisions? Does it match project patterns?

Usage

After running openspec artifact-experimental-setup, users can invoke:

  • /opsx:verify - Interactive prompt to select a change
  • /opsx:verify --change <name> - Verify specific change

The skill generates a report with actionable recommendations for any issues found.

Test Plan

  • TypeScript compilation succeeds
  • Verify skill integrated into setup (8 skills total, was 7)
  • All tasks marked complete
  • End-to-end test: Run openspec artifact-experimental-setup and verify files generated
  • End-to-end test: Invoke /opsx:verify on a change and validate report output

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features
    • Added a new verify skill for validating completeness, correctness, and coherence of change artifacts
    • New /opsx:verify slash command providing access to the verification workflow
    • Verification reports now categorize issues by severity level (CRITICAL, WARNING, SUGGESTION) for clearer feedback

✏️ Tip: You can customize this high-level summary in your review settings.

…ementations

Add comprehensive verification skill that checks implementation completeness, correctness, and coherence against change artifacts. The skill validates task completion, spec coverage, requirement implementation, and design adherence.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 14, 2026

📝 Walkthrough

Walkthrough

Adds a verify skill to the OpenSpec artifact workflow, introducing two new exported template functions (getVerifyChangeSkillTemplate and getOpsxVerifyCommandTemplate) in skill-templates.ts and integrating them into the artifact-experimental-setup command by importing, instantiating, and registering them with skills, commands arrays, and help text.

Changes

Cohort / File(s) Summary
Design & Specification
openspec/changes/add-verify-skill/design.md, proposal.md, tasks.md
Detailed design documentation specifying verify skill integration: template function signatures, artifact-workflow integration points, generated artifacts structure (SKILL.md and command definitions with YAML frontmatter), verification steps, and rationale.
Verify Skill & Command Templates
src/core/templates/skill-templates.ts
Added two exported template functions totaling 337 lines: getVerifyChangeSkillTemplate() defining multi-step verification workflow (artifact loading, validation, coherence checks, structured report with CRITICAL/WARNING/SUGGESTION levels) and getOpsxVerifyCommandTemplate() providing equivalent OPSX slash command workflow.
Artifact Workflow Integration
src/commands/artifact-workflow.ts
Imported new template functions and integrated verify into artifactExperimentalSetupCommand: instantiated verifyChangeSkill and verifyCommand, added to skills and commands generation arrays, and updated help text output to include /opsx:verify.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

Poem

🐰✨ A verify skill hops into place,
Templates defined with methodical grace,
Workflows check artifacts with care,
Warnings and fixes float in the air,
OpenSpec's toolkit grows complete and fair! 🎯

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: implementing a new /opsx:verify skill for validating change implementations, which is the core objective of this pull request.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

🧹 Recent nitpick comments
openspec/changes/add-verify-skill/proposal.md (1)

15-20: Consider adding line number references for clarity.

Per coding guidelines, use direct file references in format file.ts:42. Consider adding specific line numbers:

-- Add `getVerifyChangeSkillTemplate()` function to `skill-templates.ts`
-- Add `getOpsxVerifyCommandTemplate()` function to `skill-templates.ts`
-- Integrate verify skill into `artifactExperimentalSetupCommand` in `artifact-workflow.ts`
+- Add `getVerifyChangeSkillTemplate()` function to `skill-templates.ts:1792`
+- Add `getOpsxVerifyCommandTemplate()` function to `skill-templates.ts:2139`
+- Integrate verify skill into `artifactExperimentalSetupCommand` in `artifact-workflow.ts:787`

As per coding guidelines, this helps maintainers quickly locate the relevant code.


📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 322bfd4 and 7478532.

📒 Files selected for processing (5)
  • openspec/changes/add-verify-skill/design.md
  • openspec/changes/add-verify-skill/proposal.md
  • openspec/changes/add-verify-skill/tasks.md
  • src/commands/artifact-workflow.ts
  • src/core/templates/skill-templates.ts
🧰 Additional context used
📓 Path-based instructions (3)
openspec/changes/*/{proposal,design,tasks}.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Use direct file references in format file.ts:42 and reference specs as specs/auth/spec.md for clarity

Files:

  • openspec/changes/add-verify-skill/design.md
  • openspec/changes/add-verify-skill/tasks.md
  • openspec/changes/add-verify-skill/proposal.md
openspec/changes/*/tasks.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Create tasks.md with numbered implementation sections and checkboxes in format - [ ] X.Y Task description

Files:

  • openspec/changes/add-verify-skill/tasks.md
openspec/changes/*/proposal.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Create proposal.md with Why, What Changes (with BREAKING markers), and Impact sections

Files:

  • openspec/changes/add-verify-skill/proposal.md
🧠 Learnings (8)
📓 Common learnings
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/tasks.md : Create `tasks.md` with numbered implementation sections and checkboxes in format `- [ ] X.Y Task description`
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Run `openspec validate [change] --strict --no-interactive` before sharing a proposal to resolve validation issues
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Scaffold `proposal.md`, `tasks.md`, optional `design.md`, and delta specs under `openspec/changes/<id>/` when creating a change proposal

Applied to files:

  • openspec/changes/add-verify-skill/design.md
  • openspec/changes/add-verify-skill/proposal.md
  • src/core/templates/skill-templates.ts
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Create `design.md` only when the change is cross-cutting, involves new dependencies, has security/performance complexity, or resolves ambiguity before coding

Applied to files:

  • openspec/changes/add-verify-skill/design.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/{proposal,design,tasks}.md : Use direct file references in format `file.ts:42` and reference specs as `specs/auth/spec.md` for clarity

Applied to files:

  • openspec/changes/add-verify-skill/design.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/specs/**/spec.md : Use ADDED for new orthogonal capabilities; use MODIFIED for behavior/scope/criteria changes; use RENAMED for name-only changes

Applied to files:

  • openspec/changes/add-verify-skill/design.md
  • openspec/changes/add-verify-skill/proposal.md
  • src/core/templates/skill-templates.ts
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/tasks.md : Create `tasks.md` with numbered implementation sections and checkboxes in format `- [ ] X.Y Task description`

Applied to files:

  • openspec/changes/add-verify-skill/tasks.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Read relevant specs in `specs/[capability]/spec.md` and check pending changes in `changes/` for conflicts before starting any task

Applied to files:

  • openspec/changes/add-verify-skill/proposal.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: After deployment, move `changes/[name]/` to `changes/archive/YYYY-MM-DD-[name]/` using `openspec archive <change-id> [--skip-specs] [--yes]`

Applied to files:

  • src/core/templates/skill-templates.ts
🧬 Code graph analysis (1)
src/commands/artifact-workflow.ts (1)
src/core/templates/skill-templates.ts (2)
  • getVerifyChangeSkillTemplate (1792-1954)
  • getOpsxVerifyCommandTemplate (2139-2303)
🪛 markdownlint-cli2 (0.18.1)
openspec/changes/add-verify-skill/design.md

56-56: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


66-66: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🔇 Additional comments (11)
src/core/templates/skill-templates.ts (2)

1788-1954: LGTM! Well-structured verification skill template.

The getVerifyChangeSkillTemplate() function is well-designed with:

  • Clear three-dimensional verification approach (Completeness, Correctness, Coherence)
  • Appropriate severity levels (CRITICAL/WARNING/SUGGESTION)
  • Good graceful degradation when artifacts are missing
  • Actionable recommendations with file references

The template follows the established pattern of other skills in this file.


2135-2303: LGTM! Command template correctly mirrors the skill template.

The getOpsxVerifyCommandTemplate() function correctly follows the pattern where:

  • Skill template is for auto-detection in compatible editors
  • Command template is for explicit /opsx:verify invocation
  • Both share the same verification logic, which is intentional

The input format properly documents --change <name> syntax for explicit invocation.

src/commands/artifact-workflow.ts (6)

31-31: LGTM! Import correctly extends the existing import statement.

The new imports getVerifyChangeSkillTemplate and getOpsxVerifyCommandTemplate are properly added to the existing import from skill-templates.js, following the alphabetical grouping pattern.


803-803: LGTM! Verify skill correctly instantiated.

The verifyChangeSkill is instantiated following the same pattern as other skills.


813-813: LGTM! Verify command correctly instantiated.

The verifyCommand is instantiated following the same pattern as other commands.


824-824: LGTM! Skill array correctly extended.

The verify skill is properly added as the 8th skill in the array, maintaining the directory naming convention openspec-verify-change.


856-856: LGTM! Commands array correctly extended.

The verify command is properly added with filename verify.md, following the naming pattern of other commands.


915-916: Good placement of verify in help text.

The /opsx:verify command is correctly placed before /opsx:archive in the help output, which makes sense from a workflow perspective—users verify before archiving.

openspec/changes/add-verify-skill/proposal.md (1)

42-47: LGTM! Impact section is clear and complete.

The Impact section properly documents:

  • Affected specs
  • Affected code with file paths
  • Generated artifacts with exact paths
  • Related skills context
openspec/changes/add-verify-skill/tasks.md (1)

1-15: LGTM! Tasks file follows the required format.

The file correctly uses:

  • Numbered implementation sections (1, 2, 3)
  • Checkbox format - [x] X.Y Task description as per coding guidelines
  • Clear, actionable task descriptions
  • All tasks properly marked as complete

Based on learnings, this follows the required tasks.md format.

openspec/changes/add-verify-skill/design.md (1)

1-96: LGTM! Well-documented architectural decision.

The design document appropriately:

  • Explains the context and decision to use dynamic generation
  • Provides clear rationale (consistency, maintainability, distribution, versioning)
  • Documents alternatives considered and why they were rejected
  • Includes verification criteria

This aligns with the guideline to create design.md when the change "resolves ambiguity before coding."

Regarding the static analysis hints (lines 56 and 66): The emphasis styling for "Alternative 1:" and "Alternative 2:" is acceptable here as inline labels within prose, not section headings requiring markdown heading syntax.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


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 and usage tips.

@TabishB TabishB merged commit b5b7248 into main Jan 14, 2026
7 checks passed
@TabishB TabishB deleted the TabishB/vienna branch January 14, 2026 06:38
@vibe-kanban-cloud
Copy link

Review Complete

Your review story is ready!

View Story

Comment !reviewfast on this PR to re-generate the story.

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