{"owner":"openimsdk","repo":"open-im-server","hasSkills":true,"totalSkillsCount":4,"totalTokensCount":1412,"categories":["plugin-manifest"],"hasMcp":false,"mcpConfig":null,"found":["tools/imctl/README.md","tools/s3/README.md","tools/ncpu/README.md","tools/README.md"],"skills":{"tools/imctl/README.md":"# [RFC #0005] OpenIM CTL Module Proposal\n\n## Meta\n\n- Name: OpenIM CTL Module Enhancement\n- Start Date: 2023-08-23\n- Author(s): @cubxxw\n- Status: Draft\n- RFC Pull Request: (leave blank)\n- OpenIMSDK Pull Request: (leave blank)\n- OpenIMSDK Issue: https://github.com/openimsdk/open-im-server/issues/924\n- Supersedes: N/A\n\n## 📇Topics\n\n- RFC #0000 OpenIMSDK CTL Module Proposal\n  - [Meta](#meta)\n  - [Summary](#summary)\n  - [Definitions](#definitions)\n  - [Motivation](#motivation)\n  - [What it is](#what-it-is)\n  - [How it Works](#how-it-works)\n  - [Migration](#migration)\n  - [Drawbacks](#drawbacks)\n  - [Alternatives](#alternatives)\n  - [Prior Art](#prior-art)\n  - [Unresolved Questions](#unresolved-questions)\n  - [Spec. Changes (OPTIONAL)](#spec-changes-optional)\n  - [History](#history)\n\n## Summary\n\nThe OpenIM CTL module proposal aims to provide an integrated tool for the OpenIM system, offering utilities for user management, system monitoring, debugging, configuration, and more. This tool will enhance the extensibility of the OpenIM system and reduce dependencies on individual modules.\n\n## Definitions\n\n- **OpenIM**: An Instant Messaging system.\n- **`imctl`**: The control command-line tool for OpenIM.\n- **E2E Testing**: End-to-End Testing.\n- **API**: Application Programming Interface.\n\n## Motivation\n\n- Improve the OpenIM system's extensibility and reduce dependencies on individual modules.\n- Simplify the process for testers to perform automated tests.\n- Enhance interaction with scripts and reduce the system's coupling.\n- Implement a consistent tool similar to kubectl for a streamlined user experience.\n\n## What it is\n\n`imctl` is a command-line utility designed for OpenIM to provide functionalities including:\n\n- User Management: Add, delete, or disable user accounts.\n- System Monitoring: View metrics like online users, message transfer rate.\n- Debugging: View logs, adjust log levels, check system states.\n- Configuration Management: Update system settings, manage plugins/modules.\n- Data Management: Backup, restore, import, or export data.\n- System Maintenance: Update, restart services, or maintenance mode.\n\n## How it Works\n\n`imctl`, inspired by kubectl, will have sub-commands and options for the functionalities mentioned. Developers, operations, and testers can invoke these commands to manage and monitor the OpenIM system.\n\n## Migration\n\nCurrently, the `imctl` will be housed in `tools/imctl`, and later on, the plan is to move it to `cmd/imctl`. Migration guidelines will be provided to ensure smooth transitions.\n\n## Drawbacks\n\n- Overhead in learning and adapting to a new tool for existing users.\n- Potential complexities in implementing some of the advanced functionalities.\n\n## Alternatives\n\n- Continue using individual modules for OpenIM management.\n- Utilize third-party tools or platforms with similar functionalities, customizing them for OpenIM.\n\n## Prior Art\n\nKubectl from Kubernetes is a significant inspiration for `imctl`, offering a comprehensive command-line tool for managing clusters.\n\n## Unresolved Questions\n\n- What other functionalities might be required in future versions of `imctl`?\n- What's the expected timeline for transitioning from `tools/imctl` to `cmd/imctl`?\n\n## Spec. Changes (OPTIONAL)\n\nAs of now, there are no proposed changes to the core specifications or extensions. Future changes based on community feedback might necessitate spec changes, which will be documented accordingly.","tools/s3/README.md":"# After s3 switches the storage engine, convert the data\n\n- build\n```shell\ngo build -o s3convert main.go\n```\n\n- start\n```shell\n./s3convert -config <config dir path> -name <old s3 name>\n# ./s3convert -config ./../../config -name minio\n```\n","tools/ncpu/README.md":"# ncpu\n\n**ncpu** is a simple utility to fetch the number of CPU cores across different operating systems.\n\n## Introduction\n\nIn various scenarios, especially while compiling code, it's beneficial to know the number of available CPU cores to optimize the build process. However, the command to fetch the CPU core count differs between operating systems. For example, on Linux, we use `nproc`, while on macOS, it's `sysctl -n hw.ncpu`. The `ncpu` utility provides a unified way to obtain this number, regardless of the platform.\n\n## Usage\n\nTo retrieve the number of CPU cores, simply use the `ncpu` command:\n\n```bash\n$ ncpu\n```\n\nThis will return an integer representing the number of available CPU cores.\n\n### Example:\n\nLet's say you're compiling a project using `make`. To utilize all the CPU cores for the compilation process, you can use:\n\n```bash\n$ make -j $(ncpu) build # or any other build command\n```\n\nThe above command will ensure the build process takes advantage of all the available CPU cores, thereby potentially speeding up the compilation.\n\n## Why use `ncpu`?\n\n- **Cross-platform compatibility**: No need to remember or detect which OS-specific command to use. Just use `ncpu`!\n  \n- **Ease of use**: A simple and intuitive command that's easy to incorporate into scripts or command-line operations.\n\n- **Consistency**: Ensures consistent behavior and output across different systems and environments.\n\n## Installation\n\n(Include installation steps here, e.g., how to clone the repo, build the tool, or install via package manager.)\n","tools/README.md":"# Notes about go workspace\n\nAs openim is using go1.18's [workspace feature](https://go.dev/doc/tutorial/workspaces), once you add a new module, you need to run `go work use -r .` at root directory to update the workspace synced.\n\n### Create a new extensions\n\n1. Create your tools_name directory in pkg `/tools` first and cd into it.\n2. Init the project.\n3. Then `go work use -r .` at current directory to update the workspace.\n4. Create your tools\n\nYou can execute the following commands to do things above:\n\n```bash\n# edit the CRD_NAME and CRD_GROUP to your own\nexport OPENIM_TOOLS_NAME=<Changeme>\n\n# copy and paste to create a new CRD and Controller\nmkdir tools/${OPENIM_TOOLS_NAME}\ncd tools/${OPENIM_TOOLS_NAME}\ngo mod init github.com/openimsdk/open-im-server/tools/${OPENIM_TOOLS_NAME}\ngo mod tidy\ngo work use -r .\ncd ../..\n```"},"files":{"tools/imctl/README.md":"# [RFC #0005] OpenIM CTL Module Proposal\n\n## Meta\n\n- Name: OpenIM CTL Module Enhancement\n- Start Date: 2023-08-23\n- Author(s): @cubxxw\n- Status: Draft\n- RFC Pull Request: (leave blank)\n- OpenIMSDK Pull Request: (leave blank)\n- OpenIMSDK Issue: https://github.com/openimsdk/open-im-server/issues/924\n- Supersedes: N/A\n\n## 📇Topics\n\n- RFC #0000 OpenIMSDK CTL Module Proposal\n  - [Meta](#meta)\n  - [Summary](#summary)\n  - [Definitions](#definitions)\n  - [Motivation](#motivation)\n  - [What it is](#what-it-is)\n  - [How it Works](#how-it-works)\n  - [Migration](#migration)\n  - [Drawbacks](#drawbacks)\n  - [Alternatives](#alternatives)\n  - [Prior Art](#prior-art)\n  - [Unresolved Questions](#unresolved-questions)\n  - [Spec. Changes (OPTIONAL)](#spec-changes-optional)\n  - [History](#history)\n\n## Summary\n\nThe OpenIM CTL module proposal aims to provide an integrated tool for the OpenIM system, offering utilities for user management, system monitoring, debugging, configuration, and more. This tool will enhance the extensibility of the OpenIM system and reduce dependencies on individual modules.\n\n## Definitions\n\n- **OpenIM**: An Instant Messaging system.\n- **`imctl`**: The control command-line tool for OpenIM.\n- **E2E Testing**: End-to-End Testing.\n- **API**: Application Programming Interface.\n\n## Motivation\n\n- Improve the OpenIM system's extensibility and reduce dependencies on individual modules.\n- Simplify the process for testers to perform automated tests.\n- Enhance interaction with scripts and reduce the system's coupling.\n- Implement a consistent tool similar to kubectl for a streamlined user experience.\n\n## What it is\n\n`imctl` is a command-line utility designed for OpenIM to provide functionalities including:\n\n- User Management: Add, delete, or disable user accounts.\n- System Monitoring: View metrics like online users, message transfer rate.\n- Debugging: View logs, adjust log levels, check system states.\n- Configuration Management: Update system settings, manage plugins/modules.\n- Data Management: Backup, restore, import, or export data.\n- System Maintenance: Update, restart services, or maintenance mode.\n\n## How it Works\n\n`imctl`, inspired by kubectl, will have sub-commands and options for the functionalities mentioned. Developers, operations, and testers can invoke these commands to manage and monitor the OpenIM system.\n\n## Migration\n\nCurrently, the `imctl` will be housed in `tools/imctl`, and later on, the plan is to move it to `cmd/imctl`. Migration guidelines will be provided to ensure smooth transitions.\n\n## Drawbacks\n\n- Overhead in learning and adapting to a new tool for existing users.\n- Potential complexities in implementing some of the advanced functionalities.\n\n## Alternatives\n\n- Continue using individual modules for OpenIM management.\n- Utilize third-party tools or platforms with similar functionalities, customizing them for OpenIM.\n\n## Prior Art\n\nKubectl from Kubernetes is a significant inspiration for `imctl`, offering a comprehensive command-line tool for managing clusters.\n\n## Unresolved Questions\n\n- What other functionalities might be required in future versions of `imctl`?\n- What's the expected timeline for transitioning from `tools/imctl` to `cmd/imctl`?\n\n## Spec. Changes (OPTIONAL)\n\nAs of now, there are no proposed changes to the core specifications or extensions. Future changes based on community feedback might necessitate spec changes, which will be documented accordingly.","tools/s3/README.md":"# After s3 switches the storage engine, convert the data\n\n- build\n```shell\ngo build -o s3convert main.go\n```\n\n- start\n```shell\n./s3convert -config <config dir path> -name <old s3 name>\n# ./s3convert -config ./../../config -name minio\n```\n","tools/ncpu/README.md":"# ncpu\n\n**ncpu** is a simple utility to fetch the number of CPU cores across different operating systems.\n\n## Introduction\n\nIn various scenarios, especially while compiling code, it's beneficial to know the number of available CPU cores to optimize the build process. However, the command to fetch the CPU core count differs between operating systems. For example, on Linux, we use `nproc`, while on macOS, it's `sysctl -n hw.ncpu`. The `ncpu` utility provides a unified way to obtain this number, regardless of the platform.\n\n## Usage\n\nTo retrieve the number of CPU cores, simply use the `ncpu` command:\n\n```bash\n$ ncpu\n```\n\nThis will return an integer representing the number of available CPU cores.\n\n### Example:\n\nLet's say you're compiling a project using `make`. To utilize all the CPU cores for the compilation process, you can use:\n\n```bash\n$ make -j $(ncpu) build # or any other build command\n```\n\nThe above command will ensure the build process takes advantage of all the available CPU cores, thereby potentially speeding up the compilation.\n\n## Why use `ncpu`?\n\n- **Cross-platform compatibility**: No need to remember or detect which OS-specific command to use. Just use `ncpu`!\n  \n- **Ease of use**: A simple and intuitive command that's easy to incorporate into scripts or command-line operations.\n\n- **Consistency**: Ensures consistent behavior and output across different systems and environments.\n\n## Installation\n\n(Include installation steps here, e.g., how to clone the repo, build the tool, or install via package manager.)\n","tools/README.md":"# Notes about go workspace\n\nAs openim is using go1.18's [workspace feature](https://go.dev/doc/tutorial/workspaces), once you add a new module, you need to run `go work use -r .` at root directory to update the workspace synced.\n\n### Create a new extensions\n\n1. Create your tools_name directory in pkg `/tools` first and cd into it.\n2. Init the project.\n3. Then `go work use -r .` at current directory to update the workspace.\n4. Create your tools\n\nYou can execute the following commands to do things above:\n\n```bash\n# edit the CRD_NAME and CRD_GROUP to your own\nexport OPENIM_TOOLS_NAME=<Changeme>\n\n# copy and paste to create a new CRD and Controller\nmkdir tools/${OPENIM_TOOLS_NAME}\ncd tools/${OPENIM_TOOLS_NAME}\ngo mod init github.com/openimsdk/open-im-server/tools/${OPENIM_TOOLS_NAME}\ngo mod tidy\ngo work use -r .\ncd ../..\n```"},"items":[{"name":"README.md","path":"tools/imctl/README.md","rawUrl":"https://raw.githubusercontent.com/openimsdk/open-im-server/HEAD/tools/imctl/README.md","title":"imctl Documentation","category":"plugin-manifest","format":"markdown","content":"# [RFC #0005] OpenIM CTL Module Proposal\n\n## Meta\n\n- Name: OpenIM CTL Module Enhancement\n- Start Date: 2023-08-23\n- Author(s): @cubxxw\n- Status: Draft\n- RFC Pull Request: (leave blank)\n- OpenIMSDK Pull Request: (leave blank)\n- OpenIMSDK Issue: https://github.com/openimsdk/open-im-server/issues/924\n- Supersedes: N/A\n\n## 📇Topics\n\n- RFC #0000 OpenIMSDK CTL Module Proposal\n  - [Meta](#meta)\n  - [Summary](#summary)\n  - [Definitions](#definitions)\n  - [Motivation](#motivation)\n  - [What it is](#what-it-is)\n  - [How it Works](#how-it-works)\n  - [Migration](#migration)\n  - [Drawbacks](#drawbacks)\n  - [Alternatives](#alternatives)\n  - [Prior Art](#prior-art)\n  - [Unresolved Questions](#unresolved-questions)\n  - [Spec. Changes (OPTIONAL)](#spec-changes-optional)\n  - [History](#history)\n\n## Summary\n\nThe OpenIM CTL module proposal aims to provide an integrated tool for the OpenIM system, offering utilities for user management, system monitoring, debugging, configuration, and more. This tool will enhance the extensibility of the OpenIM system and reduce dependencies on individual modules.\n\n## Definitions\n\n- **OpenIM**: An Instant Messaging system.\n- **`imctl`**: The control command-line tool for OpenIM.\n- **E2E Testing**: End-to-End Testing.\n- **API**: Application Programming Interface.\n\n## Motivation\n\n- Improve the OpenIM system's extensibility and reduce dependencies on individual modules.\n- Simplify the process for testers to perform automated tests.\n- Enhance interaction with scripts and reduce the system's coupling.\n- Implement a consistent tool similar to kubectl for a streamlined user experience.\n\n## What it is\n\n`imctl` is a command-line utility designed for OpenIM to provide functionalities including:\n\n- User Management: Add, delete, or disable user accounts.\n- System Monitoring: View metrics like online users, message transfer rate.\n- Debugging: View logs, adjust log levels, check system states.\n- Configuration Management: Update system settings, manage plugins/modules.\n- Data Management: Backup, restore, import, or export data.\n- System Maintenance: Update, restart services, or maintenance mode.\n\n## How it Works\n\n`imctl`, inspired by kubectl, will have sub-commands and options for the functionalities mentioned. Developers, operations, and testers can invoke these commands to manage and monitor the OpenIM system.\n\n## Migration\n\nCurrently, the `imctl` will be housed in `tools/imctl`, and later on, the plan is to move it to `cmd/imctl`. Migration guidelines will be provided to ensure smooth transitions.\n\n## Drawbacks\n\n- Overhead in learning and adapting to a new tool for existing users.\n- Potential complexities in implementing some of the advanced functionalities.\n\n## Alternatives\n\n- Continue using individual modules for OpenIM management.\n- Utilize third-party tools or platforms with similar functionalities, customizing them for OpenIM.\n\n## Prior Art\n\nKubectl from Kubernetes is a significant inspiration for `imctl`, offering a comprehensive command-line tool for managing clusters.\n\n## Unresolved Questions\n\n- What other functionalities might be required in future versions of `imctl`?\n- What's the expected timeline for transitioning from `tools/imctl` to `cmd/imctl`?\n\n## Spec. Changes (OPTIONAL)\n\nAs of now, there are no proposed changes to the core specifications or extensions. Future changes based on community feedback might necessitate spec changes, which will be documented accordingly.","isInternal":false,"tokens":789,"sizeBytes":3447},{"name":"README.md","path":"tools/ncpu/README.md","rawUrl":"https://raw.githubusercontent.com/openimsdk/open-im-server/HEAD/tools/ncpu/README.md","title":"ncpu Documentation","category":"plugin-manifest","format":"markdown","content":"# ncpu\n\n**ncpu** is a simple utility to fetch the number of CPU cores across different operating systems.\n\n## Introduction\n\nIn various scenarios, especially while compiling code, it's beneficial to know the number of available CPU cores to optimize the build process. However, the command to fetch the CPU core count differs between operating systems. For example, on Linux, we use `nproc`, while on macOS, it's `sysctl -n hw.ncpu`. The `ncpu` utility provides a unified way to obtain this number, regardless of the platform.\n\n## Usage\n\nTo retrieve the number of CPU cores, simply use the `ncpu` command:\n\n```bash\n$ ncpu\n```\n\nThis will return an integer representing the number of available CPU cores.\n\n### Example:\n\nLet's say you're compiling a project using `make`. To utilize all the CPU cores for the compilation process, you can use:\n\n```bash\n$ make -j $(ncpu) build # or any other build command\n```\n\nThe above command will ensure the build process takes advantage of all the available CPU cores, thereby potentially speeding up the compilation.\n\n## Why use `ncpu`?\n\n- **Cross-platform compatibility**: No need to remember or detect which OS-specific command to use. Just use `ncpu`!\n  \n- **Ease of use**: A simple and intuitive command that's easy to incorporate into scripts or command-line operations.\n\n- **Consistency**: Ensures consistent behavior and output across different systems and environments.\n\n## Installation\n\n(Include installation steps here, e.g., how to clone the repo, build the tool, or install via package manager.)\n","isInternal":false,"tokens":335,"sizeBytes":1542},{"name":"README.md","path":"tools/README.md","rawUrl":"https://raw.githubusercontent.com/openimsdk/open-im-server/HEAD/tools/README.md","title":"tools Documentation","category":"plugin-manifest","format":"markdown","content":"# Notes about go workspace\n\nAs openim is using go1.18's [workspace feature](https://go.dev/doc/tutorial/workspaces), once you add a new module, you need to run `go work use -r .` at root directory to update the workspace synced.\n\n### Create a new extensions\n\n1. Create your tools_name directory in pkg `/tools` first and cd into it.\n2. Init the project.\n3. Then `go work use -r .` at current directory to update the workspace.\n4. Create your tools\n\nYou can execute the following commands to do things above:\n\n```bash\n# edit the CRD_NAME and CRD_GROUP to your own\nexport OPENIM_TOOLS_NAME=<Changeme>\n\n# copy and paste to create a new CRD and Controller\nmkdir tools/${OPENIM_TOOLS_NAME}\ncd tools/${OPENIM_TOOLS_NAME}\ngo mod init github.com/openimsdk/open-im-server/tools/${OPENIM_TOOLS_NAME}\ngo mod tidy\ngo work use -r .\ncd ../..\n```","isInternal":false,"tokens":215,"sizeBytes":831},{"name":"README.md","path":"tools/s3/README.md","rawUrl":"https://raw.githubusercontent.com/openimsdk/open-im-server/HEAD/tools/s3/README.md","title":"s3 Documentation","category":"plugin-manifest","format":"markdown","content":"# After s3 switches the storage engine, convert the data\n\n- build\n```shell\ngo build -o s3convert main.go\n```\n\n- start\n```shell\n./s3convert -config <config dir path> -name <old s3 name>\n# ./s3convert -config ./../../config -name minio\n```\n","isInternal":false,"tokens":73,"sizeBytes":238}],"systemPromptSnippet":"<yakaai_skills repo=\"openimsdk/open-im-server\">\n<!-- File: tools/imctl/README.md (Tokens: ~789 | Category: plugin-manifest) -->\n# [RFC #0005] OpenIM CTL Module Proposal\n\n## Meta\n\n- Name: OpenIM CTL Module Enhancement\n- Start Date: 2023-08-23\n- Author(s): @cubxxw\n- Status: Draft\n- RFC Pull Request: (leave blank)\n- OpenIMSDK Pull Request: (leave blank)\n- OpenIMSDK Issue: https://github.com/openimsdk/open-im-server/issues/924\n- Supersedes: N/A\n\n## 📇Topics\n\n- RFC #0000 OpenIMSDK CTL Module Proposal\n  - [Meta](#meta)\n  - [Summary](#summary)\n  - [Definitions](#definitions)\n  - [Motivation](#motivation)\n  - [What it is](#what-it-is)\n  - [How it Works](#how-it-works)\n  - [Migration](#migration)\n  - [Drawbacks](#drawbacks)\n  - [Alternatives](#alternatives)\n  - [Prior Art](#prior-art)\n  - [Unresolved Questions](#unresolved-questions)\n  - [Spec. Changes (OPTIONAL)](#spec-changes-optional)\n  - [History](#history)\n\n## Summary\n\nThe OpenIM CTL module proposal aims to provide an integrated tool for the OpenIM system, offering utilities for user management, system monitoring, debugging, configuration, and more. This tool will enhance the extensibility of the OpenIM system and reduce dependencies on individual modules.\n\n## Definitions\n\n- **OpenIM**: An Instant Messaging system.\n- **`imctl`**: The control command-line tool for OpenIM.\n- **E2E Testing**: End-to-End Testing.\n- **API**: Application Programming Interface.\n\n## Motivation\n\n- Improve the OpenIM system's extensibility and reduce dependencies on individual modules.\n- Simplify the process for testers to perform automated tests.\n- Enhance interaction with scripts and reduce the system's coupling.\n- Implement a consistent tool similar to kubectl for a streamlined user experience.\n\n## What it is\n\n`imctl` is a command-line utility designed for OpenIM to provide functionalities including:\n\n- User Management: Add, delete, or disable user accounts.\n- System Monitoring: View metrics like online users, message transfer rate.\n- Debugging: View logs, adjust log levels, check system states.\n- Configuration Management: Update system settings, manage plugins/modules.\n- Data Management: Backup, restore, import, or export data.\n- System Maintenance: Update, restart services, or maintenance mode.\n\n## How it Works\n\n`imctl`, inspired by kubectl, will have sub-commands and options for the functionalities mentioned. Developers, operations, and testers can invoke these commands to manage and monitor the OpenIM system.\n\n## Migration\n\nCurrently, the `imctl` will be housed in `tools/imctl`, and later on, the plan is to move it to `cmd/imctl`. Migration guidelines will be provided to ensure smooth transitions.\n\n## Drawbacks\n\n- Overhead in learning and adapting to a new tool for existing users.\n- Potential complexities in implementing some of the advanced functionalities.\n\n## Alternatives\n\n- Continue using individual modules for OpenIM management.\n- Utilize third-party tools or platforms with similar functionalities, customizing them for OpenIM.\n\n## Prior Art\n\nKubectl from Kubernetes is a significant inspiration for `imctl`, offering a comprehensive command-line tool for managing clusters.\n\n## Unresolved Questions\n\n- What other functionalities might be required in future versions of `imctl`?\n- What's the expected timeline for transitioning from `tools/imctl` to `cmd/imctl`?\n\n## Spec. Changes (OPTIONAL)\n\nAs of now, there are no proposed changes to the core specifications or extensions. Future changes based on community feedback might necessitate spec changes, which will be documented accordingly.\n\n<!-- File: tools/ncpu/README.md (Tokens: ~335 | Category: plugin-manifest) -->\n# ncpu\n\n**ncpu** is a simple utility to fetch the number of CPU cores across different operating systems.\n\n## Introduction\n\nIn various scenarios, especially while compiling code, it's beneficial to know the number of available CPU cores to optimize the build process. However, the command to fetch the CPU core count differs between operating systems. For example, on Linux, we use `nproc`, while on macOS, it's `sysctl -n hw.ncpu`. The `ncpu` utility provides a unified way to obtain this number, regardless of the platform.\n\n## Usage\n\nTo retrieve the number of CPU cores, simply use the `ncpu` command:\n\n```bash\n$ ncpu\n```\n\nThis will return an integer representing the number of available CPU cores.\n\n### Example:\n\nLet's say you're compiling a project using `make`. To utilize all the CPU cores for the compilation process, you can use:\n\n```bash\n$ make -j $(ncpu) build # or any other build command\n```\n\nThe above command will ensure the build process takes advantage of all the available CPU cores, thereby potentially speeding up the compilation.\n\n## Why use `ncpu`?\n\n- **Cross-platform compatibility**: No need to remember or detect which OS-specific command to use. Just use `ncpu`!\n  \n- **Ease of use**: A simple and intuitive command that's easy to incorporate into scripts or command-line operations.\n\n- **Consistency**: Ensures consistent behavior and output across different systems and environments.\n\n## Installation\n\n(Include installation steps here, e.g., how to clone the repo, build the tool, or install via package manager.)\n\n<!-- File: tools/README.md (Tokens: ~215 | Category: plugin-manifest) -->\n# Notes about go workspace\n\nAs openim is using go1.18's [workspace feature](https://go.dev/doc/tutorial/workspaces), once you add a new module, you need to run `go work use -r .` at root directory to update the workspace synced.\n\n### Create a new extensions\n\n1. Create your tools_name directory in pkg `/tools` first and cd into it.\n2. Init the project.\n3. Then `go work use -r .` at current directory to update the workspace.\n4. Create your tools\n\nYou can execute the following commands to do things above:\n\n```bash\n# edit the CRD_NAME and CRD_GROUP to your own\nexport OPENIM_TOOLS_NAME=<Changeme>\n\n# copy and paste to create a new CRD and Controller\nmkdir tools/${OPENIM_TOOLS_NAME}\ncd tools/${OPENIM_TOOLS_NAME}\ngo mod init github.com/openimsdk/open-im-server/tools/${OPENIM_TOOLS_NAME}\ngo mod tidy\ngo work use -r .\ncd ../..\n```\n\n<!-- File: tools/s3/README.md (Tokens: ~73 | Category: plugin-manifest) -->\n# After s3 switches the storage engine, convert the data\n\n- build\n```shell\ngo build -o s3convert main.go\n```\n\n- start\n```shell\n./s3convert -config <config dir path> -name <old s3 name>\n# ./s3convert -config ./../../config -name minio\n```\n</yakaai_skills>"}