From 6964c50d425d8b5e93f1f7961a0c64ab7b86921f Mon Sep 17 00:00:00 2001 From: Petr Date: Tue, 24 Mar 2026 22:33:09 +0100 Subject: [PATCH 1/2] Update context with new config list fields and token owner info - Document last_modified, last_modified_by, folder fields in config list - Document token owner identity in org setup section --- src/keboola_agent_cli/commands/context.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/keboola_agent_cli/commands/context.py b/src/keboola_agent_cli/commands/context.py index 24031c00..0c06fa7a 100644 --- a/src/keboola_agent_cli/commands/context.py +++ b/src/keboola_agent_cli/commands/context.py @@ -78,6 +78,9 @@ --project can be repeated to query multiple projects. --component-type: extractor, writer, transformation, application --component-id: specific component (e.g. keboola.ex-db-snowflake) + Output includes: last_modified, last_modified_by, last_change_description, + and folder (from KBC.configuration.folderName metadata -- useful for + distinguishing active vs archived transformations). Examples: kbagent --json config list kbagent --json config list --project prod @@ -172,6 +175,10 @@ --yes / -y Skip confirmation prompt. --token-description Description prefix for created tokens (default: kbagent-cli). + Token names include owner identity resolved from the manage token: + "kbagent-cli [john.doe@company.com]" -- so multiple users on the same + project have uniquely identifiable tokens in the Keboola UI. + Examples: kbagent org setup --org-id 123 --url https://connection.keboola.com --dry-run kbagent --json org setup --org-id 123 --url https://connection.keboola.com From 484343f639a9769dc50e5f4355a1bd94ee1898b2 Mon Sep 17 00:00:00 2001 From: Petr Date: Tue, 24 Mar 2026 22:35:49 +0100 Subject: [PATCH 2/2] Add Snowflake quoting best practice and plugin install info - Tip #15: ALWAYS double-quote database/schema/table names in Snowflake workspace queries (unquoted identifiers become UPPERCASE -> not found) - Tip #18: How to install the kbagent Claude Code plugin for automatic skill triggering --- src/keboola_agent_cli/commands/context.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/keboola_agent_cli/commands/context.py b/src/keboola_agent_cli/commands/context.py index 0c06fa7a..e1f43346 100644 --- a/src/keboola_agent_cli/commands/context.py +++ b/src/keboola_agent_cli/commands/context.py @@ -565,6 +565,17 @@ kbagent --json workspace load --project prod --workspace-id WS_ID --tables in.c-bucket.my-table kbagent --json workspace query --project prod --workspace-id WS_ID --sql "SELECT * FROM \"my-table\" LIMIT 10" + IMPORTANT -- Snowflake quoting rules for workspace queries: + Snowflake converts unquoted identifiers to UPPERCASE. If a database, + schema, or table name contains lowercase letters, dots, or hyphens, + you MUST double-quote it. This applies to ALL identifiers: + WRONG: SELECT * FROM sap_9.my_schema.my_table + (Snowflake reads this as SAP_9.MY_SCHEMA.MY_TABLE -- not found!) + RIGHT: SELECT * FROM "sap_9"."my_schema"."my_table" + Best practice: ALWAYS double-quote database, schema, and table names + in workspace queries, even if they look like they don't need it. + Keboola workspace database/schema names are often lowercase. + 16. Setting up projects -- two approaches: a) Single project (you have a Storage API token): @@ -597,6 +608,14 @@ kbagent --json sync pull --project prod # ... edit, push, then merge via PR + Keboola UI +18. Claude Code plugin -- teach Claude how to use kbagent automatically: + Install the kbagent skill as a Claude Code plugin: + claude install-plugin https://github.com/padak/keboola_agent_cli + After installation, Claude Code will automatically know when and how + to use kbagent commands (the skill triggers on Keboola-related tasks). + The plugin provides a decision table mapping goals to commands and + references for common workflows (workspace debugging, branch lifecycle). + ## Exit Codes 0 Success