From arn-spark
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.
npx claudepluginhub appsvortex/arness --plugin arn-sparkThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Benchmarks web page Core Web Vitals/bundle sizes, API latency under load, build times; detects regressions via before/after PR comparisons.
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.
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:
.arness/prototypes).arness/vision)Check for prototype validation evidence:
[prototypes-dir]/clickable/final-report.md -- if found, read it. Extract the latest version number and judge verdict.[prototypes-dir]/static/final-report.md -- same.[prototypes-dir]/criteria.mdIf 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:
architecture-vision.md from the Vision directoryScan the prototypes directory structure. Build an inventory:
"I found the following prototype artifacts:
Clickable prototype:
Static prototype:
Shared:
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.
Read the prototype app directory and detect the framework:
package.json -- read for framework indicators (svelte, react, vue, next, nuxt, sveltekit)Cargo.toml if TauriDetermine 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:
Also copying:
Proceed?"
Wait for user confirmation.
[prototypes-dir]/locked/clickable-v[N]/cp -r with exclusion of node_modules/ and framework build output directoriesfinal-report.md for each prototype typecriteria.mdRead
${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-prototype-lock/references/lock-report-template.md
LOCKED.md manifest file at [prototypes-dir]/locked/LOCKED.md using the template. Populate all fields with the actual values from the copy operation.If a static prototype exists and is validated, repeat the copy for the static prototype to [prototypes-dir]/locked/static-v[M]/.
cd into the locked copyIf validation fails:
Update the LOCKED.md manifest with the validation results.
"The prototype snapshot is at [path]. Can you confirm you can access it?
If this is a web-based prototype, you can verify by running:
cd [path]
[install command]
[dev server command]
Then open [URL] in your browser.
Is the snapshot accessible and working?"
Wait for user confirmation. If the user reports issues, investigate.
If Git is configured (Git: yes):
git status --shortprototype-lock-[date]-2git tag -a prototype-lock-[date] -m "Prototype locked after validation. Clickable v[N] (Judge: [verdict]). See [prototypes-dir]/locked/LOCKED.md"prototype-lock-[date] created. You can return to this exact state with git checkout prototype-lock-[date]."If Git is not configured: skip, note that no tag was created.
Read the guardrail rules template:
Read
${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-prototype-lock/references/prototype-guardrail-rules.md
Substitute the placeholders with project-specific paths:
__LOCK_DATE__ -- today's date__LOCK_TAG__ -- the git tag name from Step 6, or "none" if git is not configured__LOCKED_DIR__ -- the locked directory path__CLICKABLE_VERSION__ -- e.g., clickable/v3/__STATIC_VERSION__ -- e.g., static/v4/__PROTOTYPES_DIR__ -- base prototypes directoryAdd the populated ### Prototype Lock subsection to the ## Arness section in the project's CLAUDE.md.
Ask the user:
Ask (using AskUserQuestion):
"The CLAUDE.md rules instruct agents not to modify prototype files. Do you want additional enforcement?"
Options:
If the user chooses hook:
Read the hook template:
Read
${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-prototype-lock/references/pretooluse-hook-template.json
The hook is installed in the target project (not in the arn-spark plugin):
.claude/settings.json in the target project.claude/settings.json already exists and has PreToolUse hooks, append the prototype guard to the existing hook list. Otherwise, create the hooks configuration using the template's hooks_config.__PROTECTED_PATH_1__, __PROTECTED_PATH_2__, etc. with the relative paths of the protected directories (relative to the project root, e.g., .arness/prototypes/locked/). The guard script resolves them at runtime using the cwd field from the hook input, so no user-specific absolute paths are committed..claude/hooks/prototype-lock-guard.sh in the target projectchmod +x .claude/hooks/prototype-lock-guard.shNote: The hook guards Write and Edit tool calls only. Bash commands that modify the filesystem are not intercepted -- the CLAUDE.md rules (Step 7) are the primary defense for all operations including Bash.
"Prototype locked.
Snapshot: [prototypes-dir]/locked/clickable-v[N]/ Manifest: [prototypes-dir]/locked/LOCKED.md Independent build: [PASS/FAIL/SKIPPED] Git tag: prototype-lock-[date] [or 'none'] Guardrails: CLAUDE.md rules [+ PreToolUse hook]
Protected paths (agents will not modify):
CLAUDE.md updated with ### Prototype Lock configuration.
Recommended next steps:
/arn-spark-dev-setup to configure the development environment/arn-spark-visual-strategy to set up visual regression testing against the prototype/arn-spark-feature-extract to build the backlog/arn-planning to begin the development pipeline. Arness auto-configures on first use."| Situation | Action |
|---|---|
| Copy and validate snapshot (Steps 3-4) | Execute directly in conversation via Bash and Write. No agent needed -- operations are deterministic. |
| Build validation fails with path issues | Diagnose directly. If the issue requires framework-specific knowledge, invoke arn-spark-dev-env-builder (foreground) for diagnosis assistance. |
| User asks about prototype quality | Reference the judge report and review reports. Do not re-run validation. |
| User wants to re-lock after more cycles | Re-run the skill. It detects the existing lock in Step 1 and offers to replace it. |
| User asks about visual testing | Defer: "Visual regression testing against the prototype is set up by /arn-spark-visual-strategy." |
| User asks about features | Defer: "Feature extraction is done by /arn-spark-feature-extract." |
locked/clickable-v[N]-[date2]/)"prototype-lock-[date]-2.gitignore if it should not be committed.