SLOPSHOPPER

fnhook-fixture-untyped

Untyped function-hook fixture

new
★ 4v1.0.0no licenseupdated 2026-09-13ray-manaloto/dotfiles/tests/fixtures/fnhook/untyped
A shopper browsing a rack in a slop shop
README

Reproducible Dotfiles (AMD64)

A highly resilient, declarative dotfiles setup using Chezmoi, Mise, and Python, optimized for Linux-based devcontainers.

Quick Start

Local Development

mise install                                       # Install all tools
mise run lint                                      # Run lint checks (read-only ≡ CI; `mise run fmt` auto-fixes)
uv run --project python pytest tests/ -x -q      # Run all 190 tests

Docker Build

docker buildx bake dev-load                        # Build devcontainer locally

Bootstrap (Container)

curl -fsSL https://raw.githubusercontent.com/sortakool/dotfiles/main/install.sh | bash

Architecture

  1. Stage 0: install.sh bootstraps mise.
  2. Stage 1: mise installs git, chezmoi, and uv.
  3. Stage 2: chezmoi init clones the repo and applies templated configs.
  4. Stage 3: Python lifecycle hooks (uv run) handle complex orchestration and tool installations.

Features

  • Strictly AMD64: Forced x86_64 architecture for container consistency.
  • Declarative Config: Pydantic DotfilesConfig centralizes 16 env vars; hk.pkl for git hooks with shared hk-common.pkl checks.
  • Zero-Bash: Logic is encapsulated in a typed, linted Python library (dotfiles_setup).
  • Zero Lint Suppressions: No noqa, type: ignore, or pylint: disable — enforced by no_lint_skip hk step.
  • Environment Auditor: Built-in health checks for identity, toolchains, and SSH connectivity.
  • CI/CD: GitHub Actions — lint → contract-preflight → a changes path-gate → base-prep → p2996-prep → build → smoke-test (smoke + Dive); promote retags on main; benchmark + Trivy run async in image-analysis.yml. Docs-only changes skip the build chain.

Tool Management

All tools are declared in mise.toml and installed via mise install. Python dependencies are managed via uv with python/pyproject.toml.

Local Testing

uv run --project python pytest tests/ -x -q      # All tests
uv run --project python dotfiles-setup verify run # Contract verification
mise run pin-actions                                # Verify GHA SHA-pinning
mise run lint-docs                                  # Validate agent documentation
Source 1 files
hooks/register.ts 8 lines
1const ESCAPE_HATCH_TOOLS = new Set(["AskUserQuestion", "SendUserMessage"]);
2
3export const register = (on: any, _options: any) => {
4  on("classic.PreToolUse", { tool: "Read" }, async (_$: any, e: any, next: any) =>
5    ESCAPE_HATCH_TOOLS.has(e.tool) ? next(e) : next(e),
6  );
7};
8