/srlinux/mgmt/cli/plugins`.
+
+If you list the contents of this directory, you will recognize some commands that are implemented as Python files:
+
+```bash title="An incomplete list of native plugins"
+ls -l \
+/opt/srlinux/python/virtual-env/lib/python3.11/dist-packages/srlinux/mgmt/cli/plugins
+```
+
+
+```
+-rw-r--r-- 1 root root 27199 Jan 23 23:35 alias.py
+-rw-r--r-- 1 root root 16334 Jan 23 23:35 commit.py
+-rw-r--r-- 1 root root 1495 Jan 23 23:35 echo.py
+-rw-r--r-- 1 root root 4900 Jan 23 23:35 ping.py
+drwxr-xr-x 1 root root 8704 Jan 24 01:01 reports
+-rw-r--r-- 1 root root 4117 Jan 23 23:35 tools.py
+-rw-r--r-- 1 root root 3874 Jan 23 23:35 traceroute.py
+-rw-r--r-- 1 root root 7620 Jan 23 23:35 tree.py
+```
+
+
+You can make an educated guess that the files in the listing are CLI plugins that implement the corresponding functionality.
+The `alias.py` file implements the `alias` command. And the `tools.py` file adds support for the `tools` command.
+
+The only directory in the listing above - `reports`[^1] - contains plugin files that share a common trait - they all implement the relevant `show` commands:
+
+```title="An incomplete list of show plugins"
+-rw-r--r-- 1 root root 3330 Jan 23 23:35 acl_reports.py
+-rw-r--r-- 1 root root 20324 Jan 23 23:35 bgp_ipv4_exact_route_detail_report.py
+-rw-r--r-- 1 root root 61888 Jan 23 23:35 bgp_neighbor_detail_report.py
+-rw-r--r-- 1 root root 4251 Jan 23 23:35 interface_reports.py
+-rw-r--r-- 1 root root 20812 Jan 23 23:35 ospf_interface_report.py
+-rw-r--r-- 1 root root 12257 Jan 23 23:35 platform_reports.py
+-rw-r--r-- 1 root root 6476 Jan 23 23:35 power_component_report.py
+-rw-r--r-- 1 root root 2968 Jan 23 23:35 redundancy_report.py
+-rw-r--r-- 1 root root 569 Jan 23 23:35 system.py
+-rw-r--r-- 1 root root 6578 Jan 23 23:35 version.py
+```
+
+The `version.py` file contains the code that is called when the `show version` command is executed; the `system.py` implements the `show system` command and its subcommands, and so on.
+
+As a user of SR Linux, you can dive into the code of the native commands and see how they are implemented.
+
+/// admonition | Note
+ type: subtle-note
+You can even tune the native commands to your liking by modifying the source code, but be aware that the changes made to the existing native commands will be overwritten when you upgrade the SR Linux image.
+///
+
+## User-defined commands
+
+The user-defined (aka custom) commands are implemented in the same way as the native commands. The only difference is that they are not part of the SR Linux image, but are created by the user.
+
+There are two paths where the user-defined commands can be located:
+
+1. **System-wide user commands**
+ When a plugin is installed in the the following directory, it is available system-wide:
+
+ ```
+ /etc/opt/srlinux/cli/plugins
+ ```
+
+ The commands implemented by the plugins in this directory are available to all users of the SR Linux system[^2].
+
+2. **Per-user commands**
+ To make a command available to a specific user, the plugin file should be placed in the user's home directory:
+
+ ```
+ /home//cli/plugins
+ ```
+
+The user-defined commands (both with system-wide and per-user scope) are kept intact during the SR Linux image upgrade. Hence, it is important to make sure that the custom plugins are stored in the appropriate directory.
+
+So, what it takes to create a new command? How to setup the environment for the plugin development? And how to test the command? Let us take you on a quick tour of the plugin development process outlined in the Getting Started section.
+
+:octicons-arrow-right-24: [Getting started](getting-started.md)
+
+[^1]: full path to the directory - `/opt/srlinux/python/virtual-env/lib/python3.11/dist-packages/srlinux/mgmt/cli/plugins/reports`
+[^2]: plugin access can be narrowed down using the plugin authorization AAA mechanism
diff --git a/docs/get-started/cli.md b/docs/get-started/cli.md
index 8bd8f061..54ca3e20 100644
--- a/docs/get-started/cli.md
+++ b/docs/get-started/cli.md
@@ -1,5 +1,7 @@
---
comments: true
+tags:
+ - cli
---
# SR Linux CLI
diff --git a/docs/tutorials/programmability/json-rpc/basics.md b/docs/tutorials/programmability/json-rpc/basics.md
index 271b4d53..6f51f2b3 100644
--- a/docs/tutorials/programmability/json-rpc/basics.md
+++ b/docs/tutorials/programmability/json-rpc/basics.md
@@ -16,7 +16,7 @@ title: JSON-RPC Basics
| **Main ref documents** | [JSON-RPC Configuration][json-cfg-guide], [JSON-RPC Management][json-mgmt-guide] |
| **Version information**[^1] | [`srlinux:23.10.1`][srlinux-container], [`containerlab:0.48.6`][clab-install] |
| **Authors** | Roman Dodin [:material-twitter:][rd-twitter] [:material-linkedin:][rd-linkedin] |
-| **Discussions** | [:material-twitter: Twitter][twitter-share] ยท [:material-linkedin: LinkedIn][linkedin-share] |
+| **Discussions** | [:material-twitter: Twitter][twitter-share] |
[rd-linkedin]: https://linkedin.com/in/rdodin
[rd-twitter]: https://twitter.com/ntdvps
@@ -26,7 +26,6 @@ title: JSON-RPC Basics
[srlinux-container]: https://github.com/nokia/srlinux-container-image
[clab-install]: https://containerlab.dev/install/
[twitter-share]: https://twitter.com/ntdvps/status/1600261024719917057
-[linkedin-share]: https://www.linkedin.com/feed/update/urn:li:activity:7006028123045548033/
As of release 23.10.1, Nokia SR Linux Network OS employs three fully modeled management interfaces:
diff --git a/mkdocs.yml b/mkdocs.yml
index 4dc82ad3..525cf5c6 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -28,6 +28,7 @@ nav:
- Mirroring: cli/show-commands/mirroring.md
- DHCP Relay: cli/show-commands/dhcp-relay.md
- TACACS: cli/show-commands/tacacs.md
+ - Wildcards and ranges: blog/posts/2023/cli-ranges.md
- SNMP:
- SNMP Framework: snmp/snmp_framework.md
@@ -92,6 +93,9 @@ nav:
- config: ansible/collection/config.md
- validate: ansible/collection/validate.md
- cli: ansible/collection/cli.md
+ - CLI Plugins:
+ - cli/plugins/index.md
+ - Getting started: cli/plugins/getting-started.md
- Tutorials:
# - SR Linux tutorials: tutorials/about.md
- tutorials/index.md
@@ -161,7 +165,7 @@ repo_name: srl-labs/learn-srlinux
repo_url: https://github.com/srl-labs/learn-srlinux
edit_uri: edit/main/docs/
site_url: "https://learn.srlinux.dev/"
-copyright: Copyright © 2021-2023 Nokia
+copyright: Copyright © 2021-2025 Nokia
theme:
name: material
custom_dir: docs/overrides