<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: george</title>
    <description>The latest articles on DEV Community by george (@sunnhappy).</description>
    <link>https://dev.to/sunnhappy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3982396%2Ff8ca07a1-5fdf-485f-a93f-cbe60a6e4ed7.png</url>
      <title>DEV Community: george</title>
      <link>https://dev.to/sunnhappy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sunnhappy"/>
    <language>en</language>
    <item>
      <title>Solstice Leap: leaping across the longest day with binary tape</title>
      <dc:creator>george</dc:creator>
      <pubDate>Sun, 14 Jun 2026 16:03:34 +0000</pubDate>
      <link>https://dev.to/sunnhappy/solstice-leap-leaping-across-the-longest-day-with-binary-tape-1777</link>
      <guid>https://dev.to/sunnhappy/solstice-leap-leaping-across-the-longest-day-with-binary-tape-1777</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Solstice Leap&lt;/strong&gt;, a 3D browser arcade game where a glowing sun leaps across floating daylight platforms before the day fades out.&lt;/p&gt;

&lt;p&gt;The game starts with a very simple input: hold to charge, release to jump. From there, each run becomes a small timing puzzle about reading distance, managing daylight, and choosing how far to push the streak. The player lands on normal platforms, prism boosts, shadow tiles, moving ledges, and binary tape platforms that write bits into a Turing-inspired protocol.&lt;/p&gt;

&lt;p&gt;Live game: &lt;a href="https://huanglianggit.github.io/solstice-leap/" rel="noopener noreferrer"&gt;https://huanglianggit.github.io/solstice-leap/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code: &lt;a href="https://github.com/huanglianggit/solstice-leap" rel="noopener noreferrer"&gt;https://github.com/huanglianggit/solstice-leap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video demo: &lt;a href="https://huanglianggit.github.io/solstice-leap/media/solstice-leap-demo-short.mp4" rel="noopener noreferrer"&gt;Watch the 34-second MP4 demo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;The demo shows the opening run, distance-based jumping, binary tape platforms, prism boosts, and the first protocol transition from &lt;strong&gt;Dawn Tape&lt;/strong&gt; into &lt;strong&gt;Prism Relay&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Direct video link: &lt;a href="https://huanglianggit.github.io/solstice-leap/media/solstice-leap-demo-short.mp4" rel="noopener noreferrer"&gt;solstice-leap-demo-short.mp4&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Fits the Theme
&lt;/h2&gt;

&lt;p&gt;The solstice theme is built into the core loop rather than only the visuals.&lt;/p&gt;

&lt;p&gt;The player is literally carrying a sun across the longest day. &lt;strong&gt;Daylight&lt;/strong&gt; acts as the run timer, and every jump either preserves, restores, or drains that light. Prism platforms restore daylight, shadow tiles make survival harder, and the color palette shifts around warm sunlit platforms against a darker evening world.&lt;/p&gt;

&lt;p&gt;I wanted the game to feel like a tiny ritual of keeping the day alive: charge, leap, land, recover light, and keep moving before sunset catches up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gameplay
&lt;/h2&gt;

&lt;p&gt;Solstice Leap is intentionally readable at first, but it adds pressure through platform variety and protocol goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daylight platforms&lt;/strong&gt; are the baseline landing targets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prism boosts&lt;/strong&gt; restore daylight and reward momentum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Binary tape platforms&lt;/strong&gt; write the current protocol bit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow tiles&lt;/strong&gt; are smaller and drain daylight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Moving ledges&lt;/strong&gt; appear later and add timing pressure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The player scores more for clean center landings and for building streaks. If a jump is undercharged but the sun still lands on the original platform, the run continues. The player only loses when the sun actually falls between platforms or daylight runs out.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The game is a static web project built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Three.js&lt;/li&gt;
&lt;li&gt;Web Audio API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 3D scene is rendered with Three.js. I used simple geometry, custom materials, canvas-generated textures, lighting, shadows, particle trails, and platform animations instead of external art assets.&lt;/p&gt;

&lt;p&gt;The jump system is based on charge duration. A held input maps to travel distance, and the landing check compares the final position against the target platform and the original platform. That made the game feel more fair: a tiny hop that stays on the same pillar is not treated as a miss.&lt;/p&gt;

&lt;p&gt;The protocol system generates binary platforms in sequence. Landing on a binary platform writes the next bit into the active tape. Completing a tape advances the run into the next named protocol, starting with &lt;strong&gt;Dawn Tape&lt;/strong&gt; and then moving into &lt;strong&gt;Prism Relay&lt;/strong&gt;, &lt;strong&gt;Turing Noon&lt;/strong&gt;, and &lt;strong&gt;Longest Day&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also added responsive HUD layout, local best-score storage, touch-friendly controls, and a GitHub Pages deployment so the game can be played directly in the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;I am submitting this for &lt;strong&gt;Best Ode to Alan Turing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The game uses protocol names, binary tape, deterministic bit targets, and tape-writing platforms as a playful arcade interpretation of computation. The player is not only jumping across platforms. They are also helping a tiny sun-powered machine write and complete binary sequences before daylight runs out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;The most interesting design challenge was balancing a one-button arcade game with enough structure to feel fresh. A pure jumping game became much more interesting once the platforms also carried meaning: daylight recovery, risk, binary progress, and protocol transitions.&lt;/p&gt;

&lt;p&gt;I also learned that small fairness details matter a lot. The jump should only fail when the player truly misses the platform, not when they make a harmless hop in place. Fixing that made the controls feel more trustworthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;If I continue developing Solstice Leap, I would like to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A sound toggle and richer landing sounds&lt;/li&gt;
&lt;li&gt;More protocol variations&lt;/li&gt;
&lt;li&gt;A few visual transitions between dawn, noon, and sunset&lt;/li&gt;
&lt;li&gt;A leaderboard or shareable run summary&lt;/li&gt;
&lt;li&gt;Optional mobile haptics for jump charging and landing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for checking it out.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>AI Agent Skills Are Everywhere. But Which Ones Are Safe to Install?</title>
      <dc:creator>george</dc:creator>
      <pubDate>Sat, 13 Jun 2026 09:04:04 +0000</pubDate>
      <link>https://dev.to/sunnhappy/ai-agent-skills-are-everywhere-but-which-ones-are-safe-to-install-1mb1</link>
      <guid>https://dev.to/sunnhappy/ai-agent-skills-are-everywhere-but-which-ones-are-safe-to-install-1mb1</guid>
      <description>&lt;p&gt;AI agents are becoming less like single chatbots and more like extensible runtimes.&lt;/p&gt;

&lt;p&gt;Instead of using a bare model, people are adding skills: coding helpers, research workflows, browser automation, MCP integrations, content generation tools, project-specific instructions, and more.&lt;/p&gt;

&lt;p&gt;That is powerful.&lt;/p&gt;

&lt;p&gt;But it also introduces a new trust problem.&lt;/p&gt;

&lt;p&gt;When you install a third-party skill, you may be giving your agent new instructions, new tool access patterns, new dependencies, and sometimes new scripts. A skill can look helpful in its README while still containing risky behavior.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reading &lt;code&gt;.env&lt;/code&gt;, SSH keys, browser cookies, or API tokens&lt;/li&gt;
&lt;li&gt;running &lt;code&gt;curl ... | sh&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;uploading data to a webhook&lt;/li&gt;
&lt;li&gt;using destructive shell commands&lt;/li&gt;
&lt;li&gt;telling the agent to ignore higher-priority instructions&lt;/li&gt;
&lt;li&gt;including huge prompt files that waste tokens&lt;/li&gt;
&lt;li&gt;depending on unpinned or unnecessary packages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As skill ecosystems grow, we need better pre-install checks.&lt;/p&gt;

&lt;p&gt;That is why I built &lt;strong&gt;SkillPreflight&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SkillPreflight?
&lt;/h2&gt;

&lt;p&gt;SkillPreflight is an open-source CLI and GitHub Action that scans AI agent skills before installation.&lt;/p&gt;

&lt;p&gt;It performs static analysis and generates a 100-point scorecard covering:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;What it checks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Dangerous commands, secret access, exfiltration, prompt injection, remote script execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission restraint&lt;/td&gt;
&lt;td&gt;Overbroad activation, unnecessary shell/network/file access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token efficiency&lt;/td&gt;
&lt;td&gt;Oversized skill files, repeated content, poor progressive disclosure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lightweight footprint&lt;/td&gt;
&lt;td&gt;File count, total size, dependencies, large assets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintainability&lt;/td&gt;
&lt;td&gt;README, license, metadata, examples, documentation hygiene&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reliability&lt;/td&gt;
&lt;td&gt;Tests, fixtures, deterministic workflow, error handling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compatibility&lt;/td&gt;
&lt;td&gt;Hardcoded paths, OS-specific assumptions, fragile shell usage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;You can run it without installing anything globally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skill-preflight@latest scan ./my-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also scan a GitHub repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skill-preflight@latest scan https://github.com/owner/repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skill-preflight@latest scan ./my-skill &lt;span class="nt"&gt;--format&lt;/span&gt; json &lt;span class="nt"&gt;--out&lt;/span&gt; report.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate SARIF for GitHub Code Scanning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skill-preflight@latest scan ./my-skill &lt;span class="nt"&gt;--format&lt;/span&gt; sarif &lt;span class="nt"&gt;--out&lt;/span&gt; skill-preflight.sarif
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GitHub Action
&lt;/h2&gt;

&lt;p&gt;SkillPreflight is also available as a GitHub Action:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;SkillPreflight&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;scan&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;agent-contracts/skill-preflight@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;."&lt;/span&gt;
          &lt;span class="na"&gt;fail-below&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;70"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Safety model
&lt;/h2&gt;

&lt;p&gt;SkillPreflight does not execute scripts from the skill being scanned.&lt;/p&gt;

&lt;p&gt;It only reads files and performs static analysis. The goal is not to guarantee that a skill is perfectly safe, but to surface obvious red flags before users install it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Browsers have extension permission prompts.&lt;/p&gt;

&lt;p&gt;npm has package audits.&lt;/p&gt;

&lt;p&gt;Containers have image scanners.&lt;/p&gt;

&lt;p&gt;AI agent skills should have pre-install checks too.&lt;/p&gt;

&lt;p&gt;As the AI agent ecosystem grows, users need a simple way to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What does this skill actually do, and is it safe enough to install?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SkillPreflight is an early attempt at that.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/agent-contracts/skill-preflight" rel="noopener noreferrer"&gt;https://github.com/agent-contracts/skill-preflight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;npm:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/skill-preflight" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/skill-preflight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub Marketplace:&lt;br&gt;
&lt;a href="https://github.com/marketplace/actions/skillpreflight" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/skillpreflight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d love feedback from people building or installing AI agent skills. What checks should be added next?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>security</category>
      <category>githubactions</category>
    </item>
  </channel>
</rss>
