opencodekit 0.20.6 → 0.20.8

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 (46) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +48 -0
  3. package/dist/template/.opencode/agent/build.md +3 -2
  4. package/dist/template/.opencode/agent/explore.md +14 -14
  5. package/dist/template/.opencode/agent/general.md +1 -1
  6. package/dist/template/.opencode/agent/plan.md +1 -1
  7. package/dist/template/.opencode/agent/review.md +1 -1
  8. package/dist/template/.opencode/agent/vision.md +0 -9
  9. package/dist/template/.opencode/command/compound.md +102 -28
  10. package/dist/template/.opencode/command/curate.md +299 -0
  11. package/dist/template/.opencode/command/lfg.md +1 -0
  12. package/dist/template/.opencode/command/ship.md +1 -0
  13. package/dist/template/.opencode/memory.db +0 -0
  14. package/dist/template/.opencode/memory.db-shm +0 -0
  15. package/dist/template/.opencode/memory.db-wal +0 -0
  16. package/dist/template/.opencode/opencode.json +0 -5
  17. package/dist/template/.opencode/package.json +1 -1
  18. package/dist/template/.opencode/pnpm-lock.yaml +791 -9
  19. package/dist/template/.opencode/skill/api-and-interface-design/SKILL.md +162 -0
  20. package/dist/template/.opencode/skill/beads/SKILL.md +10 -9
  21. package/dist/template/.opencode/skill/beads/references/MULTI_AGENT.md +10 -10
  22. package/dist/template/.opencode/skill/ci-cd-and-automation/SKILL.md +202 -0
  23. package/dist/template/.opencode/skill/code-search-patterns/SKILL.md +253 -0
  24. package/dist/template/.opencode/skill/code-simplification/SKILL.md +211 -0
  25. package/dist/template/.opencode/skill/condition-based-waiting/SKILL.md +12 -0
  26. package/dist/template/.opencode/skill/defense-in-depth/SKILL.md +16 -6
  27. package/dist/template/.opencode/skill/deprecation-and-migration/SKILL.md +189 -0
  28. package/dist/template/.opencode/skill/development-lifecycle/SKILL.md +12 -48
  29. package/dist/template/.opencode/skill/documentation-and-adrs/SKILL.md +220 -0
  30. package/dist/template/.opencode/skill/incremental-implementation/SKILL.md +191 -0
  31. package/dist/template/.opencode/skill/performance-optimization/SKILL.md +236 -0
  32. package/dist/template/.opencode/skill/receiving-code-review/SKILL.md +11 -0
  33. package/dist/template/.opencode/skill/reflection-checkpoints/SKILL.md +183 -0
  34. package/dist/template/.opencode/skill/security-and-hardening/SKILL.md +296 -0
  35. package/dist/template/.opencode/skill/structured-edit/SKILL.md +10 -0
  36. package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +66 -1
  37. package/package.json +1 -1
  38. package/dist/template/.opencode/skill/beads-bridge/SKILL.md +0 -321
  39. package/dist/template/.opencode/skill/code-navigation/SKILL.md +0 -130
  40. package/dist/template/.opencode/skill/mqdh/SKILL.md +0 -171
  41. package/dist/template/.opencode/skill/obsidian/SKILL.md +0 -192
  42. package/dist/template/.opencode/skill/obsidian/mcp.json +0 -22
  43. package/dist/template/.opencode/skill/pencil/SKILL.md +0 -72
  44. package/dist/template/.opencode/skill/ralph/SKILL.md +0 -296
  45. package/dist/template/.opencode/skill/tilth-cli/SKILL.md +0 -207
  46. package/dist/template/.opencode/skill/tool-priority/SKILL.md +0 -299
@@ -1,192 +0,0 @@
1
- ---
2
- name: obsidian
3
- description: Use when working with Obsidian vault via MCP - read/write notes, search, tag management, and vault operations
4
- version: 1.0.0
5
- tags: [integration, documentation]
6
- dependencies: []
7
- mcp:
8
- server: @mauricio.wolff/mcp-obsidian
9
- args: ["{env:OBSIDIAN_VAULT_PATH}"]
10
- ---
11
-
12
- # Obsidian Vault (MCP)
13
-
14
- ## When to Use
15
-
16
- - When you need MCP-based read/write/search operations in an Obsidian vault.
17
-
18
- ## When NOT to Use
19
-
20
- - When the task does not involve an Obsidian vault or MCP access.
21
-
22
-
23
- ## Available Tools
24
-
25
- ### Read Operations
26
-
27
- | Tool | Purpose | Arguments |
28
- | --------------------- | --------------------------------- | ------------------------------------------------- |
29
- | `read_note` | Read note with parsed frontmatter | `path`, `prettyPrint` |
30
- | `read_multiple_notes` | Batch read (max 10) | `paths[]`, `includeContent`, `includeFrontmatter` |
31
- | `get_frontmatter` | Extract only frontmatter | `path` |
32
- | `get_notes_info` | Get metadata without content | `paths[]` |
33
- | `list_directory` | List files and directories | `path` |
34
-
35
- ### Write Operations
36
-
37
- | Tool | Purpose | Arguments |
38
- | -------------------- | ------------------------------------- | ---------------------------------------- |
39
- | `write_note` | Write note (overwrite/append/prepend) | `path`, `content`, `frontmatter`, `mode` |
40
- | `update_frontmatter` | Update frontmatter only | `path`, `frontmatter`, `merge` |
41
- | `delete_note` | Delete note (requires confirmation) | `path`, `confirmPath` |
42
- | `move_note` | Move/rename note | `oldPath`, `newPath`, `overwrite` |
43
-
44
- ### Search & Tags
45
-
46
- | Tool | Purpose | Arguments |
47
- | -------------- | ----------------------------- | ------------------------------------------------------ |
48
- | `search_notes` | Search by content/frontmatter | `query`, `limit`, `searchContent`, `searchFrontmatter` |
49
- | `manage_tags` | Add/remove/list tags | `path`, `operation`, `tags[]` |
50
-
51
- ## Write Modes
52
-
53
- | Mode | Description |
54
- | ----------- | ------------------------------------- |
55
- | `overwrite` | Replace entire file content (default) |
56
- | `append` | Add content to end of file |
57
- | `prepend` | Add content to beginning of file |
58
-
59
- ## Usage Examples
60
-
61
- ### Read Notes
62
-
63
- ```typescript
64
- // Read a single note
65
- skill_mcp({
66
- skill_name: "obsidian",
67
- tool_name: "read_note",
68
- arguments: '{"path": "projects/project-ideas.md"}',
69
- });
70
-
71
- // Read multiple notes
72
- skill_mcp({
73
- skill_name: "obsidian",
74
- tool_name: "read_multiple_notes",
75
- arguments: '{"paths": ["note1.md", "note2.md"], "includeContent": true}',
76
- });
77
-
78
- // List directory
79
- skill_mcp({
80
- skill_name: "obsidian",
81
- tool_name: "list_directory",
82
- arguments: '{"path": "Projects"}',
83
- });
84
- ```
85
-
86
- ### Write Notes
87
-
88
- ```typescript
89
- // Create new note (overwrite)
90
- skill_mcp({
91
- skill_name: "obsidian",
92
- tool_name: "write_note",
93
- arguments: `{
94
- "path": "meeting-notes.md",
95
- "content": "# Team Meeting\\n\\n## Agenda\\n- Project updates",
96
- "frontmatter": {"title": "Team Meeting", "date": "2025-02-13", "tags": ["meetings", "team"]},
97
- "mode": "overwrite"
98
- }`,
99
- });
100
-
101
- // Append to existing note
102
- skill_mcp({
103
- skill_name: "obsidian",
104
- tool_name: "write_note",
105
- arguments:
106
- '{"path": "daily-log.md", "content": "\\n\\n## 3:00 PM\\n- Completed review", "mode": "append"}',
107
- });
108
- ```
109
-
110
- ### Search & Tags
111
-
112
- ```typescript
113
- // Search notes
114
- skill_mcp({
115
- skill_name: "obsidian",
116
- tool_name: "search_notes",
117
- arguments: '{"query": "machine learning", "limit": 5, "searchContent": true}',
118
- });
119
-
120
- // Add tags
121
- skill_mcp({
122
- skill_name: "obsidian",
123
- tool_name: "manage_tags",
124
- arguments: '{"path": "research-notes.md", "operation": "add", "tags": ["important", "ai"]}',
125
- });
126
-
127
- // List tags
128
- skill_mcp({
129
- skill_name: "obsidian",
130
- tool_name: "manage_tags",
131
- arguments: '{"path": "research-notes.md", "operation": "list"}',
132
- });
133
- ```
134
-
135
- ### Delete (Safe)
136
-
137
- ```typescript
138
- // Delete requires confirmation (both paths must match)
139
- skill_mcp({
140
- skill_name: "obsidian",
141
- tool_name: "delete_note",
142
- arguments: '{"path": "old-draft.md", "confirmPath": "old-draft.md"}',
143
- });
144
- ```
145
-
146
- ## Configuration
147
-
148
- ### Environment Variable
149
-
150
- Set your vault path:
151
-
152
- ```bash
153
- export OBSIDIAN_VAULT_PATH="/path/to/your/obsidian/vault"
154
- ```
155
-
156
- Or configure in opencode.json:
157
-
158
- ```json
159
- {
160
- "mcp": {
161
- "obsidian": {
162
- "command": "npx",
163
- "args": ["@mauricio.wolff/mcp-obsidian", "/path/to/vault"]
164
- }
165
- }
166
- }
167
- ```
168
-
169
- ## Security
170
-
171
- - Path traversal protection: prevents access outside vault
172
- - Auto-excludes: `.obsidian`, `.git`, `node_modules`
173
- - Frontmatter validation: blocks dangerous objects
174
- - Confirmation required for deletions
175
-
176
- ## Common Use Cases
177
-
178
- | Task | Tool | Example |
179
- | -------------------- | ---------------- | ----------------------------------------------------------------------------- |
180
- | List vault files | `list_directory` | `list_directory({ path: "" })` |
181
- | Read specific note | `read_note` | `read_note({ path: "tasks/project.md" })` |
182
- | Create/update note | `write_note` | `write_note({ path: "new.md", content: "...", mode: "overwrite" })` |
183
- | Search notes | `search_notes` | `search_notes({ query: "API", limit: 10 })` |
184
- | Add tags | `manage_tags` | `manage_tags({ path: "note.md", operation: "add", tags: ["urgent"] })` |
185
- | Append to daily note | `write_note` | `write_note({ path: "daily/2025-02-13.md", content: "...", mode: "append" })` |
186
-
187
- ## Tips
188
-
189
- - Use `prettyPrint: true` for debugging, `false` (default) for production
190
- - Batch reads with `read_multiple_notes` (max 10)
191
- - Search supports content and frontmatter filtering
192
- - Frontmatter is auto-parsed on read
@@ -1,22 +0,0 @@
1
- {
2
- "obsidian": {
3
- "command": "npx",
4
- "args": ["-y", "@mauricio.wolff/mcp-obsidian", "{env:OBSIDIAN_VAULT_PATH}"],
5
- "env": {
6
- "OBSIDIAN_VAULT_PATH": "{env:OBSIDIAN_VAULT_PATH}"
7
- },
8
- "includeTools": [
9
- "read_note",
10
- "read_multiple_notes",
11
- "get_frontmatter",
12
- "get_notes_info",
13
- "list_directory",
14
- "write_note",
15
- "update_frontmatter",
16
- "delete_note",
17
- "move_note",
18
- "search_notes",
19
- "manage_tags"
20
- ]
21
- }
22
- }
@@ -1,72 +0,0 @@
1
- ---
2
- name: pencil
3
- description: Use when working with OpenPencil .op design files — creating, editing, or exporting code from designs. MUST load before any OpenPencil workflow. Requires desktop app (npm CLI does not provide openpencil-mcp).
4
- version: 1.0.0
5
- tags: [design, openpencil, mcp, cli]
6
- mcp:
7
- pencil:
8
- command: openpencil-mcp
9
- ---
10
-
11
- # OpenPencil Skill
12
-
13
- Legacy skill name: `pencil`.
14
-
15
- ## When to Use
16
-
17
- - Create or modify UI designs as code using `.op` files.
18
- - Export production code or visuals from the terminal.
19
- - Use OpenPencil's desktop-bundled MCP server after installing the app.
20
-
21
- ## Prerequisites
22
-
23
- ### Install CLI
24
-
25
- ```bash
26
- npm install -g @zseven-w/openpencil
27
- op status
28
- ```
29
-
30
- ### Install Desktop App for MCP
31
-
32
- - Install the OpenPencil desktop app from the ZSeven-W/openpencil releases page.
33
- - Open **Agent Settings** inside OpenPencil and use the one-click MCP install for OpenCode/Claude Code/Codex/etc.
34
- - The npm CLI install does **not** provide `openpencil-mcp`; that binary is bundled with the desktop app.
35
-
36
- ### MCP Server
37
-
38
- - OpenPencil ships a built-in MCP server for agent tooling.
39
- - The server command is `openpencil-mcp` once the desktop app has installed/exposed it.
40
- - Keep MCP disabled in template config until OpenPencil desktop is installed locally.
41
-
42
- ## Quick Start
43
-
44
- ```bash
45
- # Create new design
46
- op design @landing.txt
47
-
48
- # Start the desktop app
49
- op start
50
-
51
- # Export code
52
- op export react --out .
53
-
54
- # Import a Figma file
55
- op import:figma design.fig
56
- ```
57
-
58
- ## Core CLI Commands
59
-
60
- - `op design @brief.txt`
61
- - `op design:skeleton`
62
- - `op design:content`
63
- - `op design:refine --root-id <id>`
64
- - `op export react --out .`
65
- - `op import:figma design.fig`
66
-
67
- ## Notes
68
-
69
- - OpenPencil uses `.op` files as the source of truth.
70
- - CLI install is published on npm as `@zseven-w/openpencil` and exposes the `op` binary.
71
- - MCP is a desktop-app-bundled feature, not a standalone npm package.
72
- - Use taste-skill for design quality, OpenPencil for execution.
@@ -1,296 +0,0 @@
1
- ---
2
- name: ralph
3
- description: Use when running autonomous agent loops for extended task completion without human intervention - handles PRD-driven development, migration tasks, or batch operations
4
- version: 1.0.0
5
- tags: [workflow, automation]
6
- dependencies: []
7
- ---
8
-
9
- # Ralph Wiggum - Autonomous Agent Loop
10
-
11
- ## When to Use
12
-
13
- - **PRD-driven development**: Work through a product requirements document task by task
14
- - **Migration tasks**: "Migrate all Jest tests to Vitest" - agent works until done
15
- - **Batch operations**: Process multiple files/components with the same pattern
16
- - **Away-from-keyboard work**: Let the agent work autonomously while you're away
17
-
18
- ## When NOT to Use
19
-
20
- - Simple single-step tasks (just do them directly)
21
- - Tasks requiring frequent human decisions
22
- - Exploratory work where the goal isn't clear
23
- - Critical production changes (requires human oversight)
24
-
25
-
26
- ## Quick Start
27
-
28
- Invoke the workflow with:
29
-
30
- ```
31
- /ralph Migrate all Jest tests to Vitest --prd PRD.md
32
- ```
33
-
34
- Or manually follow the loop pattern below.
35
-
36
- ## The Loop Pattern
37
-
38
- ```
39
- ┌─────────────────────────────────────────────────┐
40
- │ 1. Read PRD/task list + progress.txt │
41
- │ 2. Pick highest-priority incomplete task │
42
- │ 3. Implement ONE feature only │
43
- │ 4. Run feedback: test → typecheck → lint │
44
- │ 5. If pass → commit + update progress.txt │
45
- │ 6. If all done → output <promise>COMPLETE │
46
- │ 7. Otherwise → repeat from step 1 │
47
- └─────────────────────────────────────────────────┘
48
- ```
49
-
50
- ## Using LSP Tools (Experimental)
51
-
52
- OpenCode provides LSP tools for code intelligence.
53
-
54
- ### Available Operations
55
-
56
- ```typescript
57
- // Understand file structure before editing
58
- lsp({
59
- operation: "documentSymbol",
60
- filePath: "src/auth.ts",
61
- line: 1,
62
- character: 1,
63
- });
64
-
65
- // Find where a symbol is defined
66
- lsp({
67
- operation: "goToDefinition",
68
- filePath: "src/auth.ts",
69
- line: 42,
70
- character: 10,
71
- });
72
-
73
- // Find all usages of a symbol (impact analysis)
74
- lsp({
75
- operation: "findReferences",
76
- filePath: "src/auth.ts",
77
- line: 42,
78
- character: 10,
79
- });
80
-
81
- // Get type info and documentation
82
- lsp({ operation: "hover", filePath: "src/auth.ts", line: 42, character: 10 });
83
-
84
- // Find implementations of interface/abstract
85
- lsp({
86
- operation: "goToImplementation",
87
- filePath: "src/types.ts",
88
- line: 15,
89
- character: 10,
90
- });
91
-
92
- // Search symbols across entire workspace
93
- lsp({
94
- operation: "workspaceSymbol",
95
- filePath: "src/index.ts",
96
- line: 1,
97
- character: 1,
98
- });
99
-
100
- // Call hierarchy analysis
101
- lsp({
102
- operation: "prepareCallHierarchy",
103
- filePath: "src/api.ts",
104
- line: 20,
105
- character: 5,
106
- });
107
- lsp({
108
- operation: "incomingCalls",
109
- filePath: "src/api.ts",
110
- line: 20,
111
- character: 5,
112
- });
113
- lsp({
114
- operation: "outgoingCalls",
115
- filePath: "src/api.ts",
116
- line: 20,
117
- character: 5,
118
- });
119
- ```
120
-
121
- ### LSP-First Workflow
122
-
123
- Before editing ANY file in the loop:
124
-
125
- ```
126
- 1. Read the file
127
- 2. Use documentSymbol to understand structure
128
- 3. Use findReferences to check impact
129
- 4. Use hover for type info
130
- 5. THEN make edits
131
- ```
132
-
133
- This prevents breaking changes and ensures you understand the code before modifying it.
134
-
135
- ## Smart Language Detection
136
-
137
- OpenCode auto-detects languages via LSP based on file extensions. Use this to determine the project type:
138
-
139
- ### Primary Detection (File Extensions)
140
-
141
- | Language | Extensions | LSP Server |
142
- | ---------- | ----------------------------- | ------------- |
143
- | TypeScript | `.ts`, `.tsx`, `.mts`, `.cts` | typescript |
144
- | JavaScript | `.js`, `.jsx`, `.mjs`, `.cjs` | typescript |
145
- | Python | `.py`, `.pyi` | pyright |
146
- | Rust | `.rs` | rust-analyzer |
147
- | Go | `.go` | gopls |
148
- | C/C++ | `.c`, `.cpp`, `.h`, `.hpp` | clangd |
149
- | Java | `.java` | jdtls |
150
- | C# | `.cs` | csharp |
151
- | Ruby | `.rb`, `.rake` | ruby-lsp |
152
- | PHP | `.php` | intelephense |
153
- | Swift | `.swift` | sourcekit-lsp |
154
- | Kotlin | `.kt`, `.kts` | kotlin-ls |
155
- | Elixir | `.ex`, `.exs` | elixir-ls |
156
- | Dart | `.dart` | dart |
157
- | Zig | `.zig` | zls |
158
- | Gleam | `.gleam` | gleam |
159
- | Lua | `.lua` | lua-ls |
160
- | Clojure | `.clj`, `.cljs`, `.cljc` | clojure-lsp |
161
- | OCaml | `.ml`, `.mli` | ocaml-lsp |
162
- | Svelte | `.svelte` | svelte |
163
- | Vue | `.vue` | vue |
164
- | Astro | `.astro` | astro |
165
-
166
- ### Secondary Detection (Lock Files → Package Manager)
167
-
168
- | Lock File | Package Manager | Runtime |
169
- | ------------------- | --------------- | ------- |
170
- | `bun.lockb` | Bun | Bun |
171
- | `yarn.lock` | Yarn | Node |
172
- | `pnpm-lock.yaml` | pnpm | Node |
173
- | `package-lock.json` | npm | Node |
174
- | `deno.json` | Deno | Deno |
175
- | `Cargo.toml` | Cargo | Rust |
176
- | `go.mod` | Go Modules | Go |
177
- | `pyproject.toml` | Poetry/pip | Python |
178
- | `Gemfile.lock` | Bundler | Ruby |
179
- | `composer.lock` | Composer | PHP |
180
- | `Package.swift` | SwiftPM | Swift |
181
- | `mix.lock` | Mix | Elixir |
182
- | `pubspec.lock` | Pub | Dart |
183
-
184
- ### Validation Commands by Language
185
-
186
- ```bash
187
- # TypeScript/JavaScript (Bun)
188
- bun test && bun run typecheck && bun run lint
189
-
190
- # TypeScript/JavaScript (npm)
191
- npm test && npm run typecheck && npm run lint
192
-
193
- # TypeScript/JavaScript (Deno)
194
- deno test && deno check . && deno lint
195
-
196
- # Python
197
- pytest && ruff check . && mypy .
198
-
199
- # Rust
200
- cargo test && cargo check && cargo clippy --all-targets
201
-
202
- # Go
203
- go test ./... && go vet ./... && golangci-lint run
204
-
205
- # Ruby
206
- bundle exec rspec && bundle exec rubocop
207
-
208
- # PHP
209
- composer test && composer phpstan && composer phpcs
210
-
211
- # Swift
212
- swift test && swift build
213
-
214
- # Elixir
215
- mix test && mix credo && mix dialyzer
216
-
217
- # Dart
218
- dart test && dart analyze
219
-
220
- # Java (Maven)
221
- mvn test && mvn compile && mvn checkstyle:check
222
-
223
- # Java (Gradle)
224
- ./gradlew test && ./gradlew check
225
-
226
- # C# (.NET)
227
- dotnet test && dotnet build && dotnet format --verify-no-changes
228
- ```
229
-
230
- ## Required Files
231
-
232
- ### PRD File (Recommended)
233
-
234
- Create a `PRD.md` with clear task list:
235
-
236
- ```markdown
237
- # Migration PRD
238
-
239
- ## Tasks
240
-
241
- - [ ] Convert test-utils.test.js
242
- - [ ] Convert api.test.js
243
- - [ ] Update CI config
244
- - [ ] Remove Jest dependencies
245
- ```
246
-
247
- ### Progress File (Agent-maintained)
248
-
249
- Agent creates/updates `progress.txt`:
250
-
251
- ```markdown
252
- # Progress Log
253
-
254
- ## Session Started: 2026-01-10
255
-
256
- ### Project: TypeScript with Bun
257
-
258
- ### Commands: bun test | bun run typecheck | bun run lint
259
-
260
- ### Completed Tasks
261
-
262
- - [x] test-utils.test.js - migrated, 12 tests passing
263
- - [x] api.test.js - migrated, 8 tests passing
264
-
265
- ### Notes for Next Iteration
266
-
267
- - CI config needs Vitest runner update
268
- ```
269
-
270
- ## Completion Signal
271
-
272
- The loop ends when agent outputs:
273
-
274
- ```
275
- <promise>COMPLETE</promise>
276
- ```
277
-
278
- ## Best Practices
279
-
280
- 1. **Use LSP for detection**: Check file extensions, not just lock files
281
- 2. **Small steps**: ONE feature per iteration (prevents context rot)
282
- 3. **Quality gates**: Test, typecheck, lint MUST pass before commit
283
- 4. **Prioritize risk**: Hard tasks first, easy wins last
284
- 5. **Track progress**: Update progress.txt every iteration
285
- 6. **Explicit scope**: Vague tasks loop forever
286
- 7. **Graceful fallbacks**: If a command doesn't exist, skip and note it
287
-
288
- ## Troubleshooting
289
-
290
- | Issue | Solution |
291
- | -------------------- | ------------------------------------------- |
292
- | Loop not progressing | Break task into smaller pieces |
293
- | Tests failing | Fix before continuing, don't skip |
294
- | Context getting long | Summarize progress, restart session |
295
- | Stuck on decision | Note in progress.txt, ask user next session |
296
- | Unknown language | Check file extensions against LSP table |