Skip to content

/arn-spark-prototype-lock

This skill should be used when the user says "prototype lock", "lock prototype", "arn prototype lock", "freeze prototype", "preserve prototype", "snapshot prototype", "protect prototype", "archive prototype", "save the prototype", "don't overwrite the prototype", "lock the

shell
$ npx -y skills add AppsVortex/arness --skill arn-spark-prototype-lock --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/arn-spark-prototype-lock
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

This skill should be used when the user says "prototype lock", "lock prototype", "arn prototype lock", "freeze prototype", "preserve prototype", "snapshot prototype", "protect prototype", "archive prototype", "save the prototype", "don't overwrite the prototype", "lock the

SKILL.md

arn-spark-prototype-lock.SKILL.md
name: arn-spark-prototype-lock
description: >-
  This skill should be used when the user says "prototype lock", "lock prototype",
  "arn prototype lock", "freeze prototype", "preserve prototype",
  "snapshot prototype", "protect prototype", "archive prototype",
  "save the prototype", "don't overwrite the prototype",
  "lock the design", "freeze the design",
  or wants to create a frozen snapshot of the validated prototype before
  development begins, preventing production code from overwriting the
  validated reference artifact.
version: 1.0.0

Arness Prototype Lock

Create a frozen, independently servable snapshot of the validated prototype before development code begins to modify shared source files. The primary artifacts are a **frozen prototype copy**, **CLAUDE.md guardrail rules** that prevent agents from modifying prototype files, an optional **PreToolUse hook** for enforcement, and a **git tag** marking the prototype completion point.

This skill addresses the problem: once development starts, production code overwrites prototype components because they share the same source files. The locked copy preserves the validated design reference for visual comparison and rollback.

Prerequisites

Read the project's `CLAUDE.md` for a `## Arness` section. If no `## Arness` section exists or Arness Spark fields are missing, inform the user: "Arness Spark is not configured for this project yet. Run `/arn-brainstorming` to get started — it will set everything up automatically." Do not proceed without it.

Extract:

  • **Prototypes directory** (default: `.arness/prototypes`)
  • **Vision directory** (default: `.arness/vision`)
  • **Git** (yes/no)
  • **Platform** (github/bitbucket/none)

Check for prototype validation evidence: 1. Check for `[prototypes-dir]/clickable/final-report.md` -- if found, read it. Extract the latest version number and judge verdict. 2. Check for `[prototypes-dir]/static/final-report.md` -- same. 3. Check for `[prototypes-dir]/criteria.md`

**If no prototype validation evidence found:** Inform the user: "No prototype validation results found. This skill works best after `/arn-spark-clickable-prototype` or `/arn-spark-static-prototype` has validated a prototype. You can still lock any existing prototype files. What prototype source should I preserve?"

**If validation found but judge verdict was FAIL:** Warn the user: "The latest prototype version (v[N]) received a FAIL verdict from the judge. Are you sure you want to lock this version, or would you prefer to run more validation cycles first?"

Check for architecture vision to detect the stack: 1. Read `architecture-vision.md` from the Vision directory 2. Extract: UI framework (Svelte/SvelteKit, React/Next.js, Vue/Nuxt, etc.), application framework (Tauri, Electron, plain web), package manager

Workflow

Step 1: Inventory Prototype Artifacts

Scan the prototypes directory structure. Build an inventory:

"I found the following prototype artifacts:

**Clickable prototype:**

  • Latest version: v[N] (Judge: [PASS/FAIL])
  • App source: [prototypes-dir]/clickable/v[N]/app/ ([X] files, [Y] KB)
  • Journey screenshots: [prototypes-dir]/clickable/v[N]/journeys/ ([Z] files)
  • Showcase: [prototypes-dir]/clickable/v[N]/showcase/ ([W] files)
  • Review/judge reports: [list]

**Static prototype:**

  • Latest version: v[M] (Judge: [PASS/FAIL])
  • Showcase: [prototypes-dir]/static/v[M]/showcase/ ([A] files)
  • Review/judge reports: [list]

**Shared:**

  • Criteria: [prototypes-dir]/criteria.md

**Total size:** [calculated total]

Which version should I lock? (Default: latest passing version)"

Wait for user to confirm or specify a different version before proceeding. Do not continue until the user responds.

Step 2: Detect Stack and Plan Copy Strategy

Read the prototype app directory and detect the framework:

  • Check for `package.json` -- read for framework indicators (svelte, react, vue, next, nuxt, sveltekit)
  • Check for `Cargo.toml` if Tauri
  • Check for build configuration files (vite.config, next.config, svelte.config, etc.)

Determine copy strategy based on stack:

| Framework | Copy Strategy | Validation | |-----------|--------------|------------| | SvelteKit | Copy full app directory, exclude node_modules. Include package.json, lockfile, svelte.config, vite.config, tailwind.config, src/, static/ | `cd [dest] && [pm] install && [pm] run build` | | Next.js | Copy full app directory, exclude node_modules and .next/. Include package.json, lockfile, next.config, tsconfig, src/, public/ | `cd [dest] && [pm] install && [pm] run build` | | Vue/Nuxt | Copy full app directory, exclude node_modules and .nuxt/. Include package.json, lockfile, nuxt.config, src/ | `cd [dest] && [pm] install && [pm] run build` | | Plain HTML/CSS/JS | Copy all files directly | Open index.html in browser or serve with `npx serve` | | Tauri | Copy the webview source (follows its own framework row above). Copy src-tauri/ config only if relevant to the UI snapshot | Framework-specific build (webview only) |

Present the plan:

"**Stack detected:** [framework]

**Copy plan:**

  • Source: [prototypes-dir]/clickable/v[N]/app/
  • Destination: [prototypes-dir]/locked/clickable-v[N]/
  • Strategy: [framework-specific description]
  • Excludes: node_modules/, build output dirs (.svelte-kit/, .next/, dist/)
  • Includes: lockfile (package-lock.json/pnpm-lock.yaml/yarn.lock/bun.lockb), all config, all source

Also copying:

  • Validation evidence (review reports, judge reports, screenshots, showcase)
  • Criteria document

Proceed?"

Wait for user confirmation.

Step 3: Execute Copy

1. Create destination directory: `[prototypes-dir]/locked/clickable-v[N]/` 2. Copy the prototype app source using `cp -r` with exclusion of `node_modules/` and framework build output directories 3. Copy validation evidence:

  • Journey screenshots from the locked version
  • Showcase screenshots
  • Review and judge reports for the locked version
  • The `final-report.md` for each prototype ty
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships witharness

Arness — H not required. Structured AI workflows for Claude Code. From first idea to production deploy. Seven entry commands. That's all you need to remember.

Get the whole plugin, auto-invoked

Other skills on arness.