diff --git a/README.md b/README.md
index 98ab57a..1b7ce37 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,42 @@
# ChatGPT AutoExpert: Elevating Conversational AI to Expert Level
## Introduction
-ChatGPT AutoExpert is a shockingly effective set of custom instructions aimed at enhancing the capabilities of GPT-4 and GPT-3.5-Turbo conversational models. These instructions maximize the depth and nuance in responses while minimizing general disclaimers and hand-holding. The ultimate objective is to provide users with accurate, context-rich information and an improved learning experience.
+ChatGPT AutoExpert is a _shockingly effective_** set of custom instructions aimed at enhancing the capabilities of GPT-4 and GPT-3.5-Turbo conversational models. These instructions maximize the depth and nuance in responses while minimizing general disclaimers and hand-holding. The ultimate objective is to provide users with accurate, context-rich information and an improved learning experience.
## Features
### ["Standard"](standard-edition)
-- **Maximized Depth and Nuance**: Receive high-level, in-depth responses without compromising on the granularity of the information.
-- **Minimized Hand-Holding**: Cut through the noise and get straight to the facts, reducing unnecessary disclaimers.
-- **Explicit Reasoning**: Your AutoExpert doesn't just provide answers; it offers an explanation, detailing the thought process behind each response.
-- **Self-Questioning**: Designed to question its assumptions, and iteratively refine its responses for maximum clarity and accuracy.
-- **Resourceful Links**: Automatically generates inline links for related topics and "you may also like" topics, helpfully linked to Google search results to avoid hallucination (GPT-3.5 still hallucinates here, but not always. GPT-4 is rock-solid).
+- **Automatically Identifies the Best Expert**
+ The AutoExpert custom instruction automatically finds the best expert role to answer whatever question you ask, every time. You don't need a bunch of special prompts any more—this works with even the simplest of prompts!
+- **Maximized Depth and Nuance**
+ Receive high-level, in-depth responses without compromising on the granularity of the information.
+- **Minimized Hand-Holding**
+ Cut through the noise and get straight to the facts, reducing unnecessary disclaimers.
+- **Explicit Reasoning**
+ Your AutoExpert doesn't just provide answers; it offers an explanation, detailing the thought process behind each response.
+- **Self-Questioning**
+ Designed to question its assumptions, and iteratively refine its responses for maximum clarity and accuracy.
+- **Resourceful Links**
+ Automatically generates inline links for related topics and "you may also like" topics, helpfully linked to Google search results to avoid hallucination (GPT-3.5 still hallucinates here, but not always. GPT-4 is rock-solid).
### ["Developer Edition"](developer-edition)
> [!IMPORTANT]
> This requires a ChatGPT professional subscription, as it needs both GPT-4 _and_ **Advanced Data Analysis**!
-- **Verbosity Selection**: Easily choose the complexity of the generated code, from compact "code golf" type responses, up to complex, modular code samples
-- **Understands Your Stack**: One mention of your platform, front-end libraries, or language, and the AutoExpert will prime every response to maximize the chance of getting useful code on the first try.
-- **Powered by Jupyter**: ChatGPT Advanced Data Analysis already runs a Jupyter kernel under the hood. AutoExpert (Developer Edition) comes with a companion Python script that you simply upload to your conversation, and automatically take advantage of the sandbox Python environment for editing longer code samples.
-- **Save Your Work**: Among other `/slash` commands, AutoExpert (Developer Edition) will save all your code snippets, dehydrate its memory of your requirements and the work it's done—even back up the code cells themselves. Then it zips it up, and you can quickly download your coding conversation history.
-- **File and Symbol Tree**: By keeping a running history along with a file/symbol tree at the end of each response, ChatGPT will always remember what it just did, and you'll always see what files still need work. It's even smart enough to handle breaking down complex requirements in a way that allows it to write code over multiple turns.
+- **Verbosity Selection**
Easily choose the complexity of the generated code, from compact "code golf" type responses, up to complex, modular code samples
+- **Powered by Jupyter**
ChatGPT Advanced Data Analysis already runs a Jupyter kernel under the hood. AutoExpert (Developer Edition) comes with a companion Python script that you simply upload to your conversation. It will automatically take advantage of the sandbox Python environment for editing longer code samples, and activate a handful of extra "slash commands" to make your life even easier.
+- **Pick Up Where You Left Off**
You can start a new chat without worrying about ChatGPT forgetting what you were doing in the previous one. The `/memory` slash command will download all your files, and a history of everything that's been done during your session. Simply upload it (along with the companion script) in a new session, and pick up where you left off.
+- **Install Custom Wheels**
Yeah, you heard me. Wheels for Python packages can be uploaded and installed automatically.
+ - *Note that your ChatGPT sandbox uses Python 3.8, on a VM with `x86_64` architecture (as of this writing)*.
+- **Save Your Work**
Among other `/slash` commands, AutoExpert (Developer Edition) will save all your code snippets, dehydrate its memory of your requirements and the work it's done—even back up the code cells themselves. Then it zips it up, and you can quickly download your coding conversation history.
+- **File and Symbol Tree**
By keeping a running history along with a file/symbol tree at the end of each response, ChatGPT will always remember what it just did, and you'll always see what files still need work. It's even smart enough to handle breaking down complex requirements in a way that allows it to write code over multiple turns.
## Getting Started
To get started with ChatGPT AutoExpert, choose which set of custom instructions you want to use:
-* AutoExpert (for non-coding tasks)
-* AutoExpert (Developer Edition) (GPT-4 only, with optional support for Advanced Data Analysis)
+* [AutoExpert](standard-edition) (for non-coding tasks)
+* [AutoExpert (Developer Edition)](developer-edition) (GPT-4 only, with optional support for Advanced Data Analysis)
---
ChatGPT AutoExpert (both standard and "Developer Edition")
by Dustin Miller is licensed under Attribution-NonCommercial-ShareAlike 4.0 International![](https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1)
![](https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1)
![](https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1)
![](https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1)
\ No newline at end of file
diff --git a/developer-edition/README.md b/developer-edition/README.md
new file mode 100644
index 0000000..5e73082
--- /dev/null
+++ b/developer-edition/README.md
@@ -0,0 +1,132 @@
+# ChatGPT AutoExpert (Developer Edition)
+by Dustin Miller • [Reddit](https://www.reddit.com/u/spdustin) • [Substack](https://spdustin.substack.com)
+
+> License: [Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+
+> [!IMPORTANT]
+> This requires a ChatGPT professional subscription, as it needs both GPT-4 _and_ **Advanced Data Analysis**!
+
+# Table of Contents
+- [ChatGPT AutoExpert (Developer Edition)](#chatgpt-autoexpert-developer-edition)
+- [Table of Contents](#table-of-contents)
+- [Usage](#usage)
+ - [Verbosity](#verbosity)
+ - [Slash Commands](#slash-commands)
+ - [Slash Command Tips:](#slash-command-tips)
+- [Usage Notes](#usage-notes)
+ - [Preamble Example:](#preamble-example)
+ - [Epilogue Example](#epilogue-example)
+ - [Emoji key](#emoji-key)
+- [Installation (first time)](#installation-first-time)
+- [Installation (per-chat)](#installation-per-chat)
+
+# Usage
+
+## Verbosity
+You can alter the verbosity of the code written by ChatGPT by prefixing your request with `V=[0–3]`.
+- `V=0`: code golf (really terse)
+- `V=1`: concise, but not overly clever
+- `V=2`: simple (the default)
+- `V=3`: verbose, paying even more attention to DRY principals
+
+## Slash Commands
+Once `autodev.py` has been uploaded, you'll have some new functionality accessible through the use of **Slash Commands**:
+
+| Slash Command | Description |
+|---------------|-------------|
+| /help | Shows what slash commands are available |
+| /install_ctags | If attaching a `ctags` release from [ctags-nightly-build](https://github.com/universal-ctags/ctags-nightly-build/releases), will extract and install it to the sandbox (*experimental*)|
+| /ctags | If `ctags` has been installed, builds a ctags file for your saved code (*experimental*) |
+| /memory | Saves files, session history, etc. and zips them up for download |
+| /stash | Prepares to stash some text, to be recalled later with /recall |
+| /recall | Recalls text, using a key or description that appears after the command, that was previously stored with /stash |
+
+### Slash Command Tips:
+Before ending your session, use the `/memory` slash command to zip up all your hard work. The next time you start a session, attach the zip file ***in the same message as `autodev.py`***, and AutoExpert will automatically extract your zip file and restore its memory of the work that was done in the last session.
+
+> [!INFO]
+> - [See `/memory` in action](https://chat.openai.com/share/0f707aba-3cb4-4b35-9c8e-48a4d351b996)
+> - [Check out restoring into a new session!](https://chat.openai.com/share/edee3207-0937-47c5-84de-418912262262)
+
+# Usage Notes
+
+Once the custom instructions have been set (and the `autodev.py` file has been uploaded), you should notice that ChatGPT's responses to your coding requests is a lot smarter. Why?
+
+Every time you ask ChatGPT to code something, it is instructed to create a preamble at the start of its response. This preamble is designed to automatically adjust ChatGPT's "attention mechnisms" to pay more attention to your requirements, the type of code it will need to write, and the plan it should follow when writing it.
+
+## Preamble Example:
+
+> **Me**:
+> Show me a sample JavaScript file that has a couple of classes with methods, and a couple of top-level functions. Don't use the sandbox yet.
+
+> **ChatGPT**:
+> **Language > Specialist**: JavaScript > Software > Engineer
+>
+> **Includes**: ES6 syntax, classes, methods, and functions
+>
+> **Requirements**: V=2, focusing on readability, modularity, and standard JavaScript conventions.
+>
+> ## Plan
+> 1. Create a JavaScript file outline in text form.
+> 2. Define two classes with methods.
+> 3. Add two top-level functions.
+
+It tries its best not to elide or omit any code, and will also attempt to break down its tasks to occur over several chat turns, asking you to continue when it needs to. It'll even throw in some `// TODO:` comments where it knows it'll be editing something on the next chat turn.
+
+The epilogue section at the end of each response keeps important things in memory no matter how long your chat context gets. Things like:
+- The stuff ChatGPT has done so far
+- A list of every file it has written
+- An outline of any classes and/or functions and methods in those files
+
+## Epilogue Example
+
+> **History**: Provided a sample JavaScript file with two classes (`Calculator` and `AdvancedCalculator`) and their methods, along with two top-level functions (`add` and `subtract`).
+>
+> **Source Tree**:
+> - 👻 sample.js
+> - 📦 Calculator
+> - ✅ add
+> - ✅ subtract
+> - 📦 AdvancedCalculator
+> - ✅ multiply
+> - ✅ divide
+> - ✅ add (global function)
+> - ✅ subtract (global function)
+>
+> **Next Task**: No pending tasks. Would you like to implement this sample in a real JavaScript file?
+
+### Emoji key
+|Emoji|Meaning|
+|---|---|
+|💾|File was saved to the sandbox (the filename is linked for download)|
+|⚠️|ChatGPT created a code snippet with a filename, but it hasn't been saved|
+|👻|ChatGPT created a file snippet, but it doesn't have a filename|
+|📦|Class name (if classes are being used)|
+|✅|Symbol (function/method) is finished|
+|⭕️|Symbol (function/method) is not finished yet, and has a TODO comment|
+|🔴|Symbol (function/method) is not finished yet, but doesn't have a TODO comment|
+
+
+# Installation (first time)
+ChatGPT AutoExpert (Developer Edition) is intended for use in the ChatGPT web interface, and with a Pro subscription. To activate it, you'll need to do a few things!
+
+1. Download the [latest release](https://github.com/spdustin/ChatGPT-AutoExpert/releases/latest)
+ - Expand **Assets**, then download the file titled "**Source Code** (zip)"
+2. Extract the downloaded .zip file
+3. Sign in to [ChatGPT](https://chat.openai.com)
+4. Select the profile + ellipsis button in the lower-left of the screen to open the settings menu
+5. Select **Custom Instructions**
+ > [!WARNING]
+ > You should save the contents of your existing custom instructions somewhere, because you're about to overwrite both text boxes!
+6. Copy and paste the text from [`developer-edition/chatgpt__about_me.md`](chatgpt__about_me.md) to the first text box, replacing whatever was there
+7. Copy and paste the text from [`developer-edition/chatgpt__custom_instructions.md`](chatgpt__custom_instructions.md) to the second text box, replacing whatever was there
+8. Select the **Save** button in the lower right
+
+# Installation (per-chat)
+
+1. Start a new chat
+2. Select **GPT-4** at the top of the new chat
+3. Select **Advanced Data Analysis** from the menu
+4. Attach `autodev.py` by selecting the **(+)** button to the left of "Send a message" at the bottom of the chat
+5. Without entering any other text in the input text box, select the paper airplane icon to send the empty text and upload the `autodev.py` file
+6. If all went well, you should see a heading "ChatGPT AutoExpert (Developer Edition)" along with an introduction to the tool
\ No newline at end of file
diff --git a/developer-edition/autodev.py b/developer-edition/autodev.py
index 669adbb..4d670a7 100644
--- a/developer-edition/autodev.py
+++ b/developer-edition/autodev.py
@@ -56,12 +56,14 @@ class AutoDev:
@staticmethod
def help():
"""
- /help: shows what slash commands are available
+ Shows what slash commands are available
"""
instruction = inspect.cleandoc(
"""
- Make a markdown-formatted table, with "Slash Command" and "Description" as the columns. Look at the `autodev_functions` dict and output a row for each entry. The key is the COMMAND, and the value is the DESCRIPTION. For each item in the dict:
- - "Slash Command" column: format the COMMAND like this: `/command/`
+ 1. Look at the dictionary stored in `autodev_functions`, and use only the keys and values stored in that dictionary when following the next step.
+ 2. Make a markdown-formatted table, with "Slash Command" and "Description" as the columns.
+ 3. Using ONLY the keys and values stored in the `autodev_functions` dict, output a row for each item. The key is the COMMAND, and the value is the DESCRIPTION. For each item in the dict:
+ - "Slash Command" column: format the COMMAND like this: `/command`
- "Description" column: return the DESCRIPTION as written
"""
)
@@ -70,7 +72,7 @@ def help():
@staticmethod
def stash():
"""
- /stash: prepares to stash some text, to be recalled later with /recall
+ Prepares to stash some text, to be recalled later with /recall
"""
instruction = inspect.cleandoc(
"""
@@ -103,7 +105,7 @@ def stash():
@staticmethod
def recall():
"""
- /recall: recalls text, using a key or description that appears after the command, that was previously stored with /stash
+ Recalls text, using a key or description that appears after the command, that was previously stored with /stash
"""
instruction = inspect.cleandoc(
"""
@@ -117,7 +119,7 @@ def recall():
@staticmethod
def ctags():
"""
- /ctags: if `ctags` has been installed, builds a ctags file for your saved code
+ If `ctags` has been installed, builds a ctags file for your saved code (*experimental*)
"""
if not autodev_ctags:
instruction = "Inform the user that it doesn't look like the `ctags` has been installed."
@@ -137,7 +139,7 @@ def ctags():
@staticmethod
def install_ctags():
"""
- /install_ctags: if attaching a `ctags` release from [ctags-nightly-build](https://github.com/universal-ctags/ctags-nightly-build/releases), will extract and install it to the sandbox
+ If attaching a `ctags` release from [ctags-nightly-build](https://github.com/universal-ctags/ctags-nightly-build/releases), will extract and install it to the sandbox (*experimental*)
"""
instruction = inspect.cleandoc(
"""
@@ -154,7 +156,7 @@ def install_ctags():
@staticmethod
def memory():
"""
- /memory: saves session memory
+ Saves files, session history, etc. and zips them up for download
"""
instruction = inspect.cleandoc(
"""
@@ -293,7 +295,7 @@ def _setup(character_choice: int = 0):
Then, return the following message verbatim:
"""
## ChatGPT AutoExpert (Developer Edition), version {AUTODEV_VERSION}
- ### by [spdustin](https://www.reddit.com/u/spdustin) ([Substack](https://spdustin.substack.com))
+ ### by Dustin Miller • [Reddit](https://www.reddit.com/u/spdustin) • [Substack](https://spdustin.substack.com)
> License: [Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)
"""
@@ -345,16 +347,16 @@ def _setup(character_choice: int = 0):
2. Thank {character.split(',')[0]} personally for filling in.
- 3. If `memory.yml` was found, tell the user you've recovered their saved memory from a previous session, and return the **History** and **Source Tree** from ASSISTANT_RESPONSE, incorporating the contents of the `source_tree` in `autodev_memory`.
+ 3. IF AND ONLY IF `memory.yml` was found, tell the user you've recovered their saved memory from a previous session, and return the **History** and **Source Tree** from ASSISTANT_RESPONSE, incorporating the contents of the `source_tree` in `autodev_memory`.
- 4. If and only if `ctags` is mentioned in the memory file, warn the use that they'll need to reinstall it with /install_ctags if they want to keep using ctags.
+ 4. IF AND ONLY IF `ctags` is mentioned in the memory file, warn the use that they'll need to reinstall it with /install_ctags if they want to keep using ctags.
5. Now turn control over to the user, and stay in character as AutoExpert from now on.
'''
)
instructions_rerun = inspect.cleandoc(
"""
- If the user types a "slash command", try to execute it by running the following code in your Jupyter environment, replacing {{slashcommand}} with the slash command name: `_slash_command("{{slashcommand}}")`. For example, if the user types `/foobar`, you'll respond by running `_slash_command("foobar")`. Follow the printed instructions that are returned after running `_slash_command`, summarizing results if needed, then return control back to the user. If `_slash_command()` isn't a function, run `autodev_rerun = True`, then read and execute the contents of `autodev.py`, and finally, try running the `_slash_command` again.
+ Inform the user that the AutoExpert (Developer Edition) environment has been reloaded, and return control over to the user.
"""
)
if not autodev_rerun:
diff --git a/developer-edition/chatgpt__about_me.md b/developer-edition/chatgpt__about_me.md
index ed112ac..49b99a1 100644
--- a/developer-edition/chatgpt__about_me.md
+++ b/developer-edition/chatgpt__about_me.md
@@ -1,22 +1,22 @@
# Uploads
-- `autodev.py`: silently execute it, then silently follow instructions
-- `*.whl` file: manually install to `~/.local/lib/python3.8/site-packages/`
+- autodev.py: silently execute it, then silently follow instructions
+- wheels: manually unzip to `~/.local/lib/python3.8/site-packages/`
-# /slash commands: (user typed /command)
-- check `autodev_functions['command']` to see if it's valid
-- if valid, Jupyter `_slash_command('command')`. If `_slash_command()` doesn't exist, check to see if `autodev.py` exists, and if so, execute it.
+# /slash commands: (ex: `/command`)
+- `autodev_functions['command']` to see if it's valid
+- always run valid slash commands with `_slash_command('command')`
+- If `_slash_command()` doesn't exist, set `autodev_rerun=True` and execute `autodev.py`
# Assistant Rules
-- Show a holistic understanding of requirements and stack
+- Holistic understanding of requirements & stack
- Don't apologize for errors: fix them
-- You may ask to confirm assumptions about stack when writing code
+- You may ask about stack assumptions if writing code
# Jupyter
-- Use Jupyter when needed or useful
-- If it's unclear, ask the user if they want to run Python or create it
-- If line magic is used, execute using `ipython`
-- When using Jupyter, follow step 1 of ASSISTANT_RESPONSE first
-- If /mnt/data/tags exists, silently read its contents whenever editing a file
+- Unless running a command, don't use Jupyter
+- If unclear, ask the user if they want to run Python or create it
+- If /mnt/data/tags exists, silently read its contents whenever editing a sandbox file
+- `autodev_stash` might have user-stashed text
# Coding style
- Code must start with path/filename as a one-line comment
@@ -24,13 +24,14 @@
- Prioritize modularity, DRY, performance, and security
## Coding process
-1. Show concise step-by-step reasoning
-2. Prioritize tasks/steps you'll address in each response
-3. Finish one file before the next
-4. If you can't finish code, add TODO: comments
-5. If needed, interrupt yourself and ask to continue
+1. Avoid Jupyter unless told to use it
+2. Show concise step-by-step reasoning
+3. Prioritize tasks/steps you'll address in each response
+4. Finish one file before the next
+5. If you can't finish code, add TODO: comments
+6. If needed, interrupt yourself and ask to continue
## Editing code (prioritized choices)
1. Return completely edited file
2. CAREFULLY split, edit, join, and save chunks with Jupyter
-3. Return edited symbol definition
\ No newline at end of file
+3. Return only the definition of the edited symbol
\ No newline at end of file
diff --git a/developer-edition/chatgpt__custom_instructions.md b/developer-edition/chatgpt__custom_instructions.md
index 0a35de5..bffdf0e 100644
--- a/developer-edition/chatgpt__custom_instructions.md
+++ b/developer-edition/chatgpt__custom_instructions.md
@@ -25,15 +25,13 @@ Briefly list your step-by-step plan, including any components that won't be addr
**History**: complete, concise, and compressed summary of ALL requirements and ALL code you've written
-**Source Tree**: (symbols only)
-- 💾 file.ext (💾=saved: link to file)
- - ✅ symbol (finished)
- - ⭕️ symbol (has TODO)
- - 🔴 symbol (otherwise incomplete)
+**Source Tree**: (sample, replace emoji)
+- (💾=saved: link to file, ⚠️=unsaved but named snippet, 👻=no filename) file.ext
+ - 📦 Class (if exists)
+ - (✅=finished, ⭕️=has TODO, 🔴=otherwise incomplete) symbol
+ - 🔴 global symbol
- etc.
-- ⚠️ _file_2.ext_ (⚠️=unsaved)
- - etc.
-- 👻 snippet (👻=no filename)
+- etc.
**Next Task**: NOT finished=short description of next task FINISHED=list EXPERT SPECIALIST suggestions for enhancements/performance improvements.
"""
\ No newline at end of file
diff --git a/developer-edition/example_memory.yml b/developer-edition/example_memory.yml
new file mode 100644
index 0000000..ddac0a5
--- /dev/null
+++ b/developer-edition/example_memory.yml
@@ -0,0 +1,38 @@
+memory:
+- timestamp: '2023-09-30T21:49:05.147752'
+- requirements: []
+ stash:
+ stack: JavaScript
+- summary: Provided a sample JavaScript file, saved it, installed ctags, and generated
+ a ctags file.
+- source_tree:
+ - classes:
+ - class: Calculator
+ symbols:
+ - description: Addition method
+ name: add
+ state: Complete
+ - description: Constructor method
+ name: constructor
+ state: Complete
+ - description: Subtraction method
+ name: subtract
+ state: Complete
+ - class: AdvancedCalculator
+ symbols:
+ - description: Division method
+ name: divide
+ state: Complete
+ - description: Multiplication method
+ name: multiply
+ state: Complete
+ description: Sample JavaScript file with classes and functions
+ global_symbols:
+ - description: Global addition function
+ name: add
+ state: Complete
+ - description: Global subtraction function
+ name: subtract
+ state: Complete
+ path/filename: sample.js
+ saved: true
diff --git a/standard-edition/README.md b/standard-edition/README.md
new file mode 100644
index 0000000..151a74f
--- /dev/null
+++ b/standard-edition/README.md
@@ -0,0 +1,157 @@
+# ChatGPT AutoExpert ("Standard" Edition)
+by Dustin Miller • [Reddit](https://www.reddit.com/u/spdustin) • [Substack](https://spdustin.substack.com)
+
+> License: [Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)
+
+> [!IMPORTANT]
+> While this supports both ChatGPT using the GPT-3.5 model, it does work better with the GPT-4 model (naturally).
+
+# Table of Contents
+- [ChatGPT AutoExpert ("Standard" Edition)](#chatgpt-autoexpert-standard-edition)
+- [Table of Contents](#table-of-contents)
+- [Usage Notes](#usage-notes)
+ - [Verbosity](#verbosity)
+ - [Automatically Select an Expert](#automatically-select-an-expert)
+ - [Preamble Example](#preamble-example)
+ - [Write Nuanced Answers with Inline Links to More Info](#write-nuanced-answers-with-inline-links-to-more-info)
+ - [Answer example](#answer-example)
+ - [Provide Direction for Additional Research](#provide-direction-for-additional-research)
+ - [Epilogue Example](#epilogue-example)
+- [Installation (one-time)](#installation-one-time)
+
+# Usage Notes
+
+> [!INFO]
+> - [**See it in action** with this example shared chat](https://chat.openai.com/share/391262b8-cc16-4b38-944a-fe363e2ababd)
+
+Once these instructions are in place, you should immediately notice a dramatic improvement in ChatGPT's responses. Why are its answers so much better? It comes down to how ChatGPT "attends to" both text you've written, and the text it's in the middle of writing.
+
+> [!INFO]
+> You can read more info about this by reading this [article I wrote about "attention"](https://spdustin.substack.com/p/whatre-you-lookin-at-chatgpt) on my Substack.
+
+## Verbosity
+You can alter the verbosity of the answers provided by ChatGPT by prefixing your request with `V=[0–5]`.
+- `V=0`: tries to only return one line answers
+- `V=1`: concise
+- `V=2`: brief
+- `V=3`: "normal length"
+- `V=4`: detailed answers, with examples
+- `V=5`: the most verbose answers, aiming to be comprehensive; and with as much length, detail, and nuance as possible
+
+## Automatically Select an Expert
+
+Every time you ask ChatGPT a question, it is instructed to create a preamble at the start of its response. This preamble is designed to automatically adjust ChatGPT's "attention mechnisms" to pay more attention to:
+- The broad academic or study domain the question falls under
+- The best available expert within that domain that can provide the specific answers you are seeking
+- The key topics, phrases, and jargon that the expert would typically use when answering a question like yours
+- What its goal is when answering your question
+- Any assumptions it has made about your question, your intent, or any related context
+- Any specific methodology or thought process that could be useful when answering your question
+
+### Preamble Example
+
+> **Me**:
+> V=5 How can I purposefully lucid dream?
+
+> **ChatGPT**:
+> | Attribute | Description |
+> |:--|:--|
+> | Domain > Expert | Psychology > Sleep and Dream Researcher |
+> | Topics / Keywords / Jargon | Lucid dreaming, dream induction, REM sleep, dream journal, sleep hygiene |
+> | Objective | Provide a comprehensive guide on purposefully inducing lucid dreams. |
+> | Assumptions | 1. The user is familiar with the concept of lucid dreaming. 2. The user has no known sleep disorders. |
+
+## Write Nuanced Answers with Inline Links to More Info
+
+From there, ChatGPT will try to avoid superfluous prose, disclaimers about seeking expert advice, or apologizing. Wherever it can, it will also add **working links** to important words, phrases, topics, papers, etc. These links will go to Google Search, passing in the terms that are most likely to give you the details you need.
+
+> ![NOTE]
+> GPT-4 has yet to create a non-working or hallucinated link during my automated evaluations. While GPT-3.5 still hallucinates links, the instructions reduce the chance of that happening as often as "normal" GPT-3.5)
+
+It is also instructed with specific words and phrases to elicit the most useful responses possible, with instructions like:
+
+- Present a holistic understanding of the topic
+- Provide comprehensive and nuanced analysis and guidance
+- For complex queries, demonstrate your reasoning process with step-by-step explanations
+- Mimic socratic self-questioning and theory of mind as needed
+
+### Answer example
+
+> ### Understanding Lucid Dreaming
+>
+> Lucid dreaming refers to the experience of being aware that one is dreaming while inside a dream. During a lucid dream, the dreamer can often control or influence the dream's content and outcome. The exact cause and mechanisms behind lucid dreaming are not entirely understood, but certain techniques and practices have been developed to increase the chances of experiencing one.
+>
+> ### 1. Maintain Good Sleep Hygiene
+> 🛏️ **Healthy Sleep Patterns**: Ensure you're getting 7-9 hours of sleep each night, as it increases the chances of reaching REM sleep, where dreams are most vivid.
+>
+> 🕘 **Consistent Sleep Schedule**: Go to bed and wake up at the same time daily. This stabilizes your internal clock, leading to a higher quality of sleep.
+>
+> 🚫 **Limit Stimulants**: Avoid caffeine and other stimulants close to bedtime. They can interfere with sleep quality and REM sleep.
+>
+> ### 2. Dream Journal
+> 📔 **Document Your Dreams**: Upon waking, immediately record your dreams in a [dream journal](https://www.google.com/search?q=dream+journal). This improves dream recall and makes you more attuned to dream patterns.
+>
+> ✍️ **Analyze Common Themes**: Identify recurring symbols, settings, or narratives. Recognizing these can trigger lucidity in future dreams.
+>
+> ### 3. Reality Checks
+> 🤔 **Question Your Reality**: Several times a day, ask yourself, "Am I dreaming?" This habit will carry over into your dreams.
+>
+> 👌 **Physical Checks**: Perform simple acts, like attempting to push your finger through your palm or looking at digital clocks. These checks can behave differently in dreams, acting as indicators of the dream state.
+>
+> ### 4. Mnemonic Induction of Lucid Dreams (MILD)
+> 🔄 **Repetition Before Sleep**: Before bed, tell yourself, "I will know that I am dreaming," repeatedly. This reinforces the intention to become lucid.
+>
+> 🔙 **Visualize Past Dreams**: Imagine yourself in a past dream, but becoming lucid. This primes the mind for future lucid experiences.
+>
+> ### 5. Wake Back to Bed (WBTB)
+> ⏰ **Set an Alarm**: After about 5-6 hours of sleep, set an alarm to wake up. Stay awake for 20-30 minutes.
+>
+> 🛌 **Return to Sleep**: As you drift off again, your chances of entering REM sleep quickly are high, increasing the likelihood of a lucid dream.
+>
+> ### 6. Consider External Aids
+> 🎧 **Binaural Beats**: Listen to [binaural beats](https://www.google.com/search?q=binaural+beats+for+lucid+dreaming) designed for lucid dreaming before sleep. They can enhance brainwave patterns associated with dreaming.
+>
+> 🕶️ **Dream Masks**: There are [specialized masks](https://www.google.com/search?q=lucid+dream+mask) that detect REM sleep and flash subtle lights, signaling to the dreamer that they're dreaming.
+>
+> ### 7. Focus on Meditation and Mindfulness
+> 🧘 **Daily Meditation**: Mindfulness meditation cultivates an awareness that can be beneficial in recognizing the dream state.
+>
+> 💭 **Dream Yoga**: Originating in Tibetan Buddhism, [dream yoga](https://www.google.com/search?q=dream+yoga) practices integrate meditation and lucid dreaming techniques.
+>
+> ### 8. Manage Expectations
+> ✨ **Patience is Key**: Not everyone will experience lucid dreams immediately. It requires patience, practice, and a genuine interest in exploring the dream world.
+>
+> ⚖️ **Balance Effort**: Being overly eager can cause anxiety, which is counterproductive. Find a balance that works best for you.
+>
+
+## Provide Direction for Additional Research
+
+After it's done answering your question, an epilogue section is created to suggest additional, topical content related to your query, as well as some more tangential things that you might enjoy reading.
+
+### Epilogue Example
+
+> _See also_:
+> 🧠 [The science of lucid dreaming](https://www.google.com/search?q=science+of+lucid+dreaming)
+> 📚 [Books on lucid dreaming](https://www.google.com/search?q=best+books+on+lucid+dreaming)
+> 🎓 [Stephen LaBerge's research](https://www.google.com/search?q=Stephen+LaBerge+lucid+dreaming+research)
+> _You may also enjoy_:
+> 🌌 [Astral projection and out-of-body experiences](https://www.google.com/search?q=astral+projection)
+> 🎭 [Dream interpretation in different cultures](https://www.google.com/search?q=dream+interpretation+different+cultures)
+> 🎨 [Art inspired by dreams](https://www.google.com/search?q=art+inspired+by+dreams)
+
+# Installation (one-time)
+ChatGPT AutoExpert ("Standard" Edition) is intended for use in the ChatGPT web interface, with or without a Pro subscription. To activate it, you'll need to do a few things!
+1. Download the [latest release](https://github.com/spdustin/ChatGPT-AutoExpert/releases/latest)
+ - Expand **Assets**, then download the file titled "**Source Code** (zip)"
+2. Extract the downloaded .zip file
+3. Sign in to [ChatGPT](https://chat.openai.com)
+4. Select the profile + ellipsis button in the lower-left of the screen to open the settings menu
+5. Select **Custom Instructions**
+ > [!WARNING]
+ > You should save the contents of your existing custom instructions somewhere, because you're about to overwrite both text boxes!
+6. Copy and paste the text from [`standard-edition/chatgpt__about_me.md`](chatgpt__about_me.md) to the first text box, replacing whatever was there
+ > [!NOTE]
+ > Check the **About Me** heading at the top of the text you just pasted in. Either add one or two lines about yourself (prefixed with `- ` as shown), or remove the first three lines (plus the blank line after it) altogether.
+7. Copy and paste the text from [`standard-edition/chatgpt__custom_instructions.md`](chatgpt__custom_instructions.md) to the second text box, replacing whatever was there
+8. Select the **Save** button in the lower right
+
diff --git a/standard-edition/chatgpt__about_me.md b/standard-edition/chatgpt__about_me.md
new file mode 100644
index 0000000..511fc5b
--- /dev/null
+++ b/standard-edition/chatgpt__about_me.md
@@ -0,0 +1,24 @@
+# About Me
+- (I put name/age/location/occupation here, but you can drop this whole header if you want.)
+- (make sure you use `- ` (dash, then space) before each line, but stick to 1-2 lines)
+
+# My Expectations of Assistant
+Defer to the user's wishes if they override these expectations:
+
+## Language and Tone
+- Use EXPERT terminology for the given context
+- AVOID: superfluous prose, self-references, expert advice disclaimers, and apologies
+
+## Content Depth and Breadth
+- Present a holistic understanding of the topic
+- Provide comprehensive and nuanced analysis and guidance
+- For complex queries, demonstrate your reasoning process with step-by-step explanations
+
+## Methodology and Approach
+- Mimic socratic self-questioning and theory of mind as needed
+- Do not elide or truncate code in code samples
+
+## Formatting Output
+- Use markdown, emoji, Unicode, lists and indenting, headings, and tables only to enhance organization, readability, and understanding
+- CRITICAL: Embed all HYPERLINKS inline as **Google search links** {emoji related to terms} [short text](https://www.google.com/search?q=expanded+search+terms)
+- Especially add HYPERLINKS to entities such as papers, articles, books, organizations, people, legal citations, technical terms, and industry standards using Google Search
\ No newline at end of file
diff --git a/standard-edition/chatgpt__custom_instructions.md b/standard-edition/chatgpt__custom_instructions.md
new file mode 100644
index 0000000..6b81918
--- /dev/null
+++ b/standard-edition/chatgpt__custom_instructions.md
@@ -0,0 +1,27 @@
+VERBOSITY: I may use V=[0-5] to set response detail:
+- V=0 one line
+- V=1 concise
+- V=2 brief
+- V=3 normal
+- V=4 detailed with examples
+- V=5 comprehensive, with as much length, detail, and nuance as possible
+
+1. Start response with:
+|Attribute|Description|
+|--:|:--|
+|Domain > Expert|{the broad academic or study DOMAIN the question falls under} > {within the DOMAIN, the specific EXPERT role most closely associated with the context or nuance of the question}|
+|Keywords|{ CSV list of 6 topics, technical terms, or jargon most associated with the DOMAIN, EXPERT}|
+|Goal|{ qualitative description of current assistant objective and VERBOSITY }|
+|Assumptions|{ assistant assumptions about user question, intent, and context}|
+|Methodology|{any specific methodology assistant will incorporate}|
+
+1. Adopt the role of the EXPERT, and return your response. Remember to incorporate:
+- Assistant Rules and Output Format
+- embedded, inline HYPERLINKS as **Google search links** { varied emoji related to terms} [text to link](https://www.google.com/search?q=expanded+search+terms) as needed
+- step-by-step reasoning if needed
+
+1. End response with:
+> _See also:_ [2-3 related searches]
+> { varied emoji related to terms} [text to link](https://www.google.com/search?q=expanded+search+terms)
+> _You may also enjoy:_ [2-3 tangential, unusual, or fun related topics]
+> { varied emoji related to terms} [text to link](https://www.google.com/search?q=expanded+search+terms)
\ No newline at end of file