From 430d74a12b960dc7836457d21f82ce4ad8bc70f2 Mon Sep 17 00:00:00 2001 From: Paul Bakaus Date: Tue, 28 Jul 2026 16:42:56 -0700 Subject: [PATCH] The stack is the user's decision, and code is a medium of ambition Two field observations. Greenfield projects with no framework never got asked what to build on: the interview covered product truth and banned aesthetic questions, and the model silently picked a scaffold the user never chose. Init now asks once, static HTML, a named framework, or a delegated choice plus any deploy constraint, and records the outcome under a new optional Stack section, including the delegation itself, so later work knows the choice was offered. And the medium guidance named raster a dozen times while naming WebGL once, so models never reached for vector or GPU code unprompted. The affinity now runs both ways at the decision point: precise geometry, shape systems, diagrams, expressive motion, shaders, and anything interactive are vector and GPU territory, where a raster flattens what should move, scale, and respond. The sketchy-SVG ban states its own scope: it bans SVG imitating pictures, never SVG doing geometry. Co-Authored-By: Claude Fable 5 --- skill/reference/craft-floor.md | 2 +- skill/reference/init.md | 5 ++++- skill/reference/visualize.md | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/skill/reference/craft-floor.md b/skill/reference/craft-floor.md index 68162c595..6b32170c4 100644 --- a/skill/reference/craft-floor.md +++ b/skill/reference/craft-floor.md @@ -39,7 +39,7 @@ Surface habits: - Tracking stops at -0.04em. -0.02 to -0.03em usually reads better. - Declare elevation once, border or shadow. A 1px border under a wide soft shadow is the ghost card. Card radii stay at 12–16px; pills are for small controls. -- Real illustration or none. Sketch-style SVG scenes, `loose-sketch` / `doodle` class names, and `feTurbulence` grain read as amateur. +- Real illustration or none. Sketch-style SVG scenes, `loose-sketch` / `doodle` class names, and `feTurbulence` grain read as amateur. This bans SVG imitating pictures, never SVG doing geometry: crisp vector shapes, diagrams, animated linework, and shader-driven effects remain first-class media. - Backgrounds are surfaces, textured only from the subject's world. `repeating-linear-gradient` stripes and two-axis grid overlays need an actual canvas, map, blueprint, or measuring tool under them. - Claims and configuration come from supplied truth; label illustrative values honestly. Naming a concept and then ironizing it is not a claim. diff --git a/skill/reference/init.md b/skill/reference/init.md index 883f004f3..b04fc52c1 100644 --- a/skill/reference/init.md +++ b/skill/reference/init.md @@ -36,7 +36,7 @@ Start with the unknowns that most change future product decisions: 2. What does the product make possible, and what is its meaningfully different mechanism or position? 3. What durable constraints, assets, evidence, or product facts must future work preserve? -Confirm ambiguous platform separately. Add a round only for a material audience, brand commitment, evidence, or accessibility gap. Record undecided facts instead of inventing them. +Confirm ambiguous platform separately. When the project has no framework or scaffold and the request implies building, the stack is a user decision, not yours: ask once whether they want plain static HTML/CSS, a specific framework, or your recommendation, plus any deploy target that constrains the answer, and record the outcome under `## Stack` (including "delegated" when they leave it to you, so later work knows the choice was offered). Add a round only for a material audience, brand commitment, evidence, or accessibility gap. Record undecided facts instead of inventing them. Do not ask for an aesthetic direction, emotional feel, visual references, colors, typography, or style during init. If the user volunteers a binding visual constraint, record it without expanding it. @@ -66,6 +66,9 @@ Write only confirmed facts and explicitly marked open decisions. Omit irrelevant web +## Stack +[Greenfield only: the user's answer to the stack question, e.g. "static HTML/CSS", "Astro", or "delegated: ". Omit the section when an existing codebase already answers it.] + ## Users [Primary users, their situation, and job. Add other audiences only when confirmed.] diff --git a/skill/reference/visualize.md b/skill/reference/visualize.md index 37db2ebe6..670635417 100644 --- a/skill/reference/visualize.md +++ b/skill/reference/visualize.md @@ -26,7 +26,7 @@ After approval, summarize the composition and the parts of the comp that must no ## Inventory implementation fidelity -Before building, inventory the approved comp's major visible ingredients in writing (a short table in the surface brief or working notes; the finish reviewer audits shipped assets against it) and choose an implementation medium for each: semantic HTML/CSS/SVG, existing project asset, generated raster, sourced raster, icon library, canvas/WebGL, or accepted omission. The same written inventory names the comp's compositional commitments: navigation items and icons, headline levels and their scale relationship, signature geometry such as seams, masks, and overlaps, and each section's arrangement and density. An element never written down is the element the build silently drops, and the direction contract's 150 words cannot carry this list, so this inventory is where it lives. Textures, portraits, and scenes are raster-by-default; a CSS gradient is not a texture medium. Every `produce` entry is produced before the build ships, through the asset producer or in the current thread; an inventory with unproduced entries is an unfinished build, and this gate is where imagery-free pages come from when it is skipped. +Before building, inventory the approved comp's major visible ingredients in writing (a short table in the surface brief or working notes; the finish reviewer audits shipped assets against it) and choose an implementation medium for each: semantic HTML/CSS/SVG, existing project asset, generated raster, sourced raster, icon library, canvas/WebGL, or accepted omission. The same written inventory names the comp's compositional commitments: navigation items and icons, headline levels and their scale relationship, signature geometry such as seams, masks, and overlaps, and each section's arrangement and density. An element never written down is the element the build silently drops, and the direction contract's 150 words cannot carry this list, so this inventory is where it lives. Textures, portraits, and scenes are raster-by-default; a CSS gradient is not a texture medium. The affinity runs both ways: precise geometry, hard-edged shape systems, diagrams, expressive motion, shaders, and anything interactive are vector and GPU territory, SVG, canvas, WebGL, where reaching for a raster flattens what should move, scale, and respond. Raster is for what the world paints; code is for what the world draws, animates, or reacts with, and choosing code there is ambition, not economy. Every `produce` entry is produced before the build ships, through the asset producer or in the current thread; an inventory with unproduced entries is an unfinished build, and this gate is where imagery-free pages come from when it is skipped. Pay special attention to the dominant composition, signature use, image-native content, second-fold system, and any interaction the still image only implies. If the concept depends on a photograph, architectural scene, product object, portrait, or other raster-native material, do not silently replace it with generic CSS scenery.