gaslighting-engine
v0.4.6
Published
LUDGI Gaslighting-engine: a hardcore project-discipline generator for AI coding agents.
Readme
Gaslighting-engine
PARODY NOTICE
This is a parody project and a meaningless experiment. The aggressive language is an absurd joke aimed at AI-agent failure modes, not a serious management doctrine and not advice for humans.
_ _ _ ____ ____ ___
| | | | | || _ \ / ___|_ _|
| | | | | || | | | | _ | |
| |___ | |_| || |_| | |_| || |
|_____| \___/ |____/ \____|___|AI coding agents love to escape.
They start strong, then drift.
They implement three examples and call it done.
They leave TODOs.
They create placeholders.
They say "the rest follows the same pattern."
Gaslighting-engine is a strict project-discipline generator that stops this behavior.
It now has two layers:
- CLI discipline generator
- Codex-style local Mission Control desktop app
It writes the heavy project-control system under .gaslighting/, keeps root AGENTS.md short, and uses .agents/ as the shared source-of-truth for skills, MCP definitions, prompts, and runtime config.
Quick Start
npx gaslighting-engine@latest desktop "I want to build a hospital website."This opens Gaslighting Mission Control, where you can review the mission, choose the agent runtime, select permission mode, generate the structured docs, and start the agent.
Headless CLI flow:
npx gaslighting-engine@latest "I want to build a hospital website."
npx gaslighting-engine@latest run "I want to build a hospital website."Short aliases after global install or local link:
gaslighting-engine "I want to build a hospital website."
gaslighting "I want to build a hospital website."The default mode is already aggressive:
- hardcore discipline
- full-scope enforcement
- no-TODO escape prevention
- no-shortcut enforcement
- Codex Skill generation
- Codex prompt fallback generation
What It Does
It turns vague intent into strict AI-readable project discipline.
It tells the agent:
- what the project is
- what the project must not become
- what assumptions are being made
- what information is missing
- what stack to use
- what not to over-engineer
- what fake completion looks like
- what counts as done
- what stable project facts should be remembered
Commands
gaslighting "I want to build a hospital website."
gaslighting-engine "I want to build a hospital website."
gaslighting init "I want to build a hospital website."
gaslighting-engine generate "Build an ecommerce MVP."
gaslighting-engine update "The hospital is actually an OB-GYN clinic, not dermatology."
gaslighting-engine doctor
gaslighting-engine desktop "Build a hospital homepage"
gaslighting-engine start "Build a hospital homepage"
gaslighting-engine cockpit
gaslighting-engine run "Build a hospital homepage"
gaslighting-engine agent list
gaslighting-engine loop start "Build a hospital homepage"
gaslighting-engine loop status
gaslighting-engine loop resume
gaslighting-engine loop stop
gaslighting-engine mcp search github
gaslighting-engine mcp install github --runtime codex
gaslighting-engine mcp list
gaslighting-engine skill create hospital-homepage
gaslighting-engine skill install hospital-homepage --runtime codex
gaslighting-engine upgrade
gaslighting-engine codex-install
gaslighting-engine codex-doctor
gaslighting-engine skill
gaslighting-engine agents
gaslighting-engine care
gaslighting-engine care --github-url https://github.com/user/repo.gitOutput Layout
Gaslighting-engine keeps project-control documents in .gaslighting/ by default so the project root stays clean.
Only root AGENTS.md is written at the top level because Codex expects project guidance there. It is a thin pointer into .gaslighting/.
.gaslighting/
INDEX.md
mission/
product/
pages/
features/
operations/
decisions/
tasks/
loops/
verification/
memory/
.agents/
config.json
skills/
prompts/
mcp/
runtimes/Runtime-specific files such as .codex/skills, .codex/prompts, and .codex/config.toml are exports from .agents/.
Desktop Mission Control
npx gaslighting-engine@latest desktop "I want to build a hospital website."Mission Control is an Electron app with a Codex-style project surface:
- project request input
- generated mission and PRD preview
- runtime selector: Codex, Claude Code, Qwen Code, Kimi-compatible, OpenCode, OpenAI-compatible, local
- model picker when the runtime supports it
- permission mode selector
- Mission Loop toggle
- Git/GitHub/domain/deploy/env health panel
- MCP search/install panel
- shared skill create/install panel
- integrated terminal/log panel
Permission modes:
ask_each_task: ask before each task and sensitive operationauto_review: default; normal work proceeds, sensitive operations require approvalfull_autonomy: run without approval, still log checkpoints and avoid leaking secrets
Mission Loop is OFF by default. When enabled, it runs task by task, writes checkpoints, records iteration logs, and refuses to mark failed verification as complete.
Legacy Web Cockpit
Mission Control is the Codex-first GUI agent surface:
npx gaslighting-engine@latest start "I want to build a hospital website."It shows:
- project purpose
- generated control documents
- missing information
- Git/GitHub and deployment care checks
- Codex runtime args
- Start Codex action
By default, Start Codex closes the local cockpit server and continues Codex in the same terminal that launched Mission Control. This keeps Cursor, Warp, Windows Terminal, or any other terminal flow intact.
If you explicitly want a separate terminal, add:
npx gaslighting-engine@latest start "I want to build a hospital website." --new-terminalTo customize Codex flags, use:
npx gaslighting-engine@latest start "I want to build a hospital website." --codex-args="--search --dangerously-bypass-approvals-and-sandbox"Open it for an existing project:
npx gaslighting-engine@latest cockpitRun without the GUI:
npx gaslighting-engine@latest run "I want to build a hospital website."Agent Runtimes
Check local runtime availability:
npx gaslighting-engine@latest agent listThe runtime abstraction separates model switching from long-running loops.
- Codex, Claude Code, Qwen Code, and OpenCode use their own CLI model settings.
- Kimi can be used through compatible CLI or OpenAI-compatible flows.
- OpenAI-compatible direct mode uses
OPENAI_COMPATIBLE_API_KEY,OPENAI_API_KEY, orKIMI_API_KEY. - Local mode expects
ollama.
Mission Loop
npx gaslighting-engine@latest loop start "Build a hospital homepage"
npx gaslighting-engine@latest loop status
npx gaslighting-engine@latest loop resume
npx gaslighting-engine@latest loop stopLoop state is stored in:
.gaslighting/tasks/
.gaslighting/loops/
.gaslighting/checkpoints/
.gaslighting/verification/The loop does not replace judgment. It gives the agent a repeatable task runner with checkpoint memory and verification gates.
MCP And Skills
Search and install MCP definitions:
npx gaslighting-engine@latest mcp search github
npx gaslighting-engine@latest mcp install github --runtime codex
npx gaslighting-engine@latest mcp doctorCreate a shared project skill and export it to Codex:
npx gaslighting-engine@latest skill create hospital-homepage
npx gaslighting-engine@latest skill install hospital-homepage --runtime codex
npx gaslighting-engine@latest skill doctorShared source files live in .agents/. Runtime exports are generated from there.
Project Care
Gaslighting-engine also writes .gaslighting/PROJECT_CARE.md.
This file tracks non-blocking but important care risks:
- Git initialized or missing
- GitHub remote connected or missing
- package metadata present or missing
- deployment target confirmed or missing
- production domain and DNS ownership missing
- environment template missing
- launch and rollback readiness
These are warnings, not fake blockers. The agent should keep implementing, but it must keep warning and recording gaps until they are resolved.
If GitHub is not connected yet, run:
gaslighting-engine care --github-url https://github.com/user/repo.gitThis initializes Git when needed and connects origin. If origin already exists and must be replaced, use --force-remote.
Update Notice
Gaslighting-engine checks npm for a newer version when you run normal commands.
The simple update command is:
npx gaslighting-engine@latest upgradeThis updates the Codex skill and prompt files in the current project. No --force is needed.
If an update exists, it prints a short notice like:
Gaslighting-engine update available:
- current: 0.1.0
- latest: 0.1.1
- update: npx gaslighting-engine@latest upgradeThe update check is best-effort and never blocks the command. Disable it with:
GASLIGHTING_ENGINE_NO_UPDATE_CHECK=1 gaslighting-engine doctorPowerShell:
$env:GASLIGHTING_ENGINE_NO_UPDATE_CHECK="1"; gaslighting-engine doctor; Remove-Item Env:GASLIGHTING_ENGINE_NO_UPDATE_CHECKUseful Options
Options are escape hatches. The strict behavior is already the default.
--standard
--allow-partial
--allow-todo
--allow-shortcut
--force
--dry-run
--lang en
--lang ko
--type hospital_homepage
--type ecommerce
--type landing_page
--type admin_dashboardWhy the Name?
Because AI agents often need aggressive reminders.
This project does not manipulate humans.
It disciplines AI coding agents.
Core Rule
Fake completion is worse than honest incompletion.
If the work is not done, say it is not done.
Use with Codex
For the smoothest Codex app setup, run this in the project:
npx gaslighting-engine codex-install --forceThis writes both current Codex Skill paths used by different Codex surfaces:
.agents/skills/gaslighting/SKILL.md
.agents/skills/gaslighting/agents/openai.yaml
.codex/skills/gaslighting/SKILL.md
.codex/skills/gaslighting/agents/openai.yaml
.agents/prompts/gaslighting.md
.codex/prompts/gaslighting.md
.gaslighting/CODEX_GASLIGHTING.mdThen use one of these in Codex:
$gaslightingor:
Use the gaslighting skill.In Codex app builds that expose enabled skills in the slash menu, /gaslighting may also appear. If it does not appear, $gaslighting is the reliable direct invocation path.
After generating project documents, tell Codex:
Read AGENTS.md, .gaslighting/GASLIGHTING.md, .gaslighting/PRD.md, .gaslighting/STACK_POLICY.md, .gaslighting/MISSING_INFO.md, .gaslighting/ASSUMPTIONS.md, .gaslighting/DECISION_LOG.md, .gaslighting/MEMORY.md, and .gaslighting/PROJECT_CARE.md.
Do not shrink the scope.
Do not leave TODOs.
Do not fake completion.AGENTS.md remains the project-level safety net. Codex reads it as project guidance, while the skill gives you an explicit reusable workflow.
Use as Codex Skill
Generate skill files:
gaslighting-engine skillThis creates:
.codex/prompts/gaslighting.md
.codex/skills/gaslighting/SKILL.md
.codex/skills/gaslighting/agents/openai.yaml
.codex/skills/gaslighting/references/GASLIGHTING_TEMPLATE.md
.codex/skills/gaslighting/references/HARDCORE_DISCIPLINE_TEMPLATE.md
.codex/skills/gaslighting/references/STACK_POLICY_TEMPLATE.md
.codex/skills/gaslighting/references/HOSPITAL_HOMEPAGE_EXAMPLE.md
.codex/skills/gaslighting/scripts/generate-gaslighting-docs.tsDevelopment
npm install
npm run build
node dist/index.js "I want to build a hospital website." --dry-run
npm testThe MVP is deterministic and template-based. It does not call OpenAI, Anthropic, or any external LLM API.
