Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
29a5384
skill(datagrok): routing
Aleksashka11 May 9, 2026
d9bc412
skill(datagrok): user-settings-storage
Aleksashka11 May 9, 2026
c548de8
skill(datagrok): access-data
Aleksashka11 May 9, 2026
561e4db
skill(datagrok): db-in-docker
Aleksashka11 May 9, 2026
9e5da43
skill(datagrok): db-in-plugin
Aleksashka11 May 9, 2026
381bb58
skill(datagrok): register-identifiers
Aleksashka11 May 9, 2026
67c23f3
skill(datagrok): create-custom-file-viewers
Aleksashka11 May 9, 2026
be3131c
skill(datagrok): file-exporters
Aleksashka11 May 9, 2026
1e2e7fc
skill(datagrok): file-handlers
Aleksashka11 May 9, 2026
6ee3d04
skill(datagrok): folder-content-preview
Aleksashka11 May 9, 2026
b3d3488
skill(datagrok): column-tooltip
Aleksashka11 May 9, 2026
bd2b8ee
skill(datagrok): custom-cell-renderers
Aleksashka11 May 9, 2026
b1761bd
skill(datagrok): custom-package-settings-editors
Aleksashka11 May 9, 2026
c25f26a
skill(datagrok): data-enrichments
Aleksashka11 May 9, 2026
266ed52
skill(datagrok): docker-containers
Aleksashka11 May 9, 2026
2db3f77
skill(datagrok): publish-packages
Aleksashka11 May 9, 2026
fd9d4f9
skill(datagrok): work-with-package-files
Aleksashka11 May 9, 2026
27acf16
skill(datagrok): show-formula-lines
Aleksashka11 May 9, 2026
3cff1af
skill(datagrok): custom-views
Aleksashka11 May 9, 2026
5be7d94
skill(datagrok): layouts
Aleksashka11 May 9, 2026
0aad393
skill(datagrok): extensions
Aleksashka11 May 9, 2026
e9eee95
skill(datagrok): js-api
Aleksashka11 May 9, 2026
bb04d1c
skill(datagrok): rest-api
Aleksashka11 May 9, 2026
e0ccc5b
skill(datagrok): cheminformatics
Aleksashka11 May 9, 2026
8cb498d
skill(datagrok): docking
Aleksashka11 May 9, 2026
9be65a2
skill(datagrok): define-semantic-type-detectors
Aleksashka11 May 10, 2026
799187b
skill(datagrok): customize-grid
Aleksashka11 May 10, 2026
9baf803
skill(datagrok): python-functions
Aleksashka11 May 10, 2026
a167183
skill(datagrok): context-actions
Aleksashka11 May 10, 2026
1019fd0
skill(datagrok): manipulate-viewers
Aleksashka11 May 10, 2026
62bacb5
skill(datagrok): intro
Aleksashka11 May 10, 2026
56b3ab5
skill(datagrok): custom-filters
Aleksashka11 May 10, 2026
73a13bd
skill(datagrok): develop-custom-viewer
Aleksashka11 May 10, 2026
2dd1297
skill(datagrok): custom-script-handlers
Aleksashka11 May 11, 2026
8e6729c
skill(datagrok): add-info-panel
Aleksashka11 May 11, 2026
48473e9
docs(routing): fix four drifts found by skill-harness verification
Aleksashka11 May 11, 2026
d3e3b5c
skill(datagrok): add-package-tests
Aleksashka11 May 11, 2026
209ce5f
skill(datagrok): build-app
Aleksashka11 May 11, 2026
a2d97dc
docs(access-data): fix three drifts found by skill-harness verification
Aleksashka11 May 11, 2026
61f414f
skill(datagrok): manage-credentials
Aleksashka11 May 11, 2026
0c18e9a
docs(db-in-docker): fix three drifts found by skill-harness verification
Aleksashka11 May 11, 2026
3969970
skill(datagrok): test-package
Aleksashka11 May 11, 2026
8b91076
skill(datagrok): write-demo-script
Aleksashka11 May 11, 2026
c956927
docs(agent-guide): refresh from skill-harness pipeline
Aleksashka11 May 11, 2026
e5dc596
docs(agent-guide): refresh from skill-harness pipeline
Aleksashka11 May 11, 2026
2a6a07f
docs(agent-guide): refresh from skill-harness pipeline
Aleksashka11 May 11, 2026
9fff8cb
docs(agent-guide): refresh from skill-harness pipeline
Aleksashka11 May 11, 2026
22f7afa
docs(agent-guide): refresh from skill-harness pipeline
Aleksashka11 May 11, 2026
5595050
docs(ui): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
186a7d6
docs(cheminformatics): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
bf1a11f
docs(docking): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
112a7a6
docs(hit_triage_system): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
6265770
docs(build-an-app): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
bf8e21a
docs(user-settings-storage): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
787836b
docs(db-in-plugin): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
7abf75d
docs(register-identifiers): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
026ed82
docs(create-custom-file-viewers): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
c36c5d6
docs(file-exporters): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
4dc9e31
docs(folder-content-preview): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
e4928de
docs(cache-function-results): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
6a4f2ff
docs(column-tooltip): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
1249b18
docs(custom-cell-renderers): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
2fbf947
docs(customize-grid): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
5be6a52
docs(write-demo-scripts): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
43969b1
docs(write-tutorials): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
8c315f2
docs(docker-containers): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
73941e8
docs(home-page-widgets): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
06ea656
docs(manage-credentials): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
2d44893
docs(publish-packages): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
8615df1
docs(python-functions): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
586aaaa
docs(work-with-package-files): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
1d46cd9
docs(custom-script-handlers): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
c6e602c
docs(add-package-tests): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
4b7a74c
docs(test-packages): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
f92b5d0
docs(add-info-panel): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
47abdcf
docs(context-actions): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
274801a
docs(custom-filters): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
d15474a
docs(develop-custom-viewer): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
bfb7487
docs(manipulate-viewers): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
02c4e98
docs(show-formula-lines): autonomous drift fixes (NEEDS-REVIEW)
Aleksashka11 May 11, 2026
57b8ebe
docs(custom-views): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
0f610be
docs(js-api): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
16e3365
docs(rest-api): autonomous drift fixes (COMPLETED)
Aleksashka11 May 11, 2026
f1d0492
docs(agent-guide): refresh from skill-harness pipeline
Aleksashka11 May 11, 2026
9b767cb
skill(datagrok): build-an-app
Aleksashka11 May 11, 2026
5aeed49
skill(datagrok): build-an-app
Aleksashka11 May 12, 2026
378e013
skill(datagrok): routing
Aleksashka11 May 12, 2026
524b4ed
skill(datagrok): user-settings-storage
Aleksashka11 May 12, 2026
85cbc92
skill(datagrok): db-in-plugin
Aleksashka11 May 12, 2026
36a9044
skill(datagrok): create-custom-file-viewers
Aleksashka11 May 12, 2026
670e1b2
skill(datagrok): register-identifiers
Aleksashka11 May 12, 2026
1a53f29
skill(datagrok): file-handlers
Aleksashka11 May 12, 2026
e06fa6b
skill(datagrok): file-exporters
Aleksashka11 May 12, 2026
7e9b54a
skill(datagrok): cache-function-results
Aleksashka11 May 12, 2026
d5eb463
skill(datagrok): access-data
Aleksashka11 May 12, 2026
cc65a39
skill(datagrok): upload-data
Aleksashka11 May 12, 2026
57a47af
skill(datagrok): db-in-docker
Aleksashka11 May 12, 2026
7943112
skill(datagrok): db-in-docker
Aleksashka11 May 12, 2026
7c0bcf7
skill(datagrok): folder-content-preview
Aleksashka11 May 12, 2026
29734a8
skill(datagrok): define-semantic-type-detectors
Aleksashka11 May 12, 2026
36efa35
skill(datagrok): column-tooltip
Aleksashka11 May 12, 2026
0d30386
skill(datagrok): custom-cell-renderers
Aleksashka11 May 12, 2026
bd311af
skill(datagrok): customize-grid
Aleksashka11 May 12, 2026
ccf7057
skill(datagrok): write-demo-scripts
Aleksashka11 May 12, 2026
fc06c5c
skill(datagrok): write-tutorials
Aleksashka11 May 12, 2026
c8fd752
skill(datagrok): custom-package-settings-editors
Aleksashka11 May 12, 2026
0818089
skill(datagrok): data-enrichments
Aleksashka11 May 12, 2026
1f62a5d
skill(datagrok): home-page-widgets
Aleksashka11 May 12, 2026
191993e
skill(datagrok): manage-credentials
Aleksashka11 May 12, 2026
d61d2ec
skill(datagrok): publish-packages
Aleksashka11 May 12, 2026
eddd36c
skill(datagrok): python-functions
Aleksashka11 May 12, 2026
4c9b6bf
skill(datagrok): work-with-package-files
Aleksashka11 May 12, 2026
56f9f8b
skill(datagrok): add-package-tests
Aleksashka11 May 12, 2026
9fd18fe
skill(datagrok): test-packages
Aleksashka11 May 12, 2026
781dd4f
skill(datagrok): add-info-panel
Aleksashka11 May 13, 2026
b3e5f9c
skill(datagrok): custom-filters
Aleksashka11 May 13, 2026
db5be43
skill(datagrok): develop-custom-viewer
Aleksashka11 May 13, 2026
bb4d25e
skill(datagrok): manipulate-viewers
Aleksashka11 May 13, 2026
771b9ba
skill(datagrok): show-formula-lines
Aleksashka11 May 13, 2026
f66f35e
skill(datagrok): custom-views
Aleksashka11 May 13, 2026
d8e8d79
skill(datagrok): layouts
Aleksashka11 May 13, 2026
6c8bc09
skill(datagrok): create-package
Aleksashka11 May 13, 2026
724cbab
skill(datagrok): docker-containers
Aleksashka11 May 13, 2026
d4c45d5
Help: Refine help article fixes
Aleksashka11 May 13, 2026
0b70e7b
skill(datagrok): custom-script-handlers
Aleksashka11 May 13, 2026
ebd73a4
skill(datagrok): context-actions
Aleksashka11 May 13, 2026
4fe8f24
docs(agent-guide): sync knowledge-graph/component-registry/api-map fr…
Aleksashka11 May 13, 2026
5e1ab9a
docs(agent-guide): dedupe facts, fix ID collisions, strip orphan DRIF…
Aleksashka11 May 13, 2026
e3a5887
refactor(skills): shard knowledge per skill, trim boilerplate, strip …
Aleksashka11 May 13, 2026
b771cfd
skills: remove 10 legacy duplicate skills superseded by harness-autho…
Aleksashka11 May 13, 2026
71fbb64
skills: co-locate per-skill facts.yaml with SKILL.md; flatten knowledge/
Aleksashka11 May 13, 2026
411cf20
skills: round-2 simplification — trim prose duplicating facts.yaml
Aleksashka11 May 13, 2026
1978af2
chore: drop redundant _facts.yaml + remove leaked credentials
Aleksashka11 May 13, 2026
1c34513
chore: remove .credentials.json.bak; broaden gitignore pattern
Aleksashka11 May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
635 changes: 635 additions & 0 deletions .claude/knowledge/api-map.md

Large diffs are not rendered by default.

611 changes: 611 additions & 0 deletions .claude/knowledge/component-registry.md

Large diffs are not rendered by default.

6,623 changes: 6,623 additions & 0 deletions .claude/knowledge/knowledge-graph.md

Large diffs are not rendered by default.

120 changes: 120 additions & 0 deletions .claude/skills/access-data/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
---
name: access-data
version: 0.2.1
description: |
Pull rows from an external SQL database into a Datagrok `DataFrame` —
declare a connection, store credentials, author a parameterized query,
and call it from TypeScript. For plugin authors whose code needs data
from outside the browser. Produces `connections/<name>.json` +
`queries/<name>.sql` (registering a `<Package>:<Query>` function) and
the TS that resolves the query into a `DataFrame`.
Use when asked to "pull rows from a database into a dataframe", "wire
a parameterized SQL query into my plugin", or "store DB credentials
for a Datagrok connection". For REST endpoints see
`fetch-external-rest`; for bundled CSVs see `load-bundled-csv`; for
user/server files see `read-server-file`.
triggers:
- pull rows from postgres into dataframe
- wire a parameterized sql query
- register a sql query as a package function
- store database credentials securely
- declare a datagrok data connection
allowed-tools:
- Read
- Edit
- Write
- Bash
---

## Cited facts

See [`facts.yaml`](./facts.yaml) — concrete API references for the `DG-FACT-NNN` citations used below.

# access-data

## When to use

Your package needs rows from an external SQL database materialized as a
`DataFrame` — with `grok publish` wiring the connection, credentials
kept out of git, and one JS call to run the query. The spine is four
steps: declare the connection, transfer credentials, author the query,
call it from TypeScript.

## Steps

1. **Declare the data connection in `connections/<name>.json`.**
Scaffold with `grok add connection <name>`. Secrets go under
`credentials.parameters`, never inside `parameters` or `connString`.
See `DG-FACT-400` (file shape), `DG-FACT-401` (exact `dataSource`
strings — `Postgres`/`PostgresDart`/`MariaDB`/`MS SQL`/...; lowercase
forms don't match), `DG-FACT-409` (credentials routing).
```json
{
"#type": "DataConnection", "name": "Chembl",
"parameters": {"server": "db.datagrok.ai", "port": 54325,
"db": "chembl", "cacheResults": true},
"credentials": {"parameters": {"login": "", "password": ""}},
"dataSource": "Postgres"
}
```
Expected: `grok publish` registers the connection as
`<Package>:<Name>` (case-insensitive at lookup).

2. **Transfer credentials after the first deploy.** POST them once
published so they route through Datagrok's credentials store. The
dotted path targets one connection; `.../for/<Package>` (no dot)
targets the package itself (see `DG-FACT-409`).
```bash
curl -X POST "$GROK_HOST/api/credentials/for/$PACKAGE.$CONNECTION" \
-H "Authorization: $API_KEY" -H "Content-Type: application/json" \
-d '{"login":"abc","password":"123"}'
```
Expected: `200 OK`. Read back via `await _package.getCredentials()`
→ `c.parameters['<key>']` (NOT `c.openParameters`).

3. **Author the parameterized SQL query in `queries/<basename>.sql`.**
Scaffold with `grok add query <name>`. See `DG-FACT-402` (header
grammar: `--name`, `--friendlyName`, `--description`, `--connection`,
`--input`; `@name` references; `--end` separator) and `DG-FACT-403`
(one query per file when attaching sibling `<basename>.js` post-
process or `<basename>.layout` — binding is by basename).
```sql
--name: ProteinClassification
--connection: Chembl
--input: int level = 1
select * from protein_classification where class_level = @level
```
Expected: `grok publish` registers `<Package>:ProteinClassification`.

4. **Execute the query from TypeScript.** Pass only `(queryName,
parameters)` — see `DG-FACT-404` for signature (3rd `adHoc` is
`@deprecated`; no 4th argument exists).
```typescript
import * as grok from 'datagrok-api/grok';

const df = await grok.data.query(
`${_package.name}:ProteinClassification`, {level: 1});
grok.shell.addTableView(df);
```
Expected: a `TableView` opens with the query result. For a scalar
return type use `grok.data.query<number>(...)`.

## Common failure modes

- 3rd/4th arg to `grok.data.query(...)` — drop them (`DG-FACT-404`).
- `dataSource` set to lowercase `postgres`/`mssql` — exact match required (`DG-FACT-401`).
- Credentials in `parameters`/`connString` — move under `credentials.parameters` and POST per step 2 (`DG-FACT-400`, `DG-FACT-409`).
- Sibling `<basename>.js`/`.layout` not applied — split multi-query files (`DG-FACT-403`).
- Sharing connection didn't share queries — sharing is one-way query→connection (`DG-FACT-410`).

## See also

- Source: `help/develop/how-to/db/access-data.md`
(mirror: `docs/_internal/articles-mirror/how-to/db/access-data.md`).
- Knowledge (`docs/_internal/knowledge/knowledge-graph.md`):
`DG-FACT-400` – `DG-FACT-404`, `DG-FACT-409`, `DG-FACT-410`.
- Related skills: `create-package` (scaffolds `connections/` and
`queries/`), `manage-credentials` (general form of step 2),
`fetch-external-rest` (REST via `grok.dapi.fetchProxy`),
`load-bundled-csv` (`_package.webRoot` + `grok.data.loadTable`),
`read-server-file` (`OpenServerFile` / `grok.dapi.files.*`).
137 changes: 137 additions & 0 deletions .claude/skills/access-data/facts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# Facts cited by the `access-data` skill.
# Generated from knowledge-graph.md — do not edit by hand.
# Total facts: 7

- id: DG-FACT-400
kind: naming
scope: access-data
value: |
Package data connection = a JSON file under `packages/<Pkg>/connections/`.
REQUIRED fields: `parameters` (data-source-specific object) and
`dataSource` (connector name string). OPTIONAL: `name` (defaults to the
filename minus `.json`), `description`, `tags` (string[]),
`credentials.parameters` (login/password etc — routed through the
credentials store, NOT the world-readable `parameters` block).
Connection names are case-insensitive at lookup time (server behavior;
not observable in JS-API). Reachable as `<Pkg>:<ConnectionName>` after
deploy. `grok add connection <name>` scaffolds a template.
derives_from:
- article: help/develop/how-to/db/access-data.md:29-114
- code: packages/Chembl/connections/chembl.json
- code: packages/DBTests/connections/postgres-test-docker.json
contradicts: []
confidence: high

- id: DG-FACT-401
kind: enum
scope: access-data
value: |
`dataSource` value is exact-string-matched server-side; observed
canonical values in production: `Postgres`, `PostgresDart`, `MariaDB`,
`MySQL`, `MS SQL` (with space), `Oracle`, `Snowflake`, `ClickHouse`,
`Neo4j`, `Access`, `Files`. The set is open (controlled by the
`connectors` registry on the server) but lowercase/abbreviated
spellings (`postgres`, `mssql`) DO NOT match. The article calls out
`Postgres` (line 38 example uses `PostgresDart`), `MariaDB` (line 106)
and `Files` (line 287). Each connector has its own required
`parameters` shape — see `help/access/databases/connectors/`.
derives_from:
- article: help/develop/how-to/db/access-data.md:38,106,287
- code: packages/DBTests/connections/*.json (10 distinct dataSource values)
contradicts: []
confidence: high

- id: DG-FACT-402
kind: naming
scope: access-data
value: |
SQL queries live in `packages/<Pkg>/queries/`. A query file (`.sql`)
contains one or more queries, each opened by a header block of
`--`-prefixed annotations and terminated by `--end` (omit `--end` if
only one query per file). Recognized headers (per `--<key>: <value>`):
`--name` (required for multi-query files; otherwise defaults to
filename), `--friendlyName`, `--description`, `--connection: <Pkg>:<Conn>`
(omit if the package has only one connection), `--input: <type> <name>
[= <default>]` (one per parameter). Parameters in the SQL body are
referenced as `@name`. `grok add query <name>` scaffolds a template.
derives_from:
- article: help/develop/how-to/db/access-data.md:120-165
- code: packages/Chembl/queries/queries.sql:1-45
contradicts: []
confidence: high

- id: DG-FACT-403
kind: naming
scope: access-data
value: |
Post-processing script + layout are linked to a query by EXACT basename
match: `queries/foo.sql` (the query), `queries/foo.js` (post-process
script — accepts the result DataFrame as input), `queries/foo.layout`
(layout applied to the result). Hard invariant: a file that needs an
associated `.js` or `.layout` MUST contain exactly ONE query — the
association is by filename, not by query name. Multi-query files break
the binding silently.
derives_from:
- article: help/develop/how-to/db/access-data.md:189-213
contradicts: []
confidence: high

- id: DG-FACT-404
kind: namespace
scope: access-data
value: |
`grok.data.query<T = DataFrame>(queryName, queryParameters?: object | null
= null, adHoc?: boolean = false): Promise<T>` — async (`async` in source),
returns the resolved query result coerced to `T`. The 3rd `adHoc`
parameter is JSDoc-marked `@deprecated` and slated for removal — skill
code must omit it. `queryName` is `<Package>:<QueryName>` (the same
fully-qualified form the console uses). Internally calls
`grok_CallFunc(queryName, queryParameters, true, null)`. There is NO
4th polling-interval argument (signature has 3 positional slots).
derives_from:
- article: help/develop/how-to/db/access-data.md:179-185
- code: js-api/src/data.ts:255-262
contradicts: []
confidence: high

- id: DG-FACT-409
kind: namespace
scope: access-data
value: |
Connection credentials are NEVER stored in the JSON committed to git —
after deploy, POST them to
`$(GROK_HOST)/api/credentials/for/$(PACKAGE_NAME).$(CONNECTION_NAME)`
with body `{"login":"...","password":"..."}` (any param keys per
connector) and headers `Authorization: $(API_KEY)`,
`Content-Type: application/json`. The API key is the user's personal
token from their profile page (e.g. https://public.datagrok.ai/u).
The dotted entity form targets a specific connection; omitting the
dot (`...PACKAGE_NAME` alone) targets the package itself for
package-level credentials. Read-back from JS:
`await _package.getCredentials(): Promise<Credentials | null>` →
`c.parameters['<key>']` (NOT `c.openParameters`, which is the redacted
display copy).
derives_from:
- article: help/develop/how-to/db/access-data.md:81-116
- code: js-api/src/entities/misc.ts:163-166
- code: js-api/src/entities/data-connection.ts:396-415
contradicts: []
confidence: high

- id: DG-FACT-410
kind: naming
scope: access-data
value: |
Connection sharing is one-way: sharing a QUERY auto-shares its
underlying connection (including web/OpenAPI queries that ride on the
connection); sharing the CONNECTION does NOT auto-share its queries.
Inheritance rule per article — "access rights of a database connection
are inherited from the access rights of a query. However, the access
rights of a query don't inherit the access rights of the database
connection." Skill authors that distribute a package with private
queries must therefore share each query explicitly; sharing the
connection alone leaves queries inaccessible.
derives_from:
- article: help/develop/how-to/db/access-data.md:217-222
contradicts: []
confidence: medium
Loading
Loading