opencode-skills-collection 3.1.9 → 3.1.11
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/bundled-skills/.antigravity-install-manifest.json +8 -1
- package/bundled-skills/browser-testing-with-devtools/SKILL.md +334 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/sources/sources.md +4 -0
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/drizzle-migration-conflict/SKILL.md +179 -0
- package/bundled-skills/drizzle-migration-conflict/references/ci-policy.md +87 -0
- package/bundled-skills/drizzle-migration-conflict/references/conflict-resolution.md +163 -0
- package/bundled-skills/drizzle-migration-conflict/references/report-template.md +69 -0
- package/bundled-skills/drizzle-migration-conflict/references/sources.md +51 -0
- package/bundled-skills/drizzle-migration-conflict/scripts/check_drizzle_migrations.py +721 -0
- package/bundled-skills/frontend-lighthouse/SKILL.md +348 -0
- package/bundled-skills/pre-release-review/SKILL.md +198 -0
- package/bundled-skills/pre-release-review/references/checklist.md +104 -0
- package/bundled-skills/pre-release-review/references/report-template.md +91 -0
- package/bundled-skills/re-create/SKILL.md +251 -0
- package/bundled-skills/weaviate/SKILL.md +132 -0
- package/bundled-skills/weaviate/references/ask.md +36 -0
- package/bundled-skills/weaviate/references/create_collection.md +152 -0
- package/bundled-skills/weaviate/references/environment_requirements.md +34 -0
- package/bundled-skills/weaviate/references/example_data.md +24 -0
- package/bundled-skills/weaviate/references/explore_collection.md +50 -0
- package/bundled-skills/weaviate/references/fetch_filter.md +88 -0
- package/bundled-skills/weaviate/references/get_collection.md +32 -0
- package/bundled-skills/weaviate/references/hybrid_search.md +47 -0
- package/bundled-skills/weaviate/references/import_data.md +160 -0
- package/bundled-skills/weaviate/references/keyword_search.md +38 -0
- package/bundled-skills/weaviate/references/list_collections.md +31 -0
- package/bundled-skills/weaviate/references/query_search.md +38 -0
- package/bundled-skills/weaviate/references/semantic_search.md +46 -0
- package/bundled-skills/weaviate/scripts/ask.py +106 -0
- package/bundled-skills/weaviate/scripts/create_collection.py +359 -0
- package/bundled-skills/weaviate/scripts/example_data.py +945 -0
- package/bundled-skills/weaviate/scripts/explore_collection.py +295 -0
- package/bundled-skills/weaviate/scripts/fetch_filter.py +261 -0
- package/bundled-skills/weaviate/scripts/get_collection.py +122 -0
- package/bundled-skills/weaviate/scripts/hybrid_search.py +157 -0
- package/bundled-skills/weaviate/scripts/import.py +701 -0
- package/bundled-skills/weaviate/scripts/keyword_search.py +142 -0
- package/bundled-skills/weaviate/scripts/list_collections.py +77 -0
- package/bundled-skills/weaviate/scripts/query_search.py +135 -0
- package/bundled-skills/weaviate/scripts/semantic_search.py +139 -0
- package/bundled-skills/weaviate/scripts/weaviate_conn.py +231 -0
- package/bundled-skills/weaviate-cookbooks/SKILL.md +67 -0
- package/bundled-skills/weaviate-cookbooks/references/advanced_rag.md +274 -0
- package/bundled-skills/weaviate-cookbooks/references/agentic_rag.md +360 -0
- package/bundled-skills/weaviate-cookbooks/references/async_client.md +428 -0
- package/bundled-skills/weaviate-cookbooks/references/basic_agent.md +270 -0
- package/bundled-skills/weaviate-cookbooks/references/basic_rag.md +219 -0
- package/bundled-skills/weaviate-cookbooks/references/data_explorer.md +336 -0
- package/bundled-skills/weaviate-cookbooks/references/environment_requirements.md +78 -0
- package/bundled-skills/weaviate-cookbooks/references/frontend_interface.md +104 -0
- package/bundled-skills/weaviate-cookbooks/references/pdf_multimodal_rag.md +635 -0
- package/bundled-skills/weaviate-cookbooks/references/project_setup.md +75 -0
- package/bundled-skills/weaviate-cookbooks/references/query_agent_chatbot.md +163 -0
- package/package.json +1 -1
- package/skills_index.json +156 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Pre-release Review Report Template
|
|
2
|
+
|
|
3
|
+
Use this template for the final report. Translate headings to the user's language if useful, but
|
|
4
|
+
keep the same sections, priority labels, conclusion values, and finding fields.
|
|
5
|
+
|
|
6
|
+
## Priority definitions
|
|
7
|
+
|
|
8
|
+
- `P0` - Block release. A production deploy is likely to fail, corrupt data, expose secrets, break
|
|
9
|
+
compatibility, or require a missing manual action.
|
|
10
|
+
- `P1` - High risk, must confirm before release. Evidence suggests a production dependency,
|
|
11
|
+
migration, config, cache, queue, asset, or service-order risk.
|
|
12
|
+
- `P2` - Medium risk or ambiguous gap. Not clearly blocking, but should be checked before release
|
|
13
|
+
because the diff introduces uncertainty.
|
|
14
|
+
- `P3` - Low-risk note. Do not include P3 in the main report unless the user asks for a complete
|
|
15
|
+
audit log.
|
|
16
|
+
|
|
17
|
+
## Conclusion values
|
|
18
|
+
|
|
19
|
+
- `BLOCKED` - At least one P0 finding exists.
|
|
20
|
+
- `NEEDS_CONFIRMATION` - No P0 was found, but one or more P1/P2 items need confirmation.
|
|
21
|
+
- `NO_BLOCKER_FOUND` - No P0-P2 finding or release confirmation item was found from available
|
|
22
|
+
evidence. Neutral verification limits may still be listed separately.
|
|
23
|
+
|
|
24
|
+
## Findings versus Unable To Verify
|
|
25
|
+
|
|
26
|
+
- Put diff-linked production risks in `Findings`. Examples: a new env var whose production value
|
|
27
|
+
cannot be verified, a schema change with unclear migration execution, or a new queue whose
|
|
28
|
+
infrastructure is not confirmed.
|
|
29
|
+
- Any P1 or P2 finding means the conclusion is `NEEDS_CONFIRMATION` unless a P0 makes it `BLOCKED`.
|
|
30
|
+
- Put only neutral tool or access limits in `Unable To Verify`. Examples: remote PR access is
|
|
31
|
+
unavailable, deployment platform access is unavailable, or owner inference failed without a
|
|
32
|
+
specific release-critical change.
|
|
33
|
+
- If an access/tool limitation prevents confirmation of a release-critical diff change, promote it
|
|
34
|
+
to a P1/P2 finding instead of leaving it only in `Unable To Verify`.
|
|
35
|
+
|
|
36
|
+
## Owner inference
|
|
37
|
+
|
|
38
|
+
- Prefer `git blame` on changed lines for the file and line that caused the finding.
|
|
39
|
+
- If blame is unavailable or misleading, use `git log --format="%h %an %s" -- <path>`.
|
|
40
|
+
- If several commits contributed to the same release risk, list all relevant author names.
|
|
41
|
+
- Mark owners as "inferred" and do not expose email addresses.
|
|
42
|
+
- If no owner can be inferred, write `Unknown (not inferable from local git evidence)`.
|
|
43
|
+
|
|
44
|
+
## Secret redaction
|
|
45
|
+
|
|
46
|
+
- Never print secret values, even partially, unless the value is already a harmless placeholder such
|
|
47
|
+
as `example`, `changeme`, or `REDACTED`.
|
|
48
|
+
- Report secrets as: path, line, variable/key name, type, and redacted hint.
|
|
49
|
+
- Example: `config/prod.env:12` - `PAYMENT_API_KEY`, suspected API key, value redacted.
|
|
50
|
+
- Do not paste PEM blocks, JWTs, cookies, session IDs, private keys, passwords, certificates, or
|
|
51
|
+
cloud credentials into the report.
|
|
52
|
+
|
|
53
|
+
## Final report shape
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
# Production Release Readiness Review
|
|
57
|
+
|
|
58
|
+
## Scope
|
|
59
|
+
- Range: <base>..<head> | PR <number> | latest 5 commits fallback
|
|
60
|
+
- Current branch: <branch>
|
|
61
|
+
- Head commit: <hash>
|
|
62
|
+
- Compared from: <tag/hash/pr-base>
|
|
63
|
+
- Commit count: <count>
|
|
64
|
+
- Dirty worktree: <yes/no and short note>
|
|
65
|
+
- Commands used: <short list of read-only commands>
|
|
66
|
+
|
|
67
|
+
## Conclusion
|
|
68
|
+
`BLOCKED` | `NEEDS_CONFIRMATION` | `NO_BLOCKER_FOUND`
|
|
69
|
+
|
|
70
|
+
## Findings
|
|
71
|
+
| Priority | Module | Finding | Evidence | Inferred owner | Risk | Recommended action |
|
|
72
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
73
|
+
| P0/P1/P2 | <area/service> | <short issue> | <file:line or commit/range> | <name(s) or unknown> | <why it matters> | <release action> |
|
|
74
|
+
|
|
75
|
+
## Deployment Order / Release Actions
|
|
76
|
+
- <Only include when relevant. State service order, migrations, queue/cache/resource actions, and compatibility constraints.>
|
|
77
|
+
|
|
78
|
+
## Unable To Verify
|
|
79
|
+
- <Tooling, auth, remote, production-config, or repository limits that prevent confirmation.>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Finding writing rules
|
|
83
|
+
|
|
84
|
+
- Keep each finding actionable and short.
|
|
85
|
+
- Include only P0-P2 or explicit confirmation risks.
|
|
86
|
+
- Do not include clean categories like "database OK" or "security OK".
|
|
87
|
+
- Use evidence-driven wording: "schema changed but no migration file changed" is better than
|
|
88
|
+
"maybe migration missing".
|
|
89
|
+
- If risk is ambiguous, say exactly what must be confirmed before release.
|
|
90
|
+
- If no findings exist, omit the `Findings` table and write:
|
|
91
|
+
`No P0-P2 release blockers or confirmation items were found from the available repository evidence.`
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: re-create
|
|
3
|
+
description: "Completely delete and rewrite a file or module from scratch when structural rot makes patching impossible."
|
|
4
|
+
risk: critical
|
|
5
|
+
source: community
|
|
6
|
+
date_added: "2026-06-27"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# re-create — Controlled Erasure & Rebuild Protocol
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
> Hollow Purple is Gojo's most destructive technique — blue and red combined into total erasure of the target. But Gojo doesn't use it carelessly. He knows exactly what he's erasing and why. Same here: this skill is the nuclear option, invoked only when patching is the wrong call, executed with full control over what gets erased and what must survive.
|
|
14
|
+
|
|
15
|
+
Rewrites are dangerous not because rebuilding is hard, but because it is easy to silently erase behavior that was working and expected. This skill enforces a complete inventory of what must survive before a single line is deleted, and a full verification that everything survived after the rebuild.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## When to Use This Skill
|
|
20
|
+
|
|
21
|
+
- Use when a file, module, or component needs to be completely deleted and rewritten from scratch
|
|
22
|
+
- Use when structural rot is so deep that individual fixes would only make it worse
|
|
23
|
+
- Use when accumulated technical debt makes the code unmaintainable
|
|
24
|
+
- Use when the target is fundamentally broken and beyond saving
|
|
25
|
+
- **DO NOT** use for partial refactors, single-function fixes, or targeted edits
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## How It Works
|
|
30
|
+
|
|
31
|
+
### PHASE 1 — Justify the Erasure
|
|
32
|
+
|
|
33
|
+
The AI must prove that a full rewrite is necessary. It must answer all of the following:
|
|
34
|
+
|
|
35
|
+
1. **What specifically is broken or unsalvageable?**
|
|
36
|
+
- Not "it's messy" — specific structural problems that make targeted fixes impossible or counterproductive
|
|
37
|
+
2. **Why would targeted edits make things worse, not better?**
|
|
38
|
+
- Patching on top of rot, compounding complexity, architectural mismatch
|
|
39
|
+
3. **What is the concrete cost of keeping the current implementation?**
|
|
40
|
+
- Maintenance burden, bug surface, performance, developer velocity
|
|
41
|
+
|
|
42
|
+
If the AI cannot clearly answer all three, it must fall back to targeted edits instead of a rewrite. A rewrite is not a reward for messy code — it is a last resort.
|
|
43
|
+
|
|
44
|
+
> **The bar is high.** "This code is ugly" does not justify hollow purple. "The architecture assumes X but the system now requires Y and every patch makes the mismatch worse" does.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
### PHASE 2 — Read the Target Completely
|
|
49
|
+
|
|
50
|
+
Before proposing deletion, the AI must read the entire target (file, module, or component) in full.
|
|
51
|
+
|
|
52
|
+
The AI must identify and catalog:
|
|
53
|
+
|
|
54
|
+
1. **Public interfaces** — functions, classes, types, or exports that other parts of the codebase call
|
|
55
|
+
2. **Implicit contracts** — behaviors that other files depend on even if not formally typed
|
|
56
|
+
3. **Working behaviors** — things the current implementation does correctly that must continue to work
|
|
57
|
+
4. **Non-obvious logic** — edge cases, guards, or special handling that looks incidental but is intentional
|
|
58
|
+
5. **Blast radius** — every file in the codebase that imports from or depends on the target
|
|
59
|
+
|
|
60
|
+
> **The AI cannot skip this phase even if it has read the file before.** The purpose is not familiarity — it is building the Preservation List.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### PHASE 3 — Erasure Declaration (User Must Confirm)
|
|
65
|
+
|
|
66
|
+
The AI outputs a complete erasure plan and **waits for user confirmation before deleting or writing anything.**
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
HOLLOW PURPLE — ERASURE PLAN
|
|
70
|
+
─────────────────────────────────────────
|
|
71
|
+
TARGET FOR ERASURE:
|
|
72
|
+
[file path or module name]
|
|
73
|
+
|
|
74
|
+
WHY TARGETED FIXES ARE WRONG:
|
|
75
|
+
[specific justification — architectural rot, fundamental mismatch, etc.]
|
|
76
|
+
|
|
77
|
+
PRESERVATION LIST (must survive the rewrite):
|
|
78
|
+
- [public interface / export 1] → [what it does, who depends on it]
|
|
79
|
+
- [public interface / export 2] → [what it does, who depends on it]
|
|
80
|
+
- [working behavior 1] → [what it does, why it must be kept]
|
|
81
|
+
- [non-obvious logic 1] → [what it guards against]
|
|
82
|
+
|
|
83
|
+
BLAST RADIUS (files that depend on the target):
|
|
84
|
+
- [file path] → depends on [what specifically]
|
|
85
|
+
- [file path] → depends on [what specifically]
|
|
86
|
+
|
|
87
|
+
NEW IMPLEMENTATION PLAN:
|
|
88
|
+
[Description of what the rebuild will look like — structure, approach, key decisions]
|
|
89
|
+
|
|
90
|
+
WHAT WILL NOT BE PRESERVED:
|
|
91
|
+
[Anything intentionally dropped and why — dead code, deprecated behavior, etc.]
|
|
92
|
+
─────────────────────────────────────────
|
|
93
|
+
Confirm to proceed with erasure and rebuild.
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
> **Nothing is deleted until the user explicitly confirms.** A reply of "yes", "confirmed", "do it", or equivalent counts. Silence does not.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### PHASE 4 — Controlled Erasure
|
|
101
|
+
|
|
102
|
+
User confirms → the target is deleted. Rules for this phase:
|
|
103
|
+
|
|
104
|
+
- **Delete cleanly.** Not commented out, not renamed to `_old`, not archived in place — deleted.
|
|
105
|
+
- **Delete only the declared target.** Nothing outside the declared scope is touched during erasure.
|
|
106
|
+
- **Pause if scope expands.** If deletion reveals unexpected dependencies not in the blast radius list, the AI stops and reports before continuing.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### PHASE 5 — Rebuild Against the Preservation List
|
|
111
|
+
|
|
112
|
+
The AI writes the new implementation. Rules:
|
|
113
|
+
|
|
114
|
+
1. **Every item on the Preservation List is an obligation.** The rebuild is not complete until every preserved interface, behavior, and edge case is implemented and checked off.
|
|
115
|
+
2. **Match the blast radius expectations.** Files that depended on the old implementation must be able to use the new one without changes — unless changes to dependent files were declared in Phase 3.
|
|
116
|
+
3. **No bonus features.** The rebuild implements what was declared. New improvements, extra functionality, and cleanup of adjacent things are a separate task.
|
|
117
|
+
4. **Follow existing codebase conventions.** The new implementation must use the same patterns, naming conventions, and style as the surrounding codebase — not whatever the AI prefers.
|
|
118
|
+
|
|
119
|
+
The AI tracks preservation progress explicitly:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
REBUILD PROGRESS
|
|
123
|
+
─────────────────────────────────────────
|
|
124
|
+
Preservation List:
|
|
125
|
+
✓ [interface 1] → implemented
|
|
126
|
+
✓ [working behavior 1] → implemented
|
|
127
|
+
✗ [non-obvious logic 1] → pending
|
|
128
|
+
─────────────────────────────────────────
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### PHASE 6 — Blast Radius Verification
|
|
134
|
+
|
|
135
|
+
After the rebuild is complete, the AI checks every file in the blast radius:
|
|
136
|
+
|
|
137
|
+
1. **Re-read each dependent file** and confirm it can still use the new implementation
|
|
138
|
+
2. **Verify each dependency** — the function signatures, exports, and behaviors it relied on are present in the rebuild
|
|
139
|
+
3. **Flag any breakage** — if a dependent file now has a mismatch, report it and propose a fix before declaring done
|
|
140
|
+
|
|
141
|
+
Final verification report:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
HOLLOW PURPLE — VERIFICATION
|
|
145
|
+
─────────────────────────────────────────
|
|
146
|
+
Preservation List: ALL ITEMS ✓
|
|
147
|
+
Blast radius files checked:
|
|
148
|
+
- [file] → ✓ compatible with new implementation
|
|
149
|
+
- [file] → ✓ compatible with new implementation
|
|
150
|
+
New issues introduced: NONE / [describe if found]
|
|
151
|
+
─────────────────────────────────────────
|
|
152
|
+
Status: CLEAN ✓ / NEEDS FOLLOW-UP ⚠
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Self-Ask Before Erasure
|
|
158
|
+
|
|
159
|
+
The AI must answer all four before Phase 4 begins:
|
|
160
|
+
|
|
161
|
+
| # | Question | Required |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| 1 | Have I read the entire target and built a complete Preservation List? | Yes — or read more |
|
|
164
|
+
| 2 | Have I identified the full blast radius? | Yes — or search more |
|
|
165
|
+
| 3 | Has the user confirmed the erasure plan? | Yes — or wait |
|
|
166
|
+
| 4 | Is the erasure scoped exactly to what was declared? | Yes — or re-declare |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Hard Rules (Never Violated)
|
|
171
|
+
|
|
172
|
+
- **No deletion before user confirmation.** Ever.
|
|
173
|
+
- **No deletion before the Preservation List is complete.** You cannot protect what you haven't inventoried.
|
|
174
|
+
- **No "clean up while I'm at it" during rebuild.** The rebuild scope is exactly what was declared.
|
|
175
|
+
- **No undeclared blast radius expansion.** If a dependent file wasn't in the list, stop and report it.
|
|
176
|
+
- **No skipping Phase 6.** The rebuild is not done until blast radius files are verified.
|
|
177
|
+
- **No rewrites disguised as refactors.** If more than 80% of a file is being changed, this protocol applies.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## What This Skill Prevents
|
|
182
|
+
|
|
183
|
+
- Rewrites that silently drop working edge-case logic that wasn't documented
|
|
184
|
+
- Rebuilds that break dependent files because their interfaces changed
|
|
185
|
+
- Rewrites done for the wrong reason (style preference, boredom) when a targeted fix would have been better
|
|
186
|
+
- Partial rebuilds that leave the codebase in a broken half-old-half-new state
|
|
187
|
+
- Blast radius files breaking silently with no one noticing until runtime
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Quick Reference
|
|
192
|
+
|
|
193
|
+
| Phase | Action | Deletes/Writes Code? |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| 1 — Justify | Prove erasure is necessary | ❌ No |
|
|
196
|
+
| 2 — Read | Read target fully, build Preservation List | ❌ No |
|
|
197
|
+
| 3 — Declare | Output erasure plan, wait for confirmation | ❌ No |
|
|
198
|
+
| 4 — Erase | Delete the declared target | 🗑️ Deletes only |
|
|
199
|
+
| 5 — Rebuild | Write new implementation against Preservation List | ✅ Writes |
|
|
200
|
+
| 6 — Verify | Check Preservation List + blast radius | ❌ No |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Security & Safety Notes
|
|
205
|
+
|
|
206
|
+
- **Authorized Use Only:** This skill involves destructive capabilities (deleting files). Always ensure you have appropriate authorization and backups before triggering a full rebuild.
|
|
207
|
+
- **Explicit Confirmation Required:** No code should ever be deleted without explicit user confirmation of the Erasure Plan.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Examples
|
|
212
|
+
|
|
213
|
+
### Example 1: Triggering a full module rewrite
|
|
214
|
+
```text
|
|
215
|
+
User: "The authentication module is beyond saving. Rewrite this from scratch."
|
|
216
|
+
|
|
217
|
+
AI: [Outputs HOLLOW PURPLE — ERASURE PLAN]
|
|
218
|
+
"Confirm to proceed with erasure and rebuild."
|
|
219
|
+
|
|
220
|
+
User: "Confirmed."
|
|
221
|
+
|
|
222
|
+
AI: [Executes Phase 4 and 5: Controlled Erasure and Rebuild against the Preservation List]
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Example 2: Erasure correctly rejected in Phase 1
|
|
226
|
+
```text
|
|
227
|
+
User: "This data formatting script is a mess, rewrite it from scratch."
|
|
228
|
+
|
|
229
|
+
AI: [Evaluates Phase 1 criteria]
|
|
230
|
+
"I cannot justify a full rewrite. While the code is messy, the structural rot is not deep enough to make patching impossible. The blast radius is limited, and targeted edits will improve it without the risk of erasing undocumented behaviors. I will proceed with surgical refactoring instead."
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Trigger Phrases
|
|
236
|
+
|
|
237
|
+
- "rewrite this from scratch"
|
|
238
|
+
- "delete this and redo it"
|
|
239
|
+
- "this is beyond saving / beyond repair"
|
|
240
|
+
- "the whole module / component / file is broken"
|
|
241
|
+
- "start over on this"
|
|
242
|
+
- Any situation where patching would compound the problem rather than solve it
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Limitations
|
|
247
|
+
|
|
248
|
+
- The AI must explicitly justify the rewrite and receive user confirmation before deleting anything.
|
|
249
|
+
- The rebuild scope must exactly match what was declared (no bonus features or extra cleanup).
|
|
250
|
+
- Does not apply to partial refactoring, single-function fixes, or targeted bug fixes.
|
|
251
|
+
- It requires identifying the full blast radius upfront to avoid silently breaking dependencies.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: weaviate
|
|
3
|
+
description: "Search, query, inspect, create, and import data into Weaviate vector database collections using official scripts and references."
|
|
4
|
+
category: databases
|
|
5
|
+
risk: critical
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: weaviate/agent-skills
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-06-29"
|
|
10
|
+
author: Weaviate
|
|
11
|
+
tags: [weaviate, vector-database, semantic-search, hybrid-search, data-import]
|
|
12
|
+
tools: [python, weaviate]
|
|
13
|
+
license: "BSD-3-Clause"
|
|
14
|
+
license_source: "https://github.com/weaviate/agent-skills/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Weaviate Database Operations
|
|
18
|
+
|
|
19
|
+
This skill provides comprehensive access to Weaviate vector databases including search operations, natural language queries, schema inspection, data exploration, filtered fetching, collection creation, and data imports.
|
|
20
|
+
|
|
21
|
+
## When to Use This Skill
|
|
22
|
+
|
|
23
|
+
- Use when the user needs to inspect Weaviate collections, schemas, or data distribution.
|
|
24
|
+
- Use when running semantic, hybrid, keyword, filtered, or Query Agent searches against Weaviate.
|
|
25
|
+
- Use when importing CSV, JSON, JSONL, or PDF data into a Weaviate collection.
|
|
26
|
+
- Use when creating example data or a collection for a Weaviate-backed workflow.
|
|
27
|
+
|
|
28
|
+
### Weaviate Cloud Instance
|
|
29
|
+
|
|
30
|
+
If the user does not have an instance yet, direct them to the cloud console to register and create a free sandbox. Create a Weaviate instance via [Weaviate Cloud](https://console.weaviate.cloud/signin?utm_source=github&utm_campaign=agent_skills).
|
|
31
|
+
|
|
32
|
+
## Environment Variables
|
|
33
|
+
|
|
34
|
+
**Required:**
|
|
35
|
+
|
|
36
|
+
- `WEAVIATE_URL` - Your Weaviate Cloud cluster URL
|
|
37
|
+
- `WEAVIATE_API_KEY` - Your Weaviate API key
|
|
38
|
+
|
|
39
|
+
**External Provider Keys (auto-detected):**
|
|
40
|
+
Set only the keys your collections use, refer to [Environment Requirements](references/environment_requirements.md) for more information.
|
|
41
|
+
|
|
42
|
+
## Script Index
|
|
43
|
+
|
|
44
|
+
### Search & Query
|
|
45
|
+
|
|
46
|
+
- [Query Agent - Ask Mode](references/ask.md): Use when the user wants a **direct answer** to a question based on collection data. The Query Agent synthesizes information from one or more collections and returns a structured response with source citations (collection name and object ID).
|
|
47
|
+
- [Query Agent - Search Mode](references/query_search.md): Use when the user wants to **explore or browse raw objects** across one or more collections. Unlike ask mode, this returns the actual data objects rather than a synthesized answer.
|
|
48
|
+
- [Hybrid Search](references/hybrid_search.md): **Default choice for most searches.** Provides a good balance of semantic understanding and exact keyword matching. Use this when you are unsure which search type to pick.
|
|
49
|
+
- [Semantic Search](references/semantic_search.md): Use for finding **conceptually similar content** regardless of exact wording. Best when the intent matters more than specific keywords.
|
|
50
|
+
- [Keyword Search](references/keyword_search.md): Use for finding **exact terms, IDs, SKUs, or specific text patterns**. Best when precise keyword matching is needed rather than semantic similarity.
|
|
51
|
+
|
|
52
|
+
### Collection Management
|
|
53
|
+
|
|
54
|
+
- [List Collections](references/list_collections.md): Use to **discover what collections exist** in the Weaviate instance. This should typically be the first step before performing any search or data operation.
|
|
55
|
+
- [Get Collection Details](references/get_collection.md): Use to **understand a collection's schema** — its properties, data types, vectorizer configuration, replication factor, and multi-tenancy status. Helpful before running searches or imports.
|
|
56
|
+
- [Explore Collection](references/explore_collection.md): Use to **analyze data distribution, top values, and inspect actual content** in a collection. Helpful for understanding what data looks like before querying.
|
|
57
|
+
- [Create Collection](references/create_collection.md): Use to **create new collections with custom schemas** before importing data. Do not specify a vectorizer unless the user explicitly requests one (the default `text2vec_weaviate` is used).
|
|
58
|
+
|
|
59
|
+
### Data Operations
|
|
60
|
+
|
|
61
|
+
- [Fetch and Filter](references/fetch_filter.md): Use to **retrieve specific objects by ID** or **strictly filtered subsets** of data. Best for precise data retrieval rather than search.
|
|
62
|
+
- [Import Data](references/import_data.md): **Use this when the user asks to import, load, or ingest a file (CSV, JSON, JSONL, PDF) into a collection.**
|
|
63
|
+
- [Create Example Data](references/example_data.md): Use to create example data for immediate use of other skills, if no data is available or user requests some toy data.
|
|
64
|
+
|
|
65
|
+
## Recommendations
|
|
66
|
+
|
|
67
|
+
1. **Start by listing collections** if you don't know what's available:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv run scripts/list_collections.py
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
2. **Ask the user** if they want to **create example data** if nothing is available and the user requests it. Otherwise continue.
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
uv run scripts/example_data.py
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
3. **Get collection details** to understand the schema:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
uv run scripts/get_collection.py --name "COLLECTION_NAME"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
4. **Explore collection data** to see values and statistics:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
uv run scripts/explore_collection.py "COLLECTION_NAME"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
5. **Create a collection** if importing a new CSV, JSON, or JSONL file — the collection must exist before importing:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
uv run scripts/create_collection.py CollectionName \
|
|
95
|
+
--properties '[{"name": "title", "data_type": "text"}, {"name": "body", "data_type": "text"}]'
|
|
96
|
+
```
|
|
97
|
+
> Do not specify a vectorizer unless the user explicitly requests one.
|
|
98
|
+
|
|
99
|
+
6. **Import data** into an existing collection:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
uv run scripts/import.py "data.csv" --collection "CollectionName"
|
|
103
|
+
```
|
|
104
|
+
> For PDF imports, the collection is created automatically — skip step 5.
|
|
105
|
+
|
|
106
|
+
7. **Choose the right search type:**
|
|
107
|
+
- Get AI-powered answers with source citations across multiple collections → `ask.py`
|
|
108
|
+
- Get raw objects from multiple collections → `query_search.py`
|
|
109
|
+
- General search → `hybrid_search.py` (default)
|
|
110
|
+
- Conceptual similarity → `semantic_search.py`
|
|
111
|
+
- Exact terms/IDs → `keyword_search.py`
|
|
112
|
+
|
|
113
|
+
## Output Formats
|
|
114
|
+
|
|
115
|
+
All scripts support:
|
|
116
|
+
|
|
117
|
+
- **Markdown tables** (default and recommended)
|
|
118
|
+
- **JSON** (`--json` flag)
|
|
119
|
+
|
|
120
|
+
## Error Handling
|
|
121
|
+
|
|
122
|
+
Common errors:
|
|
123
|
+
|
|
124
|
+
- `WEAVIATE_URL not set` → Set the environment variable
|
|
125
|
+
- `Collection not found` → Use `list_collections.py` to see available collections
|
|
126
|
+
- `Authentication error` → Check API keys for both Weaviate and vectorizer providers
|
|
127
|
+
|
|
128
|
+
## Limitations
|
|
129
|
+
|
|
130
|
+
- This skill requires a reachable Weaviate instance and valid credentials before live operations can succeed.
|
|
131
|
+
- Data import, collection creation, and query-agent operations can change or expose user data; confirm the target instance and collection before running scripts.
|
|
132
|
+
- The included scripts are Weaviate-focused and do not replace broader data-governance, backup, or production migration procedures.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Query Agent - Ask Mode
|
|
2
|
+
|
|
3
|
+
Generate AI-powered answers with source citations using the Weaviate Query Agent.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
uv run scripts/ask.py --query "USER_QUESTION" --collections "Collection1,Collection2" [--json]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Flag | Required | Default | Description |
|
|
14
|
+
|-----------|------|----------|---------|-------------|
|
|
15
|
+
| `--query` | `-q` | Yes | — | Natural language question |
|
|
16
|
+
| `--collections` | `-c` | Yes | — | Comma-separated collection names to query across |
|
|
17
|
+
| `--json` | — | No | `false` | Output in JSON format |
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
- **Default**: Markdown-formatted answer with a sources table
|
|
22
|
+
- **JSON**: Structured response with `answer` and `sources` fields
|
|
23
|
+
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
Ask a question across multiple collections:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
uv run scripts/ask.py --query "What are the main topics in the dataset?" --collections "Articles,Reports"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
JSON output:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
uv run scripts/ask.py --query "Summarize recent findings" --collections "Research" --json
|
|
36
|
+
```
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Create Collection
|
|
2
|
+
|
|
3
|
+
Create a new Weaviate collection with a custom schema, optional vectorizer, and multi-tenancy support.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
uv run scripts/create_collection.py CollectionName --properties '[...]' [--description "..."] [--vectorizer "..."] [--replication-factor N] [--multi-tenancy] [--auto-tenant-creation] [--json]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Flag | Required | Default | Description |
|
|
14
|
+
|-----------|------|----------|---------|-------------|
|
|
15
|
+
| `name` | — | Yes (positional) | — | Collection name (auto-capitalized per GraphQL convention) |
|
|
16
|
+
| `--properties` | `-p` | Yes | — | JSON array of property definitions |
|
|
17
|
+
| `--description` | `-d` | No | — | Collection description — **strongly recommended**. Weaviate agents (Query Agent, Personalization Agent) read this to understand what the collection contains and decide which collection to query |
|
|
18
|
+
| `--vectorizer` | `-v` | No | `text2vec_weaviate` | Vectorizer module to use |
|
|
19
|
+
| `--replication-factor` | `-r` | No | — | Replication factor (defers to server default when not set) |
|
|
20
|
+
| `--multi-tenancy` | `-m` | No | `false` | Enable multi-tenancy for data isolation |
|
|
21
|
+
| `--auto-tenant-creation` | `-a` | No | `false` | Auto-create tenants on insert (requires `--multi-tenancy`) |
|
|
22
|
+
| `--json` | — | No | `false` | Output in JSON format |
|
|
23
|
+
|
|
24
|
+
## Property Definition Format
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"name": "property_name",
|
|
29
|
+
"data_type": "text",
|
|
30
|
+
"description": "Optional description",
|
|
31
|
+
"tokenization": "word",
|
|
32
|
+
"index_filterable": true,
|
|
33
|
+
"index_searchable": true,
|
|
34
|
+
"index_range_filters": false,
|
|
35
|
+
"nested_properties": []
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- `name` (required): Property name
|
|
40
|
+
- `data_type` (required): One of the supported data types below
|
|
41
|
+
- `description` (optional): Human-readable description — **strongly recommended**. The Query Agent reads property descriptions to understand your schema, choose the right collection, and construct accurate queries. Good descriptions include units, formats, and valid values (e.g., `"Price in US dollars (USD)"`, `"ISO two-character country code"`, `"Date the paper was published on arXiv"`)
|
|
42
|
+
- `tokenization` (optional): For text types — `word`, `lowercase`, `whitespace`, or `field`
|
|
43
|
+
- `index_filterable` (optional): Enable roaring-bitmap filter index for `where` clauses. Default `true` for all types except `blob`, `geoCoordinates`, `object`, `object[]`, `phoneNumber`
|
|
44
|
+
- `index_searchable` (optional): Enable BM25/inverted index for keyword and hybrid search. Only applies to `text` and `text[]`. Default `true`
|
|
45
|
+
- `index_range_filters` (optional): Enable range-comparison index (`>`, `<`, `>=`, `<=`, `between`) for `int`, `int[]`, `number`, `number[]`, `date`, `date[]`. Default `false` — **set to `true` for any numeric or date field you plan to range-filter**
|
|
46
|
+
- `nested_properties` (optional): For `object` / `object[]` types — array of nested property definitions
|
|
47
|
+
|
|
48
|
+
## Supported Data Types
|
|
49
|
+
|
|
50
|
+
`text`, `text[]`, `boolean`, `boolean[]`, `int`, `int[]`, `number`, `number[]`, `date`, `date[]`, `uuid`, `uuid[]`, `geoCoordinates`, `phoneNumber`, `blob`, `object`, `object[]`
|
|
51
|
+
|
|
52
|
+
Aliases: `bool` → `boolean`, `bool[]` → `boolean[]`
|
|
53
|
+
|
|
54
|
+
## Supported Vectorizers
|
|
55
|
+
|
|
56
|
+
`text2vec_weaviate`, `text2vec_openai`, `text2vec_cohere`, `text2vec_huggingface`, `text2vec_palm`, `text2vec_jinaai`, `text2vec_voyageai`, `text2vec_contextionary`, `text2vec_transformers`, `text2vec_gpt4all`, `text2vec_ollama`, `multi2vec_clip`, `multi2vec_bind`, `multi2vec_palm`, `img2vec_neural`, `ref2vec_centroid`, `none`
|
|
57
|
+
|
|
58
|
+
## Inferring Schema from Data Files
|
|
59
|
+
|
|
60
|
+
Before creating a collection, inspect a few rows from the source file to understand field names and value types. Use the commands below — they read only the first 3 objects and are safe on large files.
|
|
61
|
+
|
|
62
|
+
**CSV:**
|
|
63
|
+
```bash
|
|
64
|
+
python3 -c "
|
|
65
|
+
import csv, json
|
|
66
|
+
with open('data.csv') as f:
|
|
67
|
+
rows = list(csv.DictReader(f))[:3]
|
|
68
|
+
print(json.dumps(rows, indent=2))
|
|
69
|
+
"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**JSON:**
|
|
73
|
+
```bash
|
|
74
|
+
python3 -c "
|
|
75
|
+
import json
|
|
76
|
+
print(json.dumps(json.load(open('data.json'))[:3], indent=2))
|
|
77
|
+
"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**JSONL:**
|
|
81
|
+
```bash
|
|
82
|
+
python3 -c "
|
|
83
|
+
import json
|
|
84
|
+
lines = []
|
|
85
|
+
with open('data.jsonl') as f:
|
|
86
|
+
for line in f:
|
|
87
|
+
if len(lines) >= 3: break
|
|
88
|
+
if line.strip(): lines.append(json.loads(line))
|
|
89
|
+
print(json.dumps(lines, indent=2))
|
|
90
|
+
"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
From the sample, map each field to a Weaviate data type:
|
|
94
|
+
|
|
95
|
+
| Value looks like | data_type |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `"hello"`, any text | `text` |
|
|
98
|
+
| `123`, `"123"` | `int` |
|
|
99
|
+
| `1.5`, `"1.5"` | `number` |
|
|
100
|
+
| `true`/`false` | `boolean` |
|
|
101
|
+
| `"2024-01-15"`, `"2024-01-15T10:30:00Z"` | `date` |
|
|
102
|
+
| UUID-shaped string | `uuid` |
|
|
103
|
+
| List of strings | `text[]` |
|
|
104
|
+
| List of numbers | `int[]` or `number[]` |
|
|
105
|
+
| Nested object | `object` |
|
|
106
|
+
|
|
107
|
+
**Important:** `id`, `_id`, and `_additional` are reserved by Weaviate — never use them as property names. If they appear in your data, use `--skip-fields` or `--mapping` in `import.py` to handle them.
|
|
108
|
+
|
|
109
|
+
## Examples
|
|
110
|
+
|
|
111
|
+
Basic collection:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
uv run scripts/create_collection.py Article \
|
|
115
|
+
--description "News articles with title and full body text." \
|
|
116
|
+
--properties '[
|
|
117
|
+
{"name": "title", "data_type": "text", "description": "Title of the article"},
|
|
118
|
+
{"name": "body", "data_type": "text", "description": "Full text body of the article"}
|
|
119
|
+
]'
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Collection with various data types, descriptions, and recommended index flags:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
uv run scripts/create_collection.py Product \
|
|
126
|
+
--description "E-commerce product catalog with pricing, brand, stock status, and tags." \
|
|
127
|
+
--properties '[
|
|
128
|
+
{"name": "name", "data_type": "text", "description": "Name or title of the product"},
|
|
129
|
+
{"name": "sku", "data_type": "text", "index_searchable": false, "description": "Stock-keeping unit identifier"},
|
|
130
|
+
{"name": "price", "data_type": "number", "index_range_filters": true, "description": "Product price in US dollars (USD)"},
|
|
131
|
+
{"name": "created_at", "data_type": "date", "index_range_filters": true, "description": "Date the product was added to the catalog"},
|
|
132
|
+
{"name": "in_stock", "data_type": "boolean", "description": "Whether the product is currently in stock"},
|
|
133
|
+
{"name": "tags", "data_type": "text[]", "description": "List of descriptive tags for the product"}
|
|
134
|
+
]'
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
With explicit vectorizer:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
uv run scripts/create_collection.py Article \
|
|
141
|
+
--description "News articles with title and full body text." \
|
|
142
|
+
--properties '[{"name": "title", "data_type": "text", "description": "Title of the article"}]' \
|
|
143
|
+
--vectorizer "text2vec_openai"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
With multi-tenancy:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
uv run scripts/create_collection.py Workspace \
|
|
150
|
+
--properties '[{"name": "content", "data_type": "text"}]' \
|
|
151
|
+
--multi-tenancy --auto-tenant-creation
|
|
152
|
+
```
|