opencode-skills-collection 3.0.46 → 3.0.47

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.
Files changed (71) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +10 -1
  2. package/bundled-skills/2slides-ppt-generator/SKILL.md +1 -1
  3. package/bundled-skills/2slides-ppt-generator/scripts/create_pdf_slides.py +2 -1
  4. package/bundled-skills/2slides-ppt-generator/scripts/generate_narration.py +2 -1
  5. package/bundled-skills/2slides-ppt-generator/scripts/generate_slides.py +13 -7
  6. package/bundled-skills/android-dev/references/hybrid.md +7 -4
  7. package/bundled-skills/android-dev/references/react-native.md +5 -2
  8. package/bundled-skills/atlas-contract/SKILL.md +4 -4
  9. package/bundled-skills/atlas-ledger/SKILL.md +10 -7
  10. package/bundled-skills/bun-development/SKILL.md +1 -1
  11. package/bundled-skills/cloud-penetration-testing/SKILL.md +1 -1
  12. package/bundled-skills/codebase-to-wordpress-converter/SKILL.md +1 -0
  13. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  14. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  15. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  16. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  17. package/bundled-skills/docs/users/bundles.md +1 -1
  18. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  19. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  20. package/bundled-skills/docs/users/getting-started.md +1 -1
  21. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  22. package/bundled-skills/docs/users/usage.md +4 -4
  23. package/bundled-skills/docs/users/visual-guide.md +4 -4
  24. package/bundled-skills/dos-verify-done-claims/SKILL.md +173 -0
  25. package/bundled-skills/ecl-harness-engineer/LICENSE +21 -0
  26. package/bundled-skills/ecl-harness-engineer/SKILL.md +714 -0
  27. package/bundled-skills/ecl-harness-engineer/agents/analyzer.md +119 -0
  28. package/bundled-skills/ecl-harness-engineer/agents/auditor.md +212 -0
  29. package/bundled-skills/ecl-harness-engineer/agents/creator-config.md +343 -0
  30. package/bundled-skills/ecl-harness-engineer/agents/creator-docs.md +201 -0
  31. package/bundled-skills/ecl-harness-engineer/agents/creator-linters.md +123 -0
  32. package/bundled-skills/ecl-harness-engineer/references/adapters/adapter-schema.md +204 -0
  33. package/bundled-skills/ecl-harness-engineer/references/adapters/generic.md +156 -0
  34. package/bundled-skills/ecl-harness-engineer/references/adapters/go.md +212 -0
  35. package/bundled-skills/ecl-harness-engineer/references/adapters/java.md +205 -0
  36. package/bundled-skills/ecl-harness-engineer/references/adapters/python.md +225 -0
  37. package/bundled-skills/ecl-harness-engineer/references/adapters/rust.md +220 -0
  38. package/bundled-skills/ecl-harness-engineer/references/adapters/typescript.md +245 -0
  39. package/bundled-skills/ecl-harness-engineer/references/architecture-diagrams.md +420 -0
  40. package/bundled-skills/ecl-harness-engineer/references/audit-templates.md +649 -0
  41. package/bundled-skills/ecl-harness-engineer/references/capability-registry.md +485 -0
  42. package/bundled-skills/ecl-harness-engineer/references/darwin-eval-prompts.md +373 -0
  43. package/bundled-skills/ecl-harness-engineer/references/documentation-templates.md +741 -0
  44. package/bundled-skills/ecl-harness-engineer/references/durability-patterns.md +423 -0
  45. package/bundled-skills/ecl-harness-engineer/references/ecl-harness.md +1431 -0
  46. package/bundled-skills/ecl-harness-engineer/references/environment-config-guide.md +534 -0
  47. package/bundled-skills/ecl-harness-engineer/references/environment-detection-guide.md +751 -0
  48. package/bundled-skills/ecl-harness-engineer/references/eval-templates.md +377 -0
  49. package/bundled-skills/ecl-harness-engineer/references/gc-templates.md +798 -0
  50. package/bundled-skills/ecl-harness-engineer/references/greenfield-templates.md +1385 -0
  51. package/bundled-skills/ecl-harness-engineer/references/linter-templates.md +448 -0
  52. package/bundled-skills/ecl-harness-engineer/references/observability-templates.md +315 -0
  53. package/bundled-skills/environment-setup-guide/SKILL.md +2 -2
  54. package/bundled-skills/evolution/SKILL.md +1 -1
  55. package/bundled-skills/gitops-workflow/SKILL.md +1 -1
  56. package/bundled-skills/linkerd-patterns/SKILL.md +1 -1
  57. package/bundled-skills/loki-mode/examples/todo-app-generated/frontend/package-lock.json +504 -1317
  58. package/bundled-skills/loki-mode/examples/todo-app-generated/frontend/package.json +2 -2
  59. package/bundled-skills/lovable-cleanup/SKILL.md +416 -0
  60. package/bundled-skills/monopoly/SKILL.md +397 -0
  61. package/bundled-skills/monopoly/patterns/SKILL.md +331 -0
  62. package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +174 -0
  63. package/bundled-skills/monopoly/security-checklist/SKILL.md +69 -0
  64. package/bundled-skills/monopoly/tech-matrix/SKILL.md +268 -0
  65. package/bundled-skills/pagespeed-enhancer/SKILL.md +579 -0
  66. package/bundled-skills/polis-protocol/SKILL.md +6 -3
  67. package/bundled-skills/unship/SKILL.md +11 -5
  68. package/bundled-skills/uv-package-manager/resources/implementation-playbook.md +1 -1
  69. package/bundled-skills/varlock/SKILL.md +2 -2
  70. package/package.json +1 -1
  71. package/skills_index.json +204 -4
@@ -0,0 +1,315 @@
1
+ # Observability Templates
2
+
3
+ Templates for agent observability infrastructure.
4
+
5
+ Advanced profile only. Load this reference only when the user explicitly requests agent execution
6
+ traces, observability hooks, metrics, or debugging of long-running agent sessions. Do not create
7
+ `harness/trace` or observability hooks as part of the default core harness.
8
+
9
+ ## Trace Format
10
+
11
+ Standard format for recording agent execution sessions.
12
+
13
+ ```go
14
+ // harness/trace/format.go
15
+ package trace
16
+
17
+ import (
18
+ "encoding/json"
19
+ "os"
20
+ "time"
21
+ )
22
+
23
+ // AgentTrace captures a complete agent execution session
24
+ type AgentTrace struct {
25
+ SessionID string `json:"session_id"`
26
+ AgentType string `json:"agent_type"`
27
+ StartTime time.Time `json:"start_time"`
28
+ EndTime time.Time `json:"end_time"`
29
+ Prompt string `json:"prompt"`
30
+ SystemPrompt string `json:"system_prompt,omitempty"`
31
+ WorkingDir string `json:"working_dir"`
32
+ Messages []MessageTrace `json:"messages"`
33
+ ToolCalls []ToolTrace `json:"tool_calls"`
34
+ TokenUsage TokenUsage `json:"token_usage"`
35
+ Outcome Outcome `json:"outcome"`
36
+ Result string `json:"result,omitempty"`
37
+ Error string `json:"error,omitempty"`
38
+ Metadata map[string]any `json:"metadata,omitempty"`
39
+ }
40
+
41
+ type MessageTrace struct {
42
+ ID string `json:"id,omitempty"`
43
+ Role string `json:"role"`
44
+ Content string `json:"content"`
45
+ Timestamp time.Time `json:"timestamp"`
46
+ }
47
+
48
+ type ToolTrace struct {
49
+ ID string `json:"id"`
50
+ Tool string `json:"tool"`
51
+ Input json.RawMessage `json:"input"`
52
+ Output string `json:"output"`
53
+ Duration time.Duration `json:"duration"`
54
+ Timestamp time.Time `json:"timestamp"`
55
+ IsError bool `json:"is_error"`
56
+ ErrCode int `json:"err_code,omitempty"`
57
+ }
58
+
59
+ type TokenUsage struct {
60
+ InputTokens int64 `json:"input_tokens"`
61
+ OutputTokens int64 `json:"output_tokens"`
62
+ TotalTokens int64 `json:"total_tokens"`
63
+ }
64
+
65
+ type Outcome string
66
+
67
+ const (
68
+ OutcomeSuccess Outcome = "success"
69
+ OutcomeError Outcome = "error"
70
+ OutcomeTimeout Outcome = "timeout"
71
+ OutcomeCancelled Outcome = "cancelled"
72
+ OutcomeMaxTurns Outcome = "max_turns"
73
+ OutcomeMaxToolCalls Outcome = "max_tool_calls"
74
+ )
75
+
76
+ // TraceBuilder constructs traces incrementally
77
+ type TraceBuilder struct {
78
+ trace AgentTrace
79
+ }
80
+
81
+ func NewTraceBuilder(sessionID, agentType string) *TraceBuilder {
82
+ return &TraceBuilder{
83
+ trace: AgentTrace{
84
+ SessionID: sessionID,
85
+ AgentType: agentType,
86
+ StartTime: time.Now(),
87
+ Messages: make([]MessageTrace, 0),
88
+ ToolCalls: make([]ToolTrace, 0),
89
+ Metadata: make(map[string]any),
90
+ },
91
+ }
92
+ }
93
+
94
+ func (b *TraceBuilder) AddMessage(msg MessageTrace) { b.trace.Messages = append(b.trace.Messages, msg) }
95
+ func (b *TraceBuilder) AddToolCall(tc ToolTrace) { b.trace.ToolCalls = append(b.trace.ToolCalls, tc) }
96
+
97
+ func (b *TraceBuilder) Build() AgentTrace {
98
+ b.trace.EndTime = time.Now()
99
+ return b.trace
100
+ }
101
+
102
+ func (t *AgentTrace) Export(path string) error {
103
+ data, err := json.MarshalIndent(t, "", " ")
104
+ if err != nil {
105
+ return err
106
+ }
107
+ return os.WriteFile(path, data, 0644)
108
+ }
109
+
110
+ func Load(path string) (*AgentTrace, error) {
111
+ data, err := os.ReadFile(path)
112
+ if err != nil {
113
+ return nil, err
114
+ }
115
+ var trace AgentTrace
116
+ return &trace, json.Unmarshal(data, &trace)
117
+ }
118
+ ```
119
+
120
+ ## Self-Test Framework
121
+
122
+ Framework for testing agent behavior with validation.
123
+
124
+ ```go
125
+ // harness/selftest/runner.go
126
+ package selftest
127
+
128
+ import (
129
+ "context"
130
+ "encoding/json"
131
+ "fmt"
132
+ "time"
133
+ )
134
+
135
+ // TestCase defines a single agent test
136
+ type TestCase struct {
137
+ Name string `json:"name"`
138
+ Category string `json:"category"`
139
+ Prompt string `json:"prompt"`
140
+ InitFiles map[string]string `json:"init_files,omitempty"`
141
+ Timeout time.Duration `json:"timeout"`
142
+ MaxTurns int `json:"max_turns,omitempty"`
143
+ Expected *Expectations `json:"expected,omitempty"`
144
+ Validators []Validator `json:"-"`
145
+ }
146
+
147
+ type Expectations struct {
148
+ Files map[string]FileExpectation `json:"files,omitempty"`
149
+ ToolCalls []ToolCallExpectation `json:"tool_calls,omitempty"`
150
+ }
151
+
152
+ type FileExpectation struct {
153
+ MustExist bool `json:"must_exist"`
154
+ MustContain []string `json:"must_contain,omitempty"`
155
+ MustNotContain []string `json:"must_not_contain,omitempty"`
156
+ }
157
+
158
+ type ToolCallExpectation struct {
159
+ Tool string `json:"tool"`
160
+ MustOccur bool `json:"must_occur,omitempty"`
161
+ MustNotOccur bool `json:"must_not_occur,omitempty"`
162
+ }
163
+
164
+ type Validator func(result *AgentResult) error
165
+
166
+ type AgentResult struct {
167
+ TestName string `json:"test_name"`
168
+ Success bool `json:"success"`
169
+ Error string `json:"error,omitempty"`
170
+ Duration time.Duration `json:"duration"`
171
+ ToolCalls []ToolCallRecord `json:"tool_calls"`
172
+ }
173
+
174
+ type ToolCallRecord struct {
175
+ Tool string `json:"tool"`
176
+ Input json.RawMessage `json:"input"`
177
+ Output string `json:"output"`
178
+ IsError bool `json:"is_error"`
179
+ Duration time.Duration `json:"duration"`
180
+ }
181
+
182
+ type Runner struct {
183
+ WorkDir string
184
+ DefaultTimeout time.Duration
185
+ }
186
+
187
+ func NewRunner(workDir string) *Runner {
188
+ return &Runner{WorkDir: workDir, DefaultTimeout: 2 * time.Minute}
189
+ }
190
+
191
+ func (r *Runner) Run(ctx context.Context, tc TestCase) (*AgentResult, error) {
192
+ result := &AgentResult{
193
+ TestName: tc.Name,
194
+ ToolCalls: make([]ToolCallRecord, 0),
195
+ }
196
+ start := time.Now()
197
+ defer func() { result.Duration = time.Since(start) }()
198
+
199
+ // TODO: Integrate with actual agent execution
200
+ return result, fmt.Errorf("not yet integrated with agent")
201
+ }
202
+ ```
203
+
204
+ ## Observability Hook
205
+
206
+ Hook that records tool calls for analysis and replay.
207
+
208
+ ```go
209
+ // hooks/observability/observability.go
210
+ package observability
211
+
212
+ import (
213
+ "encoding/json"
214
+ "sync"
215
+ "time"
216
+ )
217
+
218
+ type ToolTrace struct {
219
+ Tool string `json:"tool"`
220
+ Input json.RawMessage `json:"input"`
221
+ Output string `json:"output"`
222
+ IsError bool `json:"is_error"`
223
+ Duration time.Duration `json:"duration"`
224
+ Timestamp time.Time `json:"timestamp"`
225
+ }
226
+
227
+ // TraceRecorder collects tool traces
228
+ type TraceRecorder struct {
229
+ mu sync.RWMutex
230
+ traces []ToolTrace
231
+ sessionId string
232
+ startTime time.Time
233
+ }
234
+
235
+ func NewTraceRecorder(sessionId string) *TraceRecorder {
236
+ return &TraceRecorder{
237
+ traces: make([]ToolTrace, 0),
238
+ sessionId: sessionId,
239
+ startTime: time.Now(),
240
+ }
241
+ }
242
+
243
+ func (r *TraceRecorder) Record(trace ToolTrace) {
244
+ r.mu.Lock()
245
+ defer r.mu.Unlock()
246
+ r.traces = append(r.traces, trace)
247
+ }
248
+
249
+ func (r *TraceRecorder) GetTraces() []ToolTrace {
250
+ r.mu.RLock()
251
+ defer r.mu.RUnlock()
252
+ result := make([]ToolTrace, len(r.traces))
253
+ copy(result, r.traces)
254
+ return result
255
+ }
256
+
257
+ func (r *TraceRecorder) ExportJSON() ([]byte, error) {
258
+ r.mu.RLock()
259
+ defer r.mu.RUnlock()
260
+ return json.MarshalIndent(map[string]any{
261
+ "session_id": r.sessionId,
262
+ "start_time": r.startTime,
263
+ "end_time": time.Now(),
264
+ "traces": r.traces,
265
+ }, "", " ")
266
+ }
267
+
268
+ // Summary returns aggregate statistics
269
+ func (r *TraceRecorder) Summary() TraceSummary {
270
+ r.mu.RLock()
271
+ defer r.mu.RUnlock()
272
+
273
+ summary := TraceSummary{
274
+ TotalCalls: len(r.traces),
275
+ ToolCounts: make(map[string]int),
276
+ }
277
+ for _, t := range r.traces {
278
+ summary.ToolCounts[t.Tool]++
279
+ if t.IsError {
280
+ summary.TotalErrors++
281
+ }
282
+ summary.TotalDuration += t.Duration
283
+ }
284
+ return summary
285
+ }
286
+
287
+ type TraceSummary struct {
288
+ TotalCalls int `json:"total_calls"`
289
+ TotalErrors int `json:"total_errors"`
290
+ TotalDuration time.Duration `json:"total_duration"`
291
+ ToolCounts map[string]int `json:"tool_counts"`
292
+ }
293
+ ```
294
+
295
+ ## Integration Pattern
296
+
297
+ To wire the observability hook into an existing agent:
298
+
299
+ ```go
300
+ // In agent initialization:
301
+ recorder := observability.NewTraceRecorder(sessionId)
302
+ hook := observability.NewObservabilityHook(recorder)
303
+
304
+ // Register as PostToolUse hook
305
+ agent.AddPostToolUseHook(hook)
306
+
307
+ // After agent completes:
308
+ traces := recorder.GetTraces()
309
+ summary := recorder.Summary()
310
+ summary.Print()
311
+
312
+ // Export for analysis
313
+ data, _ := recorder.ExportJSON()
314
+ os.WriteFile("trace.json", data, 0644)
315
+ ```
@@ -86,7 +86,7 @@ Provide verification steps to ensure everything works:
86
86
  tmpdir="$(mktemp -d)"
87
87
  trap 'rm -rf "$tmpdir"' EXIT
88
88
  curl -fsSLo "$tmpdir/homebrew-install.sh" https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh
89
- sed -n '1,160p' "$tmpdir/homebrew-install.sh"
89
+ cat "$tmpdir/homebrew-install.sh" # review the full installer before executing
90
90
  /bin/bash "$tmpdir/homebrew-install.sh"
91
91
 
92
92
  # Install Node.js
@@ -102,7 +102,7 @@ sudo apt update
102
102
  tmpdir="$(mktemp -d)"
103
103
  trap 'rm -rf "$tmpdir"' EXIT
104
104
  curl -fsSLo "$tmpdir/nodesource-setup.sh" https://deb.nodesource.com/setup_20.x
105
- sed -n '1,160p' "$tmpdir/nodesource-setup.sh"
105
+ cat "$tmpdir/nodesource-setup.sh" # review the full installer before sudo
106
106
  sudo -E bash "$tmpdir/nodesource-setup.sh"
107
107
  sudo apt install -y nodejs
108
108
  \`\`\`
@@ -37,7 +37,7 @@ For reliable automatic triggering, use Claude Code hooks. Install with `--with-h
37
37
  tmpdir="$(mktemp -d)"
38
38
  trap 'rm -rf "$tmpdir"' EXIT
39
39
  curl -fsSLo "$tmpdir/makepad-skills-install.sh" https://raw.githubusercontent.com/ZhangHanDong/makepad-skills/main/install.sh
40
- sed -n '1,160p' "$tmpdir/makepad-skills-install.sh"
40
+ cat "$tmpdir/makepad-skills-install.sh" # review the full installer before executing
41
41
  bash "$tmpdir/makepad-skills-install.sh" --with-hooks
42
42
  ```
43
43
 
@@ -144,7 +144,7 @@ brew install fluxcd/tap/flux
144
144
  tmpdir="$(mktemp -d)"
145
145
  trap 'rm -rf "$tmpdir"' EXIT
146
146
  curl -fsSLo "$tmpdir/flux-install.sh" https://fluxcd.io/install.sh
147
- sed -n '1,160p' "$tmpdir/flux-install.sh"
147
+ cat "$tmpdir/flux-install.sh" # review the full installer before sudo
148
148
  sudo bash "$tmpdir/flux-install.sh"
149
149
 
150
150
  # Bootstrap Flux
@@ -76,7 +76,7 @@ brew install linkerd
76
76
  tmpdir="$(mktemp -d)"
77
77
  trap 'rm -rf "$tmpdir"' EXIT
78
78
  curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install -o "$tmpdir/linkerd-install.sh"
79
- sed -n '1,160p' "$tmpdir/linkerd-install.sh"
79
+ cat "$tmpdir/linkerd-install.sh" # review the full installer before executing
80
80
  sh "$tmpdir/linkerd-install.sh"
81
81
 
82
82
  # Validate cluster