opencodekit 0.21.9 → 0.22.0

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 (165) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +116 -499
  3. package/dist/template/.opencode/README.md +1 -1
  4. package/dist/template/.opencode/agent/build.md +56 -396
  5. package/dist/template/.opencode/agent/explore.md +15 -16
  6. package/dist/template/.opencode/agent/general.md +2 -2
  7. package/dist/template/.opencode/agent/plan.md +3 -3
  8. package/dist/template/.opencode/agent/review.md +2 -3
  9. package/dist/template/.opencode/agent/scout.md +34 -16
  10. package/dist/template/.opencode/agent/vision.md +0 -1
  11. package/dist/template/.opencode/command/clarify.md +48 -0
  12. package/dist/template/.opencode/command/commit.md +53 -0
  13. package/dist/template/.opencode/command/design.md +4 -4
  14. package/dist/template/.opencode/command/fix.md +56 -0
  15. package/dist/template/.opencode/command/improve-architecture.md +55 -0
  16. package/dist/template/.opencode/command/init.md +88 -68
  17. package/dist/template/.opencode/command/refactor.md +66 -0
  18. package/dist/template/.opencode/command/review-codebase.md +1 -1
  19. package/dist/template/.opencode/command/ship.md +1 -1
  20. package/dist/template/.opencode/command/test.md +66 -0
  21. package/dist/template/.opencode/dcp.jsonc +29 -46
  22. package/dist/template/.opencode/memory/README.md +3 -5
  23. package/dist/template/.opencode/memory/_templates/adr.md +45 -0
  24. package/dist/template/.opencode/memory/project/gotchas.md +1 -1
  25. package/dist/template/.opencode/memory/project/user.md +1 -2
  26. package/dist/template/.opencode/memory/session-context.md +1 -1
  27. package/dist/template/.opencode/opencode.json +10 -332
  28. package/dist/template/.opencode/plugin/README.md +1 -1
  29. package/dist/template/.opencode/plugin/guard.ts +62 -0
  30. package/dist/template/.opencode/plugin/{lib/memory-admin-tools.ts → memory/admin.ts} +4 -4
  31. package/dist/template/.opencode/plugin/{lib → memory}/capture.ts +1 -1
  32. package/dist/template/.opencode/plugin/{lib → memory}/compile.ts +2 -2
  33. package/dist/template/.opencode/plugin/{lib → memory}/context.ts +1 -1
  34. package/dist/template/.opencode/plugin/{lib → memory}/curator.ts +1 -1
  35. package/dist/template/.opencode/plugin/{lib → memory}/db/observations.ts +102 -3
  36. package/dist/template/.opencode/plugin/{lib → memory}/db/schema.ts +43 -1
  37. package/dist/template/.opencode/plugin/{lib → memory}/db/types.ts +22 -0
  38. package/dist/template/.opencode/plugin/{lib/memory-db.ts → memory/db.ts} +1 -1
  39. package/dist/template/.opencode/plugin/{lib → memory}/distill.ts +1 -1
  40. package/dist/template/.opencode/plugin/{lib/memory-helpers.ts → memory/helpers.ts} +5 -1
  41. package/dist/template/.opencode/plugin/{lib/memory-hooks.ts → memory/hooks.ts} +1 -1
  42. package/dist/template/.opencode/plugin/{lib → memory}/index-generator.ts +2 -2
  43. package/dist/template/.opencode/plugin/{lib → memory}/inject.ts +1 -1
  44. package/dist/template/.opencode/plugin/{lib → memory}/lint.ts +2 -2
  45. package/dist/template/.opencode/plugin/memory/tools.ts +322 -0
  46. package/dist/template/.opencode/plugin/{lib → memory}/validate.ts +2 -2
  47. package/dist/template/.opencode/plugin/memory.ts +7 -17
  48. package/dist/template/.opencode/plugin/srcwalk.ts +721 -0
  49. package/dist/template/.opencode/skill/agent-code-quality-gate/SKILL.md +98 -0
  50. package/dist/template/.opencode/skill/behavioral-kernel/SKILL.md +52 -0
  51. package/dist/template/.opencode/skill/browser-testing-with-devtools/SKILL.md +85 -0
  52. package/dist/template/.opencode/skill/code-cleanup/SKILL.md +114 -0
  53. package/dist/template/.opencode/skill/code-navigation/SKILL.md +142 -0
  54. package/dist/template/.opencode/skill/code-review-and-quality/SKILL.md +131 -0
  55. package/dist/template/.opencode/skill/debugging-and-error-recovery/SKILL.md +109 -0
  56. package/dist/template/.opencode/skill/deep-module-design/SKILL.md +207 -0
  57. package/dist/template/.opencode/skill/git-workflow-and-versioning/SKILL.md +77 -0
  58. package/dist/template/.opencode/skill/grill-me/SKILL.md +140 -0
  59. package/dist/template/.opencode/skill/memory-system/SKILL.md +9 -10
  60. package/dist/template/.opencode/skill/planning-and-task-breakdown/SKILL.md +116 -0
  61. package/dist/template/.opencode/skill/shipping-and-launch/SKILL.md +95 -0
  62. package/dist/template/.opencode/skill/source-driven-development/SKILL.md +103 -0
  63. package/dist/template/.opencode/skill/spec-driven-development/SKILL.md +121 -0
  64. package/dist/template/.opencode/skill/srcwalk/SKILL.md +161 -0
  65. package/dist/template/.opencode/skill/ubiquitous-language/SKILL.md +184 -0
  66. package/dist/template/.opencode/tool/context7.ts +1 -1
  67. package/dist/template/.opencode/tool/grepsearch.ts +1 -1
  68. package/package.json +1 -1
  69. package/dist/template/.opencode/AGENT_ALIGNMENT.md +0 -564
  70. package/dist/template/.opencode/agent/painter.md +0 -83
  71. package/dist/template/.opencode/command/compound.md +0 -240
  72. package/dist/template/.opencode/command/curate.md +0 -299
  73. package/dist/template/.opencode/command/handoff.md +0 -149
  74. package/dist/template/.opencode/command/health.md +0 -356
  75. package/dist/template/.opencode/command/init-context.md +0 -297
  76. package/dist/template/.opencode/command/init-user.md +0 -125
  77. package/dist/template/.opencode/command/iterate.md +0 -200
  78. package/dist/template/.opencode/command/lfg.md +0 -173
  79. package/dist/template/.opencode/command/resume.md +0 -78
  80. package/dist/template/.opencode/command/status.md +0 -126
  81. package/dist/template/.opencode/command/ui-slop-check.md +0 -169
  82. package/dist/template/.opencode/plugin/lib/memory-tools.ts +0 -535
  83. package/dist/template/.opencode/skill/agent-evals/SKILL.md +0 -208
  84. package/dist/template/.opencode/skill/anti-ai-slop/SKILL.md +0 -76
  85. package/dist/template/.opencode/skill/augment-context-engine/SKILL.md +0 -122
  86. package/dist/template/.opencode/skill/augment-context-engine/mcp.json +0 -6
  87. package/dist/template/.opencode/skill/brand-asset-protocol/SKILL.md +0 -222
  88. package/dist/template/.opencode/skill/code-search-patterns/SKILL.md +0 -253
  89. package/dist/template/.opencode/skill/code-simplification/SKILL.md +0 -211
  90. package/dist/template/.opencode/skill/context-condensation/SKILL.md +0 -149
  91. package/dist/template/.opencode/skill/context-initialization/SKILL.md +0 -69
  92. package/dist/template/.opencode/skill/context-management/SKILL.md +0 -390
  93. package/dist/template/.opencode/skill/deep-research/SKILL.md +0 -384
  94. package/dist/template/.opencode/skill/design-direction-advisor/SKILL.md +0 -139
  95. package/dist/template/.opencode/skill/dispatching-parallel-agents/SKILL.md +0 -191
  96. package/dist/template/.opencode/skill/executing-plans/SKILL.md +0 -247
  97. package/dist/template/.opencode/skill/figma-go/SKILL.md +0 -65
  98. package/dist/template/.opencode/skill/finishing-a-development-branch/SKILL.md +0 -357
  99. package/dist/template/.opencode/skill/full-output-enforcement/SKILL.md +0 -62
  100. package/dist/template/.opencode/skill/gh-address-comments/SKILL.md +0 -29
  101. package/dist/template/.opencode/skill/gh-address-comments/scripts/fetch_comments.py +0 -237
  102. package/dist/template/.opencode/skill/gh-fix-ci/SKILL.md +0 -38
  103. package/dist/template/.opencode/skill/gh-fix-ci/scripts/inspect_pr_checks.py +0 -509
  104. package/dist/template/.opencode/skill/hi-fi-prototype-html/SKILL.md +0 -253
  105. package/dist/template/.opencode/skill/html-deck-export/SKILL.md +0 -189
  106. package/dist/template/.opencode/skill/index-knowledge/SKILL.md +0 -413
  107. package/dist/template/.opencode/skill/memory-grounding/SKILL.md +0 -68
  108. package/dist/template/.opencode/skill/playwriter/SKILL.md +0 -158
  109. package/dist/template/.opencode/skill/portless/SKILL.md +0 -109
  110. package/dist/template/.opencode/skill/prd/SKILL.md +0 -146
  111. package/dist/template/.opencode/skill/prd-task/SKILL.md +0 -182
  112. package/dist/template/.opencode/skill/prd-task/references/prd-schema.json +0 -124
  113. package/dist/template/.opencode/skill/prompt-leverage/SKILL.md +0 -90
  114. package/dist/template/.opencode/skill/prompt-leverage/references/framework.md +0 -91
  115. package/dist/template/.opencode/skill/prompt-leverage/scripts/augment_prompt.py +0 -157
  116. package/dist/template/.opencode/skill/receiving-code-review/SKILL.md +0 -263
  117. package/dist/template/.opencode/skill/reconcile/SKILL.md +0 -183
  118. package/dist/template/.opencode/skill/reflection-checkpoints/SKILL.md +0 -183
  119. package/dist/template/.opencode/skill/requesting-code-review/SKILL.md +0 -443
  120. package/dist/template/.opencode/skill/requesting-code-review/references/specialist-profiles.md +0 -108
  121. package/dist/template/.opencode/skill/requesting-code-review/review.md +0 -160
  122. package/dist/template/.opencode/skill/rtk-command-compression/SKILL.md +0 -134
  123. package/dist/template/.opencode/skill/screenshot/SKILL.md +0 -48
  124. package/dist/template/.opencode/skill/screenshot/scripts/ensure_macos_permissions.sh +0 -54
  125. package/dist/template/.opencode/skill/screenshot/scripts/macos_display_info.swift +0 -22
  126. package/dist/template/.opencode/skill/screenshot/scripts/macos_permissions.swift +0 -40
  127. package/dist/template/.opencode/skill/screenshot/scripts/macos_window_info.swift +0 -126
  128. package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.ps1 +0 -163
  129. package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.py +0 -585
  130. package/dist/template/.opencode/skill/security-threat-model/SKILL.md +0 -36
  131. package/dist/template/.opencode/skill/security-threat-model/references/prompt-template.md +0 -255
  132. package/dist/template/.opencode/skill/security-threat-model/references/security-controls-and-assets.md +0 -32
  133. package/dist/template/.opencode/skill/sharing-skills/SKILL.md +0 -214
  134. package/dist/template/.opencode/skill/skill-creator/SKILL.md +0 -181
  135. package/dist/template/.opencode/skill/skill-installer/SKILL.md +0 -58
  136. package/dist/template/.opencode/skill/skill-installer/scripts/github_utils.py +0 -21
  137. package/dist/template/.opencode/skill/skill-installer/scripts/install-skill-from-github.py +0 -313
  138. package/dist/template/.opencode/skill/skill-installer/scripts/list-skills.py +0 -106
  139. package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +0 -244
  140. package/dist/template/.opencode/skill/swarm-coordination/references/architecture.md +0 -39
  141. package/dist/template/.opencode/skill/swarm-coordination/references/delegation-worker-protocol.md +0 -145
  142. package/dist/template/.opencode/skill/swarm-coordination/references/dependency-graph.md +0 -50
  143. package/dist/template/.opencode/skill/swarm-coordination/references/drift-check.md +0 -90
  144. package/dist/template/.opencode/skill/swarm-coordination/references/integration-beads.md +0 -20
  145. package/dist/template/.opencode/skill/swarm-coordination/references/launch-flow.md +0 -186
  146. package/dist/template/.opencode/skill/swarm-coordination/references/reconciler.md +0 -172
  147. package/dist/template/.opencode/skill/swarm-coordination/references/tier-enforcement.md +0 -78
  148. package/dist/template/.opencode/skill/swarm-coordination/references/tmux-integration.md +0 -134
  149. package/dist/template/.opencode/skill/systematic-debugging/SKILL.md +0 -402
  150. package/dist/template/.opencode/skill/terse-output-mode/SKILL.md +0 -95
  151. package/dist/template/.opencode/skill/think-in-code/SKILL.md +0 -136
  152. package/dist/template/.opencode/skill/ux-quality-gates/SKILL.md +0 -137
  153. package/dist/template/.opencode/skill/v1-run/SKILL.md +0 -175
  154. package/dist/template/.opencode/skill/v1-run/mcp.json +0 -6
  155. package/dist/template/.opencode/skill/verification-gates/SKILL.md +0 -63
  156. package/dist/template/.opencode/skill/visual-analysis/SKILL.md +0 -154
  157. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +0 -46
  158. package/dist/template/.opencode/skill/workspace-setup/SKILL.md +0 -76
  159. package/dist/template/.opencode/skill/writing-plans/SKILL.md +0 -320
  160. /package/dist/template/.opencode/plugin/{lib → memory}/compact.ts +0 -0
  161. /package/dist/template/.opencode/plugin/{lib → memory}/db/graph.ts +0 -0
  162. /package/dist/template/.opencode/plugin/{lib → memory}/db/maintenance.ts +0 -0
  163. /package/dist/template/.opencode/plugin/{lib → memory}/db/pipeline.ts +0 -0
  164. /package/dist/template/.opencode/plugin/{lib → memory}/notify.ts +0 -0
  165. /package/dist/template/.opencode/plugin/{lib → memory}/operation-log.ts +0 -0
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: ubiquitous-language
3
+ description: Establishes and maintains shared vocabulary across codebase, context files, and team conversation — inspired by Evans' Domain-Driven Design and Pocock's AI agent glossary technique. Use when terms are ambiguous, the AI does the wrong thing, or you need to align code with domain concepts.
4
+ version: 1.0.0
5
+ tags: [architecture, domain-driven-design, ai-workflow]
6
+ dependencies: []
7
+ agent_types: [planner, scout]
8
+ tools: [srcwalk_search, grep, memory]
9
+ ---
10
+
11
+ # Ubiquitous Language
12
+
13
+ > Based on Eric Evans' *Domain-Driven Design* and Matt Pocock's AI-agent glossary technique
14
+
15
+ ## Overview
16
+
17
+ A ubiquitous language is a **shared vocabulary** that is used consistently across:
18
+
19
+ - **Code** — types, classes, functions, modules, files
20
+ - **Conversation** — how developers and domain experts talk about the system
21
+ - **AI context** — AGENTS.md, CLAUDE.md, and other files that guide AI agents
22
+ - **Specs and docs** — PRDs, design docs, specifications
23
+
24
+ When these four use the same words for the same concepts, communication is precise, AI agents produce correct code more often, and the "wrong thing" failure mode is dramatically reduced.
25
+
26
+ When they diverge, every translation gap is a bug waiting to happen.
27
+
28
+ > *"Conversations among developers and expressions of the code are all derived from the same domain model."* — Eric Evans
29
+
30
+ **Why this matters for AI agents:** Matt Pocock demonstrated that feeding a structured glossary (extracted from the codebase) as persistent context to an LLM reduces verbose reasoning and aligns implementation more closely with intent. Ubiquitous language isn't a documentation luxury — it's a direct input into AI correctness.
31
+
32
+ ## When to Use
33
+
34
+ - Terms are used interchangeably that shouldn't be ("User" vs "Account" vs "Profile")
35
+ - AI agents consistently implement the wrong concept
36
+ - Specs use different vocabulary than the codebase
37
+ - Starting a new domain module that needs clear boundaries
38
+ - Onboarding new developers or agents who need to learn the vocabulary
39
+ - The codebase has multiple ways to refer to the same domain concept
40
+
41
+ ## When NOT to Use
42
+
43
+ - Trivial utilities with no domain concept at stake
44
+ - Short-lived spike code
45
+ - Already consistent codebases with clear terminology (maintain, don't re-engineer)
46
+
47
+ ## Core Principle
48
+
49
+ > **Every concept in the domain should have exactly one name in the codebase.**
50
+
51
+ If two terms mean the same thing, consolidate. If one term means two different things, split them into separate concepts with separate names.
52
+
53
+ ## Technique 1: Glossary Extraction
54
+
55
+ ### From Codebase
56
+
57
+ Scan the codebase for key terms and build a glossary:
58
+
59
+ ```
60
+ src/
61
+ types/ → Extract type/interface names
62
+ models/ → Extract model/entity names
63
+ routes/ → Extract resource names from URL patterns
64
+ services/ → Extract domain operation names
65
+ commands/ → Extract command/mutation names
66
+ ```
67
+
68
+ **Automated approach:**
69
+ ```bash
70
+ # Extract type definitions (TypeScript example)
71
+ grep -rn "^export (type|interface|class|enum) " src/ --include='*.ts' |
72
+ cut -d' ' -f3- | sort -u
73
+
74
+ # Extract module/file names that correspond to domain concepts
75
+ ls -d src/models/*/ | xargs -I{} basename {} | sort -u
76
+ ```
77
+
78
+ ### From AGENTS.md / Context Files
79
+
80
+ Every term used in your AGENTS.md or CLAUDE.md should map to a code symbol. Cross-reference:
81
+
82
+ 1. List every capitalized noun phrase in AGENTS.md
83
+ 2. Search the codebase for each phrase
84
+ 3. For mismatches: either rename the code symbol or update the context file
85
+
86
+ ### Glossary Table Format
87
+
88
+ ```markdown
89
+ ## Glossary
90
+
91
+ | Term | Definition | Code Symbol | Context |
92
+ |------|------------|-------------|---------|
93
+ | Order | A customer's purchase request in PENDING state | `Order` class, `orders` table | Checkout context |
94
+ | OrderFulfillment | The shipping/delivery of items for an Order | `Fulfillment` class, `fulfillments` table | Fulfillment context |
95
+ | User | An authenticated person using the system | `User` model, `users` table | Auth context |
96
+ | Account | A User's billing/subscription profile | `Account` model, `accounts` table | Billing context |
97
+ ```
98
+
99
+ ## Technique 2: Bounded Context Mapping
100
+
101
+ In DDD, the same term can mean different things in different contexts. The "Ubiquitous" in "Ubiquitous Language" is bounded — it applies *within* one context, not globally.
102
+
103
+ **Example:** An "Order" in the **Checkout** context means "pending payment." An "Order" in the **Fulfillment** context means "packed and shipped." These are different concepts that happen to share a name.
104
+
105
+ ### When Contexts Conflict
106
+
107
+ | Option | When | Tradeoff |
108
+ |---|---|---|
109
+ | **Split the term** | Different behaviors, data, lifecycle | Clearer but more types to manage |
110
+ | **Keep one term, document the phases** | Same entity, different states | Simpler but confusion at boundaries |
111
+ | **Use sub-types** | Shared core with context-specific properties | Precise but more complex |
112
+
113
+ **Default:** Split the term if the two contexts never share code. Keep one term if they share a code path.
114
+
115
+ ## Technique 3: Glossary as AI Context
116
+
117
+ This technique — from Matt Pocock's AI Engineer Summit talk — directly improves AI agent output:
118
+
119
+ 1. **Extract** your glossary from the codebase (Technique 1)
120
+ 2. **Format** it as a markdown table in your AGENTS.md or a dedicated `.md` file
121
+ 3. **Persist** it — include it in every prompt or reference it from context files
122
+ 4. **Read thinking traces** — when the LLM uses a term incorrectly, update the glossary
123
+
124
+ ### Example: Glossary Section in AGENTS.md
125
+
126
+ ```markdown
127
+ ## Glossary
128
+
129
+ - **Order** = `src/orders/Order.ts` — purchase request in PENDING state
130
+ - **Invoice** = `src/billing/Invoice.ts` — billing record generated from Order
131
+ - **Shipment** = `src/fulfillment/Shipment.ts` — physical delivery of items
132
+ ```
133
+
134
+ ### Why This Works
135
+
136
+ Pocock observed that reading the model's thinking traces confirmed this technique:
137
+
138
+ - **Reduces verbose reasoning** — the AI doesn't have to infer what a term means from context
139
+ - **Aligns implementation with intent** — the AI uses the correct code symbols from the start
140
+ - **Prevents drift** — the glossary is extracted from truth (the codebase), not from conversation
141
+
142
+ ## Technique 4: Detecting Language Drift
143
+
144
+ Over time, vocabulary naturally diverges. Watch for:
145
+
146
+ | Signal | What to do |
147
+ |---|---|
148
+ | AI generates a new term the codebase doesn't use | Update the glossary or rename the generated code |
149
+ | Two developers use different names for the same concept | Align on one name, update code and context |
150
+ | AGENTS.md mentions a term not found in code | Add the code symbol or remove the stale term |
151
+ | Same term used for different concepts in code | Refactor or split the type |
152
+ | PR review consistently corrects naming | Create a glossary entry and enforce it |
153
+
154
+ ### Drift Check Frequency
155
+
156
+ - **Per sprint** — scan for new terms in code vs AGENTS.md
157
+ - **Per AI session** — check that AGENTS.md terms match the module you're working in
158
+ - **Per refactor** — regenerate the glossary when domain types change
159
+
160
+ ## Output Checklist
161
+
162
+ - [ ] Glossary extracted from codebase: types, modules, routes, domain operations
163
+ - [ ] AGENTS.md vocabulary cross-referenced against code symbols
164
+ - [ ] Bounded contexts identified where same term has different meanings
165
+ - [ ] Glossary formatted and persisted for AI context
166
+ - [ ] Language drift signals documented for ongoing maintenance
167
+
168
+ ## See Also
169
+
170
+ - **spec-driven-development** — Define vocabulary in the spec before implementation
171
+ - **deep-module-design** — Module boundaries align with bounded contexts
172
+ - **memory-system** — Persist glossary for cross-session AI context
173
+
174
+ ## Skill Result Contract
175
+
176
+ ```xml
177
+ <skill_result>
178
+ <skill>ubiquitous-language</skill>
179
+ <status>success|partial|blocked|failure</status>
180
+ <evidence>Glossary generated, cross-references checked, bounded contexts mapped</evidence>
181
+ <artifacts>Glossary file, AGENTS.md updates, detected drifts</artifacts>
182
+ <risks>Unaligned terms deferred, contexts not fully mapped, or none</risks>
183
+ </skill_result>
184
+ ```
@@ -28,7 +28,7 @@ WHEN: Looking up library APIs, checking function signatures, finding usage examp
28
28
  SKIP: Searching your own codebase (use grep/LSP), general web research (use websearch).
29
29
 
30
30
  Common mistakes:
31
- - DON'T search for internal project code (use grep/tilth instead)
31
+ - DON'T search for internal project code (use grep/srcwalk instead)
32
32
  - DON'T guess library versions — always resolve first, then query
33
33
  - DON'T use for general web research (use websearch instead)
34
34
 
@@ -18,7 +18,7 @@ export default tool({
18
18
  description: `Search real-world code examples from GitHub repositories via grep.app. Replaces asking "how do others use X?" — use this for finding production patterns and real-world API usage.
19
19
 
20
20
  WHEN: Implementing unfamiliar APIs, looking for production patterns, understanding library integrations.
21
- SKIP: Searching your own codebase (use grep/tilth), looking up docs (use context7), general research (use websearch).
21
+ SKIP: Searching your own codebase (use grep/srcwalk), looking up docs (use context7), general research (use websearch).
22
22
 
23
23
  Common mistakes:
24
24
  - DON'T search for keywords like "react tutorial" — search for literal code: "useState("
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencodekit",
3
- "version": "0.21.9",
3
+ "version": "0.22.0",
4
4
  "description": "CLI tool for bootstrapping and managing OpenCodeKit projects",
5
5
  "keywords": [
6
6
  "agents",