This pack is mainly for VS Code + Copilot style usage right now. The idea is to copy it into a target repo under .github/harness_coding_instructions so the agent can route requests to the right workflow file, follow a more consistent process, and keep repo level context in one place once the repo has been initialized.
To get the best experience, enable auto approve (** KEEP ANY CMDS THAT CAN DELETE YOUR FILES DISABLED ** )
The intended final layout is:
- .github/harness_coding_instructions/copilot-instructions.md
- .github/harness_coding_instructions/workflow/...
- .github/harness_coding_instructions/general/...
- .github/harness_coding_instructions/repo_info/...
So do not end up with .github/harness_coding_instructions/harness_coding_instructions unless you actually want that extra nesting and plan to change all paths.
Use valid JSON like this:
{
"chat.instructionsFilesLocations": {
".github/harness_coding_instructions": true,
".claude/rules": true
}
}If you have multi-repos in one workspace, adjust .github/harness_coding_instructions to the correct relative path for that repo.
If the target repo has not been initialized yet, start with the initialize workflow first using a prompt like:
following the instructions in @/.github/harness_coding_instructions/workflow/initialize.instructions.md to initialize the repo [repo name]
Most of the workflow files expect repo context files under .github/harness_coding_instructions/repo_info before they do anything else.
This pack gives you the router, workflow files, request templates, and the repo_info memory folder. In this source repo, repo_info contains generated memory for maintaining the pack itself; in a newly copied target repo, the initialize workflow creates or repairs the repo memory files that the other workflows keep referencing.
The initialize workflow must:
- create / make sure key files exist, such as codebase_overview.md, scripts_overview.md, update_logs.md, known_issues.md, past_Q&A.md, and past_Correctness_Check.md
- generate / populate files such as update_logs_auto_generated.md and known_issues_auto_generated.md
So the files it works with include:
- codebase_overview.md
- scripts_overview.md
- update_logs.md
- known_issues.md
- update_logs_auto_generated.md
- known_issues_auto_generated.md
- past_Q&A.md
- past_Correctness_Check.md
After initialize, those files become the shared memory for later code, debug, query, refactor, and correctness check requests.
This pack is for making the agent more consistent when you want it to initialize a repo, implement or update functionality, debug bugs, answer questions about the repo, run correctness checks, or refactor existing code / repo structure.
Right now I have:
- copilot-instructions.md: the main router for request classification and workflow selection
- workflow/code.instructions.md
- workflow/debug.instructions.md
- workflow/query.instructions.md
- workflow/correctness_check.instructions.md
- workflow/initialize.instructions.md
- workflow/refactor.instructions.md
- philosophy/philosophy.instructions.md
- general/code_request_template.md
- general/debug_request_template.md
- general/query_request_template.md
- general/correctness_check_request_template.md
- general/refactor_request_template.md
- general/initialize_request_template.md
- repo_info/: generated memory files; initialize creates or refreshes this folder in each target repo
The top level router is copilot-instructions.md. It classifies the request, reads the matching workflow file, and also points the agent to philosophy.instructions.md for general behavior.
If you are deciding which workflow to use:
- initialize a repo -> workflow/initialize.instructions.md
- add / build / modify functionality -> workflow/code.instructions.md
- debug / fix a bug -> workflow/debug.instructions.md
- ask repo questions -> workflow/query.instructions.md
- validate / check correctness -> workflow/correctness_check.instructions.md
- refactor -> workflow/refactor.instructions.md
The router treats refactor as its own first class category and routes it to workflow/refactor.instructions.md.
For normal use, just ask naturally and let the router pick the workflow.
If you want to be more strict, drag the exact workflow file into the chat window.
If you want to be 100% sure that copilot follows the prompt shape more closely, use the request templates in the general folder.
The initialize request template is available at general/initialize_request_template.md.
- copilot-instructions.md is not working perfectly yet
- sometimes it would not use the instruction files if the user does not use the request template
- a target repo's repo_info folder is only reliable after initialize has run there
- treat the generated repo_info files as the source of truth after initialization
- create prompts for generating a .claude.md that logs all mistakes that claude has made to prevent future errors in general