GreptimeDB Dev Docker Image
GreptimeTeam/greptimedb
Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.
A skill your agent uses when the user wants to set up or configure tsk Docker container images, customize their tsk.toml for Docker builds, configure stack/agent/project layers, or troubleshoot tsk…
$ npx skills add dtormoen/tsk-tsk --skill tsk-config -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dtormoen/tsk-tsk tsk-config --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dtormoen/tsk-tsk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tsk-config/skills/tsk-config .claude/skills/tsk-config && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "tsk-config" agent skill from https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-config into .claude/skills/tsk-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsk-config", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-configType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dtormoen/tsk-tsk --skill tsk-config -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dtormoen/tsk-tsk tsk-config --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dtormoen/tsk-tsk.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tsk-config/skills/tsk-config .agents/skills/tsk-config && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tsk-config" agent skill from https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-config into .agents/skills/tsk-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsk-config", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dtormoen/tsk-tsk --skill tsk-config -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dtormoen/tsk-tsk tsk-config --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dtormoen/tsk-tsk.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tsk-config/skills/tsk-config .cursor/skills/tsk-config && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tsk-config" agent skill from https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-config into .cursor/skills/tsk-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsk-config", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dtormoen/tsk-tsk.git --path skills/tsk-config/skills/tsk-config--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dtormoen/tsk-tsk --skill tsk-config -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dtormoen/tsk-tsk tsk-config --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dtormoen/tsk-tsk.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tsk-config/skills/tsk-config .gemini/skills/tsk-config && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tsk-config" agent skill from https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-config into .gemini/skills/tsk-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsk-config", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dtormoen/tsk-tsk tsk-configInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dtormoen/tsk-tsk --skill tsk-config -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dtormoen/tsk-tsk.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tsk-config/skills/tsk-config .github/skills/tsk-config && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tsk-config" agent skill from https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-config into .github/skills/tsk-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsk-config", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dtormoen/tsk-tsk --skill tsk-config -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dtormoen/tsk-tsk tsk-config --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dtormoen/tsk-tsk.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tsk-config/skills/tsk-config .opencode/skills/tsk-config && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tsk-config" agent skill from https://github.com/dtormoen/tsk-tsk/tree/main/skills/tsk-config/skills/tsk-config into .opencode/skills/tsk-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsk-config", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tsk-configA skill your agent uses when the user wants to set up or configure tsk Docker container images, customize their tsk.toml for Docker builds, configure stack/agent/project layers, or troubleshoot tsk…
Tsk Config is an agent skill from dtormoen/tsk-tsk. Use this skill when the user wants to set up or configure tsk Docker container images, customize their tsk.toml for Docker builds, configure stack/agent/project layers, or troubleshoot tsk container build issues.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering Containers. It works with Docker and Rust. The repository describes itself as: Keeping your agents out of trouble with sandboxed coding agent automation. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit bc0c0c6. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditGlobGrepAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
apt-getghFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tsk Config loads about 2.8k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 1,031 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
# Enable passwordless sudo inside containerssudo = falseallowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dtormoen/tsk-tsk at commit bc0c0c6, republished under its MIT licence (© dtormoen). 1,031 words, ~2,801 tokens.
.claude/skills/tsk-config/SKILL.md (or your agent's skills folder).tsk Docker Configuration GuideYou are helping a user configure tsk Docker container images for their project. Follow these steps in order.
Detect the project's technology stack by checking for these files in the project root. These are tsk's built-in stacks with auto-detection — custom stacks for any language can be defined via stack_config in tsk.toml (covered in Step 5).
| File | Stack |
|---|---|
Cargo.toml | rust |
go.mod | go |
package.json | node |
pyproject.toml, requirements.txt, setup.py | python |
pom.xml, build.gradle, build.gradle.kts | java |
rockspec, .luacheckrc, init.lua | lua |
| None of the above | default |
Also determine the project name from the current directory name.
Tell the user what you detected and ask them to confirm or override. If their stack isn't listed above, let them know they can define a custom stack.
Check if .tsk/dockerfiles/ exists. If it does, warn the user:
Deprecated:
tskno longer supports filesystem-based dockerfiles in.tsk/dockerfiles/. Docker customization is now done viasetupfields intsk.toml. This guide will help you migrate to the new format.
List any files found in .tsk/dockerfiles/ and note their contents — you will use them to populate the new config.
Ask the user where to put the configuration:
.tsk/tsk.toml): Checked into version control, shared with the team. Best for project-specific dependencies that all contributors need.~/.config/tsk/tsk.toml): Personal settings, not shared. Best for machine-specific paths, personal preferences, or settings across multiple projects.If the user picks user-level, config goes under [project.<project-name>] in ~/.config/tsk/tsk.toml. If project-level, config goes at the top level of .tsk/tsk.toml.
Run this command and show the output to the user:
tsk docker build --dry-runExplain to the user: this shows the complete Dockerfile that tsk generates with all layers resolved. Look for comments like # Stack layer, # Project layer, and # Agent layer to see where each setup field injects content. The next step will help them add the right customizations.
Based on the project analysis, write the tsk.toml configuration. Use the layer reference below to decide what goes where.
tsk Docker Layer Architecturetsk builds container images using 4 layers, assembled in this order:
1. Base layer — Ubuntu 25.10, git, build-essential, ripgrep, Python 3, uv, podman
2. Stack layer — Language runtime and tools (e.g., Go, Rust, Node.js)
3. Project layer — Project-specific system dependencies
4. Agent layer — AI agent installation (Claude, Codex)You customize layers 2-4 via tsk.toml:
| Config field | Layer | Purpose |
|---|---|---|
stack_config.<stack>.setup | Stack (2) | Language tooling, compilers, package managers |
setup | Project (3) | Project-specific apt packages, system libraries, custom tools |
agent_config.<agent>.setup | Agent (4) | Agent-specific setup (rarely needed) |
Each setup field contains raw Dockerfile commands (RUN, ENV, COPY, etc.) that get injected into the generated Dockerfile at the corresponding layer position. Setup commands run as the agent user by default. Use USER root to switch to root for operations that require it (e.g., apt-get), and always switch back to USER agent afterwards.
tsk has built-in stack layers. You only need stack_config if the built-in is insufficient.
rust: Rust stable via rustup, CARGO_TARGET_DIR=/home/agent/.cargo/target
go: Go 1.25.0, GOPATH=/home/agent/gopath, CGO_ENABLED=0
node: Node.js LTS, npm, pnpm, yarn, typescript, ts-node, nodemon, eslint, prettier, jest, npm-check-updates. NODE_ENV=development
python: uv venv at /home/agent/.venv, pytest, pip, black, ruff, ty, mypy, poetry
java: OpenJDK 17, Maven, Gradle. Maven settings.xml and Gradle gradle.properties are pre-configured to route through the tsk proxy
lua: LuaJIT, Lua 5.1 dev libs, Neovim, stylua, LuaRocks with luacheck/busted/luassert/luafilesystem/nlua
default: Empty (base layer only)
Every container includes: Ubuntu 25.10, git, git-lfs, build-essential, curl, jq, just, ripgrep, sudo, Python 3, uv, podman (for DIND), and an agent user (UID 1000).
Project-level (.tsk/tsk.toml):
# Project-specific dependencies (injected at the project layer)
setup = '''
USER root
RUN apt-get update && apt-get install -y libssl-dev pkg-config cmake
USER agent
'''
# Override or extend the stack layer
[stack_config.rust]
setup = '''
RUN cargo install cargo-nextest sccache
ENV RUSTC_WRAPPER=sccache
'''User-level (~/.config/tsk/tsk.toml):
# Default settings for all projects
[defaults]
memory_gb = 16.0
cpu = 8
# Per-project overrides
[project.my-project]
stack = "rust"
setup = '''
USER root
RUN apt-get update && apt-get install -y libssl-dev pkg-config
USER agent
'''
[project.my-project.stack_config.rust]
setup = '''
RUN cargo install cargo-nextest
'''Rust project needing system libraries:
setup = '''
USER root
RUN apt-get update && apt-get install -y \
libssl-dev pkg-config cmake protobuf-compiler
USER agent
'''Python project with native dependencies:
setup = '''
USER root
RUN apt-get update && apt-get install -y \
libpq-dev libffi-dev
USER agent
'''Node.js project needing native build tools:
setup = '''
USER root
RUN apt-get update && apt-get install -y \
libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev
USER agent
'''Go project with CGO and protocol buffers:
[stack_config.go]
setup = '''
USER root
ENV CGO_ENABLED=1
RUN apt-get update && apt-get install -y protobuf-compiler
USER agent
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
'''Java project with a specific JDK version:
[stack_config.java]
setup = '''
USER root
RUN apt-get update && apt-get install -y openjdk-21-jdk
USER agent
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
'''Adding a stack not built into tsk (e.g., Scala):
stack = "scala"
[stack_config.scala]
setup = '''
USER root
RUN apt-get update && apt-get install -y openjdk-21-jdk
RUN curl -fL https://github.com/coursier/coursier/releases/latest/download/cs-x86_64-pc-linux.gz | gzip -d > /usr/local/bin/cs \
&& chmod +x /usr/local/bin/cs \
&& cs setup --yes
USER agent
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
'''agent user (UID 1000) by default. Use USER root when you need elevated privileges (e.g., apt-get install), and always switch back to USER agent afterwardsapt-get update with apt-get install in the same RUN to avoid stale caches-y flag for non-interactive installs&& to reduce layersENV persist into the running containerAsk yourself:
stack_config.<stack>.setupsetup (project layer)agent_config.<agent>.setup (rare)stack_config in user-level [defaults]setup in .tsk/tsk.tomlWrite the configuration file based on the project's needs. If there were deprecated dockerfiles found in step 2, migrate their contents to the appropriate setup fields.
If the user does not have specific customization needs yet, write a minimal config with just the stack field set and an empty setup with a comment explaining where to add dependencies.
Run this command to verify the Docker image builds successfully and tasks work:
tsk run -t ackThis creates a minimal task that just says "ack" and exits. If it completes successfully, the Docker configuration is working. If it fails, examine the error output:
RUN command in a setup field. Check the Dockerfile output for the failing line.PATH and ENV settings.USER root before install commands.If the build fails, help the user fix the configuration and re-run tsk run -t ack.
If the user is stuck and cannot get their project working after multiple attempts, ask if they'd like to file a bug report against tsk. If they agree:
tsk docker build --dry-rungh:gh issue create --repo dtormoen/tsk-tsk \
--title "Docker build failure: <short description>" \
--body "$(cat <<'EOF'
## Problem
<user's description of what aspect of their project causes problems>
## Error
<error output>
```
tsk docker build --dry-run)<dry-run output>EOF )"
## Additional Configuration Options
After the basic setup works, mention these optional settings the user might want:
```toml
# Forward host ports to containers (e.g., local databases)
host_ports = [5432, 6379]
# Mount volumes for build caches
volumes = [
{ host = "~/.cache/go-mod", container = "/go/pkg/mod" },
{ name = "build-cache", container = "/home/agent/.cache" },
]
# Pass environment variables to containers
env = [
{ name = "DB_PORT", value = "5432" },
]
# Container resources
memory_gb = 16.0
cpu = 8
# Enable Docker-in-Docker
dind = true
# Enable passwordless sudo inside containers
sudo = false
# Run containers in privileged mode (disables security restrictions)
privileged = false
# Expose host devices to containers (supports glob patterns)
devices = ["/dev/video0", "/dev/ttyUSB*"]Note: To connect to host services via forwarded ports, use the TSK_PROXY_HOST environment variable (set automatically by tsk) as the hostname, not localhost.
© dtormoen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/tsk-config/skills/tsk-config of dtormoen/tsk-tsk.
Open the folder on GitHubat commit bc0c0c6
Tsk Config next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tsk Config this skilldtormoen/tsk-tsk | 171 | — | ~2.8k | Automated safety check: Notes | MIT | |
| GreptimeDB Dev Docker ImageGreptimeTeam/greptimedb | 6.7k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| GitHub Actions CreatorFNOSP/FlyNarwhal | 495 | 1 repos | ~2.4k | Automated safety check: Pass | AGPL-3.0 | |
| Frb Dockerfzyzcjy/flutter_rust_bridge | 5.4k | — | ~914 | Automated safety check: Pass | MIT | |
| Tokf Runmpecan/tokf | 199 | — | ~571 | Automated safety check: Pass | MIT | |
| Check Cross Runtimeayutaz/piper-plus | 220 | — | ~3.5k | Automated safety check: Pass | MIT |
GreptimeTeam/greptimedb
Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.
FNOSP/FlyNarwhal
A skill your agent uses when the user wants to create, generate, or set up a GitHub Actions workflow.
fzyzcjy/flutter_rust_bridge
A skill your agent uses for ordinary flutterrustbridge Docker/devcontainer setup, local image usage, and Apple Silicon containers; route image upgrades and publishing to frb-upgrade-docker.
mpecan/tokf
Compress verbose CLI output with tokf before returning results.
ayutaz/piper-plus
Python canonical (src/pythonrun/piperplus/, src/python/pipertrain/, src/python/g2p/piperplusg2p/) を変更した PR で、 ONNX I/O 以外の追随漏れ (phonemizer / config schema / CLI flag / data 形式 / API 変更) を 7 ランタイム +…
matrixorigin/memoria
Cut a Memoria release. An agent skill from matrixorigin/memoria.
dtormoen/tsk-tsk
A skill your agent uses when the user asks about tsk commands, delegating development tasks to AI agents, managing sandboxed task execution, or working with the tsk task queue and server.
dtormoen/tsk-tsk
Queue a single task based on the current conversation using tsk add
Categories
A skill your agent uses when the user wants to set up or configure tsk Docker container images, customize their tsk.toml for Docker builds, configure stack/agent/project layers, or troubleshoot tsk…. Tsk Config is an agent skill from dtormoen/tsk-tsk.toml for Docker builds, configure stack/agent/project layers, or troubleshoot tsk container build issues.
Tsk Config fits situations like: the user wants to set up; configure tsk Docker container images; customize their tsk.toml for Docker builds; configure stack/agent/project layers.
Run `npx skills add dtormoen/tsk-tsk --skill tsk-config -a claude-code`. Or copy the skill folder (skills/tsk-config/skills/tsk-config in dtormoen/tsk-tsk) into .claude/skills/tsk-config in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dtormoen/tsk-tsk --skill tsk-config -a codex`. Or copy the skill folder (skills/tsk-config/skills/tsk-config in dtormoen/tsk-tsk) into .agents/skills/tsk-config in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dtormoen/tsk-tsk --skill tsk-config -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tsk-config, .gemini/skills/tsk-config, .github/skills/tsk-config and .opencode/skills/tsk-config in your project.
Going by SKILL.md and its folder, Tsk Config needs the command-line tools its instructions call (apt-get and gh). Our summary lists: Python 3; Node.js; Docker. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Tsk Config is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tsk Config: GreptimeDB Dev Docker Image (GreptimeTeam/greptimedb, 6.7k stars), GitHub Actions Creator (FNOSP/FlyNarwhal, 495 stars), Frb Docker (fzyzcjy/flutter_rust_bridge, 5.4k stars) and Tokf Run (mpecan/tokf, 199 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dtormoen (a GitHub user) maintains it in dtormoen/tsk-tsk, which has 171 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on July 29, 2026.
Source: dtormoen/tsk-tsk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.