chore: move skill into SKILL.md (#55)
* chore: move skill into SKILL.md By following the [skill spec](https://agentskills.io), and putting the skill definition in a SKILL.md file, the Colab skill will be installable via community tools, e.g. `npx skills install ...` and indices like https://skills.sh/ * chore: move SKILL.md into a skills/ dir * docs: added install instruction to SKILL.md
Mark McDonald committed
Jun 18, 2026 at 02:02 UTC
0e22a02373807f08b0f11b560c5f552761ac0328
4 files changed
+15
-5
pyproject.toml
+1
-1
@@ -61,7 +61,7 @@ packages = ["src/colab_cli"]
61
62
[tool.hatch.build.targets.wheel.force-include]
63
"README.md" = "colab_cli/README.md"
64
-"COLAB_SKILL.md" = "colab_cli/COLAB_SKILL.md"
64
+"skills/colab-operator/SKILL.md" = "colab_cli/SKILL.md"
65
66
[tool.uv]
67
package = true
skills/colab-operator/SKILL.md
renamed
+10
@@ -1,7 +1,17 @@
1
+---
2
+name: colab-operator
3
+description: Operate Google Colab environments via the `colab` CLI. Use when asked to create or manage GPU/TPU sessions, run Python/shell on a remote Colab VM, sync files, automate environment setup (packages, auth, Drive), or export session history.
4
+---
5
+
6
# Skill: Colab Session Operator
7
8
Operate Google Colab environments via the `colab` CLI: provision GPU/TPU sessions, run Python/shell on the VM, sync files, and capture work as notebooks.
9
10
+## Installation
11
+
12
+If the user does not already have the `colab` tool installed, it can be acquired
13
+by running `uv tool install google-colab-cli` or `pip install google-colab-cli`.
14
+
15
## When to activate
16
- Creating or managing TPU/GPU sessions.
17
- Running Python or shell on a remote Colab VM.
src/colab_cli/commands/utility.py
+2
-2
@@ -417,8 +417,8 @@ def readme():
417
418
419
def skill():
420
- """Print the bundled COLAB_SKILL.md file"""
421
- _print_resource("COLAB_SKILL.md")
420
+ """Print the bundled SKILL.md file"""
421
+ _print_resource("SKILL.md")
422
423
424
def register(app: typer.Typer):
tests/test_readme.py
+2
-2
@@ -52,7 +52,7 @@ def test_skill_from_resources(mock_resources):
52
mock_skill.read_text.return_value = "Fake SKILL content"
53
54
def joinpath_side_effect(name):
55
- if name == "COLAB_SKILL.md":
55
+ if name == "SKILL.md":
56
return mock_skill
57
return MagicMock(is_file=MagicMock(return_value=False))
58
@@ -62,7 +62,7 @@ def test_skill_from_resources(mock_resources):
62
assert result.exit_code == 0
63
assert result.output.strip() == "Fake SKILL content"
64
mock_resources.assert_called_once_with("colab_cli")
65
- mock_resources.return_value.joinpath.assert_called_with("COLAB_SKILL.md")
65
+ mock_resources.return_value.joinpath.assert_called_with("SKILL.md")
66
67
68
def test_readme_fallback_to_file(mock_resources):