diff --git a/config/MAINTAINERS.json b/config/MAINTAINERS.json index 803e22bea9f3..44d3e1dc093b 100644 --- a/config/MAINTAINERS.json +++ b/config/MAINTAINERS.json @@ -983,8 +983,10 @@ "name": "HariKrishnan", "github": "harikrishnan83", "twitter": "harikrishnan83", - "availableForHire": true, - "isTscMember": false, + "linkedin": "harikrishnan83", + "slack": "U067JPY0UH5", + "availableForHire": false, + "isTscMember": true, "repos": [ "jasyncapi" ], diff --git a/config/meetings.json b/config/meetings.json index 3592c61cf469..1560df3a404b 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -1,11 +1,4 @@ [ - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=MHRvMzJtb2pxZWs5bDM4a3Jxb2RhYmVhMmMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/1545", - "banner": "https://github.com/user-attachments/assets/91fca5af-ae9a-46be-aa44-0f2ef20ce34e", - "date": "2024-10-15T08:00:00.000Z" - }, { "title": "Marketing WG Meeting", "calLink": "https://www.google.com/calendar/event?eid=NDd1NzNqdWprNWdqc3U3aGsyZnBhOWpobXMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", @@ -20,13 +13,6 @@ "banner": "", "date": "2024-11-05T14:00:00.000Z" }, - { - "title": "Design Meeting", - "calLink": "https://www.google.com/calendar/event?eid=ZWptamE1cWRzdGE5Mjlybm9vcGlqYTJkOXMgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/1558", - "banner": "", - "date": "2024-10-17T12:00:00.000Z" - }, { "title": "AsyncAPI Online Conference 2024 Dry-Run", "calLink": "https://www.google.com/calendar/event?eid=cnY0NDB2Y2dvcm1uZ2V0MmlrdDdyc3ByNTAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/dashboard.json b/dashboard.json index cf1149f4e24b..ad6a44275c40 100644 --- a/dashboard.json +++ b/dashboard.json @@ -9,7 +9,7 @@ "resourcePath": "/asyncapi/website/pull/3423", "repo": "asyncapi/website", "labels": [], - "score": 53.12729891861287 + "score": 55.42469562860694 }, { "id": "I_kwDOGQYLdM5AX1lK", @@ -29,7 +29,7 @@ "color": "0E8A16" } ], - "score": 31.589204762418465 + "score": 31.87637935116772 }, { "id": "PR_kwDOFLhIt86HHVY9", @@ -40,7 +40,7 @@ "resourcePath": "/asyncapi/community/pull/1634", "repo": "asyncapi/community", "labels": [], - "score": 22.9739670999407 + "score": 23.26114168868996 }, { "id": "PR_kwDOFLhIt85bqKL8", @@ -53,6 +53,22 @@ "labels": [], "score": 22.112443333692923 }, + { + "id": "I_kwDOBW5R_c6VPMfE", + "isPR": false, + "isAssigned": true, + "title": "Website Homepage Redesign", + "author": "Mayaleeeee", + "resourcePath": "/asyncapi/website/issues/3192", + "repo": "asyncapi/website", + "labels": [ + { + "name": "bounty", + "color": "0e8a16" + } + ], + "score": 20.38939580119737 + }, { "id": "MDU6SXNzdWU5OTE0Mzc3MjY=", "isPR": false, @@ -73,38 +89,6 @@ ], "score": 17.804824502454043 }, - { - "id": "PR_kwDOBW5R_c6HFtzt", - "isPR": true, - "isAssigned": false, - "title": "feat: add workflow and script to check edit links on docs", - "author": "anshgoyalevil", - "resourcePath": "/asyncapi/website/pull/3557", - "repo": "asyncapi/website", - "labels": [ - { - "name": "bounty", - "color": "0e8a16" - } - ], - "score": 17.517649913704783 - }, - { - "id": "I_kwDOBW5R_c6VPMfE", - "isPR": false, - "isAssigned": true, - "title": "Website Homepage Redesign", - "author": "Mayaleeeee", - "resourcePath": "/asyncapi/website/issues/3192", - "repo": "asyncapi/website", - "labels": [ - { - "name": "bounty", - "color": "0e8a16" - } - ], - "score": 17.230475324955524 - }, { "id": "I_kwDOFLhIt84-OUI3", "isPR": false, @@ -191,16 +175,76 @@ } ], "score": 11.774158138719608 + }, + { + "id": "PR_kwDODyzcIc57Ieis", + "isPR": true, + "isAssigned": false, + "title": "ci: add command for transferring issue", + "author": "Souvikns", + "resourcePath": "/asyncapi/.github/pull/314", + "repo": "asyncapi/.github", + "labels": [], + "score": 10.912634372471834 } ], "goodFirstIssues": [ { - "id": "I_kwDOFDnrNc6mGtBc", - "title": "Help displayed in terminal has always an error at the end", - "isAssigned": true, - "resourcePath": "/asyncapi/cli/issues/1625", - "repo": "asyncapi/cli", + "id": "I_kwDOCoBobc6nSxfV", + "title": "[BUG] Missing server.title() function", + "isAssigned": false, + "resourcePath": "/asyncapi/parser-js/issues/1075", + "repo": "asyncapi/parser-js", + "author": "fmvilas", + "area": "Unknown", + "labels": [ + { + "name": "bug", + "color": "d73a4a" + } + ] + }, + { + "id": "I_kwDODwv8N86nSo-U", + "title": "AsyncAPI Conf 2025 Logo Update", + "isAssigned": false, + "resourcePath": "/asyncapi/conference-website/issues/538", + "repo": "asyncapi/conference-website", + "author": "thulieblack", + "area": "Unknown", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + }, + { + "name": "design", + "color": "5D0F46" + } + ] + }, + { + "id": "I_kwDOCHlHJM6nQ6vF", + "title": "Improve testing speed by skipping it for certain PRs", + "isAssigned": false, + "resourcePath": "/asyncapi/generator/issues/1335", + "repo": "asyncapi/generator", "author": "derberg", + "area": "ci-cd", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + } + ] + }, + { + "id": "I_kwDOFLhIt86m3c8R", + "title": "[BUG] Slack groups are not updated", + "isAssigned": false, + "resourcePath": "/asyncapi/community/issues/1658", + "repo": "asyncapi/community", + "author": "fmvilas", "area": "Unknown", "labels": [ { @@ -512,21 +556,6 @@ } ] }, - { - "id": "I_kwDOFDnrNc6Gp88n", - "title": " Implement new UI/UX improvements in start command", - "isAssigned": false, - "resourcePath": "/asyncapi/cli/issues/1384", - "repo": "asyncapi/cli", - "author": "Amzani", - "area": "typescript", - "labels": [ - { - "name": "stale", - "color": "ededed" - } - ] - }, { "id": "I_kwDOFDnrNc6Gp8Qd", "title": " Implement new UI/UX improvements in config command", @@ -535,12 +564,7 @@ "repo": "asyncapi/cli", "author": "Amzani", "area": "typescript", - "labels": [ - { - "name": "stale", - "color": "ededed" - } - ] + "labels": [] }, { "id": "I_kwDOCHlHJM58YMi8", diff --git a/markdown/blog/2024-annual-summary.md b/markdown/blog/2024-annual-summary.md new file mode 100644 index 000000000000..e81dd7b55fae --- /dev/null +++ b/markdown/blog/2024-annual-summary.md @@ -0,0 +1,176 @@ +--- +title: "Annual Review: State of AsyncAPI Initiative 2024" +date: 2025-01-27T06:00:00+01:00 +type: Communication +tags: + - Project Status +cover: /img/posts/2024-annual-report/blog-banner.webp +authors: + - name: Thulisile Sibanda + photo: /img/avatars/thulieblack.webp + link: https://www.linkedin.com/in/v-thulisile-sibanda/ + byline: Community Builder and Open Source Fanatic! +excerpt: 'State of AsyncAPI 2024 in Numbers' +featured: true +--- + +Happy 2025, AsyncAPI Community💜 ! + +What better way to start the year than by reflecting on the community's growth over the past year? Let's take a deep dive into the state of our community through data and see how far we have come, where we fell short, and what we can improve in the coming year. Analyzing our metrics is the most effective way to gauge our growth and measure our impact. + +If you are curious about our past achievements, [please read the previous Project Status updates](https://www.asyncapi.com/blog?tags=Project+Status). + + +## Slack + +We currently have a total of **6,124** members in the AsyncAPI workspace. Slack is our primary communication channel for sharing updates, assisting contributors and adopters who want to understand and use the AsyncAPI specification and toolings. + +We welcomed **1,505** new members in 2024. + +
+ + +Among this year's new joiners, we have our top five members, including our community marketing specialist, who leads the marketing efforts in the community. + +
+ +Our weekly activity slightly dropped this year due to changes that affected some of our core maintainers after the layoffs. + +
+ +## Social Media +Our social media platforms help us communicate community news, share updates, and make announcements. +Let's dive into the numbers: + +### LinkedIn +We gained **995** followers on LinkedIn in 2024, bringing a total to **3,983** overall followers. + +
+ +Compared to 2023, the number of visits from users and new users to [asyncapi.com](https://www.asyncapi.com), referred by LinkedIn, decreased by 40% in 2024. However, on a positive note, we received a significant increase in sessions, which kept users more engaged. + +
+ +We don't use any premium or paid marketing services! + +### X/Twitter +We gained **309** followers in 2024, reaching a total of **4709** followers overall. Website referrals declined 42% compared to the previous years, but sessions on the website increased significantly. + +
+ +We don't consider the X/Twitter platform worth investment; it's time to consider another platform like Bluesky to expand our reach. + +### YouTube +Our YouTube channel continues to grow as we gain **269** new subscribers, having **1.72k** subscribers in total. We hosted fewer community live streams in 2024, but also brought back the AsyncAPI Online Conference, increasing the total watch time. + +
+ +### Newsletter +It's been a year since we sent out our first newsletter, and I'm pleased with the growth and impact it has achieved. Many community members often don't have the time to read through the entire article, so having a simple summary delivered straight to your inbox is a convenient way to stay updated on community happenings. The April edition was one of the most popular. + +
+ +Additionally, we've seen some growth in newsletter website referrals, with an increase in users and sessions. + +
+ +## Google Analytics +Docs continue to be our main metrics contributor, and blogs have performed quite well this past year. +The AsyncAPI website received over 1.1 million page views, while users and sessions have remained consistent. + +
+ +## Google Search Console +Compared to 2023, there has been a slight 15% decrease in website impressions and clicks recorded on Google Search Console. + +
+ +## GitHub +We continue to see an increase in the number of active contributors who perform tasks such as commits, issues, or pull requests. In 2024, we had over **2,780** contributors overall. + +
+ +We still do our very best to resolve and close issues. There have been some improvements because of programs such as the AsyncAPI Bounty Program and the Maintainership Program. We are still committed to growing the number of maintainers. + +
+ +### NPM +The most controversial part of the review is the number of downloads from AsyncAPI's top packages, which are hosted under the Node Package Manager. The `asyncapi/specs` package continues to soar, with over **34M** downloads in the past year. + +
+ +## Community Achievements +Despite the challenges, we achieved some milestones, and here are some of the highlights from the AsyncAPI community in 2024! + +- We had our second community hire, [Oluwabamikemi Kayode](https://www.linkedin.com/in/atinuke-oluwabamikemi-kayode-5b838b1b7/), to work full-time as the project's Community Marketing Specialist. +- The [Ambassador Program](https://www.asyncapi.com/community/ambassadors) increased this year from having five ambassadors to ten. +- The [AsyncAPI Bounty Program](https://www.asyncapi.com/blog/asyncapi-bounty-program-2024) turned 1, and we have [51 issues completed](https://github.com/orgs/asyncapi/projects/36/views/4?filterQuery=-no%3Alevel+status%3ACompleted) so far under the program. +- [We got accepted into GSoC'24](https://www.asyncapi.com/blog/2024-gsoc-wrap) for the first time as an independent organization. +- [Published our second case study](https://www.asyncapi.com/casestudies/hdiglobal) from HDI Global. +- Brought back the [AsyncAPI Online Conference](https://youtube.com/playlist?list=PLbi1gRlP7pijItMBmw9SeeyWxuEa3jLR2&si=pDGcDafTo2umeUHC). +- [Closed down the AsyncAPI Store](https://www.asyncapi.com/blog/2024-marketing-report). + +These are some of the few highlights for 2024, and we have more planned for 2025. + +We are starting the year with [an open discussion on establishing our first AsyncAPI Governance Board](https://github.com/asyncapi/community/pull/1634), so please join the conversation. + +You can also check out the [2025 AsyncAPI Community Building Goals](https://github.com/asyncapi/community/blob/master/annual-goals/2025_Community_Goals.md) to see what's in store for this year. + + +> Image by Canva diff --git a/markdown/blog/2024-december-and-paris.md b/markdown/blog/2024-december-and-paris.md index e0f7a365bc19..0ffd11aa41fc 100644 --- a/markdown/blog/2024-december-and-paris.md +++ b/markdown/blog/2024-december-and-paris.md @@ -11,7 +11,6 @@ authors: link: https://www.linkedin.com/in/v-thulisile-sibanda/ byline: Community Builder and Open Source Fanatic! excerpt: 'November and December Community Update And Paris Conference Summary' -featured: true --- I can't believe we are in the final weeks of the year, and it has been an eventful one. As a community, we have experienced both proud and painful moments, celebrated our victories, and faced challenges and losses. However, in the end, we overcame those difficulties and emerged stronger and better. diff --git a/markdown/blog/2024-marketing-report.md b/markdown/blog/2024-marketing-report.md index 434d796c3253..1ff9c12f9b58 100644 --- a/markdown/blog/2024-marketing-report.md +++ b/markdown/blog/2024-marketing-report.md @@ -11,7 +11,6 @@ authors: link: https://www.linkedin.com/in/atinuke-oluwabamikemi-kayode-5b838b1b7/ byline: AsyncAPI Community Marketing Specialist excerpt: 'A comprehensive review of AsyncAPI Marketing Working Group achievements in 2024, including social media growth, store closure updates, and future initiatives like the Student Ambassador Program' -featured: true --- diff --git a/markdown/docs/tools/cli/github-action.md b/markdown/docs/tools/cli/github-action.md new file mode 100644 index 000000000000..f3bd85d7b32b --- /dev/null +++ b/markdown/docs/tools/cli/github-action.md @@ -0,0 +1,239 @@ +--- +title: GitHub Action for CLI +weight: 50 +--- + +This action exposes the [AsyncAPI CLI](https://github.com/asyncapi/cli). It allows you to generate documentation, validate AsyncAPI documents, convert between different AsyncAPI versions and much more. The source code of the action can be found [here](https://github.com/asyncapi/cli/tree/master/github-action) + +## Inputs + +### `cli_version` + +Version of the AsyncAPI CLI you wish to use. You can find all available versions [here](https://github.com/asyncapi/cli/releases). Recommended leave it out of the inputs and use the default value. + +**Default** points to the`latest` version. + +> [!TIP] +> We recommend to default to `latest` version. This way there is no overhead with the script updating the CLI version. As it takes a lot of time to update the CLI version, we recommend to update it only when you need to use another one for compatibility reasons. + +### `command` + +Command that you wish to run. You can find all available commands Available commands are: +- `generate` - generates documentation from AsyncAPI document +- `validate` - validates AsyncAPI document +- `optimize` - optimizes AsyncAPI document +- `convert` - converts AsyncAPI document to another version +- `custom` - allows you to run any command that is available in the AsyncAPI CLI. You can find all available commands [here](https://www.asyncapi.com/docs/tools/cli/usage). + +**Default** points to `generate` command. + +> [!IMPORTANT] +> In case you want to use `custom` command, you need to pass an array of commands to the [`custom_command`](#custom_command) input. Although passing command is not required, it is recommended to pass it to avoid any issues later on. +> For example, if you want to run `asyncapi bundle ./asyncapi.yaml --output final-asyncapi.yaml` you need to pass `"bundle ./asyncapi.yaml --output final-asyncapi.yaml" to the `custom_command` input. + +### `custom_command` + +In case you want to use `custom` command you need to pass the command that you want to run in this input. You can find all available commands [here](https://www.asyncapi.com/docs/tools/cli/usage). + +**Default** points to '' (empty string). + +Sample usage: + +```yaml +- name: Generating HTML from my AsyncAPI document + uses: asyncapi/cli@v2.16.0# You can use any version you want + with: + custom_command: bundle ./asyncapi.yaml --output final-asyncapi.yaml +``` + +> [!CAUTION] +> You have to pass the whole command as a string including the parameters and the command itself. +> It will run like this: `asyncapi ` + + +### `filepath` + +Path to the AsyncAPI document that you want to process. + +**Default** expects the AsyncAPI document to be in the root of the repository and named `asyncapi.yaml`. + +### `template` + +Template for the generator. Official templates are listed here https://github.com/asyncapi/generator#list-of-official-generator-templates. You can pass template as npm package, url to git repository, link to tar file or local template. + +**Default** points to `@asyncapi/markdown-template@0.10.0` template. + +> [!TIP] +> We recommend to always specify the version of the template to not encounter any issues with the action in case of release of the template that is not compatible with given version of the generator. + +### `language` + +Specifies the language to be used for the generated models. The value must be a valid language name supported by [modelina](https://github.com/asyncapi/modelina). + +**Default** is not set. + +> [!WARNING] +> Either `language` or `template` must be set else an error will be thrown. +> The action will return an error if the language is not supported by [modelina](https://github.com/asyncapi/modelina). + +### `output` + +Path to the output directory. Can be used for `generate` and `convert` commands. + +**Default** points to `output` directory in the root of the repository. + +### `parameters` + +The command that you use might support and even require specific parameters to be passed to the CLI for the generation. You can find all available parameters [here](https://www.asyncapi.com/docs/tools/cli/usage). + +**Default** points to '' (empty string). + +> [!NOTE] +> For template parameters, you need to pass them as `-p ` as can be seen in CLI documentation. + + +## Example usage + +> [!WARNING] +> Using `docker://asyncapi/github-action-for-cli` will not work as expected. This is because the GitHub Actions runner does not pass params to the docker image correctly. This is why we recommend to use `asyncapi/cli` instead. +> However, you don't need to worry as it won't build the image every time. It will pull it from Docker Hub as it is already built there. + +### Basic + +In case all defaults are fine for you, just add such step: + +```yaml +- name: Generating Markdown from my AsyncAPI document + uses: asyncapi/cli@v2.16.0 # You can use any version you want +``` + +### Using all possible inputs + +In case you do not want to use defaults, you for example want to use different template: + +```yaml +- name: Generating HTML from my AsyncAPI document + uses: asyncapi/cli@v2.16.0 # You can use any version you want + with: + command: generate + filepath: ./docs/api/asyncapi.yaml + template: "@asyncapi/html-template@0.9.0" #In case of template from npm. Or can use a link. + output: ./generated-html + parameters: "-p baseHref=/test-experiment/ sidebarOrganization=byTags" +``` +> [!IMPORTANT] +> Note the usage of `-p` in `parameters` input. This is required for template parameters, unlike previous versions of this action as the action includes other commands than just `generate`. + +### Example workflow with publishing generated HTML to GitHub Pages + +In case you want to validate your asyncapi file first, and also send generated HTML to GitHub Pages this is how full workflow could look like: + +```yaml +name: AsyncAPI documents processing + +on: + push: + branches: [ master ] + +jobs: + generate: + runs-on: ubuntu-latest + steps: + #"standard step" where repo needs to be checked-out first + - name: Checkout repo + uses: actions/checkout@v2 + + #In case you do not want to use defaults, you for example want to use different template + - name: Generating HTML from my AsyncAPI document + uses: asyncapi/cli@v2.16.0 # You can use any version you want + with: + template: '@asyncapi/html-template@0.9.0' #In case of template from npm, because of @ it must be in quotes + filepath: docs/api/my-asyncapi.yml + parameters: -p baseHref=/test-experiment/ sidebarOrganization=byTags #space separated list of key/values + output: generated-html + + #Using another action that takes generated HTML and pushes it to GH Pages + - name: Deploy GH page + uses: JamesIves/github-pages-deploy-action@3.4.2 + with: + ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages + FOLDER: generated-html +``` + +### Example workflow for generating models + +In case you want to use models generated from your AsyncAPI document, you can use this action to generate them and then use them in your workflow. This is how full workflow could look like: + +```yaml + +name: AsyncAPI documents processing + +on: + push: + branches: [ master ] + +jobs: + generate-models: + runs-on: ubuntu-latest + steps: + #"standard step" where repo needs to be checked-out first + - name: Checkout repo + uses: actions/checkout@v2 + + - name: Generating models from my AsyncAPI document + uses: asyncapi/cli@v2.16.0 # You can use any version you want + with: + command: generate + filepath: docs/api/my-asyncapi.yml + language: typescript + output: generated-models +``` + +### Example workflow for validating AsyncAPI document changes + +In case you want to validate your AsyncAPI document changes, you can use this action to validate them and then use them in your workflow. This is how full workflow could look like: + +```yaml +name: Validate AsyncAPI document + +on: + pull_request: + branches: [ master ] + +jobs: + validate: + runs-on: ubuntu-latest + steps: + #"standard step" where repo needs to be checked-out first + - name: Checkout repo + uses: actions/checkout@v2 + + - name: Validating AsyncAPI document + uses: asyncapi/cli@v2.16.0 # You can use any version you want + with: + command: validate + filepath: docs/api/my-asyncapi.yml +``` + +## Local dry run + +Use following commands to run and test github action locally: + +1. Build docker image of github action for cli + + ```bash + npm run action:docker:build + ``` + +2. Execute docker image with proper arguments + + ```bash + docker run -e GITHUB_WORKSPACE="" --workdir /action -v "/home/{user}/path/to/repo":"/action" asyncapi/github-action-for-cli "" "generate" "github-action/test/asyncapi.yml" "@asyncapi/markdown-template@0.10.0" "" "output" "" "" + ``` + +Make sure to change the path of the repo and user in the command. + +## Troubleshooting + +You can enable more log information in GitHub Action by adding `ACTIONS_STEP_DEBUG` secret to repository where you want to use this action. Set the value of this secret to `true` and you''ll notice more debug logs from this action. \ No newline at end of file diff --git a/markdown/docs/tools/generator/file-templates.md b/markdown/docs/tools/generator/file-templates.md index 7a7a8ce77c42..2b5c05431e2d 100644 --- a/markdown/docs/tools/generator/file-templates.md +++ b/markdown/docs/tools/generator/file-templates.md @@ -7,6 +7,8 @@ weight: 140 > **Note**: This section applies only to the Nunjucks render engine. For information on using the React render engine, refer to the [Generating files with the React render engine](#generating-files-with-the-react-render-engine) section below. +> **Note**: Nunjucks renderer engine is deprecated and will be removed in the future. Use the React renderer engine instead. For more details read notes from release [@asyncapi/generator@2.6.0](https://github.com/asyncapi/generator/releases/tag/%40asyncapi%2Fgenerator%402.6.0). + It is possible to generate files for each specific object in your AsyncAPI documentation using the Nunjucks render engine. For example, you can specify a filename like `$$channel$$.js` to generate a file for each channel defined in your AsyncAPI. The following file-template names and extra variables are available: - `$$channel$$`, within the template-file you have access to two variables [`channel`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#channel) and [`channelName`](https://github.com/asyncapi/parser-api/blob/master/docs/api.md#channels). Where the `channel` contains the current channel being rendered. diff --git a/markdown/docs/tools/generator/migration-cli.md b/markdown/docs/tools/generator/migration-cli.md new file mode 100644 index 000000000000..c51c5f1d7f16 --- /dev/null +++ b/markdown/docs/tools/generator/migration-cli.md @@ -0,0 +1,70 @@ +--- +title: "Migrating from `ag` CLI to AsyncAPI CLI" +weight: 260 +--- + +This guide provides detailed instructions on how to transition from the old `ag` Generator CLI to the new AsyncAPI CLI. + +## Options Overview + +Here is a list of `ag` options and their equivalents in the AsyncAPI CLI: + +- **-d, --disable-hook [hooks...]** + - **AsyncAPI CLI equivalent:** `asyncapi generate fromTemplate