AI prompts
base on Xcode extension for GitHub Copilot # <img align="center" height="70" src="./Docs/AppIcon.png"/> GitHub Copilot for Xcode
[GitHub Copilot](https://github.com/features/copilot) is an AI pair programmer
tool that helps you write code faster and smarter. Copilot for Xcode is an Xcode extension that provides inline coding suggestions as you type and a chat assistant to answer your coding questions.
## Chat [Preview]
GitHub Copilot Chat provides suggestions to your specific coding tasks via chat.
<img alt="Chat of GitHub Copilot for Xcode" src="./Docs/chat_dark.gif" width="800" />
## Code Completion
You can receive auto-complete type suggestions from GitHub Copilot either by starting to write the code you want to use, or by writing a natural language comment describing what you want the code to do.
<img alt="Code Completion of GitHub Copilot for Xcode" src="./Docs/demo.gif" width="800" />
## Preview Policy
Use of the GitHub Copilot Xcode Extension is subject to [GitHub's Pre-Release Terms](https://docs.github.com/en/site-policy/github-terms/github-pre-release-license-terms). We want to remind you that:
> Previews may not be supported or may change at any time. You may receive confidential information through those programs that must remain confidential while the program is private. We'd love your feedback to make our Previews better.
## Requirements
- macOS 12+
- Xcode 8+
- A GitHub Copilot subscription. To learn more, visit [https://github.com/features/copilot](https://github.com/features/copilot).
## Getting Started
1. Install via [Homebrew](https://brew.sh/):
```sh
brew install --cask github-copilot-for-xcode
```
Or download the `dmg` from
[the latest release](https://github.com/github/CopilotForXcode/releases/latest/download/GitHubCopilotForXcode.dmg).
Drag `GitHub Copilot for Xcode` into the `Applications` folder:
<p align="center">
<img alt="Screenshot of opened dmg" src="./Docs/dmg-open.png" width="512" />
</p>
Updates can be downloaded and installed by the app.
1. Open the `GitHub Copilot for Xcode` application (from the `Applications` folder). Accept the security warning.
<p align="center">
<img alt="Screenshot of MacOS download permission request" src="./Docs/macos-download-open-confirm.png" width="350" />
</p>
1. A background item will be added to enable Copilot to start when `GitHub Copilot for Xcode` is opened.
<p align="center">
<img alt="Screenshot of background item" src="./Docs/background-item.png" width="370" />
</p>
1. Two permissions are required: `Accessibility` and `Xcode Source Editor
Extension`. For more on why these permissions are required see
[TROUBLESHOOTING.md](./TROUBLESHOOTING.md).
The first time the application is run the `Accessibility` permission should be requested:
<p align="center">
<img alt="Screenshot of accessibility permission request" src="./Docs/accessibility-permission-request.png" width="529" />
</p>
The `Xcode Source Editor Extension` permission needs to be enabled manually. Click
`Extension Permission` from the `GitHub Copilot for Xcode` application settings to open the
System Preferences to the `Extensions` panel. Select `Xcode Source Editor`
and enable `GitHub Copilot`:
<p align="center">
<img alt="Screenshot of extension permission" src="./Docs/extension-permission.png" width="582" />
</p>
1. After granting the extension permission, open Xcode. Verify that the
`Github Copilot` menu is available and enabled under the Xcode `Editor`
menu.
<br>
<p align="center">
<img alt="Screenshot of Xcode Editor GitHub Copilot menu item" src="./Docs/xcode-menu.png" width="648" />
</p>
Keyboard shortcuts can be set for all menu items in the `Key Bindings`
section of Xcode preferences.
1. To sign into GitHub Copilot, click the `Sign in` button in the settings application. This will open a browser window and copy a code to the clipboard. Paste the code into the GitHub login page and authorize the application.
<p align="center">
<img alt="Screenshot of sign-in popup" src="./Docs/device-code.png" width="372" />
</p>
1. To install updates, click `Check for Updates` from the menu item or in the
settings application.
After installing a new version, Xcode must be restarted to use the new
version correctly.
New versions can also be installed from `dmg` files downloaded from the
releases page. When installing a new version via `dmg`, the application must
be run manually the first time to accept the downloaded from the internet
warning.
1. To avoid confusion, we recommend disabling `Predictive code completion` under
`Xcode` > `Preferences` > `Text Editing` > `Editing`.
1. Press `tab` to accept the first line of a suggestion, hold `option` to view
the full suggestion, and press `option` + `tab` to accept the full suggestion.
<p align="center">
<img alt="Screenshot of welcome screen" src="./Docs/welcome.png" width="672" />
</p>
## How to use Chat [Preview]
Open Copilot Chat in GitHub Copilot.
- Open via the Xcode menu `Xcode -> Editor -> GitHub Copilot -> Open Chat`.
<p align="center">
<img alt="Screenshot of Xcode Editor GitHub Copilot menu item" src="./Docs/xcode-menu_dark.png" width="648" />
</p>
- Open via GitHub Copilot app menu `Open Chat`.
<p align="center">
<img alt="Screenshot of GitHub Copilot menu item" src="./Docs/copilot-menu_dark.png" width="182" />
</p>
## How to use Code Completion
Press `tab` to accept the first line of a suggestion, hold `option` to view
the full suggestion, and press `option` + `tab` to accept the full suggestion.
## License
This project is licensed under the terms of the MIT open source license. Please
refer to [LICENSE.txt](./LICENSE.txt) for the full terms.
## Privacy
We follow responsible practices in accordance with our
[Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement).
To get the latest security fixes, please use the latest version of the GitHub
Copilot for Xcode.
## Support
We’d love to get your help in making GitHub Copilot better! If you have
feedback or encounter any problems, please reach out on our [Feedback
forum](https://github.com/orgs/community/discussions/categories/copilot).
## Acknowledgements
Thank you to @intitni for creating the original project that this is based on.
Attributions can be found under About when running the app or in
[Credits.rtf](./Copilot%20for%20Xcode/Credits.rtf).", Assign "at most 3 tags" to the expected json: {"id":"12505","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"