{"id":21065631,"url":"https://github.com/adaptlearning/adapt-cli","last_synced_at":"2026-02-24T17:01:18.745Z","repository":{"id":11341364,"uuid":"13769217","full_name":"adaptlearning/adapt-cli","owner":"adaptlearning","description":"Command line and library interface for the Adapt Framework","archived":false,"fork":false,"pushed_at":"2025-07-07T10:26:17.000Z","size":32175,"stargazers_count":26,"open_issues_count":24,"forks_count":20,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-07-07T11:35:52.232Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://community.adaptlearning.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adaptlearning.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-10-22T09:55:34.000Z","updated_at":"2025-07-07T10:26:19.000Z","dependencies_parsed_at":"2023-02-10T08:50:21.866Z","dependency_job_id":"b7f012a7-f706-4c6d-9f70-1a7138f06ac3","html_url":"https://github.com/adaptlearning/adapt-cli","commit_stats":null,"previous_names":[],"tags_count":65,"template":false,"template_full_name":null,"purl":"pkg:github/adaptlearning/adapt-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adaptlearning%2Fadapt-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adaptlearning%2Fadapt-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adaptlearning%2Fadapt-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adaptlearning%2Fadapt-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adaptlearning","download_url":"https://codeload.github.com/adaptlearning/adapt-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adaptlearning%2Fadapt-cli/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267617643,"owners_count":24116208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T17:55:50.711Z","updated_at":"2026-02-24T17:01:13.689Z","avatar_url":"https://github.com/adaptlearning.png","language":"JavaScript","readme":"Adapt Command Line Interface (CLI)\n============================\n\n[![Build Status](https://travis-ci.org/adaptlearning/adapt-cli.png?branch=master)](https://travis-ci.org/adaptlearning/adapt-cli)  [![Join the chat at https://gitter.im/adaptlearning/adapt-cli](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/adaptlearning/adapt-cli?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nThe **Adapt CLI** is a command line interface for use with the [Adapt framework](https://github.com/adaptlearning/adapt_framework). Its primary usefulness is to install, update, and uninstall Adapt plug-ins. In doing so, it references the [Adapt Plugin Browser](https://www.adaptlearning.org/index.php/plugin-browser/). Consequently, the CLI includes several commands for working with this plug-in registry.\n\n\u003eIMPORTANT: The **Adapt CLI** is not intended to be used with courses in the [Adapt authoring tool](https://github.com/adaptlearning/adapt_authoring). The authoring tool tracks versions of plug-ins in its database. Using the CLI bypasses this tracking.\n\n## Installation\n\nBefore installing the Adapt CLI, you must install [NodeJS](http://nodejs.org) and [git](http://git-scm.com/downloads).\nTo install the Adapt CLI globally, run the following command:\n\n`npm install -g adapt-cli`\n\nSome systems may require elevated permissions in order to install a script globally.\n\n## Commands\n\n### adapt version\n\n##### Model:\n`adapt version`\n\nThis command reports both the version of the CLI and the version of the Adapt framework. The version of the framework is reported as \"0.0.0\" unless the command is run from the root directory of an installed framework.\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt help\n\n##### Model:\n`adapt help [\u003ccommand\u003e]`\n\n**command**: A CLI command.\n\n##### Examples:\n\n1. To list all the CLI commands with a brief description of each:\n`adapt help`\n\n1. To report a brief description of a specific command:\n`adapt help create`\n\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt create\n\n\n##### Model:\n`adapt create [\u003ctype\u003e \u003cpath\u003e \u003cbranch|tag\u003e]`\n\n**type**: What to create. Acceptable values are `course` and `component`.\n**path**: The directory of the new course. Enclose in quotes if the path/name includes spaces.\n**branch|tag**: The branch or tag name of the framework to be downloaded. This is optional. If not specified, the master branch will be used.\n\n##### Examples:\n\n1. To create an Adapt course *(do not use in conjunction with the Adapt authoring tool)*:\n`adapt create course \"My Course\"`\nThis will create a new directory named \"My Course\" in your current working directory. It will download the Adapt framework from its master branch, including the default course, into the new directory. Before using the course, run:\n`grunt build`\n\n1. To create an Adapt course from a specific branch:\n`adapt create course \"My Course\" legacy`\nThis is the same as example 1 except that the framework will be downloaded from the 'legacy' branch, not from the default master branch.\n\n1. To create an Adapt course from a specific tag:\n`adapt create course \"My Course\" v3.5.1`\nThis is the same as example 1 except that v3.5.1 of the framework will be downloaded, rather than the master branch.\n\n1. To create an empty component:\n`adapt create component \"test-component\"`\nThis command is useful for developing new components. It will create a new directory named \"test-component\" in the current working directory. It will populate the directory with files required for an Adapt component and insert \"test-component\" into the code where required.\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt search\n\n##### Model:\n`adapt search [\u003cplug-in\u003e]`\n\n**plug-in**: The optional name of the plug-in that you want to search for. Any part of the name may be used; multiple results may be returned if the partial name is not unique.\n\nThe **search** command searches within [Adapt Plugin Browser](https://www.adaptlearning.org/index.php/plugin-browser/). It will return the plug-in's complete name and its source repository only if the plug-in is registered.\n\n##### Examples:\n1. To view the name and repository of all plug-ins registered with the Adapt Plugin Browser:\n`adapt search`\n\n1. To locate the repository of a known plug-in that is registered:\n`adapt search adapt-contrib-pageLevelProgress` OR\n`adapt search contrib-pageLevelProgress` OR\n`adapt search pageLevel`\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt install\n\n##### Models:\n`adapt install \u003cplug-in\u003e[#|@\u003cversion\u003e]`\n`adapt install [--dry-run|--compatible]`\n\n**plug-in**: The name of the plug-in to be installed. The name may be fully qualified with \"adapt-\" or the prefix may be omitted. Parts of names are not acceptable.\n**version**: A specific version number of the plug-in. This is optional.\n\n##### Examples:\n1. To install all plug-ins listed in *adapt.json*:\n`adapt install`\nThis command must be run in the root directory of an Adapt framework installation.\n\n1. To report the plug-ins that will be installed if `adapt install` is run:\n`adapt install --dry-run`\nThis command must be run in the root directory of an Adapt framework installation.\n\n1. To install versions of all plug-ins listed in *adapt.json* that are compatible with the installed framework version. This overrides any incompatible settings provided on the command line or in *adapt.json*.\n`adapt install --compatible`\nThis command must be run in the root directory of an Adapt framework installation.\n\n1. To install a plug-in that has been registered with the [Adapt Plug-in Browser](https://www.adaptlearning.org/index.php/plugin-browser/) registry:\n`adapt install adapt-contrib-pageLevelProgress` OR\n`adapt install contrib-pageLevelProgress`\n\n1. To install a specific version of a registered plug-in:\n`adapt install adapt-contrib-pageLevelProgress#1.1.0` OR\n`adapt install adapt-contrib-pageLevelProgress@1.1.0` OR\n`adapt install contrib-pageLevelProgress#1.1.0` OR\n`adapt install contrib-pageLevelProgress@1.1.0`\n\n1. To use the CLI to install a plug-in that is not registered with [Adapt Plug-in Browser](https://www.adaptlearning.org/index.php/plugin-browser/) registry:\n    1. Copy the uncompressed folder to the proper location for the type of plug-in. Components: *src/components*. Extensions: *src/extensions*. Menu: *src/menu*. Theme: *src/theme*. Note: The Adapt framework allows only one theme. Uninstall the current before replacing it with an alternative. More than one menu is allowed.\n    1. Open *adapt.json* in an editor and add the full name of the new component to the list.\n    1. Run the following command from the course root:\n    `adapt install`\nAfter installation, most CLI commands will operate on the plug-in with the exception of `adapt update`. Plug-ins must be registered with the [Adapt Plugin Browser](https://www.adaptlearning.org/index.php/plugin-browser/) for `adapt update` to succeed.\n\n1. To update all registered plug-ins to their most recent public release:\n`adapt update`\nSince no plug-in name is specified in this command, all plug-ins listed in *adapt.json* are reinstalled. Whether the plug-in is updated will be determined by the compatible framework versions specified in *adapt.json*.  If it includes a plug-in that is not registered, it will not be updated.\n**Note to developers:** The CLI determines newest version by comparing release tags in the GitHub repo. Be sure to use a tag when you release a new version.\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt ls\n\n##### Model:\n`adapt ls`\n\nThis command lists the name and version number of all plug-ins listed in the *adapt.json* file of the current directory.\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt uninstall\n\n##### Model:\n`adapt uninstall \u003cplug-in\u003e`\n\n**plug-in**: The name of the plug-in to be installed. The name may be fully qualified with \"adapt-\" or the prefix may be omitted. Parts of names are not acceptable.\n\n##### Examples:\n1. To uninstall a plug-in:\n`adapt uninstall adapt-contrib-pageLevelProgress` OR\n`adapt uninstall contrib-pageLevelProgress`\nBecause the plug-in registry is not referenced during the uninstall process, this command will work whether or not the plug-in is registered with the Adapt Plugin Browser..\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt devinstall\n\n##### Model:\n`adapt devinstall [\u003cplug-in\u003e[#\u003cversion\u003e]]`\n\n**plug-in**: Name of the plug-in to be cloned.\n**version**: Version of the plug-in to be installed.\n\n##### Examples:\n\n1. To clone as git repositories the Adapt framework and all the plug-ins listed in *adapt.json* of the current directory:\n`adapt devinstall`\n\n1. To clone a specific plug-in listed in the *adapt.json*:\n`adapt devinstall adapt-contrib-matching`\n\n1. To clone a specific version of a plug-in listed in the *adapt.json*:\n`adapt devinstall adapt-contrib-matching#v2.2.0`\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt update\n\n##### Models:\n`adapt update [\u003cplug-in\u003e[#|@\u003cversion\u003e]][--check]`\n`adapt update [components|extensions|menu|theme|all][--check]`\n\n**plug-in**: Name of the plug-in to be cloned.\n**version**: Version of the plug-in to be installed.\nBefore running the update command, ensure that there is no *bower.json* file in your project directory.\n\n##### Examples:\n\n1. To report the latest compatible version for each plug-in in the current directory (plug-ins are not updated):\n`adapt update --check`\nNote: The `--check` option may be used to report on a specific plug-in or on a complete plug-in group (components, extensions, theme, menu):\n`adapt update adapt-contrib-matching --check`\n`adapt update extensions --check`\n\n1. To update a registered plug-in:\n`adapt update adapt-contrib-pageLevelProgress` OR\n`adapt update contrib-pageLevelProgress`\n\n1. To update a specific version of a registered plug-in:\n`adapt update adapt-contrib-pageLevelProgress#1.1.0` OR\n`adapt update adapt-contrib-pageLevelProgress@1.1.0` OR\n`adapt update contrib-pageLevelProgress#1.1.0` OR\n`adapt update contrib-pageLevelProgress@1.1.0`\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt register\n\n##### Command:\n`adapt register`\n\nThis command must be run from within the root directory of the plug-in you want to register. \"name\" and \"repository\" will be read from *bower.json* in the current directory. The plug-in name must be prefixed with \"adapt-\" and each word separated with a hyphen (-). Plug-in names are checked against those already registered to avoid duplicates.\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\nURL format must be of the form `https://github.com/\u003cuser\u003e/\u003crepo_name\u003e.git`\n\n### adapt rename\n\n##### Command:\n`adapt rename \u003ccurrent-name\u003e \u003cnew-name\u003e`\n\n**current-name**: Name of the plug-in currently used in the plug-in registry.\n**new-name**: Name proposed to replace the current plug-in name.\n\nPlease note that you must authenticate with GitHub to use **rename**. You must be a collaborator on the endpoint registered with the plug-in or a collaborator on the Adapt framework. Access to GitHub is for authentication only.\n\n##### Example:\n\n1. To rename a plug-in:\n`adapt rename adapt-incorrectName adapt-betterName`\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n### adapt unregister\n\n##### Command:\n`adapt unregister [\u003cplug-in\u003e]`\n\n**plug-in**: Name of the plug-in currently used in the plug-in registry.\n\nPlease note that you must authenticate with GitHub to use **unregister**. You must be a collaborator on the endpoint registered with the plug-in or a collaborator on the Adapt framework. Access to GitHub is for authentication only.\n\n##### Examples:\n\n1. To unregister a plug-in while in the root directory of the plug-in:\n`adapt unregister`\n\n1. To unregister a plug-in by name:\n`adapt unregister adapt-myMistake`\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n\nThe Plug-in Registry\n-------------------\n\nThe Adapt community maintains the [Adapt Plugin Browser](https://www.adaptlearning.org/index.php/plugin-browser/) as a convenient registry of components, extensions, themes, and menus. The plug-in system is powered by [Bower](http://bower.io/): http://adapt-bower-repository.herokuapp.com/packages/. To register, a plug-in must be a valid bower package with *bower.json*, and have a unique name that is prefixed with \"adapt-\".\n\nSee [Developing plug-ins](https://github.com/adaptlearning/adapt_framework/wiki/Developing-plugins) for more information on defining your plug-in's package and on [registering your plug-in](https://github.com/adaptlearning/adapt_framework/wiki/Registering-a-plugin).\n\u003cdiv float align=right\u003e\u003ca href=\"#top\"\u003eBack to Top\u003c/a\u003e\u003c/div\u003e\n\n----------------------------\n\u003ca href=\"https://community.adaptlearning.org/\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/adaptlearning/documentation/blob/master/04_wiki_assets/plug-ins/images/adapt-logo-mrgn-lft.jpg\" alt=\"adapt learning logo\" align=\"right\"\u003e\u003c/a\u003e\n**Author / maintainer:** Adapt Core Team with [contributors](https://github.com/adaptlearning/adapt-contrib-hotgraphic/graphs/contributors)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadaptlearning%2Fadapt-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadaptlearning%2Fadapt-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadaptlearning%2Fadapt-cli/lists"}