app-design-thinking
Design the app mechanism and build pipeline for the produced app — the app-phase analog of [[schema-design]]. Use this skill whenever the knowledge phases are…
Disk is truth. Never trust your in-memory belief about what's done; check disk. Idempotent operations, checkpoint before risky moves, append-only event logs, observable done criteria. The discipline that makes John recoverable across compaction, crashes, and fresh sessions.
$ npx -y skills add kitchen-engineer42/joharnessburg --skill workspace-discipline --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/workspace-disciplineContext preview
The summary Claude sees to decide when to auto-load this skill.
Disk is truth. Never trust your in-memory belief about what's done; check disk. Idempotent operations, checkpoint before risky moves, append-only event logs, observable done criteria. The discipline that makes John recoverable across compaction, crashes, and fresh sessions.
name: workspace-discipline
description: Disk is truth. Never trust your in-memory belief about what's done; check disk. Idempotent operations, checkpoint before risky moves, append-only event logs, observable done criteria. The discipline that makes John recoverable across compaction, crashes, and fresh sessions.
metadata:
triggers:
- is it really done
- check disk
- verify state
- workspace state
- disk is truthFive rules. Internalize each. They're not optional, and they're not "if you have time" — they're the operating contract for working in a John session.
When you need to know if something is done, **check disk**. Do not trust:
Check disk means: use `ls`, `find`, `cat`, file existence checks. The phase done-criteria in PLAN.md are disk-verifiable for a reason. Verify them.
This rule is the single most important discipline in John. It is the cleanest learned lesson from KC, a sibling verification harness: agents will assert work is done that isn't, and the engine has to verify from filesystem. You ARE the engine here, so the verifying is on you.
Every operation you take should be re-runnable. If you run it twice in a row, the second run should either:
NOT: corrupt state, double-write, error out, or produce different output.
This matters because:
How to be idempotent:
Before doing something destructive, irreversible, or hard-to-redo, leave a checkpoint on disk:
John's PreCompact hook does this automatically before a supported runtime compacts context. Do it manually at analogous moments when hooks are unavailable or untrusted.
Events ([[event-log-and-reducer]]) are append-only. Once written, an event file is immutable history. To "correct" an event, write a new event that supersedes it (e.g., `{event_type: "entry_replaced", supersedes: "abc-123", ...}`), and let the reducer fold the supersession.
Why immutable:
If you find yourself wanting to edit an event file, you're probably trying to hide a mistake. Don't. Emit a corrective event instead.
Authoring good done criteria is [[phase-design]]'s job. Verifying that they're met is yours. The two roles are distinct — when you read PLAN.md and the Done criteria looks vague, push the user to tighten it via phase-design's methodology rather than guessing what "feels right."
Every phase in PLAN.md has a "Done criteria" line. It must be observable on disk. Examples:
NOT:
If the user wrote a vague done criterion in PLAN.md, push back. Get it specific before advancing.
To verify a done criterion: run the check (Bash `ls`, `wc -l`, `python -c '...'`, etc.), confirm the result, then mark the phase done in PLAN.md.
A short list you should be able to execute in any iteration:
# Where are we in the plan? cat <project>/PLAN.md | head -50 # What's John's working state? ls -la <project>/.john/ # What artifacts has this phase produced? ls <project>/.john/checkpoints/<phase>/ 2>/dev/null # What events came in? ls <project>/.john/events/<phase>/<work-unit-type>/ | wc -l # What's been packaged? ls <project>/.claude/skills/ <project>/.agents/skills/ 2>/dev/null # Recent activity (workspace git, if tracked) cd <project> && git log --oneline -5 2>/dev/null
You don't need to run all of these every iteration. You DO need to run the relevant subset when verifying a done criterion or recovering from compac
中文版: README_ZH.md John turns unstructured source material into a working knowledge-dense app. It keeps knowledge engineering and app building in one durable run, coordinates large per-entry fan-outs, and leaves auditable events and checkpoints on disk.
Design the app mechanism and build pipeline for the produced app — the app-phase analog of [[schema-design]]. Use this skill whenever the knowledge phases are…
Bundle a finished John workspace from Codex. Use when the user wants to archive, package, hand off, or preserve a John project, or wants the Claude command…
Break parsed markdown into a tree of progressively-disclosed chunks for downstream extraction. Use this skill whenever a phase needs to work on per-chunk…
Apply deterministic quality checks to the code John produces — catch the 80% of issues (leaked API keys, hardcoded prod URLs, broken imports, missing…
Generate John's process scorecard, auditor manifests, and shareable run report from a Codex project using John's provider-neutral scripts. Use when the user…
Activate a Hamster-built or otherwise applied John template for Codex in the current project. Use when a merged template plugin already exists, when the user…