@@ -895,3 +895,106 @@ edit:
895895# Run panic-attacker pre-commit scan
896896assail:
897897 @command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker"
898+
899+ # ═══════════════════════════════════════════════════════════════════════════════
900+ # ONBOARDING & DIAGNOSTICS
901+ # ═══════════════════════════════════════════════════════════════════════════════
902+
903+ # Check all required toolchain dependencies and report health
904+ doctor:
905+ #!/usr/bin/env bash
906+ echo "═══════════════════════════════════════════════════"
907+ echo " Docudactyl Doctor — Toolchain Health Check"
908+ echo "═══════════════════════════════════════════════════"
909+ echo ""
910+ PASS=0; FAIL=0; WARN=0
911+ check() {
912+ local name="$1 " cmd="$2 " min="$3 "
913+ if command -v "$cmd " >/dev/null 2>&1; then
914+ VER=$( " $cmd " --version 2>&1 | head -1)
915+ echo " [OK] $name — $VER "
916+ PASS=$(( PASS + 1 ))
917+ else
918+ echo " [FAIL] $name — not found (need $min +)"
919+ FAIL=$(( FAIL + 1 ))
920+ fi
921+ }
922+ check "just" just "1.25"
923+ check "git" git "2.40"
924+ check "Zig" zig "0.13"
925+ check "Idris2" idris2 "0.7"
926+ # Optional tools
927+ if command -v panic-attack >/dev/null 2>&1; then
928+ echo " [OK] panic-attack — available"
929+ PASS=$(( PASS + 1 ))
930+ else
931+ echo " [WARN] panic-attack — not found (pre-commit scanner)"
932+ WARN=$(( WARN + 1 ))
933+ fi
934+ echo ""
935+ echo " Result: $PASS passed, $FAIL failed, $WARN warnings"
936+ if [ "$FAIL " -gt 0 ]; then
937+ echo " Run 'just heal' to attempt automatic repair."
938+ exit 1
939+ fi
940+ echo " All required tools present."
941+
942+ # Attempt to automatically install missing tools
943+ heal:
944+ #!/usr/bin/env bash
945+ echo "═══════════════════════════════════════════════════"
946+ echo " Docudactyl Heal — Automatic Tool Installation"
947+ echo "═══════════════════════════════════════════════════"
948+ echo ""
949+ if ! command -v just >/dev/null 2>&1; then
950+ echo "Installing just..."
951+ cargo install just 2>/dev/null || echo "Install just from https://just.systems"
952+ fi
953+ echo ""
954+ echo "Heal complete. Run 'just doctor' to verify."
955+
956+ # Guided tour of the project structure and key concepts
957+ tour:
958+ #!/usr/bin/env bash
959+ echo "═══════════════════════════════════════════════════"
960+ echo " Docudactyl — Guided Tour"
961+ echo "═══════════════════════════════════════════════════"
962+ echo ""
963+ echo 'This project is licensed under **PMPL-1.0-or-later** (Palimpsest License).'
964+ echo ""
965+ echo "Key directories:"
966+ echo " src/ Source code"
967+ echo " ffi/ Foreign function interface (Zig)"
968+ echo " src/abi/ Idris2 ABI definitions"
969+ echo " docs/ Documentation"
970+ echo " tests/ Test suite"
971+ echo " .github/workflows/ CI/CD workflows"
972+ echo " contractiles/ Must/Trust/Dust contracts"
973+ echo " .machine_readable/ Machine-readable metadata"
974+ echo " examples/ Usage examples"
975+ echo ""
976+ echo "Quick commands:"
977+ echo " just doctor Check toolchain health"
978+ echo " just heal Fix missing tools"
979+ echo " just help-me Common workflows"
980+ echo " just default List all recipes"
981+ echo ""
982+ echo "Read more: README.adoc, EXPLAINME.adoc"
983+
984+ # Show help for common workflows
985+ help-me:
986+ #!/usr/bin/env bash
987+ echo "═══════════════════════════════════════════════════"
988+ echo " Docudactyl — Common Workflows"
989+ echo "═══════════════════════════════════════════════════"
990+ echo ""
991+ echo "FIRST TIME SETUP:"
992+ echo " just doctor Check toolchain"
993+ echo " just heal Fix missing tools"
994+ echo ""
995+ echo "PRE-COMMIT:"
996+ echo " just assail Run panic-attacker scan"
997+ echo ""
998+ echo "LEARN:"
999+ echo " just tour Guided project tour"
1000+ echo " just default List all recipes"
0 commit comments