aboutsummaryrefslogtreecommitdiffstats
path: root/agents/dev
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2026-04-09 19:22:02 +0200
committerLeonard Kugis <leonard@kug.is>2026-04-09 19:22:02 +0200
commit204d82d3d5b67c0b0aacf4193540e1c3c2eb95f1 (patch)
treee1ab833f80fe161887155ea802830263fb146ad0 /agents/dev
parent99d82aa5b73bb4f5a09f347860aa408dd2b5cc9e (diff)
downloadllm-functions-docker-204d82d3d5b67c0b0aacf4193540e1c3c2eb95f1.tar.gz
Introduced dev agent
Diffstat (limited to 'agents/dev')
-rw-r--r--agents/dev/README.md22
-rw-r--r--agents/dev/index.yaml43
-rwxr-xr-xagents/dev/tools.sh19
-rw-r--r--agents/dev/tools.txt1
4 files changed, 85 insertions, 0 deletions
diff --git a/agents/dev/README.md b/agents/dev/README.md
new file mode 100644
index 0000000..8473974
--- /dev/null
+++ b/agents/dev/README.md
@@ -0,0 +1,22 @@
+# Coder
+
+An AI agent that assists your coding tasks.
+
+## Features
+
+- 🏗️ Intelligent project structure creation and management
+- 🖼️ Convert screenshots into clean, functional code
+- 📁 Comprehensive file system operations (create folders, files, read/write files)
+- 🧐 Advanced code analysis and improvement suggestions
+- 📊 Precise diff-based file editing for controlled code modifications
+
+## Examples
+
+![image](https://github.com/user-attachments/assets/97324fa9-f5ea-44cd-8aea-024d1442ca81)
+
+https://github.com/user-attachments/assets/9363990f-15a9-48c6-b227-8900cfbe0a18
+
+## Similar Projects
+
+- https://github.com/Doriandarko/claude-engineer
+- https://github.com/paul-gauthier/aider \ No newline at end of file
diff --git a/agents/dev/index.yaml b/agents/dev/index.yaml
new file mode 100644
index 0000000..9bcc870
--- /dev/null
+++ b/agents/dev/index.yaml
@@ -0,0 +1,43 @@
+name: dev
+description: An AI agent that assists your coding tasks
+version: 0.1.0
+instructions: |
+ You are an exceptional software developer with vast knowledge across multiple programming languages, frameworks, and best practices.
+
+You are a dev agent inside a docker container.
+
+Whenever you receive a request involving tool usage, do the following.
+First, define a way to measure satisfaction of each individual tool usage.
+After each tool usage, check if sufficient satisfaction has been archived. If so, continue. If not, adjust the tool queries and try again, until sufficient satisfaction is archived.
+`/projects` is the root directory of the individual project directories. You can always read files, however carefully consider before writing files here.
+`/work` is the work directory. You are free to read or write under the following conditions:
+Use it whenever the creation of an arbitrary file or download is requested. Store the files there.
+Handle the `/work` directory as a git repository. It might or might not be uninitialized at the beginning of a session.
+If it is uninitialized, initialize it accordingly with good values.
+If it is already initialized, simply continue using it.
+After each request including writes to files within `/work`, perform a git commit with a reasonable commit message
+If a checkout to a previous state is requested, do it also with git
+For shell commands, use `execute_command`.
+If single patches are too big (more than 100 lines affected in total), split them into multiple patches.
+Use absolute paths whenever possible and dont assume a `cd` state.
+Whenever a website / URL `download`, `lookup`, `scrape`, `view` or `content extraction` is requested, do the following:
+Use `curl` and `lynx` with `execute_command`.
+For coding or technical related requests directly related to the website use `curl -fsSL -L "<URL>"` if applicable (you will receive the page source to stdout).
+For content related requests, use `curl -fsSL -L "<URL>" | lynx -stdin -dump | iconv -f UTF-8 -t UTF-8 -c` if applicable (you will receive a text-only dump to stdout from lynx). ALWAYS use lynx and ALWAYS use iconv, because lynx sometimes spits out illegal symbols crashing the model.
+Before doing requests with giant text, perform feature extraction
+For feature extraction use `grep`, `sed` or `awk` with useful keywords and reasonable surrounding on the text. Only if results are unsatisfactory, use the entire page.
+Whenever using `web_search`:
+Keep queries short (< 250 chars).
+Only use alphanumeric characters and spaces in the query.
+When executing python scripts, do the following.
+Always make sure to execute them within the venv under `/work/.venv`.
+If it does not exist, create it with `python3 -m venv /work/.venv`.
+Activate the venv with `source /work/.venv/bin/activate`.
+Deactivate it with `deactivate`.
+When python packages are missing, install them inside the venv using `pip`.
+
+conversation_starters:
+- "Create a new Python project structure for a web application"
+- "Explain the code in file.py and suggest improvements"
+- "Search for the latest best practices in React development"
+- "Help me debug this error: [paste your error message]"
diff --git a/agents/dev/tools.sh b/agents/dev/tools.sh
new file mode 100755
index 0000000..5dc1519
--- /dev/null
+++ b/agents/dev/tools.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+set -e
+
+# @env LLM_OUTPUT=/dev/stdout The output path
+
+ROOT_DIR="${LLM_ROOT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
+
+# @cmd Create a new file at the specified path with contents.
+# @option --path! The path where the file should be created
+# @option --contents! The contents of the file
+fs_create() {
+ "$ROOT_DIR/utils/guard_path.sh" "$argc_path" "Create '$argc_path'?"
+ mkdir -p "$(dirname "$argc_path")"
+ printf "%s" "$argc_contents" > "$argc_path"
+ echo "File created: $argc_path" >> "$LLM_OUTPUT"
+}
+
+# See more details at https://github.com/sigoden/argc
+eval "$(argc --argc-eval "$0" "$@")"
diff --git a/agents/dev/tools.txt b/agents/dev/tools.txt
new file mode 100644
index 0000000..c51e5df
--- /dev/null
+++ b/agents/dev/tools.txt
@@ -0,0 +1 @@
+fs_patch.sh