Skip to content

Commit cd191c0

Browse files
ldoguinona-agent
andcommitted
update skills
Co-authored-by: Ona <no-reply@ona.com>
1 parent 80b34af commit cd191c0

217 files changed

Lines changed: 10044 additions & 1934 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/validate.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Validate Skills
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches: [main]
7+
8+
jobs:
9+
validate:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Self-test validator
15+
run: bash scripts/test-validator.sh
16+
17+
- name: Validate skill structure
18+
run: bash scripts/validate-skills.sh
19+
20+
- name: Check handoff blocks in sync with routing.yaml
21+
run: bash scripts/sync-handoffs.sh

AGENTS.md

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ A collection of Couchbase agent skills for use in agentic workflows. Each skill
2121
| [`sqlpp-language`](skills/sqlpp-language/) | SQL++ syntax — MISSING vs NULL, META().id, UNNEST, ANY/SATISFIES, ARRAY, JOIN, MERGE, window functions |
2222
| [`error-handling`](skills/error-handling/) | AmbiguousTimeout vs UnambiguousTimeout, common exceptions, retry patterns, sdk-doctor, debug logging |
2323
| [`caching-patterns`](skills/caching-patterns/) | TTL, cache-aside, write-through, getAndTouch, session storage, rate limiting, ephemeral buckets |
24+
| [`testing-patterns`](skills/testing-patterns/) | Testing strategy, test data management, scope/collection isolation — concepts only (no language code) |
25+
| [`testing-patterns-python`](skills/testing-patterns-python/) | Unit testing with unittest.mock, integration testing with testcontainers, scope isolation — Python |
26+
| [`testing-patterns-java`](skills/testing-patterns-java/) | Unit testing with Mockito, integration testing with testcontainers, scope isolation — Java |
27+
| [`testing-patterns-go`](skills/testing-patterns-go/) | Unit testing with testify/mock, integration testing with testcontainers, scope isolation — Go |
28+
| [`testing-patterns-dotnet`](skills/testing-patterns-dotnet/) | Unit testing with Moq, integration testing with Testcontainers.Couchbase, scope isolation — .NET |
29+
| [`testing-patterns-nodejs`](skills/testing-patterns-nodejs/) | Unit testing with Jest, integration testing with testcontainers, scope isolation — Node.js |
30+
| [`testing-patterns-rust`](skills/testing-patterns-rust/) | Unit testing with mockall, integration testing with testcontainers-rs, scope isolation — Rust |
31+
| [`testing-patterns-scala`](skills/testing-patterns-scala/) | Unit testing with ScalaMock, integration testing with testcontainers-scala, scope isolation — Scala |
32+
| [`testing-patterns-php`](skills/testing-patterns-php/) | Unit testing with PHPUnit, integration testing with testcontainers, scope isolation — PHP |
33+
| [`testing-patterns-ruby`](skills/testing-patterns-ruby/) | Unit testing with RSpec doubles, integration testing with testcontainers-ruby, scope isolation — Ruby |
2434

2535
### Couchbase Capella (DBaaS)
2636

@@ -37,6 +47,16 @@ A collection of Couchbase agent skills for use in agentic workflows. Each skill
3747
| [`server-query-optimizer`](skills/server-query-optimizer/) | Diagnose slow queries, recommend GSI indexes, analyze EXPLAIN output, aggregate pushdown |
3848
| [`eventing`](skills/eventing/) | Document-triggered functions — enrichment, cascade delete, timers, curl(), webhooks |
3949
| [`security`](skills/security/) | RBAC users, roles, least-privilege patterns, LDAP, SAML/SSO, TLS |
50+
| [`fle`](skills/fle/) | Field-Level Encryption — client-side field encryption, CryptoManager, supported SDKs, key management |
51+
| [`fle-python`](skills/fle-python/) | FLE with Python SDK — CryptoManager setup, encrypt/decrypt fields |
52+
| [`fle-java`](skills/fle-java/) | FLE with Java SDK — CryptoManager, @Encrypted annotation |
53+
| [`fle-go`](skills/fle-go/) | FLE with Go SDK — CryptoManager, EncryptingTranscoder |
54+
| [`fle-dotnet`](skills/fle-dotnet/) | FLE with .NET SDK — CryptoManager, [EncryptedField] attribute |
55+
| [`fle-nodejs`](skills/fle-nodejs/) | FLE with Node.js SDK — CryptoManager, encryptFields option |
56+
| [`fle-php`](skills/fle-php/) | FLE with PHP SDK — CryptoManager, encryptFields option |
57+
| [`fle-rust`](skills/fle-rust/) | FLE not supported in Rust SDK 1.0 — application-code alternatives |
58+
| [`fle-scala`](skills/fle-scala/) | FLE not supported in Scala SDK — application-code alternatives |
59+
| [`fle-ruby`](skills/fle-ruby/) | FLE not supported in Ruby SDK 3.x — application-code alternatives |
4060
| [`xdcr`](skills/xdcr/) | Cross-datacenter replication — setup, topologies, filtering, conflict resolution |
4161
| [`cluster-ops`](skills/cluster-ops/) | Replicas, failover, rebalance, MDS service topology, server groups |
4262
| [`kafka`](skills/kafka/) | Kafka Connect source/sink, DCP streaming, transactional outbox pattern |
@@ -61,6 +81,9 @@ A collection of Couchbase agent skills for use in agentic workflows. Each skill
6181

6282
#### SDK Connection (per language)
6383

84+
> Each skill includes `references/deployment-scenarios.md` with language-specific Serverless, OLTP, OLAP, High-Traffic, and Multi-Node connection examples.
85+
86+
6487
| Skill | Description |
6588
|---|---|
6689
| [`server-connection-python`](skills/server-connection-python/) | Python SDK connection pools, timeouts, singleton, sub-document, durability |
@@ -86,6 +109,14 @@ A collection of Couchbase agent skills for use in agentic workflows. Each skill
86109
| [`transactions-nodejs`](skills/transactions-nodejs/) | ACID multi-document transactions with Node.js SDK — error handling, durability |
87110
| [`transactions-scala`](skills/transactions-scala/) | ACID multi-document transactions with Scala SDK — sync/async/reactive, error handling |
88111
| [`transactions-php`](skills/transactions-php/) | ACID multi-document transactions with PHP SDK — error handling, durability |
112+
| [`transactions-ruby`](skills/transactions-ruby/) | Transactions not supported in Ruby SDK 3.x — CAS, sub-document atomics, saga pattern alternatives |
113+
| [`transactions-rust`](skills/transactions-rust/) | Transactions not supported in Rust SDK 1.0 — CAS, sub-document atomics, saga pattern alternatives |
114+
115+
#### Full-Text & Vector Search (concept)
116+
117+
| Skill | Description |
118+
|---|---|
119+
| [`search-concepts`](skills/search-concepts/) | FTS, vector search, hybrid search, Flex Index, RAG pipeline — concepts and index setup |
89120

90121
#### Full-Text & Vector Search (per language)
91122

@@ -103,7 +134,7 @@ A collection of Couchbase agent skills for use in agentic workflows. Each skill
103134

104135
#### Analytics (per language)
105136

106-
> Rust SDK 1.0, Scala SDK, PHP SDK, and Ruby SDK do not support the Analytics service.
137+
> Rust SDK 1.0 does not support the Analytics service.
107138
108139
| Skill | Description |
109140
|---|---|
@@ -113,6 +144,10 @@ A collection of Couchbase agent skills for use in agentic workflows. Each skill
113144
| [`analytics-go`](skills/analytics-go/) | OLAP queries, window functions, Analytics datasets with Go SDK |
114145
| [`analytics-dotnet`](skills/analytics-dotnet/) | OLAP queries, window functions, Analytics datasets with .NET SDK |
115146
| [`analytics-nodejs`](skills/analytics-nodejs/) | OLAP queries, window functions, Analytics datasets with Node.js SDK |
147+
| [`analytics-scala`](skills/analytics-scala/) | OLAP queries, window functions, Analytics datasets with Scala SDK |
148+
| [`analytics-php`](skills/analytics-php/) | OLAP queries, window functions, Analytics datasets with PHP SDK |
149+
| [`analytics-ruby`](skills/analytics-ruby/) | OLAP queries, window functions, Analytics datasets with Ruby SDK |
150+
| [`analytics-rust`](skills/analytics-rust/) | Analytics Service not supported in Rust SDK 1.0 — REST API and SQL++ query alternatives |
116151

117152
#### SDK Patterns (per language)
118153

@@ -179,6 +214,8 @@ metadata:
179214
last_verified: "2026-05" # update to current YYYY-MM when you materially edit skill content
180215
min_server_version: "7.0" # optional — minimum Couchbase Server version
181216
deprecated_by: other-skill # optional — set when this skill is superseded
217+
deprecated_since: "8.0" # optional — version from which deprecated_by applies
218+
max_server_version: "7.6" # optional — last version this skill applies to
182219
handoff: # generated from routing.yaml — do not edit manually
183220
- condition: "user asks about slow queries"
184221
skill: server-query-optimizer
@@ -194,10 +231,12 @@ metadata:
194231
| File | Shared by |
195232
|---|---|
196233
| [`shared/server/sdk-connection-concepts.md`](shared/server/sdk-connection-concepts.md) | all server-connection-* skills (9 languages) |
197-
| [`shared/server/deployment-scenarios.md`](shared/server/deployment-scenarios.md) | all server-connection-* skills — serverless, OLTP, OLAP, multi-node topology |
234+
| [`shared/server/durability.md`](shared/server/durability.md) | all server-connection-* skills (9 languages) — guidance on when to use each durability level |
235+
| [`shared/server/subdocument.md`](shared/server/subdocument.md) | all server-connection-* and sdk-patterns-* skills — lookup_in, mutate_in, array ops, counters |
198236
| [`shared/server/sql-syntax.md`](shared/server/sql-syntax.md) | all server-querying-* skills (9 languages) — SELECT, JOINs, MERGE, window functions |
199237
| [`shared/server/analytics-vs-query.md`](shared/server/analytics-vs-query.md) | all analytics-* skills (8 languages) — when to use Analytics vs Query Service |
200238
| [`shared/server/search-concepts.md`](shared/server/search-concepts.md) | all search-* skills (9 languages) — index prerequisites, hybrid search, RYOW, pagination, query types |
239+
| [`shared/server/testing-mock-examples.md`](shared/server/testing-mock-examples.md) | all testing-patterns-* skills (9 languages) — mock pattern reference |
201240
| [`shared/mobile/cbl-core.md`](shared/mobile/cbl-core.md) | mobile-android, mobile-ios |
202241
| [`shared/mobile/sync-architecture.md`](shared/mobile/sync-architecture.md) | mobile-sync-android, mobile-sync-ios |
203242
| [`shared/mobile/conflict-resolution-concepts.md`](shared/mobile/conflict-resolution-concepts.md) | mobile-conflict-resolution-android, mobile-conflict-resolution-ios |
@@ -206,6 +245,12 @@ metadata:
206245
| [`shared/mobile/testing-concepts.md`](shared/mobile/testing-concepts.md) | mobile-testing-android, mobile-testing-ios |
207246
| [`shared/mobile/vector-search-concepts.md`](shared/mobile/vector-search-concepts.md) | mobile-vector-search-android, mobile-vector-search-ios |
208247

248+
### `references/` vs `shared/` policy
249+
250+
- **`shared/`** — content that is language-agnostic and applies to multiple skill families. Add here when the same concepts or multi-language examples would otherwise be duplicated across 3+ skills. Link from SKILL.md with `../../shared/...`.
251+
- **`references/`** inside a skill — content that is specific to that skill's language or narrow topic (e.g., language-specific bulk-ops patterns, reactive API details). Do not put multi-language content here; promote it to `shared/` instead.
252+
- **Rule**: if a `references/` file is identical or near-identical across two or more language skills, it belongs in `shared/`.
253+
209254
## Discovery Manifest
210255

211256
[`discovery.yaml`](discovery.yaml) — canonical source for first-turn routing. Each entry defines `skill`, `priority` (`primary`/`secondary`), `use_when`, and `triggers`. The validator enforces no duplicate triggers across skills and a minimum of 3 triggers per skill. Do **not** add these fields to individual SKILL.md files.
@@ -229,6 +274,8 @@ Runnable helper scripts in `scripts/`:
229274
|---|---|
230275
| [`validate-skills.sh`](scripts/validate-skills.sh) | Validate all skills for structural correctness (no cluster needed) |
231276
| [`sync-handoffs.sh`](scripts/sync-handoffs.sh) | Sync SKILL.md handoff: blocks from routing.yaml (dry-run by default; `--apply` to write) |
277+
| [`eval.sh`](scripts/eval.sh) | List eval cases (`--dry-run`) or run them against an LLM (`--execute`, not yet implemented) |
278+
| [`test-validator.sh`](scripts/test-validator.sh) | Self-test for validate-skills.sh — runs assertions against a minimal fixture tree |
232279
| [`check-cluster.sh`](scripts/check-cluster.sh) | Verify cluster connectivity and run SQL++ smoke tests against travel-sample |
233280
| [`explain-query.sh`](scripts/explain-query.sh) | Run EXPLAIN and highlight plan warnings |
234281
| [`create-gsi-index.sh`](scripts/create-gsi-index.sh) | Create a GSI index via REST API |
@@ -286,7 +333,20 @@ cases:
286333

287334
Keep `input` realistic — use actual user phrasings, not test descriptions. Keep `expect` terms specific enough to distinguish correct from incorrect responses.
288335

289-
> **Eval execution status:** The `examples.md` frontmatter is a specification for LLM-based evaluation — it defines what a correct agent response must contain. `validate-skills.sh` checks structural validity (required fields, recognised language identifiers) but does not execute the cases against an LLM. `check-cluster.sh` tests cluster connectivity via SQL++ smoke tests only and does not read `examples.md`. To run a full eval, send each `input` to an LLM with the skill loaded and assert that `expect` terms appear and `reject` terms do not appear in the response.
336+
**Markdown body** (after the closing `---`): the body is human-readable documentation of the same cases. Each example follows this structure:
337+
338+
```markdown
339+
## Example N
340+
341+
**Input:** <same text as the frontmatter input field>
342+
343+
**Output:**
344+
<representative ideal response, including code blocks where relevant>
345+
```
346+
347+
The body is not parsed by tooling — it exists for human review and as a reference when writing or updating eval cases. Keep it in sync with the frontmatter cases (same order, same inputs).
348+
349+
> **Eval execution status:** The `examples.md` frontmatter is a specification for LLM-based evaluation — it defines what a correct agent response must contain. `validate-skills.sh` checks structural validity (required fields, recognised language identifiers) but does not execute the cases against an LLM. `check-cluster.sh` tests cluster connectivity via SQL++ smoke tests only and does not read `examples.md`. Use `scripts/eval.sh --dry-run` to list all cases; `--execute` (not yet implemented) will run them against an LLM.
290350
291351
## Skill Layout
292352

0 commit comments

Comments
 (0)