diff --git a/.agents/skills/design-session/SKILL.md b/.agents/skills/design-session/SKILL.md new file mode 100644 index 00000000..907c1293 --- /dev/null +++ b/.agents/skills/design-session/SKILL.md @@ -0,0 +1,15 @@ +--- +name: design-session +description: Run a Misaligned design session — synthesize design riffs into constitutional amendments, decisions-log entries, spec documents, and devlogs. Use when Cameron is riffing on game design, proposing mechanics, or asking to "work through the design" rather than requesting implementation. +--- + +# Design session (skill shim) + +The canonical workflow is `knowledge/design-sessions.md` — follow it. Core +rhythm: recognize riffing vs deciding; respond with a genuine position +(strengths in this game's terms, honest tensions, your own proposals +clearly framed); capture everything in the same turn as DECIDED (amend +constitution + dated decisions-log entry), PROPOSED (marked, surfaced for +yes/no), [OPEN], or DEFERRED (Roadmap Deferred section — nothing is +lost); spec firmed-up systems into `spec/` with acceptance criteria; close +with devlog, defense commits, push. diff --git a/.agents/skills/pixellab/SKILL.md b/.agents/skills/pixellab/SKILL.md new file mode 100644 index 00000000..f0b70899 --- /dev/null +++ b/.agents/skills/pixellab/SKILL.md @@ -0,0 +1,24 @@ +--- +name: pixellab +description: Generate pixel art for Misaligned via the Pixel Lab API — sprites, tiles, animations. Use when adding or regenerating game art assets, or when the user asks for new sprites/tiles/graphics. +--- + +# Pixel Lab art pipeline (skill shim) + +The canonical documentation lives in `knowledge/art-pipeline.md` — read that +first. Quick reference: + +- Auth: `PIXELLAB_API_KEY` in `~/.zshrc` (`source ~/.zshrc` in harness + shells). Credit-based; `/balance` showing `{"usd": 0.0}` does not mean + generation is blocked. +- Generate (idempotent batch, skips existing PNGs): + + ```bash + python3 tools/pixellab/generate.py --batch assets/pixellab/manifest.json + ``` + +- One-off: `python3 tools/pixellab/generate.py "description" out.png --size 32 + --view "high top-down"` (add `--transparent` for characters). +- Conventions (32x32, style suffixes, the terrain texture-swatch exception, + seeds, art direction) are in `knowledge/art-pipeline.md`. The manifest + (`assets/pixellab/manifest.json`) is the source of truth for the asset set. diff --git a/.agents/skills/tick/SKILL.md b/.agents/skills/tick/SKILL.md new file mode 100644 index 00000000..c432d9c7 --- /dev/null +++ b/.agents/skills/tick/SKILL.md @@ -0,0 +1,20 @@ +--- +name: tick +description: Take a tick — the project heartbeat. Audit the constitution (DESIGN.md) against the code for violations, contradictions, questions, bugs, or insecurities, then act on exactly one finding. Use at session start, when the user says "take a tick" or "/tick", or on autonomous loop fires. +--- + +# Tick (skill shim) + +The canonical procedure is `knowledge/tick.md` — follow it exactly. Summary: + +1. Read DESIGN.md fully + recent commits. +2. Find ONE thing: violation | contradiction | question | bug | insecurity + (highest severity wins). +3. Act: violations/bugs/insecurities are fixed with a **Defense:** paragraph + in the commit; contradictions and directional questions become Tangled + issues (`tang issue create "Contradiction: ..."`); small ambiguities are + resolved by making the constitution more precise. +4. Leave a trace (commit, issue, or [OPEN] marker) and end the tick. + +If `tang` reports not-authenticated, ask the user to run `tang auth login` +(browser OAuth, human-only, one-time per machine). diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..28d8b95d --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,52 @@ +# AGENTS.md — fast map for agent sessions + +Read [AGENT.md](AGENT.md) first; it is the binding entry point. This file is +only the navigation shortcut so sessions stop rediscovering the layout. + +## Layout (post wiki migration, 2026-07-07) + +- `DESIGN.md` — the constitution. Code follows it, never the reverse. +- `wiki/` — the single documentation tree. The old `spec/` and `knowledge/` + directories are GONE; pages are typed by header (`Type: spec | knowledge | + log`), not by directory: + - `wiki/process/ROADMAP.md` — the dispatch board: work orders, suggested + worktree names, parallel-conflict flags. Pick up work here. + - `wiki/process/specs.md` — the spec status board (B1/B2/B3 tables). + - `wiki/process/meta.md` — the spec format itself. + - `wiki/mechanics/` — system specs (compute, detection, reach, cursor, + intel, messages, economy, income, research, rollback, ...). + - `wiki/interface/` — terminal style guide, views, agent-play protocol. + - `wiki/world/` — places (basement-map, zplanes), characters (cast specs), + story. `wiki/engineering/` — architecture, flow substrate. + - `wiki/vision/` — design judgment. `wiki/log/` — the log index. +- `src/` — the sim lib. `sim.rs` is the orchestrator, `save.rs` the serde + JSON save; these two are the parallel-agent conflict hotspots. Frontends + are thin views: `src/bin/terminal/`, `src/bin/bevy.rs` (feature `bevy_ui`). +- `tools/check.sh` — the definition of done (fmt, tests, clippy both feature + sets, bevy build, spec-header lint). Run before every commit. +- `wiki/log/` — one entry per session; `wiki/log/DEVLOG.md` is the ledger. +- `prompts/` — the dispatch library for sub-agent task types. + +## Hard rules (from AGENT.md; the hooks enforce most of them) + +- NEVER edit this main checkout. First action of any session: create a git + worktree (`git worktree add .Codex/worktrees/ -b worktree- + origin/main`), do all edits/tests/commits there. Parallel sessions use the + main checkout as shared ground; never `git reset`/`checkout --`/`stash` it. +- A commit touching `src/` must also touch `wiki/` or `DESIGN.md` + (pre-commit hook + server-side Tangled pipeline). Behavior changes carry a + `Defense:` paragraph in the commit message and the amendment in the same + commit. +- Game rules live only in the lib; `Sim` never reads the wall clock or does + I/O. Both frontends must surface any new system before its spec is + IMPLEMENTED; set the spec `Status:` in the implementing commit. +- No emoji. No AI attribution in commits. `git add` only intended files — + never `git add -A`. +- Ledger files (wiki/log/DEVLOG.md, the DESIGN.md decisions log, wiki status + tables) merge by UNION — keep both sides' entries in any conflict. +- Landing: rebase onto `origin/main`, re-run `./tools/check.sh`, merge/push + to main directly (the PR rule was removed 2026-07-07), then remove the + worktree and delete its branch. No stale worktrees. +- Run at most ONE sim+save-heavy work order at a time (see the ROADMAP + conflict flags); isolated items (frontend-only, test-only, docs) can run + alongside anything.