Conversation
Signed-off-by: Lee Briggs <lee@leebriggs.co.uk>
Signed-off-by: Lee Briggs <lee@leebriggs.co.uk>
There was a problem hiding this comment.
Pull request overview
Adds OpenSpec (spec-driven) configuration plus a set of OPSX skills and prompts so contributors/agents can create, apply, verify, sync, and archive OpenSpec “changes” in this repository.
Changes:
- Add
openspec/config.yamlto define project context and artifact-writing rules for a spec-driven workflow. - Add OpenSpec skill definitions under
.github/skills/and.codex/skills/for the OPSX workflow actions (new/continue/ff/explore/apply/verify/sync/archive/bulk-archive). - Add matching OPSX prompt files under
.github/prompts/for the same workflow actions.
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| openspec/config.yaml | Defines OpenSpec schema + project context/rules for this repo |
| .github/skills/openspec-verify-change/SKILL.md | Skill: verify implementation vs artifacts before archiving |
| .github/skills/openspec-sync-specs/SKILL.md | Skill: sync delta specs into main specs |
| .github/skills/openspec-onboard/SKILL.md | Skill: guided onboarding walkthrough for the workflow |
| .github/skills/openspec-new-change/SKILL.md | Skill: create a new change scaffold and show first instructions |
| .github/skills/openspec-ff-change/SKILL.md | Skill: fast-forward artifact creation to “apply-ready” |
| .github/skills/openspec-explore/SKILL.md | Skill: explore/thinking mode with guardrails |
| .github/skills/openspec-continue-change/SKILL.md | Skill: create the next artifact for an existing change |
| .github/skills/openspec-bulk-archive-change/SKILL.md | Skill: archive multiple changes with delta-spec conflict handling |
| .github/skills/openspec-archive-change/SKILL.md | Skill: archive a completed change with optional sync |
| .github/skills/openspec-apply-change/SKILL.md | Skill: implement tasks from a change and update task checkboxes |
| .github/prompts/opsx-verify.prompt.md | Prompt: /opsx:verify verification flow |
| .github/prompts/opsx-sync.prompt.md | Prompt: /opsx:sync spec-sync flow |
| .github/prompts/opsx-onboard.prompt.md | Prompt: /opsx:onboard guided onboarding flow |
| .github/prompts/opsx-new.prompt.md | Prompt: /opsx:new new-change flow |
| .github/prompts/opsx-ff.prompt.md | Prompt: /opsx:ff fast-forward flow |
| .github/prompts/opsx-explore.prompt.md | Prompt: /opsx:explore explore-mode stance/guardrails |
| .github/prompts/opsx-continue.prompt.md | Prompt: /opsx:continue next-artifact flow |
| .github/prompts/opsx-bulk-archive.prompt.md | Prompt: /opsx:bulk-archive multi-change archive flow |
| .github/prompts/opsx-archive.prompt.md | Prompt: /opsx:archive single-change archive flow |
| .github/prompts/opsx-apply.prompt.md | Prompt: /opsx:apply implementation-from-tasks flow |
| .codex/skills/openspec-verify-change/SKILL.md | Codex mirror of verify-change skill |
| .codex/skills/openspec-sync-specs/SKILL.md | Codex mirror of sync-specs skill |
| .codex/skills/openspec-onboard/SKILL.md | Codex mirror of onboard skill |
| .codex/skills/openspec-new-change/SKILL.md | Codex mirror of new-change skill |
| .codex/skills/openspec-ff-change/SKILL.md | Codex mirror of ff-change skill |
| .codex/skills/openspec-explore/SKILL.md | Codex mirror of explore skill |
| .codex/skills/openspec-continue-change/SKILL.md | Codex mirror of continue-change skill |
| .codex/skills/openspec-bulk-archive-change/SKILL.md | Codex mirror of bulk-archive skill |
| .codex/skills/openspec-archive-change/SKILL.md | Codex mirror of archive-change skill |
| .codex/skills/openspec-apply-change/SKILL.md | Codex mirror of apply-change skill |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 1. **TODO/FIXME comments** - Search for `TODO`, `FIXME`, `HACK`, `XXX` in code files | ||
| 2. **Missing error handling** - `catch` blocks that swallow errors, risky operations without try-catch | ||
| 3. **Functions without tests** - Cross-reference `src/` with test directories | ||
| 4. **Type issues** - `any` types in TypeScript files (`: any`, `as any`) | ||
| 5. **Debug artifacts** - `console.log`, `console.debug`, `debugger` statements in non-debug code | ||
| 6. **Missing validation** - User input handlers without validation |
There was a problem hiding this comment.
This “Codebase Analysis” checklist is TypeScript/JS-specific (catch, src/, TypeScript any, etc.), but this repository is Go-based. Update these suggestions to Go-relevant signals (e.g., unchecked err, *_test.go, go test ./..., cmd/, pkg/).
| 1. **TODO/FIXME comments** - Search for `TODO`, `FIXME`, `HACK`, `XXX` in code files | |
| 2. **Missing error handling** - `catch` blocks that swallow errors, risky operations without try-catch | |
| 3. **Functions without tests** - Cross-reference `src/` with test directories | |
| 4. **Type issues** - `any` types in TypeScript files (`: any`, `as any`) | |
| 5. **Debug artifacts** - `console.log`, `console.debug`, `debugger` statements in non-debug code | |
| 6. **Missing validation** - User input handlers without validation | |
| 1. **TODO/FIXME comments** - Search for `TODO`, `FIXME`, `HACK`, `XXX` in Go source files | |
| 2. **Missing error handling** - Functions that return `error` where the error result is ignored or only logged with a `// TODO` instead of being handled | |
| 3. **Functions without tests** - Cross-reference `cmd/`, `pkg/`, and `internal/` packages with corresponding `*_test.go` files; look for key functions that lack tests | |
| 4. **Type and API issues** - Overuse of `interface{}` where concrete types would be clearer, or public APIs without clear input/output contracts or comments | |
| 5. **Debug artifacts** - Temporary `fmt.Println`, `log.Printf`, or stray `panic`/`log.Fatal` calls left in non-debug or library code | |
| 6. **Missing validation** - HTTP handlers, CLI flag/env var parsing, or other user input paths that don't validate or sanitize incoming data |
| Use clear markdown with: | ||
| - Table for summary scorecard | ||
| - Grouped lists for issues (CRITICAL/WARNING/SUGGESTION) | ||
| - Code references in format: `file.ts:123` |
There was a problem hiding this comment.
The “Output Format” guidance hard-codes TypeScript file references (file.ts:123). Since this repo is Go, make the reference format language-agnostic (e.g., path/to/file.go:123 or path/to/file.ext:123) so reports are consistent with actual files.
| - Code references in format: `file.ts:123` | |
| - Code references in format: `path/to/file.ext:123` |
| Use clear markdown with: | ||
| - Table for summary scorecard | ||
| - Grouped lists for issues (CRITICAL/WARNING/SUGGESTION) | ||
| - Code references in format: `file.ts:123` |
There was a problem hiding this comment.
The output format guidance hard-codes file.ts:123, which is TypeScript-specific. Consider making this language-agnostic (e.g., path/to/file.go:123 or path/to/file.ext:123) to match this Go repository.
| - Code references in format: `file.ts:123` | |
| - Code references in format: `path/to/file.ext:123` |
| Use clear markdown with: | ||
| - Table for summary scorecard | ||
| - Grouped lists for issues (CRITICAL/WARNING/SUGGESTION) | ||
| - Code references in format: `file.ts:123` |
There was a problem hiding this comment.
The “Output Format” guidance hard-codes TypeScript file references (file.ts:123). Since this repo is Go, make the reference format language-agnostic (e.g., path/to/file.go:123 or path/to/file.ext:123).
| - Code references in format: `file.ts:123` | |
| - Code references in format: `path/to/file.ext:123` (use the appropriate extension, e.g., .go) |
| 1. **TODO/FIXME comments** - Search for `TODO`, `FIXME`, `HACK`, `XXX` in code files | ||
| 2. **Missing error handling** - `catch` blocks that swallow errors, risky operations without try-catch | ||
| 3. **Functions without tests** - Cross-reference `src/` with test directories | ||
| 4. **Type issues** - `any` types in TypeScript files (`: any`, `as any`) | ||
| 5. **Debug artifacts** - `console.log`, `console.debug`, `debugger` statements in non-debug code | ||
| 6. **Missing validation** - User input handlers without validation |
There was a problem hiding this comment.
This “Codebase Analysis” checklist is TypeScript/JS-specific (catch, src/, TypeScript any, etc.), but this repository is Go-based. Update these suggestions to Go-relevant signals (e.g., unchecked err, *_test.go, go test ./..., cmd/, pkg/).
| 1. **TODO/FIXME comments** - Search for `TODO`, `FIXME`, `HACK`, `XXX` in code files | |
| 2. **Missing error handling** - `catch` blocks that swallow errors, risky operations without try-catch | |
| 3. **Functions without tests** - Cross-reference `src/` with test directories | |
| 4. **Type issues** - `any` types in TypeScript files (`: any`, `as any`) | |
| 5. **Debug artifacts** - `console.log`, `console.debug`, `debugger` statements in non-debug code | |
| 6. **Missing validation** - User input handlers without validation | |
| 1. **TODO/FIXME comments** - Search for `TODO`, `FIXME`, `HACK`, `XXX` in Go source files | |
| 2. **Missing error handling** - places where `err` is ignored, return values are discarded, or `context.Context` isn't propagated | |
| 3. **Functions without tests** - exported functions in `pkg/`, `internal/`, or `cmd/` without corresponding `*_test.go` coverage (run `go test ./...`) | |
| 4. **Type and interface issues** - overuse of `interface{}` / reflection where concrete types or smaller interfaces would be clearer | |
| 5. **Debug artifacts** - leftover `fmt.Println`, `log.Printf`, or temporary HTTP debug endpoints in non-debug code paths | |
| 6. **Missing validation** - `http.Handler` logic, CLI flag/env parsing, or other input paths that don't validate or return clear errors |
| ``` | ||
| Created: `openspec/changes/<name>/` | ||
|
|
||
| The folder structure: | ||
| ``` |
There was a problem hiding this comment.
Nested triple-backtick code fences here (after “SHOW:” and another at “The folder structure:”) break Markdown rendering. Use indentation for the inner tree or a longer outer fence (e.g., ````) to keep the inner ``` blocks valid.
| Checking add-oauth: | ||
| - Delta adds "OAuth Provider Integration" requirement | ||
| - Searching codebase... found src/auth/oauth.ts implementing OAuth flow |
There was a problem hiding this comment.
These examples reference TypeScript paths/extensions (e.g., src/auth/oauth.ts). Since this repo is Go, update the examples to Go-appropriate paths/extensions (or make them language-agnostic).
| Checking add-oauth: | ||
| - Delta adds "OAuth Provider Integration" requirement | ||
| - Searching codebase... found src/auth/oauth.ts implementing OAuth flow |
There was a problem hiding this comment.
These conflict-resolution examples reference TypeScript file paths/extensions (src/auth/oauth.ts, etc.). Since this repo is Go, update the examples to Go-appropriate paths/extensions (or make them language-agnostic).
| - Include flag/env/config precedence behavior when relevant. | ||
| - Specify expected output and error behavior for each capability. | ||
| - Define any new configuration keys and their validation rules. | ||
| - all new features should include unit and integrations tests |
There was a problem hiding this comment.
Typo/wording: this rule says “integrations tests”; it should be “integration tests” (and ideally capitalized consistently with the other bullets).
| ``` | ||
| Created: `openspec/changes/<name>/` | ||
|
|
||
| The folder structure: | ||
| ``` |
There was a problem hiding this comment.
This section contains nested triple-backtick code fences (a block begins at “SHOW:” and another begins at “The folder structure:”), which breaks Markdown rendering and can confuse tools that parse code fences. Use indentation for the inner tree or a longer outer fence (e.g., ````).
No description provided.