# Native Nostalgia Stack

> Applies the user's FreePascal toolchain and its build, formatting, hook, and test contracts while leaving project-specific mechanics local. Use when scaffolding or working in a FreePascal project that follows this toolchain.

- Skill: `frostney/native-nostalgia-stack` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add frostney/native-nostalgia-stack`
- Raw SKILL.md: https://api.skillmd.com/api/skills/frostney/native-nostalgia-stack/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Unlicense OR MIT
- Author: frostney (https://skillmd.com/u/frostney)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/frostney/native-nostalgia-stack

---


# Native nostalgia stack

Apply only the contract material to the requested work. Project AGENTS and docs
own implementation rules and exact commands; `project-structure/SKILL.md` owns
language-neutral layout and documentation.

## Compiler and layout

- Use the project-pinned latest stable FPC and Delphi mode unless project docs
  explicitly choose another mode.
- Keep project-wide compiler directives in one shared include used by every
  unit.
- Put Pascal source under one root (`source/` preferred), using namespaced
  filenames and a flat layout until a namespace becomes unwieldy.
- Co-locate unit tests; keep delivered end-to-end corpora under root `tests/`.
- Put all ignored build output under root `build/`.
- Prefer executable InstantFPC for one-off Pascal scripts; use an existing task
  runner or dynamic language only when that is materially simpler.

Read [references/code-style.md](references/code-style.md) when writing or
reviewing Pascal source.

## Build contract

The project chooses the implementation but provides one root entry point:

- bare invocation performs a clean development build of all binaries;
- positional names select one or more binary targets;
- development is the default and a production flag selects release settings;
- `clean` is a target and can be combined with a target;
- every binary lands under `build/`.

Document the entry point, targets, and flags in `docs/build-system.md`; read it
before changing them.

## Formatter and health contracts

One formatter/linter command rewrites Pascal by default and has a non-mutating
`--check` mode that exits non-zero on deviation. Project-specific style lives in
the tool and `docs/code-style.md`, not scattered config.

The codebase-health gate reports located duplication, per-function cyclomatic
and cognitive complexity, sortable file health, and complexity-times-churn
hotspots. Thresholds and ignores live in one root config; breaches exit
non-zero. Document the tool and thresholds in `docs/tooling.md`.

## Hook and completion

Lefthook runs the project's formatter check on staged Pascal and its
build-and-test command. Use the exact project entry points, install the hook via
the documented quick start, and never bypass it without explicit user direction.

Before relying on tool behavior, inspect root and area AGENTS, confirm `fpc -iV`
against project/CI pins, and verify any touched tool version live. Before
handoff, observe the project formatter and build-and-test gates passing and
update only the authoritative docs affected by the change.

