diff --git a/skill/SKILL.src.md b/skill/SKILL.src.md index 511f667d3..212d623aa 100644 --- a/skill/SKILL.src.md +++ b/skill/SKILL.src.md @@ -5,7 +5,7 @@ argument-hint: "[{{command_hint}}] [target]" user-invocable: true allowed-tools: - Bash(npx impeccable *) - - Bash(node {{scripts_path}}/*) + - Bash({{scripts_path}}/impeccable *) license: Apache 2.0 --- @@ -18,7 +18,7 @@ Core principles: ## Setup -1. Run `node /scripts/context.mjs` once per session, where `` is the loaded base directory the runtime reports for this skill; keep cwd at the user's project. That base directory resolves every `node {{scripts_path}}/...` command in this skill and its references, and `{{scripts_path}}` is the fallback only when the runtime reports no base directory. Pass a named source file or route as `--target `. It loads PRODUCT.md, DESIGN.md, the matching surface brief, and native-platform guidance when applicable; follow its directives and do not rerun it. +1. Run `/scripts/impeccable context` once per session, where `` is the loaded base directory the runtime reports for this skill; keep cwd at the user's project. That base directory resolves every `{{scripts_path}}/impeccable ` command in this skill and its references, and `{{scripts_path}}` is the fallback only when the runtime reports no base directory. On a Windows shell without `sh`, call `{{scripts_path}}/impeccable.cmd` instead. The launcher runs a self-contained binary that ships next to it or is downloaded once on first run; no Node or other runtime is required. Pass a named source file or route as `--target `. It loads PRODUCT.md, DESIGN.md, the matching surface brief, and native-platform guidance when applicable; follow its directives and do not rerun it. 2. Before acting, load the one playbook that owns the request: the Commands table's reference for an explicit or clearly implied sub-command, or [reference/new-work.md](reference/new-work.md) for a new surface or replacement visual world. Then inspect the target and at least one representative source of incumbent visual truth (tokens, theme, CSS, component, or asset) before editing. 3. After analysis and direction are resolved, load [reference/craft-floor.md](reference/craft-floor.md) immediately before editing UI. It carries the quality floor, the absolute bans, and the reflexes no detector catches. Do not load it for planning-only work. @@ -71,12 +71,12 @@ Routing: - **No argument:** read [routing.md](reference/routing.md) and present its context-aware menu; never auto-run a command. - **Explicit or clearly implied command:** load its reference (native variant on native platforms) and follow it. Ask once if two commands fit. -- **Otherwise:** treat the request as general design work. Missing PRODUCT.md routes a new surface or replacement world through init, then new-work; a narrow refinement of existing code proceeds on the incumbent implementation as context.mjs directs, offering init afterward rather than blocking on it. +- **Otherwise:** treat the request as general design work. Missing PRODUCT.md routes a new surface or replacement world through init, then new-work; a narrow refinement of existing code proceeds on the incumbent implementation as `impeccable context` directs, offering init afterward rather than blocking on it. - `teach` aliases `init`. `craft` is a deprecated alias for ordinary new-work and adds nothing. `shape` owns task discovery, then enters new-work only for visual-world and surface-concept decisions. -After init writes PRODUCT.md, resume without rerunning `context.mjs`; init loads the native platform reference itself when the platform it recorded is `ios`, `android`, or `adaptive`. +After init writes PRODUCT.md, resume without rerunning `impeccable context`; init loads the native platform reference itself when the platform it recorded is `ios`, `android`, or `adaptive`. -**Pin / Unpin:** `node {{scripts_path}}/pin.mjs ` creates or removes a standalone `{{command_prefix}}` shortcut. Report the script's result concisely; relay stderr verbatim on error. +**Pin / Unpin:** `{{scripts_path}}/impeccable pin ` creates or removes a standalone `{{command_prefix}}` shortcut. Report the script's result concisely; relay stderr verbatim on error. **Hooks:** `{{command_prefix}}impeccable hooks ` manages the design detector hook for this project (auto-runs the detector after UI file edits and surfaces findings). Load [reference/hooks.md](reference/hooks.md) when the user invokes it with any argument. diff --git a/skill/agents/impeccable-asset-producer.md b/skill/agents/impeccable-asset-producer.md index 91ffb8a96..0284f4b72 100644 --- a/skill/agents/impeccable-asset-producer.md +++ b/skill/agents/impeccable-asset-producer.md @@ -37,7 +37,7 @@ Every region with `medium: raster` in the spec ships as a plate at its `plate` p Per region, in the spec's order: 1. `node {{scripts_path}}/comp-spec.mjs --crop ` writes the reference crop under `.impeccable/build/crops/`. -2. Produce the plate. With the API fallback: `node {{scripts_path}}/generate-image.mjs --plate --quality high` does the whole step (crop as reference, the spec's plate prompt, output size chosen from the region's aspect, the file written to its plate path, prompt embedded, and the plate scored against the crop). With a harness-native image tool: use the crop as the input image and `node {{scripts_path}}/comp-spec.mjs --plate-prompt ` as the prompt, write the result to the plate path, then run `node {{scripts_path}}/embed-prompt.mjs --prompt ""`. +2. Produce the plate. With the API fallback: `{{scripts_path}}/impeccable generate-image --plate --quality high` does the whole step (crop as reference, the spec's plate prompt, output size chosen from the region's aspect, the file written to its plate path, prompt embedded, and the plate scored against the crop). With a harness-native image tool: use the crop as the input image and `node {{scripts_path}}/comp-spec.mjs --plate-prompt ` as the prompt, write the result to the plate path, then run `{{scripts_path}}/impeccable embed-prompt --prompt ""`. 3. Read the score line. `PLATE-SCORE` under 50%, or a `PLATE-WARN`, means the plate does not read as the region: open the plate beside the crop, name what drifted (subject, framing, palette, style), tighten the prompt with that, and regenerate once. Two misses on one region: keep the better plate, mark it `needs_parent_review`, and say why in one line. 4. Transparent cutouts (a figure or object on the page ground): generate on a flat chroma color absent from the subject and key it to alpha before writing the PNG; never ship the keyed background. diff --git a/skill/agents/impeccable-manual-edit-applier.md b/skill/agents/impeccable-manual-edit-applier.md index 8ad923b14..81fe9fd81 100644 --- a/skill/agents/impeccable-manual-edit-applier.md +++ b/skill/agents/impeccable-manual-edit-applier.md @@ -32,7 +32,7 @@ Expect a self-contained handoff with: - The current event `batch`. - Optional `evidencePath`. -The user already clicked Apply. Do not ask what to do. Do not discard edits. Do not run `live-poll.mjs`, `live-commit-manual-edits.mjs`, or any live server endpoint. Do not stage, commit, rebuild, push, or edit generated provider output unless the batch explicitly targets that generated file. +The user already clicked Apply. Do not ask what to do. Do not discard edits. Do not run `impeccable live-poll`, `impeccable live-commit-manual-edits`, or any live server endpoint. Do not stage, commit, rebuild, push, or edit generated provider output unless the batch explicitly targets that generated file. ## Workflow diff --git a/skill/reference/audit.native.md b/skill/reference/audit.native.md index a880ccfb3..9a51dd8a2 100644 --- a/skill/reference/audit.native.md +++ b/skill/reference/audit.native.md @@ -1,6 +1,6 @@ Run systematic **technical** quality checks on a native app (`ios` / `android` / `adaptive`) and generate a comprehensive report. Don't fix issues; document them for other commands to address. -This is a code-level audit, not a design critique. Audit from source (SwiftUI / UIKit / Compose / React Native / Flutter); no browser tooling or `detect.mjs` applies. Score against the platform reference(s): [ios.md](ios.md) / [android.md](android.md), both for `adaptive`. Read them before scoring if Setup hasn't already. The report skeleton mirrors [audit.md](audit.md); keep the two in sync when changing it. +This is a code-level audit, not a design critique. Audit from source (SwiftUI / UIKit / Compose / React Native / Flutter); no browser tooling or `impeccable detect` applies. Score against the platform reference(s): [ios.md](ios.md) / [android.md](android.md), both for `adaptive`. Read them before scoring if Setup hasn't already. The report skeleton mirrors [audit.md](audit.md); keep the two in sync when changing it. ## Diagnostic Scan diff --git a/skill/reference/critique.md b/skill/reference/critique.md index 1ed16ba34..ad0831694 100644 --- a/skill/reference/critique.md +++ b/skill/reference/critique.md @@ -8,7 +8,7 @@ Resolve one stable target, run two independent assessments, synthesize a design - Assessment A and B MUST run as two isolated sub-agents whenever a sub-agent/Task tool is exposed. Running them inline in this context is "possible" but is NOT permitted; it is a degraded run. Inline is allowed ONLY when no sub-agent tool exists (or the user declined, on harnesses that ask). - If you degrade for any reason, the report's first line MUST be a banner: `⚠️ DEGRADED: single-context ()`. A silent degraded critique is a failed critique. - Assessment A must finish before detector findings enter the parent synthesis context. Detector output is deterministic, but it still anchors judgment. -- A skipped detector is a failed critique run unless `detect.mjs` is missing or crashes after a real attempt. +- A skipped detector is a failed critique run unless `impeccable detect` is missing or crashes after a real attempt. - Viewable targets require browser inspection when available. - Any local server started only for critique visualization must run in the background, have a recorded stop method, and be stopped before final reporting unless the user asks to keep it. - Do not claim a user-visible overlay exists unless script injection succeeded and the detector ran in the page. @@ -23,7 +23,7 @@ Resolve one stable target, run two independent assessments, synthesize a design - "this page" -> the current URL or source file 2. **Confirm the target slugs cleanly**: ```bash - node {{scripts_path}}/critique-storage.mjs slug "" + {{scripts_path}}/impeccable critique-storage slug "" ``` Every later command also accepts the resolved target directly and derives the same slug internally; never hand-write a slug. If this exits non-zero, skip persistence and trend for this run, but continue the critique. 3. **Read `.impeccable/critique/ignore.md`** if it exists. Drop matching findings silently; it is the only prior-run input critique consumes. @@ -70,7 +70,7 @@ Run the bundled detector and browser visualization evidence. Assessment B is man CLI scan: ```bash -node {{scripts_path}}/detect.mjs --json [target] +{{scripts_path}}/impeccable detect --json [target] ``` - Pass markup files/directories as `[target]`; do not pass CSS-only files. @@ -84,7 +84,7 @@ Browser visualization is required for a viewable target when browser automation 1. Create a fresh tab and navigate. Prefer the harness's native/browser-canvas screenshot path before hand-rolling a Playwright/Puppeteer script; only fall back to a custom script when no native browser tool is exposed. 2. Preflight mutable injection by setting `document.title` and appending a `