Ian KaneshiroAboutStackProjectsContact

How this site was built

This site is built spec-first. Each intent (why) is served by journeys (who and how), and each step of a journey uses behaviors (what).

Every behavior is a test that runs against the built site, and agents work through the gates: a change is trusted when the gates pass.

10 intents, 14 journeys and 135 behaviors.

INT-001 A visitor knows who Ian is and what Ian builds within seconds, and can get in touch
JRN-001 A recruiter scans the home page and reaches out
  1. Opens the home page from a link

  2. Scans the tech stack

  3. Skims the featured projects

  4. Reads a little about Ian

  5. Gets in touch

JRN-005 A visitor arrives from a shared link or a search
  1. Sees a rich preview where the link was shared

  2. The page loads fast and nothing tracks them

  3. Uses whatever browser they have

  4. Follows an old or mistyped link

JRN-008 Ian adds a project or updates the content
  1. Adds or edits a content entry

  2. Previews it locally

  3. Merges, and the site deploys

JRN-011 Someone visits Ian's GitHub profile
  1. Reads a slim profile README that points to the site

JRN-012 A visitor's AI assistant researches Ian
  1. Is allowed in, and finds /llms.txt

  2. Reads the pages as Markdown

  3. Pulls out facts about Ian and the projects

INT-002 The site has a recognizable agentic identity that is the same everywhere
JRN-002 An engineer digs into the work
  1. Opens a project's source or live demo

  2. Follows the footer link to the Storybook

  3. Browses components in light and dark

  4. Inspects the tokens and their contrast

  5. Tries the library on a plain HTML page

JRN-003 A visitor reads in their preferred theme
  1. Arrives with a system light or dark setting

  2. Switches the theme, and the choice is remembered

  3. Their system switches theme while they read

JRN-006 Ian restyles the identity
  1. Edits the primitive tokens

  2. The semantic roles pick up the change

  3. One build regenerates every output

  4. Mistakes are caught before they ship

  5. Reviews the result in Storybook

JRN-011 Someone visits Ian's GitHub profile
  1. Reads a slim profile README that points to the site

INT-003 How the site is built is itself proof of Ian's skill
JRN-002 An engineer digs into the work
  1. Opens a project's source or live demo

  2. Follows the footer link to the Storybook

  3. Browses components in light and dark

  4. Inspects the tokens and their contrast

  5. Tries the library on a plain HTML page

JRN-007 Ian builds a new component
  1. Creates it following the library's conventions

  2. Documents and tests it in Storybook

  3. Uses it on a page

JRN-013 An engineer sees how the site was built
  1. Opens "How this site was built" from the footer

  2. Follows an intent down to its journeys and behaviors

  3. Opens a behavior's Gherkin in the source repo

INT-004 The site is comfortable for everyone, on any device and in either theme
JRN-001 A recruiter scans the home page and reaches out
  1. Opens the home page from a link

  2. Scans the tech stack

  3. Skims the featured projects

  4. Reads a little about Ian

  5. Gets in touch

JRN-003 A visitor reads in their preferred theme
  1. Arrives with a system light or dark setting

  2. Switches the theme, and the choice is remembered

  3. Their system switches theme while they read

JRN-004 A visitor uses a keyboard, a screen reader, reduced motion or no JavaScript
  1. Skips to the content and moves around by keyboard

  2. Listens with a screen reader

  3. Prefers reduced motion

  4. Reads with low vision

  5. Browses with JavaScript turned off

INT-005 The site is fast and private
JRN-005 A visitor arrives from a shared link or a search
  1. Sees a rich preview where the link was shared

  2. The page loads fast and nothing tracks them

  3. Uses whatever browser they have

  4. Follows an old or mistyped link

JRN-009 Ian ships a change
  1. Builds everything from a clean checkout

  2. Opens a pull request and the gate runs

  3. Merges, and the site and Storybook deploy

INT-006 Changing the look is an edit in one place, and mistakes are caught
JRN-006 Ian restyles the identity
  1. Edits the primitive tokens

  2. The semantic roles pick up the change

  3. One build regenerates every output

  4. Mistakes are caught before they ship

  5. Reviews the result in Storybook

JRN-007 Ian builds a new component
  1. Creates it following the library's conventions

  2. Documents and tests it in Storybook

  3. Uses it on a page

INT-007 Keeping the site current is cheap
JRN-008 Ian adds a project or updates the content
  1. Adds or edits a content entry

  2. Previews it locally

  3. Merges, and the site deploys

JRN-009 Ian ships a change
  1. Builds everything from a clean checkout

  2. Opens a pull request and the gate runs

  3. Merges, and the site and Storybook deploy

INT-008 Features are added by talking to an agent, guided by the spec graph
JRN-010 Ian asks an agent to add a feature
  1. Ian describes the feature in plain words

  2. The agent reads the current behavior and the intent behind it

  3. The agent proposes changes to intents, journeys and behaviors, and Ian approves them

  4. The spec check catches any gaps in the graph

  5. The agent delivers it through the gates (JRN-014)

JRN-013 An engineer sees how the site was built
  1. Opens "How this site was built" from the footer

  2. Follows an intent down to its journeys and behaviors

  3. Opens a behavior's Gherkin in the source repo

JRN-014 An agent delivers a feature through the gates
  1. Plans the feature with Ian, and Ian approves the spec change

  2. Builds it on a branch, running the gate locally

  3. Opens a pull request as ians-agent[bot] that names the behaviors it implements and explains the work

  4. CI runs every gate

  5. Reads the failures and fixes them until everything is green

  6. Can't loosen a gate to get there

  7. Is done when the PR is green, and Ian approves and merges

INT-009 Agents can read the site as well as people can
JRN-012 A visitor's AI assistant researches Ian
  1. Is allowed in, and finds /llms.txt

  2. Reads the pages as Markdown

  3. Pulls out facts about Ian and the projects

INT-010 Agent output is trusted because gates enforce the rules
JRN-014 An agent delivers a feature through the gates
  1. Plans the feature with Ian, and Ian approves the spec change

  2. Builds it on a branch, running the gate locally

  3. Opens a pull request as ians-agent[bot] that names the behaviors it implements and explains the work

  4. CI runs every gate

  5. Reads the failures and fixes them until everything is green

  6. Can't loosen a gate to get there

  7. Is done when the PR is green, and Ian approves and merges

Email GitHub LinkedIn Source StorybookHow this site was built