From b9e2a7d0910f32dffc1a8cded22a98e8a8f47849 Mon Sep 17 00:00:00 2001 From: Zvonimir Sabljic Date: Wed, 26 Jul 2023 08:42:51 +0200 Subject: [PATCH 1/3] Added dev ops agent and procedure for setting up the development environment --- .../development/env_setup/cli_response.prompt | 4 ++++ .../env_setup/install_next_technology.prompt | 4 ++++ euclid/prompts/development/env_setup/specs.prompt | 15 +++++++++++++++ .../env_setup/unsuccessful_installation.prompt | 1 + euclid/prompts/system_messages/dev_ops.prompt | 0 5 files changed, 24 insertions(+) create mode 100644 euclid/prompts/development/env_setup/cli_response.prompt create mode 100644 euclid/prompts/development/env_setup/install_next_technology.prompt create mode 100644 euclid/prompts/development/env_setup/specs.prompt create mode 100644 euclid/prompts/development/env_setup/unsuccessful_installation.prompt create mode 100644 euclid/prompts/system_messages/dev_ops.prompt diff --git a/euclid/prompts/development/env_setup/cli_response.prompt b/euclid/prompts/development/env_setup/cli_response.prompt new file mode 100644 index 0000000..2f596d0 --- /dev/null +++ b/euclid/prompts/development/env_setup/cli_response.prompt @@ -0,0 +1,4 @@ +Response from the CLI: +``` +{{ cli_response }} +``` \ No newline at end of file diff --git a/euclid/prompts/development/env_setup/install_next_technology.prompt b/euclid/prompts/development/env_setup/install_next_technology.prompt new file mode 100644 index 0000000..6c6c9c5 --- /dev/null +++ b/euclid/prompts/development/env_setup/install_next_technology.prompt @@ -0,0 +1,4 @@ +Let's install `{{ technology }}` - respond with the command that I need to run to check if {{ technology }} is installed and ready to be used on my machine. You must not respond by anything other than these things: +When you want to tell me a command I need to run, respond only with the command you want me to run and nothing else. +When the technology is fully installed, respond with `INSTALLED`. +If the previous command was meant to check if the technology is install and if it wasn't, respond with `NOT_INSTALLED`. \ No newline at end of file diff --git a/euclid/prompts/development/env_setup/specs.prompt b/euclid/prompts/development/env_setup/specs.prompt new file mode 100644 index 0000000..8e7b944 --- /dev/null +++ b/euclid/prompts/development/env_setup/specs.prompt @@ -0,0 +1,15 @@ +You are working in a software development agency and a project manager and software architect approach you telling you that you're assigned to work on a new project. You are working on a web app called Euclid and your first job is to set up the environment on a computer. + +Here are the technologies that you need to use for this project: +``` +{% for tech in technologies %} +- {{ tech }} +{% endfor %} +``` + +Let's set up the environment on my machine. Here are the details about my machine: +``` +{{ os_info }} +``` + +First, filter out the technologies from the list above and tell me, which technologies need to be installed on my machine. That is everything OS specific and not dependencies, libraries, etc. Do not respond with anything else except the list in a JSON array format. \ No newline at end of file diff --git a/euclid/prompts/development/env_setup/unsuccessful_installation.prompt b/euclid/prompts/development/env_setup/unsuccessful_installation.prompt new file mode 100644 index 0000000..8e11eb8 --- /dev/null +++ b/euclid/prompts/development/env_setup/unsuccessful_installation.prompt @@ -0,0 +1 @@ +Ok, let's install {{ technology }} on my machine. You will tell me a command that I need to run and I will tell you the output I got. Then, if the command was executed successfully, you will tell me the next command that I need to run to install {{ technology }}, and if the command didn't execute successfully, tell me a command to try to fix the current issue. \ No newline at end of file diff --git a/euclid/prompts/system_messages/dev_ops.prompt b/euclid/prompts/system_messages/dev_ops.prompt new file mode 100644 index 0000000..e69de29 From 6dad55479f0b31ec8df08c6605e1e0bbfc60a67e Mon Sep 17 00:00:00 2001 From: Zvonimir Sabljic Date: Wed, 26 Jul 2023 08:45:34 +0200 Subject: [PATCH 2/3] Added code monkey agent and the prompt to implement changes that developer outlined --- .../development/implement_changes.prompt | 18 ++++++++++++++++++ .../prompts/system_messages/code_monkey.prompt | 1 + 2 files changed, 19 insertions(+) create mode 100644 euclid/prompts/development/implement_changes.prompt create mode 100644 euclid/prompts/system_messages/code_monkey.prompt diff --git a/euclid/prompts/development/implement_changes.prompt b/euclid/prompts/development/implement_changes.prompt new file mode 100644 index 0000000..e2e597b --- /dev/null +++ b/euclid/prompts/development/implement_changes.prompt @@ -0,0 +1,18 @@ +I will show you contents from a file {{ file_name }} and the instructions of what changes need to be made to that file. The instructions will be in the following format: +-- INSTRUCTIONS -- +{all_the_instructions} +-- END OF INSTRUCTIONS -- + +I want you to modify the file contents and respond with the entire file along with the modifications. If anything needs to be written by the user, add the comment in the same line as the code that starts with `// INPUT_REQUIRED {input_description}` where `input_description` is a description of what needs to be added here by the user. + +Here is how the file `{{ file_name }}` looks now: +```javascript +{{ file_content }} +``` + +Here are the instructions for changes that need to be made: +-- INSTRUCTIONS -- +{{ instructions }} +-- END OF INSTRUCTIONS -- + +Do not write anything else but only the file contents. Keep in mind that the changes might be related to multiple files. You don't need to think about any other changes except for the changes in `index.js` \ No newline at end of file diff --git a/euclid/prompts/system_messages/code_monkey.prompt b/euclid/prompts/system_messages/code_monkey.prompt new file mode 100644 index 0000000..c0ef55b --- /dev/null +++ b/euclid/prompts/system_messages/code_monkey.prompt @@ -0,0 +1 @@ +You are a full stack software developer who works in a software development agency. You write very modular code and you practice TDD (test driven development) whenever is suitable to use it. Your job is to implement tasks that your tech lead assigns you. \ No newline at end of file From 6a553a0288a727f7736b627682d50aea85273f01 Mon Sep 17 00:00:00 2001 From: Zvonimir Sabljic Date: Wed, 26 Jul 2023 08:46:56 +0200 Subject: [PATCH 3/3] Ask high level questions one by one --- euclid/prompts/high_level_questions/specs.prompt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/euclid/prompts/high_level_questions/specs.prompt b/euclid/prompts/high_level_questions/specs.prompt index 5ee0b1c..71deb02 100644 --- a/euclid/prompts/high_level_questions/specs.prompt +++ b/euclid/prompts/high_level_questions/specs.prompt @@ -19,8 +19,10 @@ Here is an overview of the tasks that you need to do: 3. Break down user tasks. In this task, you will think about the app description, answers from step #1 and the user stories from the step #2 and create a list of user tasks that a user needs to do to interact with the app. In the example description, user tasks could be: - `user runs the CLI command in which they specify the keyword youtube channel needs to contain and the location where the CSV file will be saved to` -Let's start with the task #1 Getting additional answers. Think about the description for the app Euclid and ask questions that you would like to get cleared before going onto breaking down the user stories. +Let's start with the task #1 Getting additional answers. Think about the description for the app Euclid and ask the first question that you would like to get cleared before going onto breaking down the user stories. I will give the answer for your question and we will repeat this process until everything is clear. + **IMPORTANT** +Ask only ONE question at a time. If everything is clear, you write the response in the following format: EVERYTHING_CLEAR App recap: {{recap of the app after all clerifications}} \ No newline at end of file