Skip to main content

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.

License: MIT CI Python Platforms PyPI


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

Conf T 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 existing failed_tasks automatically. Task IDs use the format lesson_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 matching
  • Linux, 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.py is 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

conf_t-0.4.0.tar.gz (100.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

conf_t-0.4.0-py3-none-any.whl (127.1 kB view details)

Uploaded Python 3

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

Hashes for conf_t-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6b3251c5c894887a646b394fb80b49732df9150b4152da1f87a9f26130fa8fe4
MD5 552103e566023c240f13d2ca48e9c7dd
BLAKE2b-256 871042cdee6592029535faa7c79c38f6976c8662208ac471b2ce1a5585dcd936

See more details on using hashes here.

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

Hashes for conf_t-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2046a94a7502dfd1df96d6089000c45ce859aa411e0f6a154b1a5714539e6442
MD5 d7f3576c0833d2ff2c1d278b3efbcc0b
BLAKE2b-256 0eee69ad1f06c6f3eb277ffae64116f54c4da53bb688a770dac768b7ac88c6a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page