diff --git a/.agents/skills/impeccable/SKILL.md b/.agents/skills/impeccable/SKILL.md index 16173c6c2..a7c519cc5 100644 --- a/.agents/skills/impeccable/SKILL.md +++ b/.agents/skills/impeccable/SKILL.md @@ -38,14 +38,14 @@ node .agents/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `$impeccable teach` or `$impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `$impeccable teach` or `$impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `$impeccable teach`, then resume the user's original task with the fresh context. +**`$impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `$impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `$impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.agents/skills/impeccable/reference/context.md b/.agents/skills/impeccable/reference/context.md deleted file mode 100644 index f1b6489e5..000000000 --- a/.agents/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `$impeccable teach` — PRODUCT.md was written or updated. -- You just ran `$impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `$impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `$impeccable teach` now — I'll resume `[original task]` after."* -2. Run `$impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`$impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`$impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`$impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `$impeccable polish`, then `$impeccable audit`, then `$impeccable layout` without re-reading context files three times. diff --git a/.claude/skills/impeccable/SKILL.md b/.claude/skills/impeccable/SKILL.md index e105a905f..74c7b9bc8 100644 --- a/.claude/skills/impeccable/SKILL.md +++ b/.claude/skills/impeccable/SKILL.md @@ -44,14 +44,14 @@ node .claude/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.claude/skills/impeccable/reference/context.md b/.claude/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.claude/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.cursor/skills/impeccable/SKILL.md b/.cursor/skills/impeccable/SKILL.md index 1f72fcd70..c6001117e 100644 --- a/.cursor/skills/impeccable/SKILL.md +++ b/.cursor/skills/impeccable/SKILL.md @@ -40,14 +40,14 @@ node .cursor/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.cursor/skills/impeccable/reference/context.md b/.cursor/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.cursor/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.gemini/skills/impeccable/SKILL.md b/.gemini/skills/impeccable/SKILL.md index e7a196306..91b220cda 100644 --- a/.gemini/skills/impeccable/SKILL.md +++ b/.gemini/skills/impeccable/SKILL.md @@ -39,14 +39,14 @@ node .gemini/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.gemini/skills/impeccable/reference/context.md b/.gemini/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.gemini/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.github/skills/impeccable/SKILL.md b/.github/skills/impeccable/SKILL.md index e61278608..0784259b2 100644 --- a/.github/skills/impeccable/SKILL.md +++ b/.github/skills/impeccable/SKILL.md @@ -42,14 +42,14 @@ node .github/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.github/skills/impeccable/reference/context.md b/.github/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.github/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.kiro/skills/impeccable/SKILL.md b/.kiro/skills/impeccable/SKILL.md index 9d49d7365..fe11d706f 100644 --- a/.kiro/skills/impeccable/SKILL.md +++ b/.kiro/skills/impeccable/SKILL.md @@ -40,14 +40,14 @@ node .kiro/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.kiro/skills/impeccable/reference/context.md b/.kiro/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.kiro/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.opencode/skills/impeccable/SKILL.md b/.opencode/skills/impeccable/SKILL.md index 7912a048c..7bbdf6261 100644 --- a/.opencode/skills/impeccable/SKILL.md +++ b/.opencode/skills/impeccable/SKILL.md @@ -44,14 +44,14 @@ node .opencode/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.opencode/skills/impeccable/reference/context.md b/.opencode/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.opencode/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.pi/skills/impeccable/SKILL.md b/.pi/skills/impeccable/SKILL.md index 194403828..7afe10a13 100644 --- a/.pi/skills/impeccable/SKILL.md +++ b/.pi/skills/impeccable/SKILL.md @@ -42,14 +42,14 @@ node .pi/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.pi/skills/impeccable/reference/context.md b/.pi/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.pi/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.rovodev/skills/impeccable/SKILL.md b/.rovodev/skills/impeccable/SKILL.md index 0b6740732..d4b040efa 100644 --- a/.rovodev/skills/impeccable/SKILL.md +++ b/.rovodev/skills/impeccable/SKILL.md @@ -44,14 +44,14 @@ node .rovodev/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.rovodev/skills/impeccable/reference/context.md b/.rovodev/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.rovodev/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.trae-cn/skills/impeccable/SKILL.md b/.trae-cn/skills/impeccable/SKILL.md index 7896604fc..9b7d369d5 100644 --- a/.trae-cn/skills/impeccable/SKILL.md +++ b/.trae-cn/skills/impeccable/SKILL.md @@ -42,14 +42,14 @@ node .trae-cn/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.trae-cn/skills/impeccable/reference/context.md b/.trae-cn/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.trae-cn/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/.trae/skills/impeccable/SKILL.md b/.trae/skills/impeccable/SKILL.md index 6f3c4a42e..8b39346c1 100644 --- a/.trae/skills/impeccable/SKILL.md +++ b/.trae/skills/impeccable/SKILL.md @@ -42,14 +42,14 @@ node .trae/skills/impeccable/scripts/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/.trae/skills/impeccable/reference/context.md b/.trae/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/.trae/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times. diff --git a/source/skills/impeccable/SKILL.md b/source/skills/impeccable/SKILL.md index 63a34eb39..53e5b22a8 100644 --- a/source/skills/impeccable/SKILL.md +++ b/source/skills/impeccable/SKILL.md @@ -43,14 +43,14 @@ node {{scripts_path}}/load-context.mjs Consume the full JSON output. Never pipe through `head`, `tail`, `grep`, or `jq`. -**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions: you just ran `/impeccable teach` or `/impeccable document`, or the user manually edited a file. +**If the content is already in this session's conversation history, do NOT re-run.** Re-fetching wastes thousands of tokens. Exceptions that require a fresh load: you just ran `/impeccable teach` or `/impeccable document` (those write/update the files), or the user manually edited a file. -**If PRODUCT.md is missing or empty:** run `/impeccable teach`, then resume the user's original task with the fresh context. +**`/impeccable live` already warms context** via `live.mjs` — when you've run `live.mjs`, do NOT additionally run `load-context.mjs` in the same session. + +**If PRODUCT.md is missing, empty, or clearly placeholder content (`[TODO]` markers, <200 chars):** run `/impeccable teach`, then resume the user's original task with the fresh context. Do not silently abandon intent. **If DESIGN.md is missing:** nudge once per session (*"Run `/impeccable document` for more on-brand output"*), then proceed. -Full protocol (session cache rules, exceptions for teach/document/live, dispatch tree, migration): [reference/context.md](reference/context.md). - --- ## Design Direction diff --git a/source/skills/impeccable/reference/context.md b/source/skills/impeccable/reference/context.md deleted file mode 100644 index 6dbe33f59..000000000 --- a/source/skills/impeccable/reference/context.md +++ /dev/null @@ -1,52 +0,0 @@ -# Context Gathering Protocol - -The full protocol that backs the brief rule in SKILL.md. Load this when you need the complete dispatch logic, exceptions, or cache semantics. - -## The two context files - -- **PRODUCT.md** (strategic, **required**): target users, product purpose, brand personality, anti-references, strategic design principles. Answers *who/what/why*. -- **DESIGN.md** (visual, **optional but strongly recommended**): follows the [Google Stitch DESIGN.md format](https://stitch.withgoogle.com/docs/design-md/format/). Colors, typography, elevation, components, do's-and-don'ts. Answers *how it looks*. - -Filename matching is case-insensitive. Legacy `.impeccable.md` auto-migrates to `PRODUCT.md` on first load. **DESIGN.md wins on visual decisions; PRODUCT.md wins on strategic/voice decisions.** - -## The load command - -```bash -node {{scripts_path}}/load-context.mjs -``` - -Returns JSON with `hasProduct`, `product` (full contents), `hasDesign`, `design` (full contents), `migrated`. **Consume the full output. Never pipe through `head`, `tail`, `grep`, or `jq` with field filters** — you need the complete file contents to do your job. Token cost of the full load is ~2-20KB, far less than redoing work with missing context. - -## Session cache (critical for token economy) - -If PRODUCT.md content is already in your conversation history from an earlier tool call in this session, you already have it loaded. **Do NOT re-run `load-context.mjs`.** Same for DESIGN.md. Re-fetching wastes thousands of tokens across a multi-command session. - -Exceptions where you MUST re-load: -- You just ran `/impeccable teach` — PRODUCT.md was written or updated. -- You just ran `/impeccable document` — DESIGN.md was written or updated. -- The user says they've manually edited PRODUCT.md or DESIGN.md. - -## Dispatch on result - -**`hasProduct: true` AND content is substantive** (>200 chars, no `[TODO]` placeholders): -- If `hasDesign: true`: proceed. You have full context. -- If `hasDesign: false`: do a one-line nudge (say it once per session): - > *"Note: no DESIGN.md found. I'll use impeccable's built-in design principles. For more on-brand output, run `/impeccable document` to generate a DESIGN.md from your existing code."* - Then proceed. - -**`hasProduct: false`** OR file exists but is empty / full of `[TODO]` placeholders: -1. Tell the user: *"I need PRODUCT.md before I can do this well. Running `/impeccable teach` now — I'll resume `[original task]` after."* -2. Run `/impeccable teach`. -3. When teach completes, re-run `load-context.mjs` and resume the **original** task the user asked for. Do not silently abandon intent. - -## Exceptions (commands that skip or reshape the protocol) - -- **`/impeccable teach`**: skips this protocol entirely — teach is how PRODUCT.md (and optionally DESIGN.md) get CREATED. Don't try to load before you create. -- **`/impeccable document`**: load PRODUCT.md (voice input) but do NOT block on missing DESIGN.md — document is how DESIGN.md gets created. -- **`/impeccable live`**: `live.mjs` already invokes the loader internally and returns both files in its startup JSON. When you've run `live.mjs`, the context is warmed. Do NOT additionally run `load-context.mjs` in the same session. - -## Why this matters - -- **Generic output is the #1 failure mode** of impeccable without PRODUCT.md. The user asks for polish and gets a stock-looking polish because the agent has no tone to polish toward. -- **Warmed live sessions feel instant** because when the user finally clicks Generate in the browser, the agent already has PRODUCT + DESIGN in context and proceeds straight to variant generation. -- **Token-efficient sessions** let the user run `/impeccable polish`, then `/impeccable audit`, then `/impeccable layout` without re-reading context files three times.