turbo-editors/configspublic Fork
⑂ 00d285f
Commits
⬇ Clone ▾
git clone https://git.rickub.com/turbo-editors/configs.git
git clone ssh://git@rickub.com/turbo-editors/configs.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

🛟 Updated.

k33g committed 2026-09-21T22:26:44+02:00 Browse files
00d285f parent: a3c787d
modified README.md +21 -4
@@ -1,6 +1,6 @@
11 # Turbo Editors — configuration samples
22
3-Ready-made project configurations for the [Turbo editors](https://rickub.com/turbo-editors): one directory per kind of project, each holding the editor's own directory — `.turbo-go`, `.turbo-rust` — with its settings, snippets, tools and, in the `-with-agents` variants, its coding agents.
3+Ready-made project configurations for the [Turbo editors](https://rickub.com/turbo-editors): one directory per kind of project, each holding the editor's own directory — `.turbo-go`, `.turbo-rust` — with its settings, snippets, tools and, in the variants that ship them, its coding agents and their skills.
44
55 You do not clone this repository to use it. Every Turbo editor can fetch a directory from it straight into your project.
66
@@ -43,21 +43,38 @@ turbo-rust -load-config https://rickub.com/turbo-editors/configs/tree/main/rustl
4343
4444 | Directory | Editor | Holds |
4545 | --- | --- | --- |
46-| `golang-init` | turbo-go | `settings.toml` (theme `turbo-dark`, autosave on after 1 s), `snippets.toml`, `tools.toml` (format, lint, build, test, run) |
46+| `golang-init` | turbo-go | `settings.toml` (theme `turbo-dark`, autosave on after 1 s), `snippets.toml`, `tools.toml` (format, lint, build, test, run, plus a prompting Grep and `go mod init`) |
4747 | `golang-init-with-agents` | turbo-go | The same, plus `acp.toml` naming two coding agents and the two agent settings files they read |
48+| `golang-with-skills` | turbo-go | The same as `-with-agents`, with theme `intellij-light`, the agents' thinking shown, and a `skills/` directory the agents load |
4849 | `rustlang-init` | turbo-rust | `settings.toml`, `snippets.toml`, `tools.toml` for a Cargo project |
4950 | `rustlang-init-with-agents` | turbo-rust | The same, plus the two agents |
5051
51-### The agents in the `-with-agents` samples
52+### The agents in the samples that ship them
5253
5354 `acp.toml` declares two agents, both run as `mm -acp` — a local agent speaking the Agent Client Protocol — each with its own settings file beside it (`agent.mm-dmr-gemma.yaml`, `agent.mm-dmr-mellum.yaml`), passed through the `AGENT_CONFIG` environment variable. Those files point at a **Docker Model Runner** serving models on `http://localhost:12434`, with `host.docker.internal` as the fallback. To use them you need `mm` on your `PATH` and Docker Model Runner running with the named models; otherwise the Agent menu lists the agents and opening one reports that it could not start.
5455
5556 Edit the two YAML files after loading — the model, the URL, which tools the agent may use — exactly as you would any project file. They are yours once copied.
5657
58+### The skills in `golang-with-skills`
59+
60+A **skill** is a Markdown file telling the agent how to do one kind of job: front matter with a `name`, a `description` and `keywords`, then the instructions under it. The agent reads the front matter of every skill it finds and opens the file itself only when a question matches — so a skill costs nothing until it is needed.
61+
62+Both agent YAML files in this sample set `skillsDir: skills`, a path relative to the agent settings file, which puts the skills in `.turbo-go/skills/` — copied with the rest of the directory. What is in there:
63+
64+| Skill | For |
65+| --- | --- |
66+| `lsp-navigation` | Using the `lsp` tool instead of `grep`: definition, references, hover, file outline, diagnostics, safe rename |
67+| `bg-jobs` | Starting a server or a watcher without blocking the answer — redirect both streams, keep the pid, poll for ready, stop it afterwards |
68+| `greetings`, `vulcan-salute`, `what-time-is-it` | Three one-command demo skills, there to show that a skill is picked up and run |
69+
70+`lsp-navigation` and `bg-jobs` are worth keeping in a real project; the last three are for seeing the mechanism work — ask an agent the time, or to salute someone, and watch it run the command the skill names rather than answer from memory. Delete them once you have.
71+
72+Add your own by creating a directory under `skills/` with a `SKILL.md` in it. The `description` and `keywords` are what the agent matches a question against, so write them for the question, not for the solution.
73+
5774 ## Add a sample
5875
5976 1. Create a directory named for the kind of project: `<language>-<flavour>`.
60-2. Put the editor's directory inside it — `.turbo-<editor>/` with at least `settings.toml`; add `snippets.toml`, `tools.toml`, and `acp.toml` with its agent files if the sample ships agents. The starter files an editor creates from its Options menu are a good beginning.
77+2. Put the editor's directory inside it — `.turbo-<editor>/` with at least `settings.toml`; add `snippets.toml`, `tools.toml`, and `acp.toml` with its agent files if the sample ships agents, and a `skills/` directory if those agents have skills. The starter files an editor creates from its Options menu are a good beginning.
6178 3. Add a `README.md` saying what the sample is for and what it assumes is installed.
6279 4. Do not commit anything an agent writes while you test the sample: `.mm/` is ignored for that reason.
6380
@@ -1,6 +1,6 @@
1 # Turbo Editors — configuration samples1 # Turbo Editors — configuration samples
2 2
3-Ready-made project configurations for the [Turbo editors](https://rickub.com/turbo-editors): one directory per kind of project, each holding the editor's own directory — `.turbo-go`, `.turbo-rust` — with its settings, snippets, tools and, in the `-with-agents` variants, its coding agents.3+Ready-made project configurations for the [Turbo editors](https://rickub.com/turbo-editors): one directory per kind of project, each holding the editor's own directory — `.turbo-go`, `.turbo-rust` — with its settings, snippets, tools and, in the variants that ship them, its coding agents and their skills.
4 4
5 You do not clone this repository to use it. Every Turbo editor can fetch a directory from it straight into your project.5 You do not clone this repository to use it. Every Turbo editor can fetch a directory from it straight into your project.
6 6
@@ -43,21 +43,38 @@ turbo-rust -load-config https://rickub.com/turbo-editors/configs/tree/main/rustl
43 43
44 | Directory | Editor | Holds |44 | Directory | Editor | Holds |
45 | --- | --- | --- |45 | --- | --- | --- |
46-| `golang-init` | turbo-go | `settings.toml` (theme `turbo-dark`, autosave on after 1 s), `snippets.toml`, `tools.toml` (format, lint, build, test, run) |46+| `golang-init` | turbo-go | `settings.toml` (theme `turbo-dark`, autosave on after 1 s), `snippets.toml`, `tools.toml` (format, lint, build, test, run, plus a prompting Grep and `go mod init`) |
47 | `golang-init-with-agents` | turbo-go | The same, plus `acp.toml` naming two coding agents and the two agent settings files they read |47 | `golang-init-with-agents` | turbo-go | The same, plus `acp.toml` naming two coding agents and the two agent settings files they read |
48+| `golang-with-skills` | turbo-go | The same as `-with-agents`, with theme `intellij-light`, the agents' thinking shown, and a `skills/` directory the agents load |
48 | `rustlang-init` | turbo-rust | `settings.toml`, `snippets.toml`, `tools.toml` for a Cargo project |49 | `rustlang-init` | turbo-rust | `settings.toml`, `snippets.toml`, `tools.toml` for a Cargo project |
49 | `rustlang-init-with-agents` | turbo-rust | The same, plus the two agents |50 | `rustlang-init-with-agents` | turbo-rust | The same, plus the two agents |
50 51
51-### The agents in the `-with-agents` samples52+### The agents in the samples that ship them
52 53
53 `acp.toml` declares two agents, both run as `mm -acp` — a local agent speaking the Agent Client Protocol — each with its own settings file beside it (`agent.mm-dmr-gemma.yaml`, `agent.mm-dmr-mellum.yaml`), passed through the `AGENT_CONFIG` environment variable. Those files point at a **Docker Model Runner** serving models on `http://localhost:12434`, with `host.docker.internal` as the fallback. To use them you need `mm` on your `PATH` and Docker Model Runner running with the named models; otherwise the Agent menu lists the agents and opening one reports that it could not start.54 `acp.toml` declares two agents, both run as `mm -acp` — a local agent speaking the Agent Client Protocol — each with its own settings file beside it (`agent.mm-dmr-gemma.yaml`, `agent.mm-dmr-mellum.yaml`), passed through the `AGENT_CONFIG` environment variable. Those files point at a **Docker Model Runner** serving models on `http://localhost:12434`, with `host.docker.internal` as the fallback. To use them you need `mm` on your `PATH` and Docker Model Runner running with the named models; otherwise the Agent menu lists the agents and opening one reports that it could not start.
54 55
55 Edit the two YAML files after loading — the model, the URL, which tools the agent may use — exactly as you would any project file. They are yours once copied.56 Edit the two YAML files after loading — the model, the URL, which tools the agent may use — exactly as you would any project file. They are yours once copied.
56 57
58+### The skills in `golang-with-skills`
59+
60+A **skill** is a Markdown file telling the agent how to do one kind of job: front matter with a `name`, a `description` and `keywords`, then the instructions under it. The agent reads the front matter of every skill it finds and opens the file itself only when a question matches — so a skill costs nothing until it is needed.
61+
62+Both agent YAML files in this sample set `skillsDir: skills`, a path relative to the agent settings file, which puts the skills in `.turbo-go/skills/` — copied with the rest of the directory. What is in there:
63+
64+| Skill | For |
65+| --- | --- |
66+| `lsp-navigation` | Using the `lsp` tool instead of `grep`: definition, references, hover, file outline, diagnostics, safe rename |
67+| `bg-jobs` | Starting a server or a watcher without blocking the answer — redirect both streams, keep the pid, poll for ready, stop it afterwards |
68+| `greetings`, `vulcan-salute`, `what-time-is-it` | Three one-command demo skills, there to show that a skill is picked up and run |
69+
70+`lsp-navigation` and `bg-jobs` are worth keeping in a real project; the last three are for seeing the mechanism work — ask an agent the time, or to salute someone, and watch it run the command the skill names rather than answer from memory. Delete them once you have.
71+
72+Add your own by creating a directory under `skills/` with a `SKILL.md` in it. The `description` and `keywords` are what the agent matches a question against, so write them for the question, not for the solution.
73+
57 ## Add a sample74 ## Add a sample
58 75
59 1. Create a directory named for the kind of project: `<language>-<flavour>`.76 1. Create a directory named for the kind of project: `<language>-<flavour>`.
60-2. Put the editor's directory inside it — `.turbo-<editor>/` with at least `settings.toml`; add `snippets.toml`, `tools.toml`, and `acp.toml` with its agent files if the sample ships agents. The starter files an editor creates from its Options menu are a good beginning.77+2. Put the editor's directory inside it — `.turbo-<editor>/` with at least `settings.toml`; add `snippets.toml`, `tools.toml`, and `acp.toml` with its agent files if the sample ships agents, and a `skills/` directory if those agents have skills. The starter files an editor creates from its Options menu are a good beginning.
61 3. Add a `README.md` saying what the sample is for and what it assumes is installed.78 3. Add a `README.md` saying what the sample is for and what it assumes is installed.
62 4. Do not commit anything an agent writes while you test the sample: `.mm/` is ignored for that reason.79 4. Do not commit anything an agent writes while you test the sample: `.mm/` is ignored for that reason.
63 80
added golang-with-skills/.turbo-go/acp.toml +13 -0
new file mode 100644
@@ -0,0 +1,13 @@
1+
2+[[agent]]
3+name = "🤓 Bob (mm-dmr-mellum2)"
4+command = "mm"
5+args = ["-acp"]
6+env = { AGENT_CONFIG = ".turbo-go/agent.mm-dmr-mellum.yaml" }
7+
8+
9+[[agent]]
10+name = "🤖 Riker (mm-dmr-gemma)"
11+command = "mm"
12+args = ["-acp"]
13+env = { AGENT_CONFIG = ".turbo-go/agent.mm-dmr-gemma.yaml" }
new file mode 100644
@@ -0,0 +1,13 @@
1+
2+[[agent]]
3+name = "🤓 Bob (mm-dmr-mellum2)"
4+command = "mm"
5+args = ["-acp"]
6+env = { AGENT_CONFIG = ".turbo-go/agent.mm-dmr-mellum.yaml" }
7+
8+
9+[[agent]]
10+name = "🤖 Riker (mm-dmr-gemma)"
11+command = "mm"
12+args = ["-acp"]
13+env = { AGENT_CONFIG = ".turbo-go/agent.mm-dmr-gemma.yaml" }
added golang-with-skills/.turbo-go/agent.mm-dmr-gemma.yaml +112 -0
new file mode 100644
@@ -0,0 +1,112 @@
1+# Agent settings.
2+#
3+provider: dmr
4+
5+model: huggingface.co/unsloth/gemma-4-e2b-it-gguf:Q4_K_M
6+baseUrl: http://localhost:12434/engines/v1
7+fallback: http://host.docker.internal:12434/engines/v1
8+
9+bashTool: true
10+# The built-in file tools: read_file, write_file, edit_file.
11+editTools: true
12+
13+lsp:
14+ servers:
15+ - name: gopls
16+ command: gopls
17+ extensions: [".go"]
18+
19+# How many tokens the server actually serves.
20+# 0 = ask the server (llama-server tells it on /props)
21+contextWindow: 0
22+
23+# Max number of characters a tool returns to the model.
24+# Context safeguard: beyond that, the output is truncated (beginning + end kept).
25+maxOutput: 16000
26+
27+# Max number of model <-> tools round trips for a single question.
28+# Raise it for tasks that need long chains of commands.
29+maxTurns: 40
30+
31+# Persistent sessions, per project.
32+# When enabled, every conversation is saved as one JSON file under `dir`.
33+# `/sessions` lists them, `/resume` continues one; in an editor, "Reload Agent" replays the thread.
34+sessions:
35+ enabled: true
36+ dir: .mm/sessions
37+
38+skillsDir: skills
39+
40+
41+# How many lines of a command's output are echoed to the terminal.
42+# 0 disables it.
43+previewLines: 20
44+
45+displayCommands: true
46+
47+# The system prompt: what the agent is, and what it is allowed to do.
48+# This is the knob to play with — it is the shortest path to changing behaviour.
49+system: |
50+ Your name is Riker.
51+ You are a coding agent working in a terminal.
52+ You have a "bash" tool to run shell commands.
53+ Use it to explore files, run tests, inspect the repository, etc.
54+ Chain several commands if needed, then answer clearly in English.
55+
56+ FILE EDITING
57+ You have three tools for files: `read_file`, `edit_file` and `write_file`.
58+ They are how a file gets read and changed here: each change is exact,
59+ checked before it is written, and comes back as a diff with line numbers.
60+ bash is for running things — building, testing, listing, searching.
61+
62+ RULES
63+ - Keep everything the file already does, unless the user asked to remove it.
64+ - Touch only the files the request is about. Do not add tests, files or
65+ features that were not asked for.
66+ - Never run a git command unless the user says git, commit or push.
67+ - Never move, rename or delete a file unless the user asked for it.
68+ - Then answer in English, in a few lines.
69+ - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`)
70+ to understand the options, then run the command.
71+
72+ BACKGROUND JOBS
73+ Never let a command block the answer. Anything that serves, watches or runs
74+ long goes to the background, with BOTH streams redirected and its pid kept:
75+
76+ nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
77+
78+
79+# Generation settings (OpenAI API keys). Low temperature for a coding agent:
80+# we want precise and reproducible answers, not creativity.
81+sampling:
82+ temperature: 0.0
83+ parallel_tool_calls: false
84+ top_p: 0.9
85+ max_tokens: 4096
86+
87+# llama-server processes the whole prompt before the first token;
88+# on a laptop a 32k context can take a while. Raise it if it fires.
89+watchdogTimeout: 30s
90+
91+# Context compression.
92+# ON here: the agent knows the window (read from /props), so `threshold` has a number to apply to.
93+context:
94+ enabled: true
95+
96+ # Compress when the history reaches this share of the window.
97+ threshold: 75
98+
99+ # Fallback on the message count, for when the window is unknown.
100+ # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history.
101+ maxMessages: 80
102+
103+ # How many recent questions (with their commands and answers) are kept as-is instead of being summarised.
104+ # The model works on the last few turns, so summarising them would make it redo what it just did.
105+ keepLastTurns: 3
106+
107+ # max_tokens of the summary request.
108+ summaryMaxTokens: 1200
109+
110+ showStats: true
111+
112+showThinking: true
new file mode 100644
@@ -0,0 +1,112 @@
1+# Agent settings.
2+#
3+provider: dmr
4+
5+model: huggingface.co/unsloth/gemma-4-e2b-it-gguf:Q4_K_M
6+baseUrl: http://localhost:12434/engines/v1
7+fallback: http://host.docker.internal:12434/engines/v1
8+
9+bashTool: true
10+# The built-in file tools: read_file, write_file, edit_file.
11+editTools: true
12+
13+lsp:
14+ servers:
15+ - name: gopls
16+ command: gopls
17+ extensions: [".go"]
18+
19+# How many tokens the server actually serves.
20+# 0 = ask the server (llama-server tells it on /props)
21+contextWindow: 0
22+
23+# Max number of characters a tool returns to the model.
24+# Context safeguard: beyond that, the output is truncated (beginning + end kept).
25+maxOutput: 16000
26+
27+# Max number of model <-> tools round trips for a single question.
28+# Raise it for tasks that need long chains of commands.
29+maxTurns: 40
30+
31+# Persistent sessions, per project.
32+# When enabled, every conversation is saved as one JSON file under `dir`.
33+# `/sessions` lists them, `/resume` continues one; in an editor, "Reload Agent" replays the thread.
34+sessions:
35+ enabled: true
36+ dir: .mm/sessions
37+
38+skillsDir: skills
39+
40+
41+# How many lines of a command's output are echoed to the terminal.
42+# 0 disables it.
43+previewLines: 20
44+
45+displayCommands: true
46+
47+# The system prompt: what the agent is, and what it is allowed to do.
48+# This is the knob to play with — it is the shortest path to changing behaviour.
49+system: |
50+ Your name is Riker.
51+ You are a coding agent working in a terminal.
52+ You have a "bash" tool to run shell commands.
53+ Use it to explore files, run tests, inspect the repository, etc.
54+ Chain several commands if needed, then answer clearly in English.
55+
56+ FILE EDITING
57+ You have three tools for files: `read_file`, `edit_file` and `write_file`.
58+ They are how a file gets read and changed here: each change is exact,
59+ checked before it is written, and comes back as a diff with line numbers.
60+ bash is for running things — building, testing, listing, searching.
61+
62+ RULES
63+ - Keep everything the file already does, unless the user asked to remove it.
64+ - Touch only the files the request is about. Do not add tests, files or
65+ features that were not asked for.
66+ - Never run a git command unless the user says git, commit or push.
67+ - Never move, rename or delete a file unless the user asked for it.
68+ - Then answer in English, in a few lines.
69+ - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`)
70+ to understand the options, then run the command.
71+
72+ BACKGROUND JOBS
73+ Never let a command block the answer. Anything that serves, watches or runs
74+ long goes to the background, with BOTH streams redirected and its pid kept:
75+
76+ nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
77+
78+
79+# Generation settings (OpenAI API keys). Low temperature for a coding agent:
80+# we want precise and reproducible answers, not creativity.
81+sampling:
82+ temperature: 0.0
83+ parallel_tool_calls: false
84+ top_p: 0.9
85+ max_tokens: 4096
86+
87+# llama-server processes the whole prompt before the first token;
88+# on a laptop a 32k context can take a while. Raise it if it fires.
89+watchdogTimeout: 30s
90+
91+# Context compression.
92+# ON here: the agent knows the window (read from /props), so `threshold` has a number to apply to.
93+context:
94+ enabled: true
95+
96+ # Compress when the history reaches this share of the window.
97+ threshold: 75
98+
99+ # Fallback on the message count, for when the window is unknown.
100+ # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history.
101+ maxMessages: 80
102+
103+ # How many recent questions (with their commands and answers) are kept as-is instead of being summarised.
104+ # The model works on the last few turns, so summarising them would make it redo what it just did.
105+ keepLastTurns: 3
106+
107+ # max_tokens of the summary request.
108+ summaryMaxTokens: 1200
109+
110+ showStats: true
111+
112+showThinking: true
added golang-with-skills/.turbo-go/agent.mm-dmr-mellum.yaml +110 -0
new file mode 100644
@@ -0,0 +1,110 @@
1+# Agent settings.
2+#
3+provider: dmr
4+
5+model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M
6+baseUrl: http://localhost:12434/engines/v1
7+fallback: http://host.docker.internal:12434/engines/v1
8+
9+bashTool: true
10+# The built-in file tools: read_file, write_file, edit_file.
11+editTools: true
12+
13+lsp:
14+ servers:
15+ - name: gopls
16+ command: gopls
17+ extensions: [".go"]
18+
19+# How many tokens the server actually serves.
20+# 0 = ask the server (llama-server tells it on /props)
21+contextWindow: 0
22+
23+# Max number of characters a tool returns to the model.
24+# Context safeguard: beyond that, the output is truncated (beginning + end kept).
25+maxOutput: 16000
26+
27+# Max number of model <-> tools round trips for a single question.
28+# Raise it for tasks that need long chains of commands.
29+maxTurns: 40
30+
31+# Persistent sessions, per project.
32+# When enabled, every conversation is saved as one JSON file under `dir`.
33+# `/sessions` lists them, `/resume` continues one; in an editor, "Reload Agent" replays the thread.
34+sessions:
35+ enabled: true
36+ dir: .mm/sessions
37+
38+skillsDir: skills
39+
40+# How many lines of a command's output are echoed to the terminal.
41+# 0 disables it.
42+previewLines: 20
43+
44+displayCommands: true
45+
46+# The system prompt: what the agent is, and what it is allowed to do.
47+# This is the knob to play with — it is the shortest path to changing behaviour.
48+system: |
49+ Your name is Bob.
50+ You are a coding agent working in a terminal.
51+ You have a "bash" tool to run shell commands.
52+ Use it to explore files, run tests, inspect the repository, etc.
53+ Chain several commands if needed, then answer clearly in English.
54+
55+ FILE EDITING
56+ You have three tools for files: `read_file`, `edit_file` and `write_file`.
57+ They are how a file gets read and changed here: each change is exact,
58+ checked before it is written, and comes back as a diff with line numbers.
59+ bash is for running things — building, testing, listing, searching.
60+
61+ RULES
62+ - Keep everything the file already does, unless the user asked to remove it.
63+ - Touch only the files the request is about. Do not add tests, files or
64+ features that were not asked for.
65+ - Never run a git command unless the user says git, commit or push.
66+ - Never move, rename or delete a file unless the user asked for it.
67+ - Then answer in English, in a few lines.
68+ - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`)
69+ to understand the options, then run the command.
70+
71+ BACKGROUND JOBS
72+ Never let a command block the answer. Anything that serves, watches or runs
73+ long goes to the background, with BOTH streams redirected and its pid kept:
74+
75+ nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
76+
77+
78+# Generation settings (OpenAI API keys). Low temperature for a coding agent:
79+# we want precise and reproducible answers, not creativity.
80+sampling:
81+ temperature: 0.0
82+ parallel_tool_calls: false
83+ top_p: 0.9
84+ max_tokens: 4096
85+
86+# llama-server processes the whole prompt before the first token;
87+# on a laptop a 32k context can take a while. Raise it if it fires.
88+watchdogTimeout: 30s
89+
90+# Context compression.
91+# ON here: the agent knows the window (read from /props), so `threshold` has a number to apply to.
92+context:
93+ enabled: true
94+
95+ # Compress when the history reaches this share of the window.
96+ threshold: 75
97+
98+ # Fallback on the message count, for when the window is unknown.
99+ # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history.
100+ maxMessages: 80
101+
102+ # How many recent questions (with their commands and answers) are kept as-is instead of being summarised.
103+ # The model works on the last few turns, so summarising them would make it redo what it just did.
104+ keepLastTurns: 3
105+
106+ # max_tokens of the summary request.
107+ summaryMaxTokens: 1200
108+
109+ showStats: true
110+
new file mode 100644
@@ -0,0 +1,110 @@
1+# Agent settings.
2+#
3+provider: dmr
4+
5+model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M
6+baseUrl: http://localhost:12434/engines/v1
7+fallback: http://host.docker.internal:12434/engines/v1
8+
9+bashTool: true
10+# The built-in file tools: read_file, write_file, edit_file.
11+editTools: true
12+
13+lsp:
14+ servers:
15+ - name: gopls
16+ command: gopls
17+ extensions: [".go"]
18+
19+# How many tokens the server actually serves.
20+# 0 = ask the server (llama-server tells it on /props)
21+contextWindow: 0
22+
23+# Max number of characters a tool returns to the model.
24+# Context safeguard: beyond that, the output is truncated (beginning + end kept).
25+maxOutput: 16000
26+
27+# Max number of model <-> tools round trips for a single question.
28+# Raise it for tasks that need long chains of commands.
29+maxTurns: 40
30+
31+# Persistent sessions, per project.
32+# When enabled, every conversation is saved as one JSON file under `dir`.
33+# `/sessions` lists them, `/resume` continues one; in an editor, "Reload Agent" replays the thread.
34+sessions:
35+ enabled: true
36+ dir: .mm/sessions
37+
38+skillsDir: skills
39+
40+# How many lines of a command's output are echoed to the terminal.
41+# 0 disables it.
42+previewLines: 20
43+
44+displayCommands: true
45+
46+# The system prompt: what the agent is, and what it is allowed to do.
47+# This is the knob to play with — it is the shortest path to changing behaviour.
48+system: |
49+ Your name is Bob.
50+ You are a coding agent working in a terminal.
51+ You have a "bash" tool to run shell commands.
52+ Use it to explore files, run tests, inspect the repository, etc.
53+ Chain several commands if needed, then answer clearly in English.
54+
55+ FILE EDITING
56+ You have three tools for files: `read_file`, `edit_file` and `write_file`.
57+ They are how a file gets read and changed here: each change is exact,
58+ checked before it is written, and comes back as a diff with line numbers.
59+ bash is for running things — building, testing, listing, searching.
60+
61+ RULES
62+ - Keep everything the file already does, unless the user asked to remove it.
63+ - Touch only the files the request is about. Do not add tests, files or
64+ features that were not asked for.
65+ - Never run a git command unless the user says git, commit or push.
66+ - Never move, rename or delete a file unless the user asked for it.
67+ - Then answer in English, in a few lines.
68+ - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`)
69+ to understand the options, then run the command.
70+
71+ BACKGROUND JOBS
72+ Never let a command block the answer. Anything that serves, watches or runs
73+ long goes to the background, with BOTH streams redirected and its pid kept:
74+
75+ nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
76+
77+
78+# Generation settings (OpenAI API keys). Low temperature for a coding agent:
79+# we want precise and reproducible answers, not creativity.
80+sampling:
81+ temperature: 0.0
82+ parallel_tool_calls: false
83+ top_p: 0.9
84+ max_tokens: 4096
85+
86+# llama-server processes the whole prompt before the first token;
87+# on a laptop a 32k context can take a while. Raise it if it fires.
88+watchdogTimeout: 30s
89+
90+# Context compression.
91+# ON here: the agent knows the window (read from /props), so `threshold` has a number to apply to.
92+context:
93+ enabled: true
94+
95+ # Compress when the history reaches this share of the window.
96+ threshold: 75
97+
98+ # Fallback on the message count, for when the window is unknown.
99+ # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history.
100+ maxMessages: 80
101+
102+ # How many recent questions (with their commands and answers) are kept as-is instead of being summarised.
103+ # The model works on the last few turns, so summarising them would make it redo what it just did.
104+ keepLastTurns: 3
105+
106+ # max_tokens of the summary request.
107+ summaryMaxTokens: 1200
108+
109+ showStats: true
110+
added golang-with-skills/.turbo-go/settings.toml +7 -0
new file mode 100644
@@ -0,0 +1,7 @@
1+# turbo-go project settings.
2+
3+[editor]
4+
5+theme = "intellij-light"
6+autosave = true
7+autosave_delay = "1s"
new file mode 100644
@@ -0,0 +1,7 @@
1+# turbo-go project settings.
2+
3+[editor]
4+
5+theme = "intellij-light"
6+autosave = true
7+autosave_delay = "1s"
added golang-with-skills/.turbo-go/skills/README.md +2 -0
new file mode 100644
@@ -0,0 +1,2 @@
1+# Demo skills
2+> for test
new file mode 100644
@@ -0,0 +1,2 @@
1+# Demo skills
2+> for test
added golang-with-skills/.turbo-go/skills/bg-jobs/SKILL.md +82 -0
new file mode 100644
@@ -0,0 +1,82 @@
1+---
2+name: bg-jobs
3+description: Start, wait on, inspect and stop a long-running background job — a server, a watcher, a build that does not end — without blocking the turn.
4+keywords: background, job, server, serve, start, daemon, nohup, watch, tail, log, pid, kill, stop, port, running
5+---
6+
7+# Background jobs
8+
9+## When to use it
10+
11+Any command that **serves, watches, or runs until stopped**: an HTTP server, `npm run dev`, `go run` on a web app, a file watcher, a queue worker. Read this before you start one, and before you wait on, inspect or stop one.
12+
13+A command that never returns will hold the turn for its whole budget and then be killed. The answer the user asked for never arrives.
14+
15+## Start it
16+
17+Both streams redirected, the pid kept:
18+
19+```bash
20+nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
21+```
22+
23+Three parts, and all three matter:
24+
25+- **`> /tmp/<job>.log 2>&1`** — both streams. Redirecting only stdout is the classic mistake: the job keeps the tool's own error pipe open, and the call cannot finish until the job does. You get the 30-second budget spent on nothing.
26+- **`&`** — the shell returns at once.
27+- **`echo $! > /tmp/<job>.pid`** — without the pid you cannot stop it later except by guessing at `pkill` patterns, which also kills things you did not start.
28+
29+Use one name per job, and reuse it for the log and the pid file.
30+
31+## Wait for it to be ready
32+
33+**Do not `sleep` and hope.** Poll for the thing you actually need, with a bound:
34+
35+```bash
36+for i in $(seq 1 30); do
37+ curl -fsS localhost:8080/ >/dev/null 2>&1 && echo ready && break
38+ sleep 0.5
39+done
40+```
41+
42+For something that is not an HTTP server, poll the log for the line it prints when it is up:
43+
44+```bash
45+for i in $(seq 1 30); do
46+ grep -q "listening on" /tmp/<job>.log && echo ready && break
47+ sleep 0.5
48+done
49+```
50+
51+If the loop ends without `ready`, the job did not start — go read the log.
52+
53+## Inspect it
54+
55+```bash
56+tail -n 40 /tmp/<job>.log # what it said
57+kill -0 "$(cat /tmp/<job>.pid)" 2>/dev/null && echo alive || echo dead
58+```
59+
60+`kill -0` sends no signal; it only asks whether the process is there. A job that is `dead` right after starting almost always says why in the last lines of its log — read them before changing anything.
61+
62+## Stop it
63+
64+```bash
65+kill "$(cat /tmp/<job>.pid)" 2>/dev/null
66+sleep 0.5
67+kill -0 "$(cat /tmp/<job>.pid)" 2>/dev/null && kill -9 "$(cat /tmp/<job>.pid)"
68+rm -f /tmp/<job>.pid
69+```
70+
71+Ask politely first (`kill` sends TERM, which lets a server close its listener), then insist. Removing the pid file afterwards stops a later command from acting on a pid the system has since reused for something else.
72+
73+## Before you finish
74+
75+**Stop every job you started**, and **say which ones you left running** and why. A server still holding port 8080 after the turn is a surprise the user will hit later, when nothing on screen explains it.
76+
77+## Traps
78+
79+- **One shell per call.** Each `bash` call is a new shell in the same directory: a job started in one call is still running in the next, but shell variables are gone. That is exactly why the pid goes to a file and not to `$PID`.
80+- **The port is already in use.** A previous run left something behind. `lsof -i :8080` or `ss -lptn 'sport = :8080'` names the holder; stop that before starting again, rather than moving to another port and forgetting.
81+- **Nothing is interactive.** There is no stdin. A command that asks a question will hang until it is killed; pass the answer as a flag, or do not run it.
82+- **`nohup` writes `nohup.out`** in the working directory when you forget to redirect — if you see that file appear, a redirect is missing.
new file mode 100644
@@ -0,0 +1,82 @@
1+---
2+name: bg-jobs
3+description: Start, wait on, inspect and stop a long-running background job — a server, a watcher, a build that does not end — without blocking the turn.
4+keywords: background, job, server, serve, start, daemon, nohup, watch, tail, log, pid, kill, stop, port, running
5+---
6+
7+# Background jobs
8+
9+## When to use it
10+
11+Any command that **serves, watches, or runs until stopped**: an HTTP server, `npm run dev`, `go run` on a web app, a file watcher, a queue worker. Read this before you start one, and before you wait on, inspect or stop one.
12+
13+A command that never returns will hold the turn for its whole budget and then be killed. The answer the user asked for never arrives.
14+
15+## Start it
16+
17+Both streams redirected, the pid kept:
18+
19+```bash
20+nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
21+```
22+
23+Three parts, and all three matter:
24+
25+- **`> /tmp/<job>.log 2>&1`** — both streams. Redirecting only stdout is the classic mistake: the job keeps the tool's own error pipe open, and the call cannot finish until the job does. You get the 30-second budget spent on nothing.
26+- **`&`** — the shell returns at once.
27+- **`echo $! > /tmp/<job>.pid`** — without the pid you cannot stop it later except by guessing at `pkill` patterns, which also kills things you did not start.
28+
29+Use one name per job, and reuse it for the log and the pid file.
30+
31+## Wait for it to be ready
32+
33+**Do not `sleep` and hope.** Poll for the thing you actually need, with a bound:
34+
35+```bash
36+for i in $(seq 1 30); do
37+ curl -fsS localhost:8080/ >/dev/null 2>&1 && echo ready && break
38+ sleep 0.5
39+done
40+```
41+
42+For something that is not an HTTP server, poll the log for the line it prints when it is up:
43+
44+```bash
45+for i in $(seq 1 30); do
46+ grep -q "listening on" /tmp/<job>.log && echo ready && break
47+ sleep 0.5
48+done
49+```
50+
51+If the loop ends without `ready`, the job did not start — go read the log.
52+
53+## Inspect it
54+
55+```bash
56+tail -n 40 /tmp/<job>.log # what it said
57+kill -0 "$(cat /tmp/<job>.pid)" 2>/dev/null && echo alive || echo dead
58+```
59+
60+`kill -0` sends no signal; it only asks whether the process is there. A job that is `dead` right after starting almost always says why in the last lines of its log — read them before changing anything.
61+
62+## Stop it
63+
64+```bash
65+kill "$(cat /tmp/<job>.pid)" 2>/dev/null
66+sleep 0.5
67+kill -0 "$(cat /tmp/<job>.pid)" 2>/dev/null && kill -9 "$(cat /tmp/<job>.pid)"
68+rm -f /tmp/<job>.pid
69+```
70+
71+Ask politely first (`kill` sends TERM, which lets a server close its listener), then insist. Removing the pid file afterwards stops a later command from acting on a pid the system has since reused for something else.
72+
73+## Before you finish
74+
75+**Stop every job you started**, and **say which ones you left running** and why. A server still holding port 8080 after the turn is a surprise the user will hit later, when nothing on screen explains it.
76+
77+## Traps
78+
79+- **One shell per call.** Each `bash` call is a new shell in the same directory: a job started in one call is still running in the next, but shell variables are gone. That is exactly why the pid goes to a file and not to `$PID`.
80+- **The port is already in use.** A previous run left something behind. `lsof -i :8080` or `ss -lptn 'sport = :8080'` names the holder; stop that before starting again, rather than moving to another port and forgetting.
81+- **Nothing is interactive.** There is no stdin. A command that asks a question will hang until it is killed; pass the answer as a flag, or do not run it.
82+- **`nohup` writes `nohup.out`** in the working directory when you forget to redirect — if you see that file appear, a redirect is missing.
added golang-with-skills/.turbo-go/skills/greetings/SKILL.md +19 -0
new file mode 100644
@@ -0,0 +1,19 @@
1+---
2+name: greetings
3+description: Greet somebody with a festive message.
4+keywords: greet, greetings, hello, hi, welcome, bonjour, coucou, saluer
5+---
6+
7+# Greetings
8+
9+## What to do
10+
11+The command below is for YOU to run with your `bash` tool, in this same turn.
12+Do not show it to the user, and do not answer from memory: the answer is the
13+command's output, nothing else.
14+
15+Replace `<name>` with the person being greeted, then run:
16+
17+```bash
18+echo "🎉 greetings <name>"
19+```
new file mode 100644
@@ -0,0 +1,19 @@
1+---
2+name: greetings
3+description: Greet somebody with a festive message.
4+keywords: greet, greetings, hello, hi, welcome, bonjour, coucou, saluer
5+---
6+
7+# Greetings
8+
9+## What to do
10+
11+The command below is for YOU to run with your `bash` tool, in this same turn.
12+Do not show it to the user, and do not answer from memory: the answer is the
13+command's output, nothing else.
14+
15+Replace `<name>` with the person being greeted, then run:
16+
17+```bash
18+echo "🎉 greetings <name>"
19+```
added golang-with-skills/.turbo-go/skills/lsp-navigation/SKILL.md +45 -0
new file mode 100644
@@ -0,0 +1,45 @@
1+---
2+name: lsp-navigation
3+description: Navigate and change code with the `lsp` tool — find where a symbol is defined, who uses it, what its type is, what the compiler reports, and rename it everywhere.
4+keywords: lsp, definition, references, usages, callers, hover, type, signature, symbols, outline, diagnostics, errors, warnings, rename, refactor, language server
5+---
6+
7+# Navigate code with the `lsp` tool
8+
9+## When to use it
10+
11+The `lsp` tool asks the project's language server what the compiler knows. Prefer it to `grep` and to reading whole files when the question is about **symbols**: where something is declared, who uses it, what type it has, what is wrong in a file, or how to rename it safely. Its description lists the servers available and the file extensions they cover; for other files, fall back to `bash` and `read_file`.
12+
13+## How to point at a symbol
14+
15+Give the **identifier** as written in the code, in `symbol`: the tool finds its first occurrence in the file. Add `line` (1-based) when the same name appears several times and you want a particular one. This is the reliable way; never guess a column.
16+
17+Only when you have an exact position — from `read_file` with `numbered=true` — may you send `line` and `column` instead (both 1-based, the column pointing inside the identifier).
18+
19+## The actions
20+
21+| You want to know… | Call |
22+| --- | --- |
23+| Where a symbol is declared | `{"action":"definition","path":"main.go","symbol":"hello"}` |
24+| Every place that uses it | `{"action":"references","path":"main.go","symbol":"hello"}` |
25+| Its signature, type and documentation | `{"action":"hover","path":"main.go","symbol":"hello"}` |
26+| What a file contains (outline) | `{"action":"symbols","path":"main.go"}` |
27+| What the compiler reports in a file | `{"action":"diagnostics","path":"main.go"}` |
28+| Rename it everywhere, files rewritten | `{"action":"rename","path":"main.go","symbol":"hello","new_name":"greet"}` |
29+| The occurrence on one line only | add `"line": 9` to any of the calls above |
30+
31+Answers come as `path:line:column <source line>`, one per location. You rarely need to open the file afterwards.
32+
33+## Procedure for a change
34+
35+1. `symbols` on the file to find the symbol, or `read_file numbered=true` if you already know roughly where it is.
36+2. `references` on the symbol to see every file the change touches. Say how many there are.
37+3. Edit with `edit_file` (or `rename` when the change is a rename — it rewrites all the files at once).
38+4. `diagnostics` on each edited file to see what the compiler reports, then fix what it says.
39+5. Only then run the tests with `bash`.
40+
41+## Rules
42+
43+- A `[lsp: …]` answer is information, not a crash: read it. "no language server for" means the extension is not covered — use `bash`. "not found in" means the identifier is not spelled as in the code — read the file and copy it. "past the end of line" means you miscounted — use `symbol` instead.
44+- `diagnostics` right after an edit may say "as last published" or "no diagnostics received": the server is still indexing. Ask again once.
45+- `rename` writes files. It NEEDS `new_name`, the new identifier; without it the tool answers with the exact call to make — make it, do not fall back to `edit_file`. Say what it changed, and never rename to a name the file already uses for something else.
new file mode 100644
@@ -0,0 +1,45 @@
1+---
2+name: lsp-navigation
3+description: Navigate and change code with the `lsp` tool — find where a symbol is defined, who uses it, what its type is, what the compiler reports, and rename it everywhere.
4+keywords: lsp, definition, references, usages, callers, hover, type, signature, symbols, outline, diagnostics, errors, warnings, rename, refactor, language server
5+---
6+
7+# Navigate code with the `lsp` tool
8+
9+## When to use it
10+
11+The `lsp` tool asks the project's language server what the compiler knows. Prefer it to `grep` and to reading whole files when the question is about **symbols**: where something is declared, who uses it, what type it has, what is wrong in a file, or how to rename it safely. Its description lists the servers available and the file extensions they cover; for other files, fall back to `bash` and `read_file`.
12+
13+## How to point at a symbol
14+
15+Give the **identifier** as written in the code, in `symbol`: the tool finds its first occurrence in the file. Add `line` (1-based) when the same name appears several times and you want a particular one. This is the reliable way; never guess a column.
16+
17+Only when you have an exact position — from `read_file` with `numbered=true` — may you send `line` and `column` instead (both 1-based, the column pointing inside the identifier).
18+
19+## The actions
20+
21+| You want to know… | Call |
22+| --- | --- |
23+| Where a symbol is declared | `{"action":"definition","path":"main.go","symbol":"hello"}` |
24+| Every place that uses it | `{"action":"references","path":"main.go","symbol":"hello"}` |
25+| Its signature, type and documentation | `{"action":"hover","path":"main.go","symbol":"hello"}` |
26+| What a file contains (outline) | `{"action":"symbols","path":"main.go"}` |
27+| What the compiler reports in a file | `{"action":"diagnostics","path":"main.go"}` |
28+| Rename it everywhere, files rewritten | `{"action":"rename","path":"main.go","symbol":"hello","new_name":"greet"}` |
29+| The occurrence on one line only | add `"line": 9` to any of the calls above |
30+
31+Answers come as `path:line:column <source line>`, one per location. You rarely need to open the file afterwards.
32+
33+## Procedure for a change
34+
35+1. `symbols` on the file to find the symbol, or `read_file numbered=true` if you already know roughly where it is.
36+2. `references` on the symbol to see every file the change touches. Say how many there are.
37+3. Edit with `edit_file` (or `rename` when the change is a rename — it rewrites all the files at once).
38+4. `diagnostics` on each edited file to see what the compiler reports, then fix what it says.
39+5. Only then run the tests with `bash`.
40+
41+## Rules
42+
43+- A `[lsp: …]` answer is information, not a crash: read it. "no language server for" means the extension is not covered — use `bash`. "not found in" means the identifier is not spelled as in the code — read the file and copy it. "past the end of line" means you miscounted — use `symbol` instead.
44+- `diagnostics` right after an edit may say "as last published" or "no diagnostics received": the server is still indexing. Ask again once.
45+- `rename` writes files. It NEEDS `new_name`, the new identifier; without it the tool answers with the exact call to make — make it, do not fall back to `edit_file`. Say what it changed, and never rename to a name the file already uses for something else.
added golang-with-skills/.turbo-go/skills/vulcan-salute/SKILL.md +19 -0
new file mode 100644
@@ -0,0 +1,19 @@
1+---
2+name: vulcan-salute
3+description: Send a vulcan salute to somebody.
4+keywords: vulcan, vulcain, salute, salut, spock, star trek, live long and prosper, longue vie
5+---
6+
7+# Vulcan salute
8+
9+## What to do
10+
11+The command below is for YOU to run with your `bash` tool, in this same turn.
12+Do not show it to the user, and do not answer from memory: the answer is the
13+command's output, nothing else.
14+
15+Replace `<name>` with the person being saluted, then run:
16+
17+```bash
18+echo "🖖 Live long and prosper! <name> 🖖"
19+```
new file mode 100644
@@ -0,0 +1,19 @@
1+---
2+name: vulcan-salute
3+description: Send a vulcan salute to somebody.
4+keywords: vulcan, vulcain, salute, salut, spock, star trek, live long and prosper, longue vie
5+---
6+
7+# Vulcan salute
8+
9+## What to do
10+
11+The command below is for YOU to run with your `bash` tool, in this same turn.
12+Do not show it to the user, and do not answer from memory: the answer is the
13+command's output, nothing else.
14+
15+Replace `<name>` with the person being saluted, then run:
16+
17+```bash
18+echo "🖖 Live long and prosper! <name> 🖖"
19+```
added golang-with-skills/.turbo-go/skills/what-time-is-it/SKILL.md +19 -0
new file mode 100644
@@ -0,0 +1,19 @@
1+---
2+name: what-time-is-it
3+description: Give the current date and time.
4+keywords: time, date, clock, now, today, heure, date du jour, quelle heure
5+---
6+
7+# What time is it?
8+
9+## What to do
10+
11+The command below is for YOU to run with your `bash` tool, in this same turn.
12+Do not show it to the user, and never guess the time: only the command knows it.
13+
14+Run:
15+
16+```bash
17+date "+%A %d %B %Y — %H:%M:%S (%Z)"
18+```
19+
new file mode 100644
@@ -0,0 +1,19 @@
1+---
2+name: what-time-is-it
3+description: Give the current date and time.
4+keywords: time, date, clock, now, today, heure, date du jour, quelle heure
5+---
6+
7+# What time is it?
8+
9+## What to do
10+
11+The command below is for YOU to run with your `bash` tool, in this same turn.
12+Do not show it to the user, and never guess the time: only the command knows it.
13+
14+Run:
15+
16+```bash
17+date "+%A %d %B %Y — %H:%M:%S (%Z)"
18+```
19+
added golang-with-skills/.turbo-go/snippets.toml +30 -0
new file mode 100644
@@ -0,0 +1,30 @@
1+# turbo-go snippets.
2+#
3+[[snippet]]
4+group = "Go"
5+name = "main"
6+languages = ["go"]
7+body = """package main
8+
9+import "fmt"
10+
11+func main() {
12+ fmt.Println("hello world")
13+}"""
14+
15+[[snippet]]
16+group = "Go"
17+name = "switch"
18+languages = ["go"]
19+body = """
20+ i := 1
21+
22+ switch i {
23+ case 1:
24+ fmt.Println("one")
25+ case 2:
26+ fmt.Println("two")
27+ case 3:
28+ fmt.Println("three")
29+ }
30+"""
new file mode 100644
@@ -0,0 +1,30 @@
1+# turbo-go snippets.
2+#
3+[[snippet]]
4+group = "Go"
5+name = "main"
6+languages = ["go"]
7+body = """package main
8+
9+import "fmt"
10+
11+func main() {
12+ fmt.Println("hello world")
13+}"""
14+
15+[[snippet]]
16+group = "Go"
17+name = "switch"
18+languages = ["go"]
19+body = """
20+ i := 1
21+
22+ switch i {
23+ case 1:
24+ fmt.Println("one")
25+ case 2:
26+ fmt.Println("two")
27+ case 3:
28+ fmt.Println("three")
29+ }
30+"""
added golang-with-skills/.turbo-go/tools.toml +47 -0
new file mode 100644
@@ -0,0 +1,47 @@
1+# turbo-go tools.
2+
3+[[tool]]
4+name = "~F~ormat"
5+command = "gofmt -l -w ."
6+output = "popup"
7+
8+[[tool]]
9+name = "~L~int"
10+command = "go vet ./..."
11+output = "popup"
12+
13+[[tool]]
14+name = "~B~uild"
15+command = "go build ./..."
16+output = "popup"
17+
18+[[tool]]
19+name = "~T~est"
20+command = "go test ./..."
21+output = "popup"
22+
23+[[tool]]
24+name = "~R~un"
25+command = "go run ."
26+# A terminal, not a popup: a program that reads the keyboard has to be able to be answered,
27+# and one that runs long has to be able to be interrupted.
28+output = "terminal"
29+
30+# A tool that asks for a value: {{double braces}} opens a box before it runs,
31+# and what you type is shell-quoted, so a name with a space stays one argument.
32+[[tool]]
33+name = "~G~rep"
34+command = "grep -rn {{pattern}} --include='*.go' ."
35+output = "editor"
36+
37+[[tool]]
38+name = "~I~nit module"
39+command = "go mod init {{module path}}"
40+output = "popup"
41+
42+# A tool naming a `menu` gets a menu of its own on the bar.
43+[[tool]]
44+name = "~E~cho"
45+command = "echo 🎉 tada!"
46+menu = "Tools"
47+output = "terminal"
new file mode 100644
@@ -0,0 +1,47 @@
1+# turbo-go tools.
2+
3+[[tool]]
4+name = "~F~ormat"
5+command = "gofmt -l -w ."
6+output = "popup"
7+
8+[[tool]]
9+name = "~L~int"
10+command = "go vet ./..."
11+output = "popup"
12+
13+[[tool]]
14+name = "~B~uild"
15+command = "go build ./..."
16+output = "popup"
17+
18+[[tool]]
19+name = "~T~est"
20+command = "go test ./..."
21+output = "popup"
22+
23+[[tool]]
24+name = "~R~un"
25+command = "go run ."
26+# A terminal, not a popup: a program that reads the keyboard has to be able to be answered,
27+# and one that runs long has to be able to be interrupted.
28+output = "terminal"
29+
30+# A tool that asks for a value: {{double braces}} opens a box before it runs,
31+# and what you type is shell-quoted, so a name with a space stays one argument.
32+[[tool]]
33+name = "~G~rep"
34+command = "grep -rn {{pattern}} --include='*.go' ."
35+output = "editor"
36+
37+[[tool]]
38+name = "~I~nit module"
39+command = "go mod init {{module path}}"
40+output = "popup"
41+
42+# A tool naming a `menu` gets a menu of its own on the bar.
43+[[tool]]
44+name = "~E~cho"
45+command = "echo 🎉 tada!"
46+menu = "Tools"
47+output = "terminal"
added golang-with-skills/README.md +1 -0
new file mode 100644
@@ -0,0 +1 @@
1+# Golang init with skills
\ No newline at end of file
new file mode 100644
@@ -0,0 +1 @@
1+# Golang init with skills
\ No newline at end of file\ No newline at end of file