Three independently ugly bugs that all fed the same log flood:
* Electron's `WebFrameMain.send` writes every "Render frame was disposed"
to stderr via `console.error`. When the worker fans a second
agent-event past a reloading renderer, we produced thousands of
identical lines and stalled the main loop on stderr I/O. Added a
`mainFrame.detached` guard so the send is short-circuited before
Electron's own catch block fires, and installed a targeted filter in
`suppress-warnings.ts` (now actually imported from the entry point)
so the specific `console.error("Error sending from webFrameMain:"…)`
noise never reaches the terminal. Any other payload still surfaces.
* `dispatchAgentMessage` accepted the human-reader sentinel as a wake
target when an agent replied to `__board__` — `wakeAgentIfPossible`
then called `db.getAgent("__board__")`, threw, and the dispatcher
kept repeating on every send. Strip `HUMAN_SENDER_ID` at
`resolveMessageWakeTargets`, and keep a defense-in-depth guard in the
heartbeat so a stray caller (future automation fan-out) cannot
reintroduce the crash.
* Pi's skills loader rejects any SKILL.md whose frontmatter `name`
diverges from its parent directory. The four bundled `my-writing-style`
copies declared `name: writing-style-skill`, so every install emitted
a warning and dropped the skill. They also lived as orphan gitlinks
(mode 160000 without .gitmodules), and the global `*.md` gitignore
hid every other SKILL.md from version control. Fixed the frontmatter
to match the dir, converted the dangling submodules to plain trees,
and allowlisted `builtin-skills/**/*.md` so a fresh clone carries the
catalogue instead of silently losing it.
11 KiB
11 KiB
Design DNA Schema
Three-dimensional design profile:
- design_system — measurable tokens
- design_style — qualitative perception
- visual_effects — special rendering such as Canvas, WebGL, 3D, particles, shaders, scroll effects, cursor effects, SVG animation, and glassmorphism
Every field below must appear in the final JSON output.
Top-Level Structure
meta
namedescriptionsource_referencescreated_at
design_system
The structural and measurable layer.
design_system.color
palette_typeprimary.hexprimary.rolesecondary.hexsecondary.roleaccent.hexaccent.roleneutral.scaleneutral.usagesemantic.successsemantic.warningsemantic.errorsemantic.infosurface.backgroundsurface.cardsurface.elevatedcontrast_strategy
design_system.typography
type_scale.display.sizetype_scale.display.weighttype_scale.display.line_heighttype_scale.display.trackingtype_scale.heading_1.sizetype_scale.heading_1.weighttype_scale.heading_1.line_heighttype_scale.heading_1.trackingtype_scale.heading_2.sizetype_scale.heading_2.weighttype_scale.heading_2.line_heighttype_scale.heading_2.trackingtype_scale.heading_3.sizetype_scale.heading_3.weighttype_scale.heading_3.line_heighttype_scale.heading_3.trackingtype_scale.body.sizetype_scale.body.weighttype_scale.body.line_heighttype_scale.body.trackingtype_scale.body_small.sizetype_scale.body_small.weighttype_scale.body_small.line_heighttype_scale.body_small.trackingtype_scale.caption.sizetype_scale.caption.weighttype_scale.caption.line_heighttype_scale.caption.trackingtype_scale.overline.sizetype_scale.overline.weighttype_scale.overline.line_heighttype_scale.overline.trackingfont_families.headingfont_families.bodyfont_families.monofont_style_notes
design_system.spacing
base_unitscalecontent_densitysection_rhythm
design_system.layout
grid_systemmax_content_widthcolumnsgutterbreakpointsalignment_tendency
design_system.shape
border_radius.smallborder_radius.mediumborder_radius.largeborder_radius.pillborder_usagedivider_style
design_system.elevation
shadow_stylelevels.lowlevels.mediumlevels.highdepth_cues
design_system.iconography
stylestroke_weightsize_scalepreferred_set
design_system.motion
easingduration_scale.microduration_scale.normalduration_scale.macroentrance_patternexit_patternphilosophy
design_system.components
button_styleinput_stylecard_stylenavigation_patternmodal_stylelist_stylecomponent_notes
design_style
The qualitative and perceptual layer.
design_style.aesthetic
moodvisual_metaphorera_influencegenrepersonality_traitsadjectives
design_style.visual_language
complexityornamentationwhitespace_usagevisual_weight_distributionfocal_strategycontrast_leveltexture_usage
design_style.composition
hierarchy_methodbalance_typeflow_directiongrouping_strategynegative_space_role
design_style.imagery
photo_treatmentillustration_stylegraphic_elementspattern_usageimage_shape
design_style.interaction_feel
feedback_stylehover_behaviortransition_personalityloading_stylemicrointeraction_density
design_style.brand_voice_in_ui
toneformalitycta_styleempty_state_approacherror_tone
visual_effects
The special rendering and advanced visual behavior layer.
visual_effects.overview
effect_intensityperformance_tierfallback_strategyprimary_technology
visual_effects.background_effects
typedescriptiontechnologyparams.color_paletteparams.speedparams.densityparams.opacityparams.blend_mode
visual_effects.particle_systems
enabledtypedescriptiontechnologyparams.countparams.shapeparams.size_rangeparams.movement_patternparams.color_behaviorparams.interactionparams.spawn_area
visual_effects.3d_elements
enabledtypedescriptiontechnologyparams.rendererparams.lightingparams.cameraparams.materialsparams.geometryparams.post_processingparams.interaction_model
visual_effects.shader_effects
enabledtypedescriptiontechnologyparams.uniformsparams.vertex_manipulationparams.fragment_outputparams.noise_typeparams.distortion
visual_effects.scroll_effects.parallax
enabledlayersdepth_rangespeed_curve
visual_effects.scroll_effects.scroll_triggered_animations
enabledtrigger_pointsanimation_typescrub_behavior
visual_effects.scroll_effects.scroll_morphing
enableddescription
visual_effects.text_effects
typedescriptiontechnologyparams.split_strategyparams.animation_per_unitparams.staggerparams.effect_style
visual_effects.cursor_effects
enabledtypedescriptionparams.shapeparams.sizeparams.blend_modeparams.trailparams.interaction_zone
visual_effects.image_effects
typedescriptiontechnologyparams.filter_pipelineparams.hover_transformparams.reveal_animationparams.distortion_type
visual_effects.glassmorphism_neumorphism
enabledstyleparams.blur_radiusparams.transparencyparams.border_treatmentparams.shadow_typeparams.light_source_angle
visual_effects.canvas_drawings
enabledtypedescriptiontechnologyparams.draw_methodparams.animation_loopparams.color_schemeparams.responsivenessparams.interaction
visual_effects.svg_animations
enabledtypedescriptionparams.animation_methodparams.path_morphingparams.stroke_animationparams.filter_effects
visual_effects.composite_notes
- Free-text notes for layered effects, implementation ambiguity, performance trade-offs, or screenshot-only observations
Field Guidance
design_system (Dimension 1: Structural / Measurable)
Concrete, token-level values. Extract exact values where visible; estimate from visual inspection otherwise.
color.palette_type: "monochromatic", "complementary", "analogous", "triadic", "split-complementary"color.contrast_strategy: How text/background contrast is managed — "high contrast", "subtle layers", "dark-on-light dominant"typography.font_style_notes: e.g. "geometric sans with humanist touches"spacing.content_density: "compact", "comfortable", "spacious"spacing.section_rhythm: How vertical spacing varies between sectionslayout.alignment_tendency: "strict grid", "centered", "asymmetric", "mixed"shape.border_usage: "none", "subtle 1px", "bold borders", "only on inputs"elevation.shadow_style: "none", "soft diffused", "hard drop", "layered"elevation.depth_cues: "shadows", "overlapping layers", "blur/glass", "color intensity"motion.philosophy: "minimal functional", "playful bouncy", "cinematic", "none"components: Describe observed patterns — e.g. "ghost buttons with thick borders, rounded inputs with inner shadow"
design_style (Dimension 2: Qualitative / Perceptual)
Subjective assessments. Use descriptive language.
aesthetic.mood: Array of 3–5 mood words, e.g. ["calm", "professional", "warm"]aesthetic.genre: e.g. "corporate SaaS", "indie creative", "luxury editorial", "neo-brutalist"aesthetic.personality_traits: As if the design were a person, e.g. ["confident", "approachable", "meticulous"]visual_language.complexity: "minimal", "moderate", "rich", "maximal"visual_language.ornamentation: "none", "subtle accents", "decorative", "heavily ornamented"visual_language.focal_strategy: "single hero element", "distributed interest", "progressive reveal"composition.hierarchy_method: "scale contrast", "color weight", "spatial isolation", "typographic hierarchy"composition.balance_type: "symmetric", "asymmetric", "radial", "mosaic"interaction_feel.transition_personality: "snappy", "smooth glide", "bouncy elastic", "fade-subtle"brand_voice_in_ui.cta_style: "direct imperative", "friendly invitation", "urgent scarcity", "subtle suggestion"
visual_effects (Dimension 3: Special Rendering / Visual Wizardry)
Effects beyond standard CSS. These often require Canvas, WebGL, SVG animation, shader programs, or JS animation libraries. When not directly observable from static code, describe them from screenshots or video.
overview.effect_intensity: "none", "subtle-accent", "moderate", "heavy-immersive"overview.performance_tier: "lightweight" (CSS + simple JS), "medium" (Canvas 2D, SVG anim), "heavy" (WebGL, Three.js, shaders)overview.fallback_strategy: What happens on low-end devices — "disable effects", "reduce to CSS", "static snapshot"overview.primary_technology: "CSS only", "Canvas 2D", "WebGL/Three.js", "GSAP", "Lottie", "SVG SMIL", "Pixi.js"background_effects.type: "gradient-animation", "noise-field", "mesh-gradient", "video-bg", "generative-art", "none"particle_systems.type: "floating-dots", "confetti", "snow", "fireflies", "connected-nodes", "custom"particle_systems.params.interaction: "mouse-repel", "mouse-attract", "click-burst", "none"3d_elements.type: "hero-model", "product-viewer", "scene-bg", "text-extrusion", "abstract-geometry"3d_elements.params.post_processing: e.g. ["bloom", "FXAA", "depth-of-field", "chromatic-aberration"]shader_effects.type: "noise-distortion", "wave", "morph", "color-shift", "custom-GLSL"shader_effects.params.noise_type: "perlin", "simplex", "worley", "fbm"scroll_effects.parallax.layers: Number of depth layers, e.g. "3"scroll_effects.scroll_triggered_animations.animation_type: "fade-up", "scale-in", "clip-reveal", "counter", "draw-SVG"text_effects.type: "split-letter-animate", "typewriter", "glitch", "gradient-fill", "3d-extrude", "none"text_effects.params.split_strategy: "by-char", "by-word", "by-line"cursor_effects.type: "custom-cursor", "magnetic-buttons", "spotlight", "trail", "none"image_effects.type: "hover-distortion", "reveal-clip", "parallax-tilt", "rgb-shift", "none"image_effects.params.distortion_type: "barrel", "wave", "liquid", "glitch"glassmorphism_neumorphism.style: "glass", "neumorphic-light", "neumorphic-dark", "frosted-layers", "none"canvas_drawings.type: "generative-lines", "interactive-blobs", "data-visualization", "pattern-fill", "none"svg_animations.type: "path-draw", "morph-shapes", "logo-reveal", "decorative-loop", "none"composite_notes: Free-text description of how multiple effects layer together, performance trade-offs, or effects visible only in screenshots that cannot be fully captured in structured fields