From 18107a43fb3007b8f8487ebe435c8416e61052b8 Mon Sep 17 00:00:00 2001 From: Jose Abreu Date: Mon, 14 Sep 2026 12:34:57 -0300 Subject: [PATCH 1/4] Adopt GitHub Spec Kit, retire OpenSpec active tooling Installs Spec Kit for Claude Code and GitHub Copilot as the repo's active spec-driven workflow, ratifies a project constitution derived from AGENTS.md, and removes OpenSpec's now-superseded skills/prompts/ commands for both agents. openspec/ (specs + archived changes) is left untouched as a frozen historical record. See LS-4126. Co-Authored-By: Claude Sonnet 5 --- .claude/commands/opsx/apply.md | 181 ---- .claude/commands/opsx/archive.md | 223 ----- .claude/commands/opsx/explore.md | 181 ---- .claude/commands/opsx/propose.md | 119 --- .claude/commands/opsx/sync.md | 219 ----- .claude/commands/opsx/update.md | 86 -- .claude/skills/openspec-apply-change/SKILL.md | 185 ---- .../skills/openspec-archive-change/SKILL.md | 180 ---- .claude/skills/openspec-explore/SKILL.md | 296 ------- .claude/skills/openspec-propose/SKILL.md | 123 --- .claude/skills/openspec-sync-specs/SKILL.md | 223 ----- .../skills/openspec-update-change/SKILL.md | 90 -- .claude/skills/speckit-analyze/SKILL.md | 262 ++++++ .claude/skills/speckit-checklist/SKILL.md | 386 +++++++++ .claude/skills/speckit-clarify/SKILL.md | 294 +++++++ .claude/skills/speckit-constitution/SKILL.md | 182 ++++ .claude/skills/speckit-converge/SKILL.md | 279 ++++++ .claude/skills/speckit-implement/SKILL.md | 229 +++++ .claude/skills/speckit-plan/SKILL.md | 169 ++++ .claude/skills/speckit-specify/SKILL.md | 348 ++++++++ .claude/skills/speckit-tasks/SKILL.md | 218 +++++ .claude/skills/speckit-taskstoissues/SKILL.md | 112 +++ .github/prompts/opsx-apply.prompt.md | 177 ---- .github/prompts/opsx-archive.prompt.md | 219 ----- .github/prompts/opsx-explore.prompt.md | 177 ---- .github/prompts/opsx-propose.prompt.md | 115 --- .github/prompts/opsx-sync.prompt.md | 215 ----- .github/prompts/opsx-update.prompt.md | 82 -- .github/skills/openspec-apply-change/SKILL.md | 185 ---- .../skills/openspec-archive-change/SKILL.md | 180 ---- .github/skills/openspec-explore/SKILL.md | 296 ------- .github/skills/openspec-propose/SKILL.md | 123 --- .github/skills/openspec-sync-specs/SKILL.md | 223 ----- .../skills/openspec-update-change/SKILL.md | 90 -- .github/skills/speckit-analyze/SKILL.md | 259 ++++++ .github/skills/speckit-checklist/SKILL.md | 383 +++++++++ .github/skills/speckit-clarify/SKILL.md | 291 +++++++ .github/skills/speckit-constitution/SKILL.md | 179 ++++ .github/skills/speckit-converge/SKILL.md | 277 ++++++ .github/skills/speckit-implement/SKILL.md | 226 +++++ .github/skills/speckit-plan/SKILL.md | 166 ++++ .github/skills/speckit-specify/SKILL.md | 345 ++++++++ .github/skills/speckit-tasks/SKILL.md | 215 +++++ .github/skills/speckit-taskstoissues/SKILL.md | 109 +++ .specify/.gitignore | 9 + .specify/init-options.json | 9 + .specify/integration.json | 15 + .specify/integrations/claude.manifest.json | 17 + .specify/integrations/copilot.manifest.json | 17 + .specify/integrations/speckit.manifest.json | 19 + .specify/memory/.constitution-template.json | 4 + .specify/memory/constitution.md | 119 +++ .../powershell/check-prerequisites.ps1 | 185 ++++ .specify/scripts/powershell/common.ps1 | 796 ++++++++++++++++++ .../scripts/powershell/create-new-feature.ps1 | 328 ++++++++ .../scripts/powershell/resolve-template.ps1 | 38 + .specify/scripts/powershell/setup-plan.ps1 | 88 ++ .specify/scripts/powershell/setup-tasks.ps1 | 93 ++ .specify/templates/checklist-template.md | 45 + .specify/templates/constitution-template.md | 50 ++ .specify/templates/plan-template.md | 113 +++ .specify/templates/spec-template.md | 131 +++ .specify/templates/tasks-template.md | 252 ++++++ .specify/workflows/speckit/workflow.yml | 74 ++ .specify/workflows/workflow-registry.json | 13 + AGENTS.md | 47 +- CHANGELOG.md | 2 + 67 files changed, 7385 insertions(+), 4196 deletions(-) delete mode 100644 .claude/commands/opsx/apply.md delete mode 100644 .claude/commands/opsx/archive.md delete mode 100644 .claude/commands/opsx/explore.md delete mode 100644 .claude/commands/opsx/propose.md delete mode 100644 .claude/commands/opsx/sync.md delete mode 100644 .claude/commands/opsx/update.md delete mode 100644 .claude/skills/openspec-apply-change/SKILL.md delete mode 100644 .claude/skills/openspec-archive-change/SKILL.md delete mode 100644 .claude/skills/openspec-explore/SKILL.md delete mode 100644 .claude/skills/openspec-propose/SKILL.md delete mode 100644 .claude/skills/openspec-sync-specs/SKILL.md delete mode 100644 .claude/skills/openspec-update-change/SKILL.md create mode 100644 .claude/skills/speckit-analyze/SKILL.md create mode 100644 .claude/skills/speckit-checklist/SKILL.md create mode 100644 .claude/skills/speckit-clarify/SKILL.md create mode 100644 .claude/skills/speckit-constitution/SKILL.md create mode 100644 .claude/skills/speckit-converge/SKILL.md create mode 100644 .claude/skills/speckit-implement/SKILL.md create mode 100644 .claude/skills/speckit-plan/SKILL.md create mode 100644 .claude/skills/speckit-specify/SKILL.md create mode 100644 .claude/skills/speckit-tasks/SKILL.md create mode 100644 .claude/skills/speckit-taskstoissues/SKILL.md delete mode 100644 .github/prompts/opsx-apply.prompt.md delete mode 100644 .github/prompts/opsx-archive.prompt.md delete mode 100644 .github/prompts/opsx-explore.prompt.md delete mode 100644 .github/prompts/opsx-propose.prompt.md delete mode 100644 .github/prompts/opsx-sync.prompt.md delete mode 100644 .github/prompts/opsx-update.prompt.md delete mode 100644 .github/skills/openspec-apply-change/SKILL.md delete mode 100644 .github/skills/openspec-archive-change/SKILL.md delete mode 100644 .github/skills/openspec-explore/SKILL.md delete mode 100644 .github/skills/openspec-propose/SKILL.md delete mode 100644 .github/skills/openspec-sync-specs/SKILL.md delete mode 100644 .github/skills/openspec-update-change/SKILL.md create mode 100644 .github/skills/speckit-analyze/SKILL.md create mode 100644 .github/skills/speckit-checklist/SKILL.md create mode 100644 .github/skills/speckit-clarify/SKILL.md create mode 100644 .github/skills/speckit-constitution/SKILL.md create mode 100644 .github/skills/speckit-converge/SKILL.md create mode 100644 .github/skills/speckit-implement/SKILL.md create mode 100644 .github/skills/speckit-plan/SKILL.md create mode 100644 .github/skills/speckit-specify/SKILL.md create mode 100644 .github/skills/speckit-tasks/SKILL.md create mode 100644 .github/skills/speckit-taskstoissues/SKILL.md create mode 100644 .specify/.gitignore create mode 100644 .specify/init-options.json create mode 100644 .specify/integration.json create mode 100644 .specify/integrations/claude.manifest.json create mode 100644 .specify/integrations/copilot.manifest.json create mode 100644 .specify/integrations/speckit.manifest.json create mode 100644 .specify/memory/.constitution-template.json create mode 100644 .specify/memory/constitution.md create mode 100644 .specify/scripts/powershell/check-prerequisites.ps1 create mode 100644 .specify/scripts/powershell/common.ps1 create mode 100644 .specify/scripts/powershell/create-new-feature.ps1 create mode 100644 .specify/scripts/powershell/resolve-template.ps1 create mode 100644 .specify/scripts/powershell/setup-plan.ps1 create mode 100644 .specify/scripts/powershell/setup-tasks.ps1 create mode 100644 .specify/templates/checklist-template.md create mode 100644 .specify/templates/constitution-template.md create mode 100644 .specify/templates/plan-template.md create mode 100644 .specify/templates/spec-template.md create mode 100644 .specify/templates/tasks-template.md create mode 100644 .specify/workflows/speckit/workflow.yml create mode 100644 .specify/workflows/workflow-registry.json diff --git a/.claude/commands/opsx/apply.md b/.claude/commands/opsx/apply.md deleted file mode 100644 index 85630e8..0000000 --- a/.claude/commands/opsx/apply.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -name: "OPSX: Apply" -description: "Implement tasks from an OpenSpec change (Experimental)" -allowed-tools: Bash(openspec:*) -category: "Workflow" -tags: ["workflow", "artifacts", "experimental"] ---- - -Implement tasks from an OpenSpec change. - -**Store selection:** If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run `openspec store list --json` to discover registered store ids, then pass `--store ` on the commands that read or write specs and changes (`new change`, `status`, `instructions`, `list`, `show`, `validate`, `archive`, `doctor`, `context`, `view`). Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local `openspec/` root. - -**Input**: Optionally specify a change name (e.g., `/opsx:apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes. - -**Steps** - -1. **Select the change** - - If a name is provided, use it. Otherwise: - - Infer from conversation context if the user mentioned a change - - Auto-select if only one active change exists - - If ambiguous, run `openspec list --json` to get available changes and ask the user to select one - - Always announce: "Using change: " and how to override (e.g., `/opsx:apply `). - -2. **Check status to understand the schema** - ```bash - openspec status --change "" --json - ``` - Parse the JSON to understand: - - `schemaName`: The workflow being used (e.g., "spec-driven") - - `planningHome`, `changeRoot`, and `actionContext`: planning scope and edit constraints - - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others) - -3. **Get apply instructions** - - ```bash - openspec instructions apply --change "" --json - ``` - - This returns: - - `contextFiles`: artifact ID -> array of concrete file paths (varies by schema) - - Progress (total, complete, remaining) - - Task list with status - - Dynamic instruction based on current state - - Optional `context`: current required project instruction input from the selected root - - Optional `operationGuidance`: current advisory guidance for apply - - **Handle states:** - - If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:continue` (if it is not installed, run `openspec status --change "" --json` to see the next artifact and `openspec instructions --change "" --json` for how to create it) - - If `state: "all_done"`: congratulate, suggest archive - - Otherwise: proceed to implementation - - Treat `context` as a required prompt-level input. Read and consider it, and - apply relevant project facts, conventions, and constraints while implementing. - Treat `operationGuidance` as optional additive advice. Read and consider every - entry, and follow entries that are applicable and compatible with the built-in - workflow. - - Keep both fields separate from CLI-returned state, missing artifacts, tasks, - progress, `contextFiles`, and the built-in `instruction`. They are not - evidence of task completion, do not replace the built-in instruction, and do - not permit bypassing a blocked state. If context conflicts with the built-in - instruction, an explicit user choice, or a CLI-controlled value, report the - conflict and preserve the controlling value. If guidance is inapplicable or - conflicts with those controlling inputs, do not follow it and explain why. - These are prompt-level behavior contracts, not enforceable checks. - -4. **Read context files** - - Read every file path listed under `contextFiles` from the apply instructions output. - The files depend on the schema being used: - - **spec-driven**: proposal, specs, design, tasks - - Other schemas: follow the contextFiles from CLI output - - Do not copy `context` or `operationGuidance` verbatim into implementation - files or planning artifacts unless the user separately asks for that content. - -5. **Show current progress** - - Display: - - Schema being used - - Progress: "N/M tasks complete" - - Remaining tasks overview - - Dynamic instruction from CLI - -6. **Implement tasks (loop until done or blocked)** - - For each pending task: - - Show which task is being worked on - - Make the code changes required - - Keep changes minimal and focused - - Mark task complete in the tasks file: `- [ ]` → `- [x]` - - Continue to next task - - **Pause if:** - - Task is unclear → ask for clarification - - Implementation reveals a design issue → suggest updating artifacts - - Error or blocker encountered → report and wait for guidance - - User interrupts - -7. **On completion or pause, show status** - - Display: - - Tasks completed this session - - Overall progress: "N/M tasks complete" - - If all done: suggest archive - - If paused: explain why and wait for guidance - -**Output During Implementation** - -``` -## Implementing: (schema: ) - -Working on task 3/7: -[...implementation happening...] -✓ Task complete - -Working on task 4/7: -[...implementation happening...] -✓ Task complete -``` - -**Output On Completion** - -``` -## Implementation Complete - -**Change:** -**Schema:** -**Progress:** 7/7 tasks complete ✓ - -### Completed This Session -- [x] Task 1 -- [x] Task 2 -... - -All tasks complete! You can archive this change with `/opsx:archive`. -``` - -**Output On Pause (Issue Encountered)** - -``` -## Implementation Paused - -**Change:** -**Schema:** -**Progress:** 4/7 tasks complete - -### Issue Encountered - - -**Options:** -1.