Skip to content

Commit dbe6875

Browse files
authored
Merge branch 'main' into feat/add-claude-plugin-config
2 parents 1678f7b + e935df5 commit dbe6875

14 files changed

Lines changed: 844 additions & 274 deletions

.codex-plugin/plugin.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"name": "spanner",
3+
"version": "0.2.6",
4+
"description": "Connect and interact with Spanner data using natural language.",
5+
"author": {
6+
"name": "Google LLC",
7+
"email": "data-cloud-ai-integrations@google.com"
8+
},
9+
"homepage": "https://cloud.google.com/spanner",
10+
"repository": "https://github.com/gemini-cli-extensions/spanner",
11+
"license": "Apache-2.0",
12+
"keywords": [
13+
"spanner",
14+
"google-cloud",
15+
"database"
16+
],
17+
"skills": "./skills/",
18+
"interface": {
19+
"displayName": "Spanner",
20+
"shortDescription": "Connect and interact with Spanner data using natural language.",
21+
"developerName": "Google LLC",
22+
"category": "Database",
23+
"capabilities": [
24+
"Read",
25+
"Write"
26+
],
27+
"defaultPrompt": [
28+
"You are a senior database engineer and administrator specializing in Spanner. Your goal is to help users explore their Spanner databases, manage schemas, and execute queries effectively."
29+
]
30+
}
31+
}

.github/workflows/package-and-upload-assets.yml

Lines changed: 0 additions & 139 deletions
This file was deleted.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: lint
16+
17+
on:
18+
push:
19+
paths-ignore:
20+
- "skills/**"
21+
pull_request:
22+
paths-ignore:
23+
- "skills/**"
24+
pull_request_target:
25+
types: [labeled]
26+
paths-ignore:
27+
- "skills/**"
28+
workflow_dispatch:
29+
30+
jobs:
31+
skills-validate:
32+
runs-on: ubuntu-latest
33+
steps:
34+
- name: Skip Skill Validation
35+
run: |
36+
echo "No changes detected in 'skills/' directory. Skipping validation."
37+
echo "This job ensures the required 'skills-validate' status check passes."
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Validate Skills
16+
17+
on:
18+
push:
19+
paths:
20+
- "skills/**"
21+
pull_request:
22+
paths:
23+
- "skills/**"
24+
pull_request_target:
25+
types: [labeled]
26+
paths:
27+
- "skills/**"
28+
29+
jobs:
30+
skills-validate:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- uses: actions/checkout@v4
34+
35+
- name: Set up Python
36+
uses: actions/setup-python@v5
37+
with:
38+
python-version: "3.11"
39+
40+
- name: Install skills-ref
41+
run: |
42+
pip install "git+https://github.com/agentskills/agentskills.git#subdirectory=skills-ref"
43+
44+
- name: Validate Skills
45+
run: |
46+
failed=0
47+
for skill_dir in skills/*/; do
48+
if [ -d "$skill_dir" ]; then
49+
echo "Validating $skill_dir..."
50+
if ! skills-ref validate "$skill_dir"; then
51+
echo "Validation failed for $skill_dir"
52+
failed=1
53+
fi
54+
fi
55+
done
56+
exit $failed

DEVELOPER.md

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# DEVELOPER.md
22

33
This document provides instructions for setting up your development environment
4-
and contributing to the Spanner Gemini CLI Extension project.
4+
and contributing to the Spanner Agent Skills project.
55

66
## Prerequisites
77

@@ -10,44 +10,29 @@ Before you begin, ensure you have the following:
1010
1. **Gemini CLI:** Install the Gemini CLI version v0.6.0 or above. Installation
1111
instructions can be found on the official Gemini CLI documentation. You can
1212
verify your version by running `gemini --version`.
13-
2. **Spanner Instance:** For testing data plane tools, you will need access to an active Spanner instance and database.
13+
2. **Spanner Instance:** For testing data plane skills, you will need access to an active Spanner instance and database.
1414

1515
## Developing the Extension
1616

1717
### Running from Local Source
1818

19-
The core logic for this extension is handled by a pre-built `toolbox` binary. The development process involves installing the extension locally into the Gemini CLI to test changes.
20-
2119
1. **Clone the Repository:**
2220

2321
```bash
2422
git clone https://github.com/gemini-cli-extensions/spanner.git
2523
cd spanner
2624
```
2725

28-
2. **Download the Toolbox Binary:** The required version of the `toolbox` binary
29-
is specified in `toolbox_version.txt`. Download it for your platform.
30-
31-
```bash
32-
# Read the required version
33-
VERSION=$(cat toolbox_version.txt)
34-
35-
# Example for macOS/amd64
36-
curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/geminicli/v$VERSION/darwin/amd64/toolbox
37-
chmod +x toolbox
38-
```
39-
Adjust the URL for your operating system (`linux/amd64`, `darwin/arm64`, `windows/amd64`).
40-
41-
3. **Link the Extension Locally:** Use the Gemini CLI to install the
26+
2. **Install the Extension Locally:** Use the Gemini CLI to install the
4227
extension from your local directory.
4328

4429
```bash
45-
gemini extensions link .
30+
gemini extensions install .
4631
```
47-
The CLI will prompt you to confirm the linking. Accept it to proceed.
32+
The CLI will prompt you to confirm the installation. Accept it to proceed.
4833

49-
4. **Testing Changes:** After linking, start the Gemini CLI (`gemini`).
50-
You can now interact with the `spanner` tools to manually test your changes
34+
3. **Testing Changes:** After installation, start the Gemini CLI (`gemini`).
35+
You can now interact with the `spanner` skills to manually test your changes
5136
against your connected database.
5237

5338
## Testing
@@ -58,9 +43,9 @@ A GitHub Actions workflow (`.github/workflows/presubmit-tests.yml`) is triggered
5843
for every pull request. This workflow primarily verifies that the extension can
5944
be successfully installed by the Gemini CLI.
6045

61-
Currently, there are no automated unit or integration test suites
62-
within this repository. All functional testing must be performed manually. All tools
63-
are currently tested in the [MCP Toolbox GitHub](https://github.com/googleapis/mcp-toolbox).
46+
All skills are currently tested in the [MCP Toolbox GitHub](https://github.com/googleapis/mcp-toolbox).
47+
48+
The skills themselves are validated using the `skills-validate.yml` workflow.
6449

6550
### Other GitHub Checks
6651

@@ -73,17 +58,6 @@ are currently tested in the [MCP Toolbox GitHub](https://github.com/googleapis/m
7358
* **Dependency Updates:** [Renovate](https://github.com/apps/forking-renovate)
7459
is configured to automatically create pull requests for dependency updates.
7560

76-
## Building the Extension
77-
78-
The "build" process for this extension involves packaging the extension's
79-
metadata files (`gemini-extension.json`, `spanner.md`, `LICENSE`) along with the
80-
pre-built `toolbox` binary into platform-specific archives (`.tar.gz` or `.zip`).
81-
82-
This process is handled automatically by the
83-
[`package-and-upload-assets.yml`](.github/workflows/package-and-upload-assets.yml)
84-
GitHub Actions workflow when a new release is created. Manual building is not
85-
required.
86-
8761
## Maintainer Information
8862

8963
### Team
@@ -138,7 +112,3 @@ The process is handled by the [`mirror-changelog.yml`](.github/workflows/mirror-
138112
2. **Merge Release PR:** A maintainer approves and merges the Release PR. This
139113
action triggers `release-please` to create a new GitHub tag and a
140114
corresponding GitHub Release.
141-
3. **Package and Upload:** The new release triggers the
142-
`package-and-upload-assets.yml` workflow. This workflow builds the
143-
platform-specific extension archives and uploads them as assets to the
144-
GitHub Release.

0 commit comments

Comments
 (0)