From aa9fee54b4d425b405e5c64110e5cc2ff1105196 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Wed, 1 Jul 2026 09:15:20 -0400 Subject: [PATCH] chore: fix VersionInfoProvider bugs, drop stale RegFree.targets entry, thin opsx prompts Extracted from PR #964 (phase1-base), where these were bundled in unrelated to the Avalonia migration: - VersionInfoProvider: copyright year no longer freezes at whatever year the constant was last edited, ApplicationVersion resolves from the correct assembly instead of always falling back to the entry assembly, and MajorVersion/ParseInformationalVersion index defensively instead of assuming a fixed part count. Covered by new VersionInfoProviderTests.cs. - RegFree.targets: removes a dangling ManagedVwWindow.dll entry; the project was already retired in #904/#906, so the entry pointed at nothing. - opsx-*.prompt.md: replace inlined instructions with delegation to the existing .claude/skills/openspec-*/SKILL.md files, per this repo's skills-over-inline-prompts convention. Co-Authored-By: Claude Sonnet 5 --- .github/prompts/opsx-apply.prompt.md | 148 +---- .github/prompts/opsx-archive.prompt.md | 156 +---- .github/prompts/opsx-bulk-archive.prompt.md | 237 +------- .github/prompts/opsx-continue.prompt.md | 110 +--- .github/prompts/opsx-explore.prompt.md | 169 +----- .github/prompts/opsx-ff.prompt.md | 93 +-- .github/prompts/opsx-new.prompt.md | 65 +- .github/prompts/opsx-onboard.prompt.md | 553 +----------------- .github/prompts/opsx-propose.prompt.md | 95 +-- .github/prompts/opsx-sync.prompt.md | 130 +--- .github/prompts/opsx-verify.prompt.md | 161 +---- Build/RegFree.targets | 1 - .../FwUtilsTests/VersionInfoProviderTests.cs | 89 +++ Src/Common/FwUtils/VersionInfoProvider.cs | 62 +- 14 files changed, 165 insertions(+), 1904 deletions(-) create mode 100644 Src/Common/FwUtils/FwUtilsTests/VersionInfoProviderTests.cs diff --git a/.github/prompts/opsx-apply.prompt.md b/.github/prompts/opsx-apply.prompt.md index e23ec64d14..fedf7b8b88 100644 --- a/.github/prompts/opsx-apply.prompt.md +++ b/.github/prompts/opsx-apply.prompt.md @@ -1,149 +1,9 @@ --- description: Implement tasks from an OpenSpec change (Experimental) +agent: "agent" +argument-hint: "Optional change name" --- -Implement tasks from an OpenSpec change. +Use the `openspec-apply-change` skill from `.claude/skills/openspec-apply-change/SKILL.md`. -**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 use the **AskUserQuestion tool** to let the user select - - 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") - - 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 - - **Handle states:** - - If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:continue` - - If `state: "all_done"`: congratulate, suggest archive - - Otherwise: proceed to implementation - -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 - -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.