Interactive CLI trainer for Cisco, Linux, PowerShell, Git, and Docker commands.
Project description
Conf T ๐ฅ๏ธ
A professional CLI training tool for practicing command-line skills across multiple platforms.
What is Conf T?
Conf T is an interactive, terminal-based learning tool that helps you practice real command-line commands across multiple environments โ without needing access to live hardware or cloud instances.
You get a simulated shell prompt, type the command, and receive instant feedback. Missed it? Get a hint. Stuck? Skip and review later. Conf T tracks your progress so every session builds on the last.
โจ Features
| Feature | Description |
|---|---|
| ๐ฅ๏ธ Simulated Prompts | Realistic shell prompts per platform (Router#, user@ubuntu:~$, PS C:\>) |
| โ Smart Validation | Regex-based matching with alias support (e.g. conf t โ configure terminal) |
| ๐ Review Mode | Automatically re-queues skipped/failed commands for targeted practice |
| ๐ก Hints & Explanations | Type hint for a nudge; get a full explanation after each answer |
| ๐ Progress Tracking | Accuracy stats, completed lessons, and history saved locally |
| ๐งฉ Extensible | Add new lessons by dropping a JSON file into conf_t/lessons/ |
| ๐ซ Multiple Platforms | 640+ tasks across Cisco IOS, Linux, PowerShell, Git, and Docker |
| ๐ Structured Curriculum | Beginner โ advanced learning paths with prerequisites and capstone labs |
| ๐บ๏ธ Curriculum Browser | Difficulty grouping, progress icons, recommended next lesson, soft prerequisite warnings |
๐ Quick Start
Requirements
- Python 3.10+
Install (recommended)
# Easiest โ isolated global install (recommended)
pipx install conf-t
# Or with pip
pip install conf-t
# Launch
conf-t
# Jump straight into practice
conf-t --continue
Install from source (developers)
git clone https://github.com/Elshayib/conf-t.git
cd conf-t
pip install -e ".[dev]"
conf-t
๐ฎ Usage
conf-t
You will be greeted with an interactive menu:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Conf T v0.4.0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
? Select an option:
โบ โ
Daily Review (3 due) โ shown when tasks are ready
1. Practice a Lesson
2. Review All Failed Commands
3. View Progress & Stats
4. Reset All Progress
5. Create a Custom Lesson
6. Exit
Curriculum browser
When practicing a lesson, the curriculum browser groups lessons by difficulty, shows your progress (โ โ โ) and passed/total ยท % (e.g. 7/12 ยท 58%), highlights a recommended next lesson, and lets you filter by topic tags. Prerequisites warn softly before starting. Re-entering a lesson lets you resume, start over, or pick a task to continue from.
Spaced repetition: failed commands resurface on a schedule (due now โ 1 day โ 3 days โ 7 days). When tasks are due, Daily Review appears at the top of the main menu.
CLI flags
conf-t # interactive menu (default)
conf-t --continue # resume review, last lesson, or recommended next
conf-t --list # list all lessons
conf-t --list --platform Cisco # filter by platform
conf-t --list --tags vlan,ospf # filter by tags
conf-t --lesson cisco_basic # start a lesson by ID
conf-t --review # daily review (due tasks)
conf-t --review-all # review entire failed queue
conf-t --stats # print progress and exit
conf-t --version
During a practice session:
| Input | Action |
|---|---|
hint |
Show a hint without using an attempt |
skip |
Reveal the answer and move on |
exit / quit |
Confirm and exit the session |
๐ฆ Lesson Library
Conf T ships with 68 lessons and 640 practice tasks across five platforms.
| Platform | Lessons | Tasks | Focus |
|---|---|---|---|
| Cisco IOS | 21 | 231 | CCNA-aligned switching, routing, security, services |
| Linux | 15 | 144 | Shell, systemd, networking, scripting, troubleshooting |
| PowerShell | 12 | 102 | Cmdlets, pipeline, scripting, remoting, automation |
| Git | 10 | 80 | Workflow, branching, merging, recovery |
| Docker | 10 | 83 | Images, containers, compose, networking, volumes |
Cisco IOS Curriculum (CCNA-aligned)
| Difficulty | Lessons |
|---|---|
| Beginner | cisco_basic, cisco_show_commands, cisco_interface_basics |
| Intermediate | cisco_vlan_fundamentals, cisco_trunking_dtp, cisco_inter_vlan_routing, cisco_etherchannels, cisco_stp, cisco_static_routing, cisco_ospf_single_area, cisco_nat_pat, cisco_dhcp, cisco_acl_standard, cisco_port_security, cisco_ssh_hardening |
| Advanced | cisco_ospf_multiarea, cisco_acl_extended, cisco_wlan, cisco_qos, cisco_hsrp, cisco_troubleshooting_lab |
Linux Curriculum
| Difficulty | Lessons |
|---|---|
| Beginner | linux_basic, linux_file_operations, linux_text_processing, linux_package_management |
| Intermediate | linux_advanced, linux_permissions_deep, linux_process_management, linux_systemd, linux_networking, linux_users_groups, linux_cron_scheduling |
| Advanced | linux_lvm_storage, linux_firewall, linux_shell_scripting, linux_troubleshooting_lab |
PowerShell, Git & Docker
Each platform follows a beginner โ intermediate โ advanced โ capstone path. Capstone labs (*_troubleshooting_lab) mix scenarios from prior lessons. Use the in-app lesson browser to explore the full list.
Progress migration: v0.3.0 adds per-task progress (
task_progress) and migrates existingfailed_tasksautomatically. Task IDs use the formatlesson_id__action. Legacy v0.1.x progress should still be reset from the main menu if task IDs no longer match.
๐งฉ Adding Custom Lessons
Create a .json file in conf_t/lessons/ using this schema:
{
"id": "my_custom_lesson",
"title": "My Custom Lesson",
"platform": "Cisco",
"description": "Short description of what this lesson covers.",
"difficulty": "beginner",
"tags": ["custom"],
"prerequisites": ["cisco_basic"],
"estimated_minutes": 15,
"tasks": [
{
"id": "my_custom_lesson__configure_terminal",
"prompt": "Enter global configuration mode.",
"prefix": "Router#",
"expected": "^configure\\s+terminal$",
"aliases": ["conf t", "config t"],
"hint": "The command starts with 'configure'.",
"explanation": "'configure terminal' (or 'conf t') enters global config mode."
}
]
}
Task ID convention: {lesson_id}__{action_slug} โ globally unique across all lessons (required at scale).
Platform case rules:
Cisco,PowerShellโ case-insensitive matchingLinux,Git,Dockerโ case-sensitive matching
๐๏ธ Architecture
conf_t/
โโโ main.py # Entry point โ bootstraps the app
โโโ cli.py # All UI/terminal rendering and menus
โโโ engine.py # Business logic (pure Python, no UI)
โโโ models.py # Data classes: Task, Lesson, SessionStats
โโโ lessons/ # JSON lesson files (one per lesson)
Design principle:
engine.pyis completely UI-agnostic โ making it trivial to expose the engine via a REST API (FastAPI) or port it to a mobile/web frontend in the future.
๐ค Contributing
Contributions, lesson packs, and bug reports are very welcome! Please read CONTRIBUTING.md before opening a PR.
See CHANGELOG.md for release history.
๐ License
This project is licensed under the MIT License โ see the LICENSE file for details.
Made with โค๏ธ by Islam Elshayib
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file conf_t-0.4.0.tar.gz.
File metadata
- Download URL: conf_t-0.4.0.tar.gz
- Upload date:
- Size: 100.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b3251c5c894887a646b394fb80b49732df9150b4152da1f87a9f26130fa8fe4
|
|
| MD5 |
552103e566023c240f13d2ca48e9c7dd
|
|
| BLAKE2b-256 |
871042cdee6592029535faa7c79c38f6976c8662208ac471b2ce1a5585dcd936
|
File details
Details for the file conf_t-0.4.0-py3-none-any.whl.
File metadata
- Download URL: conf_t-0.4.0-py3-none-any.whl
- Upload date:
- Size: 127.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2046a94a7502dfd1df96d6089000c45ce859aa411e0f6a154b1a5714539e6442
|
|
| MD5 |
d7f3576c0833d2ff2c1d278b3efbcc0b
|
|
| BLAKE2b-256 |
0eee69ad1f06c6f3eb277ffae64116f54c4da53bb688a770dac768b7ac88c6a4
|