diff --git a/doc/source/_extra/.htaccess b/doc/source/_extra/.htaccess
index d4c092b5ab..fd91901e87 100644
--- a/doc/source/_extra/.htaccess
+++ b/doc/source/_extra/.htaccess
@@ -20,3 +20,4 @@ redirectmatch 301 ^/python-openstackclient/([^/]+)/command-wrappers.html$ /pytho
 redirectmatch 301 ^/python-openstackclient/([^/]+)/developing.html$ /python-openstackclient/$1/contributor/developing.html
 redirectmatch 301 ^/python-openstackclient/([^/]+)/humaninterfaceguide.html$ /python-openstackclient/$1/contributor/humaninterfaceguide.html
 redirectmatch 301 ^/python-openstackclient/([^/]+)/plugins.html$ /python-openstackclient/$1/contributor/plugins.html
+redirectmatch 301 ^/python-openstackclient/([^/]+)/cli/plugin-commands.html$ /python-openstackclient/$1/cli/plugin-commands/index.html
diff --git a/doc/source/cli/index.rst b/doc/source/cli/index.rst
index e9aab0afae..17e50a07d2 100644
--- a/doc/source/cli/index.rst
+++ b/doc/source/cli/index.rst
@@ -8,7 +8,7 @@
    Manual Page <man/openstack>
    command-list
    commands
-   plugin-commands
+   plugin-commands/index
    authentication
    interactive
    decoder
diff --git a/doc/source/cli/plugin-commands.rst b/doc/source/cli/plugin-commands.rst
deleted file mode 100644
index 5796420555..0000000000
--- a/doc/source/cli/plugin-commands.rst
+++ /dev/null
@@ -1,146 +0,0 @@
-.. _plugin-commands:
-
-===============
-Plugin Commands
-===============
-
-.. list-plugins:: openstack.cli.extension
-
-aodh
-----
-
-.. list-plugins:: openstack.alarming.v2
-   :detailed:
-
-barbican
---------
-
-.. list-plugins:: openstack.key_manager.v1
-   :detailed:
-
-congress
---------
-
-.. list-plugins:: openstack.congressclient.v1
-   :detailed:
-
-.. cue
-.. # cueclient is not in global-requirements
-.. # list-plugins:: openstack.mb.v1
-.. #   :detailed:
-
-designate
----------
-
-.. list-plugins:: openstack.dns.v2
-   :detailed:
-
-gnocchi
--------
-.. list-plugins:: openstack.metric.v1
-   :detailed:
-
-heat
-----
-
-.. list-plugins:: openstack.orchestration.v1
-   :detailed:
-
-ironic
-------
-
-.. list-plugins:: openstack.baremetal.v1
-   :detailed:
-
-ironic-inspector
-----------------
-
-.. list-plugins:: openstack.baremetal_introspection.v1
-   :detailed:
-
-karbor
-------
-
-.. list-plugins:: openstack.data_protection.v1
-   :detailed:
-
-mistral
--------
-
-.. list-plugins:: openstack.workflow_engine.v2
-   :detailed:
-
-.. murano
-.. # the murano docs cause warnings and a broken docs build
-.. # .. list-plugins:: openstack.application_catalog.v1
-.. #   :detailed:
-
-neutron
--------
-
-.. list-plugins:: openstack.neutronclient.v2
-   :detailed:
-
-octavia
--------
-
-.. list-plugins:: openstack.load_balancer.v2
-   :detailed:
-
-placement
----------
-
-.. list-plugins:: openstack.placement.v1
-   :detailed:
-
-rsd
----
-
-.. list-plugins:: openstack.rsd.v1
-   :detailed:
-
-sahara
-------
-
-.. list-plugins:: openstack.data_processing.v1
-   :detailed:
-
-searchlight
------------
-
-.. list-plugins:: openstack.search.v1
-   :detailed:
-
-senlin
-------
-
-.. list-plugins:: openstack.clustering.v1
-   :detailed:
-
-.. tripleo
-.. # tripleoclient is not in global-requirements
-.. # list-plugins:: openstack.tripleoclient.v1
-.. #   :detailed:
-
-trove
-------
-
-.. list-plugins:: openstack.database.v1
-   :detailed:
-
-.. watcher
-.. # watcherclient is not in global-requirements
-.. # list-plugins:: openstack.infra_optim.v1
-.. #  :detailed:
-
-zaqar
------
-
-.. list-plugins:: openstack.messaging.v2
-   :detailed:
-
-zun
----
-
-.. list-plugins:: openstack.container.v1
-   :detailed:
diff --git a/doc/source/cli/plugin-commands/aodh.rst b/doc/source/cli/plugin-commands/aodh.rst
new file mode 100644
index 0000000000..26e7bf70fa
--- /dev/null
+++ b/doc/source/cli/plugin-commands/aodh.rst
@@ -0,0 +1,5 @@
+aodh
+----
+
+.. list-plugins:: openstack.alarming.v2
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/barbican.rst b/doc/source/cli/plugin-commands/barbican.rst
new file mode 100644
index 0000000000..21b9b5545b
--- /dev/null
+++ b/doc/source/cli/plugin-commands/barbican.rst
@@ -0,0 +1,5 @@
+barbican
+--------
+
+.. list-plugins:: openstack.key_manager.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/congress.rst b/doc/source/cli/plugin-commands/congress.rst
new file mode 100644
index 0000000000..c21e2fa399
--- /dev/null
+++ b/doc/source/cli/plugin-commands/congress.rst
@@ -0,0 +1,5 @@
+congress
+--------
+
+.. list-plugins:: openstack.congressclient.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/designate.rst b/doc/source/cli/plugin-commands/designate.rst
new file mode 100644
index 0000000000..94071bf547
--- /dev/null
+++ b/doc/source/cli/plugin-commands/designate.rst
@@ -0,0 +1,5 @@
+designate
+---------
+
+.. list-plugins:: openstack.dns.v2
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/gnocchi.rst b/doc/source/cli/plugin-commands/gnocchi.rst
new file mode 100644
index 0000000000..a545a5eab2
--- /dev/null
+++ b/doc/source/cli/plugin-commands/gnocchi.rst
@@ -0,0 +1,5 @@
+gnocchi
+-------
+
+.. list-plugins:: openstack.metric.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/heat.rst b/doc/source/cli/plugin-commands/heat.rst
new file mode 100644
index 0000000000..3699aeaf4a
--- /dev/null
+++ b/doc/source/cli/plugin-commands/heat.rst
@@ -0,0 +1,5 @@
+heat
+----
+
+.. list-plugins:: openstack.orchestration.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/index.rst b/doc/source/cli/plugin-commands/index.rst
new file mode 100644
index 0000000000..f6ff51bd63
--- /dev/null
+++ b/doc/source/cli/plugin-commands/index.rst
@@ -0,0 +1,51 @@
+.. _plugin-commands:
+
+===============
+Plugin Commands
+===============
+
+.. toctree::
+   :maxdepth: 1
+
+   aodh
+   barbican
+   congress
+   designate
+   gnocchi
+   heat
+   ironic
+   ironic-inspector
+   karbor
+   mistral
+   neutron
+   octavia
+   placement
+   rsd
+   sahara
+   searchlight
+   senlin
+   trove
+   zaqar
+   zun
+
+.. TODO(efried): Make pages for the following once they're fixed.
+
+.. cue
+.. # cueclient is not in global-requirements
+.. # list-plugins:: openstack.mb.v1
+.. #   :detailed:
+
+.. murano
+.. # the murano docs cause warnings and a broken docs build
+.. # .. list-plugins:: openstack.application_catalog.v1
+.. #   :detailed:
+
+.. tripleo
+.. # tripleoclient is not in global-requirements
+.. # list-plugins:: openstack.tripleoclient.v1
+.. #   :detailed:
+
+.. watcher
+.. # watcherclient is not in global-requirements
+.. # list-plugins:: openstack.infra_optim.v1
+.. #  :detailed:
diff --git a/doc/source/cli/plugin-commands/ironic-inspector.rst b/doc/source/cli/plugin-commands/ironic-inspector.rst
new file mode 100644
index 0000000000..c149066212
--- /dev/null
+++ b/doc/source/cli/plugin-commands/ironic-inspector.rst
@@ -0,0 +1,5 @@
+ironic-inspector
+----------------
+
+.. list-plugins:: openstack.baremetal_introspection.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/ironic.rst b/doc/source/cli/plugin-commands/ironic.rst
new file mode 100644
index 0000000000..032c57d286
--- /dev/null
+++ b/doc/source/cli/plugin-commands/ironic.rst
@@ -0,0 +1,5 @@
+ironic
+------
+
+.. list-plugins:: openstack.baremetal.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/karbor.rst b/doc/source/cli/plugin-commands/karbor.rst
new file mode 100644
index 0000000000..aed14a6691
--- /dev/null
+++ b/doc/source/cli/plugin-commands/karbor.rst
@@ -0,0 +1,5 @@
+karbor
+------
+
+.. list-plugins:: openstack.data_protection.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/mistral.rst b/doc/source/cli/plugin-commands/mistral.rst
new file mode 100644
index 0000000000..3facc506b5
--- /dev/null
+++ b/doc/source/cli/plugin-commands/mistral.rst
@@ -0,0 +1,5 @@
+mistral
+-------
+
+.. list-plugins:: openstack.workflow_engine.v2
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/neutron.rst b/doc/source/cli/plugin-commands/neutron.rst
new file mode 100644
index 0000000000..6e67ae9480
--- /dev/null
+++ b/doc/source/cli/plugin-commands/neutron.rst
@@ -0,0 +1,5 @@
+neutron
+-------
+
+.. list-plugins:: openstack.neutronclient.v2
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/octavia.rst b/doc/source/cli/plugin-commands/octavia.rst
new file mode 100644
index 0000000000..5384530fc8
--- /dev/null
+++ b/doc/source/cli/plugin-commands/octavia.rst
@@ -0,0 +1,5 @@
+octavia
+-------
+
+.. list-plugins:: openstack.load_balancer.v2
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/placement.rst b/doc/source/cli/plugin-commands/placement.rst
new file mode 100644
index 0000000000..972818c768
--- /dev/null
+++ b/doc/source/cli/plugin-commands/placement.rst
@@ -0,0 +1,5 @@
+placement
+---------
+
+.. list-plugins:: openstack.placement.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/rsd.rst b/doc/source/cli/plugin-commands/rsd.rst
new file mode 100644
index 0000000000..d7962014e5
--- /dev/null
+++ b/doc/source/cli/plugin-commands/rsd.rst
@@ -0,0 +1,5 @@
+rsd
+---
+
+.. list-plugins:: openstack.rsd.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/sahara.rst b/doc/source/cli/plugin-commands/sahara.rst
new file mode 100644
index 0000000000..28ac867828
--- /dev/null
+++ b/doc/source/cli/plugin-commands/sahara.rst
@@ -0,0 +1,5 @@
+sahara
+------
+
+.. list-plugins:: openstack.data_processing.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/searchlight.rst b/doc/source/cli/plugin-commands/searchlight.rst
new file mode 100644
index 0000000000..fed56f0912
--- /dev/null
+++ b/doc/source/cli/plugin-commands/searchlight.rst
@@ -0,0 +1,5 @@
+searchlight
+-----------
+
+.. list-plugins:: openstack.search.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/senlin.rst b/doc/source/cli/plugin-commands/senlin.rst
new file mode 100644
index 0000000000..f5f81d9e13
--- /dev/null
+++ b/doc/source/cli/plugin-commands/senlin.rst
@@ -0,0 +1,5 @@
+senlin
+------
+
+.. list-plugins:: openstack.clustering.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/trove.rst b/doc/source/cli/plugin-commands/trove.rst
new file mode 100644
index 0000000000..b4575edd8a
--- /dev/null
+++ b/doc/source/cli/plugin-commands/trove.rst
@@ -0,0 +1,5 @@
+trove
+-----
+
+.. list-plugins:: openstack.database.v1
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/zaqar.rst b/doc/source/cli/plugin-commands/zaqar.rst
new file mode 100644
index 0000000000..3649a274d3
--- /dev/null
+++ b/doc/source/cli/plugin-commands/zaqar.rst
@@ -0,0 +1,5 @@
+zaqar
+-----
+
+.. list-plugins:: openstack.messaging.v2
+   :detailed:
diff --git a/doc/source/cli/plugin-commands/zun.rst b/doc/source/cli/plugin-commands/zun.rst
new file mode 100644
index 0000000000..56c5ff59ce
--- /dev/null
+++ b/doc/source/cli/plugin-commands/zun.rst
@@ -0,0 +1,5 @@
+zun
+---
+
+.. list-plugins:: openstack.container.v1
+   :detailed: