opencodekit 0.21.3 → 0.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/template/.opencode/.template-manifest.json +8 -8
- package/dist/template/.opencode/.version +1 -1
- package/dist/template/.opencode/AGENTS.md +55 -36
- package/dist/template/.opencode/agent/build.md +13 -3
- package/dist/template/.opencode/agent/explore.md +14 -0
- package/dist/template/.opencode/agent/general.md +13 -2
- package/dist/template/.opencode/agent/painter.md +9 -0
- package/dist/template/.opencode/agent/plan.md +26 -4
- package/dist/template/.opencode/agent/review.md +10 -0
- package/dist/template/.opencode/agent/scout.md +16 -1
- package/dist/template/.opencode/agent/vision.md +23 -0
- package/dist/template/.opencode/command/design.md +27 -8
- package/dist/template/.opencode/command/plan.md +22 -0
- package/dist/template/.opencode/command/ship.md +31 -5
- package/dist/template/.opencode/command/status.md +14 -5
- package/dist/template/.opencode/command/ui-review.md +38 -18
- package/dist/template/.opencode/command/ui-slop-check.md +30 -7
- package/dist/template/.opencode/command/verify.md +3 -0
- package/dist/template/.opencode/memory.db +0 -0
- package/dist/template/.opencode/memory.db-shm +0 -0
- package/dist/template/.opencode/memory.db-wal +0 -0
- package/dist/template/.opencode/opencode.json +164 -329
- package/dist/template/.opencode/plugin/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +162 -168
- package/dist/template/.opencode/plugin/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +16 -16
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-chat-language-model.ts +807 -805
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-prepare-tools.ts +77 -77
- package/dist/template/.opencode/plugin/sdk/copilot/copilot-provider.ts +75 -80
- package/dist/template/.opencode/skill/playwright/SKILL.md +51 -2
- package/dist/template/.opencode/skill/portless/SKILL.md +109 -0
- package/dist/template/.opencode/skill/terse-output-mode/SKILL.md +95 -0
- package/dist/template/.opencode/skill/think-in-code/SKILL.md +136 -0
- package/dist/template/.opencode/skill/ux-quality-gates/SKILL.md +137 -0
- package/package.json +1 -1
|
@@ -20,6 +20,8 @@ skill({ name: "memory-grounding" });
|
|
|
20
20
|
skill({ name: "workspace-setup" });
|
|
21
21
|
skill({ name: "verification-before-completion" });
|
|
22
22
|
skill({ name: "reflection-checkpoints" }); // Mid-point + completion checks during execution
|
|
23
|
+
// For user-facing UI changes: skill({ name: "ux-quality-gates" });
|
|
24
|
+
// If local web/browser verification needs stable URLs: skill({ name: "portless" });
|
|
23
25
|
```
|
|
24
26
|
|
|
25
27
|
## Determine Input Type
|
|
@@ -226,8 +228,37 @@ Follow the [Verification Protocol](../skill/verification-before-completion/refer
|
|
|
226
228
|
- All 4 gates must pass before proceeding to commit/push
|
|
227
229
|
- Also run PRD `Verify:` commands
|
|
228
230
|
|
|
231
|
+
If the PRD requires local web, browser, OAuth callback, webhook, or multi-service verification, load the [portless](../skill/portless/SKILL.md) skill and use approved stable URLs as verification evidence. Portless is optional: read-only `portless list` / `portless get <service>` checks are allowed when installed, but do not install Portless, start proxies, trust CAs, mutate hosts files, clean Portless state, or expose LAN services without explicit user approval.
|
|
232
|
+
|
|
229
233
|
## Phase 5: Review
|
|
230
234
|
|
|
235
|
+
```bash
|
|
236
|
+
BASE_SHA=$(git rev-parse origin/main 2>/dev/null || git rev-parse HEAD~1)
|
|
237
|
+
HEAD_SHA=$(git rev-parse HEAD)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### UI Quality Gate (if UI files changed)
|
|
241
|
+
|
|
242
|
+
Before general review, detect changed UI files:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
git diff --name-only $BASE_SHA...HEAD -- \
|
|
246
|
+
'*.tsx' '*.jsx' '*.css' '*.scss' '*.sass' '*.less' '*.html' '*.mdx'
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
If any UI files changed:
|
|
250
|
+
|
|
251
|
+
1. Load `skill({ name: "ux-quality-gates" })`.
|
|
252
|
+
2. Run `/ui-slop-check auto --since=$BASE_SHA` or manually apply its checklist when slash-command invocation is unavailable.
|
|
253
|
+
3. Verify UX gates for changed surfaces:
|
|
254
|
+
- One primary action per view/section
|
|
255
|
+
- Empty/loading/error/success states for async/data flows
|
|
256
|
+
- Retry/undo/confirm paths for errors and destructive actions
|
|
257
|
+
- Form labels, helper text, validation, and error association
|
|
258
|
+
- Semantic HTML, keyboard path, visible focus, reduced motion
|
|
259
|
+
- Component family consistency for related controls
|
|
260
|
+
4. Treat Critical findings like review Critical findings: fix inline, rerun verification, then continue.
|
|
261
|
+
|
|
231
262
|
Load and run the review skill:
|
|
232
263
|
|
|
233
264
|
```typescript
|
|
@@ -236,11 +267,6 @@ skill({ name: "requesting-code-review" });
|
|
|
236
267
|
|
|
237
268
|
Run **5 parallel agents**: security/correctness, performance/architecture, type-safety/tests, conventions/patterns, simplicity/completeness.
|
|
238
269
|
|
|
239
|
-
```bash
|
|
240
|
-
BASE_SHA=$(git rev-parse origin/main 2>/dev/null || git rev-parse HEAD~1)
|
|
241
|
-
HEAD_SHA=$(git rev-parse HEAD)
|
|
242
|
-
```
|
|
243
|
-
|
|
244
270
|
Fill placeholders:
|
|
245
271
|
|
|
246
272
|
- `{WHAT_WAS_IMPLEMENTED}`: bead title + brief summary of what changed
|
|
@@ -40,11 +40,12 @@ skill({ name: "beads" });
|
|
|
40
40
|
|
|
41
41
|
## Available Tools
|
|
42
42
|
|
|
43
|
-
| Tool | Use When
|
|
44
|
-
| --------------- |
|
|
45
|
-
| `br` | Task status and stats
|
|
46
|
-
| `git` | Git state and history
|
|
47
|
-
| `find_sessions` | Recent sessions
|
|
43
|
+
| Tool | Use When |
|
|
44
|
+
| --------------- | ----------------------------------------------- |
|
|
45
|
+
| `br` | Task status and stats |
|
|
46
|
+
| `git` | Git state and history |
|
|
47
|
+
| `find_sessions` | Recent sessions |
|
|
48
|
+
| `portless` | Optional read-only local URL state if installed |
|
|
48
49
|
|
|
49
50
|
## Phase 1: Gather State (Parallel)
|
|
50
51
|
|
|
@@ -62,6 +63,14 @@ git branch --show-current
|
|
|
62
63
|
git log --oneline -5
|
|
63
64
|
```
|
|
64
65
|
|
|
66
|
+
Optionally include Portless local URL state only if the binary is already installed:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
if command -v portless >/dev/null 2>&1; then portless list; fi
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Do not install Portless, start/stop proxies, trust CAs, sync hosts, prune/clean state, or expose LAN services from `/status`.
|
|
73
|
+
|
|
65
74
|
```typescript
|
|
66
75
|
find_sessions({ query: "<project-name or recent-bead-keywords>", limit: 5 });
|
|
67
76
|
```
|
|
@@ -13,6 +13,7 @@ model: proxypal/gemini-3-pro-preview
|
|
|
13
13
|
skill({ name: "visual-analysis" }); // Analysis framework
|
|
14
14
|
skill({ name: "accessibility-audit" }); // WCAG checklists
|
|
15
15
|
skill({ name: "frontend-design" }); // Anti-patterns, design quality
|
|
16
|
+
skill({ name: "ux-quality-gates" }); // IA, heuristics, forms, recovery, state coverage
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
## Input
|
|
@@ -33,31 +34,50 @@ Use the `visual-analysis` skill to perform deep analysis:
|
|
|
33
34
|
- Visual properties (colors, typography, spacing, layout)
|
|
34
35
|
- Design patterns and potential issues
|
|
35
36
|
|
|
36
|
-
### 2.
|
|
37
|
+
### 2. Usability Heuristic Pass
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
Apply `ux-quality-gates` before visual scoring. Check:
|
|
40
|
+
|
|
41
|
+
- System status is visible for async or multi-step work
|
|
42
|
+
- Labels and navigation use user vocabulary, not implementation terms
|
|
43
|
+
- Users can cancel, undo, go back, retry, or recover from failure
|
|
44
|
+
- Controls, names, and layouts are consistent across the surface
|
|
45
|
+
- Dangerous or invalid actions are prevented before they happen
|
|
46
|
+
- Options and relationships are visible without relying on memory
|
|
47
|
+
- High-volume workflows expose efficient paths where appropriate
|
|
48
|
+
- Empty/loading/error/success states are present and useful
|
|
49
|
+
|
|
50
|
+
Any failure that blocks task completion or recovery is **Critical**, even if the screen looks polished.
|
|
39
51
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
| **Color** | Palette cohesion, contrast, semantic usage, no AI slop |
|
|
44
|
-
| **Layout & Spacing** | Visual hierarchy, consistency, alignment, white space |
|
|
45
|
-
| **Interactive States** | Hover, focus, active, disabled, loading coverage |
|
|
46
|
-
| **Accessibility** | WCAG AA compliance (use `accessibility-audit` skill checklist) |
|
|
47
|
-
| **Visual Polish** | Consistency, attention to detail, motion, shadows, icons |
|
|
52
|
+
### 3. Score Categories
|
|
53
|
+
|
|
54
|
+
Rate each 1-10 with brief justification:
|
|
48
55
|
|
|
49
|
-
|
|
56
|
+
| Category | What to Evaluate |
|
|
57
|
+
| --------------------------------- | -------------------------------------------------------------- |
|
|
58
|
+
| **Information Architecture** | User vocabulary, scope clarity, relationships, navigation |
|
|
59
|
+
| **Task Flow & Recovery** | Primary action, cancellation, undo/retry, error recovery |
|
|
60
|
+
| **Forms & Data Interaction** | Labels, helper text, validation, selection, bulk actions |
|
|
61
|
+
| **Typography** | Hierarchy, readability, weight contrast, intentional choices |
|
|
62
|
+
| **Color** | Palette cohesion, contrast, semantic usage, no AI slop |
|
|
63
|
+
| **Layout & Spacing** | Visual hierarchy, consistency, alignment, white space |
|
|
64
|
+
| **Interactive States** | Hover, focus, active, disabled, loading/error/success coverage |
|
|
65
|
+
| **Accessibility & Semantic HTML** | WCAG AA compliance, native semantics, keyboard/focus behavior |
|
|
66
|
+
| **Component Consistency** | Shared token DNA: radius, height, border, shadow, states |
|
|
67
|
+
| **Visual Polish** | Consistency, attention to detail, motion, shadows, icons |
|
|
68
|
+
|
|
69
|
+
### 4. Conditional Reviews
|
|
50
70
|
|
|
51
71
|
**If `--responsive`**: Check at 375px, 768px, 1280px, 1536px+. Flag touch targets, horizontal scroll, text sizing.
|
|
52
72
|
|
|
53
73
|
**If `--dark-mode`**: Check contrast on dark backgrounds, adapted colors (not just inverted), shadow adjustments, focus visibility.
|
|
54
74
|
|
|
55
|
-
###
|
|
75
|
+
### 5. Report Findings
|
|
56
76
|
|
|
57
77
|
Group by severity:
|
|
58
78
|
|
|
59
|
-
- **Critical (Must Fix)**: Accessibility failures, broken interactions
|
|
60
|
-
- **Warning (Should Fix)**: AI slop patterns, inconsistent spacing, missing states
|
|
79
|
+
- **Critical (Must Fix)**: Accessibility failures, broken interactions, dead-end errors, unsafe destructive actions
|
|
80
|
+
- **Warning (Should Fix)**: AI slop patterns, inconsistent spacing, missing states, confusing IA/naming
|
|
61
81
|
- **Info (Nice to Have)**: Polish opportunities
|
|
62
82
|
|
|
63
83
|
For each finding: location, impact, and recommended fix.
|
|
@@ -85,7 +105,7 @@ observation({
|
|
|
85
105
|
|
|
86
106
|
## Related Commands
|
|
87
107
|
|
|
88
|
-
| Need
|
|
89
|
-
|
|
|
90
|
-
| Design from scratch
|
|
91
|
-
| Ship implementation
|
|
108
|
+
| Need | Command |
|
|
109
|
+
| ------------------- | --------- |
|
|
110
|
+
| Design from scratch | `/design` |
|
|
111
|
+
| Ship implementation | `/ship` |
|
|
@@ -15,16 +15,17 @@ Run a focused anti-slop audit against changed UI files using the frontend-design
|
|
|
15
15
|
skill({ name: "frontend-design" }); // Anti-pattern taxonomy + design references
|
|
16
16
|
skill({ name: "visual-analysis" }); // Structured visual/code analysis workflow
|
|
17
17
|
skill({ name: "accessibility-audit" }); // Keyboard/focus/contrast checks
|
|
18
|
+
skill({ name: "ux-quality-gates" }); // UX correctness gates beyond visual slop
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
## Parse Arguments
|
|
21
22
|
|
|
22
|
-
| Argument | Default | Description
|
|
23
|
-
| --------------- | ------- |
|
|
24
|
-
| `[path\|auto]` | `auto` | Specific file/dir to audit, or auto-detect changed UI files
|
|
25
|
-
| `--staged` | false | Audit staged changes only (`git diff --cached`)
|
|
26
|
-
| `--since=<ref>` | `HEAD` | Compare against ref (`main`, `HEAD~1`, commit SHA)
|
|
27
|
-
| `--full-report` | false | Include all categories even when no issues found
|
|
23
|
+
| Argument | Default | Description |
|
|
24
|
+
| --------------- | ------- | ----------------------------------------------------------- |
|
|
25
|
+
| `[path\|auto]` | `auto` | Specific file/dir to audit, or auto-detect changed UI files |
|
|
26
|
+
| `--staged` | false | Audit staged changes only (`git diff --cached`) |
|
|
27
|
+
| `--since=<ref>` | `HEAD` | Compare against ref (`main`, `HEAD~1`, commit SHA) |
|
|
28
|
+
| `--full-report` | false | Include all categories even when no issues found |
|
|
28
29
|
|
|
29
30
|
## Phase 1: Resolve Target Files
|
|
30
31
|
|
|
@@ -96,12 +97,34 @@ Evaluate each target file (or rendered screenshot if provided) against these che
|
|
|
96
97
|
- Error copy includes what happened + why + how to fix
|
|
97
98
|
- Empty states include guidance + next action
|
|
98
99
|
- Terminology is consistent (avoid mixed synonyms for same action)
|
|
100
|
+
- User-facing labels avoid implementation terms, database names, and internal acronyms
|
|
99
101
|
|
|
100
|
-
### F)
|
|
102
|
+
### F) UX Quality Gates
|
|
103
|
+
|
|
104
|
+
- One dominant filled primary action per view/section
|
|
105
|
+
- Destructive actions require explicit confirm or undo, with specific entity/count in copy
|
|
106
|
+
- No placeholder-as-label form fields
|
|
107
|
+
- Form errors are associated with controls (`aria-describedby`, `aria-invalid`, `role="alert"`)
|
|
108
|
+
- Submit/loading states prevent double-submit without layout shift
|
|
109
|
+
- Empty, loading, error, and success states exist where async/data flows exist
|
|
110
|
+
- Error toasts/banners persist long enough and include retry/undo/support where applicable
|
|
111
|
+
- Data-heavy UI distinguishes empty state from filtered no-results state
|
|
112
|
+
- Bulk actions show selected count and confirm destructive scope
|
|
113
|
+
|
|
114
|
+
### G) Accessibility Safety Nets
|
|
101
115
|
|
|
102
116
|
- Keyboard-visible focus treatment (`:focus-visible`)
|
|
103
117
|
- Contrast baseline expectations (WCAG AA)
|
|
104
118
|
- Touch targets reasonable (44x44 context where applicable)
|
|
119
|
+
- Native semantic elements are used before ARIA patches (`button`, `a`, `form`, landmarks)
|
|
120
|
+
- Heading structure has one logical `h1` per page/screen context
|
|
121
|
+
|
|
122
|
+
### H) Component Family Consistency
|
|
123
|
+
|
|
124
|
+
- Buttons and inputs in the same form share height, radius, border, and focus treatment
|
|
125
|
+
- Focus, error, disabled, and loading states use the same token logic across components
|
|
126
|
+
- No one-off radius/shadow/border width unless documented as a system-level exception
|
|
127
|
+
- Semantic color roles are consistent: success, warning, destructive, info, primary
|
|
105
128
|
|
|
106
129
|
## Phase 3: Severity and Scoring
|
|
107
130
|
|
|
@@ -13,6 +13,7 @@ Check implementation against PRD before shipping.
|
|
|
13
13
|
```typescript
|
|
14
14
|
skill({ name: "beads" });
|
|
15
15
|
skill({ name: "verification-before-completion" });
|
|
16
|
+
// If local web/browser verification needs stable URLs: skill({ name: "portless" });
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
## Parse Arguments
|
|
@@ -105,6 +106,8 @@ Follow the [Verification Protocol](../skill/verification-before-completion/refer
|
|
|
105
106
|
1. **Parallel**: typecheck + lint (simultaneously)
|
|
106
107
|
2. **Sequential** (after parallel passes): test, then build (ship only)
|
|
107
108
|
|
|
109
|
+
For browser/manual local-web requirements, load the [portless](../skill/portless/SKILL.md) skill when stable named URLs would improve verification. Use only read-only Portless commands unless the user explicitly approves local networking changes; a reachable Portless URL supplements, but never replaces, typecheck/lint/test/build evidence.
|
|
110
|
+
|
|
108
111
|
Report results with mode column:
|
|
109
112
|
|
|
110
113
|
```text
|
|
Binary file
|
|
Binary file
|
|
Binary file
|