447 Commits
Author SHA1 Message Date
github-actions[bot] 1d68486915 Sync generated provider output 2026-07-20 03:40:22 +00:00
github-actions[bot] 381e159040 Sync generated provider output 2026-07-20 01:43:18 +00:00
github-actions[bot] e4ab5e24bd Sync generated provider output 2026-07-18 23:06:33 +00:00
Paul Bakaus 2b1f36c43e Add concept world catalog and review workflow
AI-assisted: prepared by Codex at Paul's request.
2026-07-18 14:12:05 -07:00
github-actions[bot] 8967edc988 Sync generated provider output 2026-07-17 19:13:44 +00:00
Paul Bakaus bbed6eef08 Refresh the Impeccable product experience
Rework the landing page proof, steering demo, feature grid, slop catalog, detector coverage, theming, Live workflow, and responsive behavior.\n\nAI-assisted implementation by OpenAI Codex.
2026-07-15 23:29:47 -07:00
Paul Bakaus 8682c85c57 Fix Live side-tab validation gaps
Scan Astro style blocks for inset-shadow stripes, recognize semantically chromatic external tokens without flagging neutral unknowns, and make the polling generator run advisory detector checks before publication. Sync the affected detector bundles and add a paired regression fixture.\n\nAI-assisted: Codex analyzed the failed Live task, implemented the detector and generator changes, and ran the validation suites under maintainer direction.
2026-07-15 16:23:49 -07:00
Paul Bakaus 0ac1ca6867 Restore polling as the primary Live architecture
Default Codex back to one-shot foreground polling, delegate generation to the existing low-effort agent, and keep the app-server worker available only through an explicit experimental opt-in. Preserve progressive publication and the shared safety and framework optimizations.

Prepared with Codex assistance under maintainer direction.
2026-07-15 16:16:08 -07:00
Paul Bakaus ead6ddabe5 Preserve experimental Live app-server workstream
Snapshot the current app-server implementation, shared Live optimizations, generated harness output, and in-progress site work before restoring polling as the primary runtime path.

Prepared with Codex assistance under maintainer direction.
2026-07-15 16:07:34 -07:00
Paul BakausandClaude Fable 5 5635b1d484 the direction becomes a visible contract in the artifact
Transcript evidence (a12 01-observability): plans commit and deliver on
the axes with contract-strength language (palette, type, even theme
inversion) and stay default on the axis without one (layout gets a
single conventional breath). And plans living in invisible reasoning
means nothing can hold a build to its intent. The direction is now
written as a comment block at the top of the artifact answering: the
concept, the hour-later memory, why not the modal competitor page, the
signature, the first viewport's move. Critics and evals can score
delivery-against-contract; a mood is not an answer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:38:16 -07:00
Paul BakausandClaude Fable 5 ff67ad359e layout gets the source-exclusivity construction that fixed palettes
Paul's a10 review: palettes are refreshed (the palette-exclusivity
line's fingerprint) while layouts stay boring in every version. Same
cure, same shape: the layout has exactly two legitimate sources, the
concept or the content's own structure; the category's habitual
skeleton is neither.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:40:54 -07:00
Paul BakausandClaude Fable 5 073e17e180 three-directions sketch + the scene decides the theme
Paul's a11 review: heroes are safe SaaS viewports, everything
predictable; mobile Operate ships dark despite a brief that specifies
outdoors-in-motion use. Decide-then-build now opens with three
one-line directions differing in concept (the instinctive pick that
any studio would reach for is the default wearing your name); the
Operate mode adds: the usage scene is part of the spec, the theme
follows the scene, not the category's habit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:36:45 -07:00
Paul BakausandClaude Fable 5 cfbac54440 deprecate craft: the build flow lives in new-work.md, checkpoints are a mode
Per Paul: rather than gating a second file, fold what made the craft
path superior into the file both models already read 21/21 through the
gate. new-work.md gains 'Decide, then build' (direction as one
confirmable paragraph; attended pauses, unattended records-and-goes;
codex.md mock flow when image generation exists) and 'Finish like a
studio' (inspect, honest critique, patch, detector). craft becomes a
deprecated alias like teach: invoking it forces attended checkpoints,
nothing else differs; the reference is a redirect stub. codex.md
retargeted. Existing-world feature builds remain governed by the core
floor (unmeasured path, noted in the plan doc).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:08:02 -07:00
Paul BakausandClaude Fable 5 139d69f2b7 bare build requests follow the craft orchestration; brief-coverage joins the floor
Invocation A/B on Fable (a9 craft-path vs a9-direct plain): the plain
path scored 38% vs the competitor against the craft path's 50%, and
brief fidelity collapsed to 14% vs bare — the direct path drops asked-
for features that craft's direction step and engineering bar preserve.
Routing now sends any build request through the craft orchestration
unprompted (its gates pause only when a user can respond), and the
craft floor gains a brief-coverage recheck: every requirement the brief
names must exist on the page.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:49:05 -07:00
Paul BakausandClaude Fable 5 eeff485c20 mode belongs to the surface; palette sources are exclusive
a7 transcript evidence: 01-observability samples drew orange-honey and
green seeds, recited the color-strategy menu, and shipped dark
category-reflex palettes anyway; the model applied the subject's
workmanlike grammar to its own landing page. Two generic lines: the
mode belongs to the surface, not the subject (a landing page for a
dense tool is still Persuade; deciding a page can be plain because its
subject is workmanlike is the category error in reverse), and the
palette has exactly two legitimate sources (seed or the subject's
world; the category's habitual palette is neither).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:46:42 -07:00
Paul BakausandClaude Fable 5 2c62f0f4f9 de-SaaS the skill: mode-aware rules, neutral runtime injections, diversified examples
Fix batch from the visitor-mode bias audit. The skill's four modes
(Persuade / Operate / Read / Experience) now reach the places that were
still hard-coded to a SaaS-marketing default:

- palette.mjs: rewrote 45 seed blurbs in material/world terms. The 29
  tech-tool-world moods (13 Linear-indigo variants, 6 Figma-era, 5
  climate-tech, 3 fintech, 2 Glossier DTC, incl. seed-201's docs-page
  CTA red) lose all company names and product-category words; Aesop
  trimmed from 17 blurbs to 4 and Klim from 7 to 4, excess rewritten
  as unnamed material terms. Also carries the earlier bg-block rewrite
  (brand refs out of the composition doc).
- init.md: register explainer now names the four modes and the family
  each belongs to (stored value stays brand/product for compatibility);
  Conversion & proof interview + PRODUCT.md section gated to Persuade
  surfaces only (Experience/Read get no CTA/belief-ladder/proof).
- critique.md: Nielsen heuristics 7 and 10 may score n/a on Persuade
  and Experience surfaces, total renormalized to the applicable max,
  snapshot records which were n/a; working-memory examples diversified
  beyond dashboard/pricing anatomy.
- Register headers in bolder/delight/quieter/colorize/layout/animate/
  typeset renamed from Brand:/Product: to Persuade + Experience: /
  Operate + Read:; typeset and layout gain one Read-specific sentence
  (steady reading measure; navigable linearity).
- animate.md: plan checklist and implementation order lead with
  feedback and transitions; the single entrance moment comes after,
  scoped to modes that invite it.
- codex.md: mock inventory says "primary-action treatment (when the
  surface has one)" instead of assuming a CTA.
- delight.md: loading/empty-state/console-egg examples diversified
  beyond SaaS; streaks/badges scoped to Operate surfaces with
  recurring tasks.
- distill.md: step-removal and next-action lines neutralized away
  from signup/checkout/CTA vocabulary.
- document.md: canonical button label GET STARTED -> SAVE CHANGES;
  signature components gain a non-marketing example.
- antipatterns registry: single-font rule renamed to "Single font
  without hierarchy" with a description that permits one family when
  weight/size contrast carries hierarchy.

Staged provider copies regenerated via build:skills:release for the
touched files only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:35:53 -07:00
Paul BakausandClaude Fable 5 c32fcb47ef new-work: mode-neutral spine instead of a corrective lens
Paul: the mode-governs section was de-biasing a persuade-tinted
playbook rather than writing neutral prose, the exact compensating-
paragraph anti-pattern. Rewritten: the corrective section is gone; the
first-viewport thesis speaks of the concept doing its job (the work,
the product, the content, the task); everything-bold's form list
includes the exact-system form natively; prove-don't-claim covers
content delivering; type guidance is parameterized by mode in one
sentence. Net shorter.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:09:14 -07:00
Paul BakausandClaude Fable 5 4e4b72c22b new-work: the mode still governs the playbook's energy
Paul's gallery check of the a8 docs run: skill-on still SaaS-ified the
documentation page. The playbook was persuade-flavored end to end, so
gating a greenfield Read surface through it risked amplifying exactly
that. New leading section: on Operate and Read surfaces boldness means
a committed system (typographic voice, spacing rhythm, one owned
accent, inevitable structure), the thesis is the content or the task
itself, and nothing invented may stand between the visitor and what
they came to do.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:06:08 -07:00
Paul BakausandClaude Fable 5 a55b162a24 routing owns the craft-vs-direct decision; craft.md stops advising its own loading
The when-to-choose guidance sat inside the file that only loads after
the choice is made. SKILL.md's routing now says it: bare build requests
build directly through the gate and floor; craft is routed only when
named or when the user asks for a guided, checkpointed build. The
Commands row describes craft by its checkpoints. craft.md's intro just
describes the supervised flow it orchestrates.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:46:26 -07:00
Paul BakausandClaude Fable 5 b409bedf5d drop brand.md/product.md stubs; craft repositioned as the collaborative build
Stubs removed per Paul (register: values remain harmless family hints;
nothing points at the files anymore). craft.md now opens by defining
itself against plain invocation: a bare build request goes straight
through the gate and the craft floor; craft is the supervised path with
guaranteed checkpoints and the mock pipeline. One shipping-discipline
line joins the core floor (real content, interaction states, respect
the build pipeline) so one-shots inherit the bar that previously lived
only in craft's Step 4.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:40:32 -07:00
Paul BakausandClaude Fable 5 051f856113 finish the mode migration: brand.md/product.md become redirect stubs
Answering the obvious question the family-depth framing dodged: with
modes derived per task, files named for the old two-register taxonomy
had no architectural reason to exist. brand.md's surviving depth (lane
test + inverse test, reflex-reject lanes, color discipline, layout
moves, permissions) folds into new-work.md, where all of it belonged:
it is new-identity Persuade/Experience guidance. product.md's content
moves unchanged to operate.md, its true name. Both old files remain as
one-line redirect stubs because register: brand|product in existing
PRODUCT.md files and older links point there. All cross-references
retargeted (SKILL.md modes intro, context.mjs REGISTER hint, live.md,
typeset.md); 85 tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:35:28 -07:00
Paul BakausandClaude Fable 5 af8b814c99 reference consolidation: single source of truth across core, new-work, brand, product, craft
Overlap audit after the new-work split. brand.md slims to family depth
that exists nowhere else (aesthetic-lane tests, named-reference
discipline, brand layout moves and permissions); everything it
duplicated against new-work.md and the core (font procedure, reject
list, color strategy, imagery, scale/leading) is deleted, killing the
two-copies-drift hazard. product.md keeps its Operate depth nearly
intact (it was not duplicated) and gains a scope note covering Read
surfaces. craft.md becomes pure orchestration: gates, foundation,
shape handoff, image-gen flow, engineering bar, iterate, present;
its duplicated design guidance (imagery rules, visual-craft bullets,
mandatory reference reads) is replaced by pointers to SKILL.md's
craft floor and new-work.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:30:30 -07:00
Paul BakausandClaude Fable 5 0fde0850cf skill v4.0.0-alpha.9: daily-driver core + mandatory new-work playbook
Architecture per Paul: impeccable is primarily a daily driver on
existing codebases; the always-loaded core should serve that 90% path,
not carry the full generative arsenal on every invocation. SKILL.md now
holds brief-wins, existing-worlds (the headline path), the four visitor
modes, the full craft floor, and a hard gate: new identity work
(greenfield, or a redesign discarding the current look) MUST read
reference/new-work.md before any design decision. That file carries the
generative playbook (seed, subject grounding, plan/self-check/signature,
hero-thesis, everything-bold, prove-don't-claim, color commitment,
calibration, persuade type/imagery). context.mjs enforces the gate
mechanically: NEW_WORK directive when no PRODUCT.md/DESIGN.md exists,
and the old mandatory register-file read is replaced by a REGISTER
family hint. No surfaces: map anywhere; mode is derived per task.
Gate compliance is measurable via skillEvidence.directSkillFileReads.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:22:15 -07:00
Paul BakausandClaude Fable 5 bf2dd7ec13 skill v4.0.0-alpha.8: four visitor modes replace the brand/product bifurcation
Field report: impeccable SaaS-ified a developer docs page; the Opus
galleries showed the same on an album page. Root cause: two registers
force every surface into persuade-or-operate grammar. The register
section now names the visitor's mode first (Persuade / Operate / Read /
Experience) with mode-borrowing called out as the canonical failure,
and PRODUCT.md's register field maps as family (brand = Persuade +
Experience, product = Operate + Read) for compatibility. Read mode:
comprehension deliverable, navigable structure, chrome out of the way.
Experience mode: the artifact leads at every screen size.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:06:14 -07:00
Paul BakausandClaude Fable 5 2e71facb59 skill v4.0.0-alpha.7: cultural surfaces are the work, not a funnel
Paul's Opus gallery observation: every impeccable 05-experimental-album
generation reads decidedly SaaS while frontend-design's open with the
art itself, especially at narrow viewports. Cause: the brand register
prescribed stop-the-scroll/earn-the-click/convert for ALL brand
surfaces. Split the register's deliverable by surface: product/service
pages convert; cultural surfaces (album, portfolio, publication, body
of work) lead with the artifact, recede the interface, and treat
conversion grammar as a category error — the visitor meets the work in
the first viewport at every screen size.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:00:54 -07:00
Paul BakausandClaude Fable 5 02f760fbad skill v4.0.0-alpha.6: boldness is page-level commitment, not an element budget
Paul: everything should be bold, nothing bland; bold is neither
decoration nor clutter but commitment to the concept, whose form the
concept chooses (maximal or severely clean, drenched or monochrome,
piercing copy, the product demonstrating itself). Replaces the
'spend your boldness in one place' rule imported from frontend-design,
whose one-bold-element-on-a-quiet-page framing pulled pages toward the
tasteful softness the galleries showed losing. The signature becomes
where the concept peaks rather than the only place it lives.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 16:55:13 -07:00
Paul BakausandClaude Fable 5 56edce955a skill v4.0.0-alpha.5: hero-as-thesis + commit-over-refined (distinctiveness push)
Paul's spot-check of the Fable validation galleries: frontend-design's
lektor generations read vastly more distinctive and subject-faithful
despite losing the overall pairwise verdict on craft. The arena agrees
on the axis (distinctiveness 8-31 at n=5). Two additions to the core:
the opening viewport is a thesis (open with the most characteristic
thing in the subject's world, with a concrete memory test), and an
explicit polish-is-the-floor counterweight so the craft floor stops
reading as a mandate for quiet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 16:48:23 -07:00
Paul BakausandClaude Fable 5 c3aba1e343 hooks: two-tier design hook — immediate per-edit rules + full-set Stop deep pass
Eval evidence showed the per-edit PostToolUse stream fires overwhelmingly
on copy-level rules (em-dash-overuse ~97x/session) and measurably makes
models more conservative, while a full-detector pass at completion is what
actually fixes contrast/padding/glow. Split the hook accordingly:

- Per-edit (PostToolUse) now surfaces only IMMEDIATE_TIER_RULES: broken
  output (broken-image, text-overflow, clipped-overflow-container,
  body-text-viewport-edge), objective contrast/legibility failures
  (low-contrast, gray-on-color, tiny-text), single-property mechanical
  slop (gradient-text, dark-glow), and design-system drift (the four
  design-system-* rules, which compound if left uncorrected). Everything
  else defers. Override with hook.perEditRules: "all" in
  .impeccable/config.json. Tiering is off for Cursor/Copilot harnesses,
  which have no Stop pass wired, so nothing gets silently dropped there.

- Stop deep pass (runStopHook): runs the FULL rule set over every UI file
  touched this session (tracked via the existing hook.cache.json session
  state; deferred-only edits now mark the file touched), dedupes against
  everything already surfaced per-edit, honors ignore-rule/file/value and
  inline disables, reuses the [impeccable@1] envelope, and no-ops fast
  when no UI files were touched. Emits hookSpecificOutput
  { hookEventName: "Stop", additionalContext } per the Claude Code SDK
  Stop contract (conversation continues so the model can act on it).
  Second Stop fire is silent - deep-pass findings are remembered.

- Wiring: Stop entries (timeout 30) in plugin/hooks/hooks.json, the
  .claude settings + .codex hooks manifests (transformers + hook-admin
  repair path). Claude Code and Codex both dispatch a native Stop event;
  Cursor's stop hook is inconsistently dispatched (pre-write gate stays)
  and Copilot's agentStop/sessionEnd don't inject model context, so
  neither gets a Stop entry - documented in reference/hooks.md.

- Tests: tiering split/override/harness gating, Stop dedupe + silent
  no-touched-files + ignore machinery + kill switches; existing per-edit
  tests moved to immediate-tier rule ids. 181 tests green; smoke-tested
  the built dist skill end to end (glow surfaced per-edit, em-dash only
  at Stop, second Stop silent).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 16:46:00 -07:00
Paul BakausandClaude Fable 5 6b3d174e93 skill v4.0.0-alpha.4: the lean core — full design guidance at a quarter the length
Pairwise evals on Fable one-shot (6-task regression set, opus-4-8 judge,
position-bias-cancelled): the hand-distilled ~55-line lean core beat the
heavy v4 core 66% overall / 67% craft head-to-head, and moved the
decisive win-rate vs frontend-design from 13% to 27% (40% with the
completion-time QA scan; craft went positive 6-5 for the first time).
18/18 lean samples ran context.mjs + palette.mjs vs a minority under the
heavy core: shorter instructions get followed. Context weight itself was
suppressing both compliance and boldness.

Structure: persona + brief-wins + existing-worlds + subject-grounding +
plan/self-check + boldness + prove-don't-claim + commit + calibration +
compressed craft floor + two-paragraph registers. Commands table kept;
the no-arg context-aware menu logic moved to reference/routing.md (read
on demand in the only case that is inherently interactive). Provider
blocks and rule anchors preserved.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 18:19:35 -07:00
Paul BakausandClaude Fable 5 1172898020 skill v4a3: prove-don't-claim + load-bearing signature
Judge rationales across cand-v4a2 arenas: competitor wins by showing
the product working (mix panels, comparison tables, live demos) and by
signatures big enough to organize the page; our samples claim, decorate,
and sometimes stop at the hero.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 14:09:49 -07:00
Paul BakausandClaude Fable 5 f1078c59b0 skill v4a2: seed defers to subject's world; unattended-mode gates for craft/shape; init skip when no user
Eval evidence (cand-v4a1-prose): palette.mjs handed a random violet seed
to the Polish-TV lektor brief and the model anchored on it, overriding
subject-grounding; craft/shape user gates can't fire in one-shot runs
and each model improvises around them. Seed is now a reflex-check that
yields to a subject-dictated palette; craft/shape gain an explicit
unattended mode (same bar, no waiting); init interview is skipped when
no user can respond.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:05:47 -07:00
Paul BakausandClaude Fable 5 440348a498 skill v4 core: existing-world/new-work gate, register-scoped type rules
Per Paul's guidance: (1) existing committed design systems are the
bread-and-butter case and get a first-class core rule (work inside the
world, no parallel colors/fonts/styles, no perf regressions); (2) a
redesign that discards the current look is new identity work and runs
the full concept/tokens/signature process instead of anchoring to the
incumbent skeleton (the lektor failure); (3) the reflex-reject font list
and physical-object font procedure are brand-register rules, moved out
of the universal Commit section — system stacks and workhorse UI faces
are legitimate, often correct, for product UI, stated positively in the
product register.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 12:04:46 -07:00
Paul BakausandClaude Fable 5 a38a0765a9 skill v4.0.0-alpha.1: always-loaded core — brief-wins, subject grounding, token/self-check process, inline craft floor + registers
One-shot evals on Fable 5 (impeccable-evals notes/fable-oneshot-craft-plan.md)
showed the reference-file architecture failing: models skip the register
reads, so most design guidance never reaches them, and skill-on collapses
toward bare-model output (0/9 pairwise wins vs frontend-design on r10).

SKILL.md is now self-contained for one-shot work: persona, the-brief-wins
rule, ground-it-in-the-subject, a plan/tokens/signature/self-check process
gate, commitment guidance, a compact inline craft floor, and distilled
brand/product registers. Reference files remain as sub-command flows and
optional depth. The enumerated absolute-bans list is retired from prose;
mechanical slop enforcement moves to the detector/hook.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 10:46:10 -07:00
Paul BakausandGitHub da99645a58 Add OpenAI plugin submission bundle (#363)
* Add OpenAI plugin submission bundle

Build a Codex-native OpenAI plugin with bundled hooks, public listing metadata, submission guidance, privacy coverage, and regression tests.

AI assistance: OpenAI Codex prepared and validated these changes under maintainer direction.

* Fix provider script command rendering

Replace heuristic rewrites across executable scripts with one explicit provider marker, render pinned shortcuts per target harness, and remove the personal email from the public publisher manifest.

Addresses automated review feedback on PR #363.

AI assistance: OpenAI Codex prepared and validated these changes under maintainer direction.
2026-07-09 17:09:13 -07:00
github-actions[bot] 4c5b3aa45a Sync generated provider output 2026-07-09 23:20:50 +00:00
github-actions[bot] 4e715d0f35 Sync generated provider output 2026-07-09 16:14:46 +00:00
github-actions[bot] 18dec816de Sync generated provider output 2026-07-08 01:02:58 +00:00
github-actions[bot] e813a16d22 Sync generated provider output 2026-07-08 00:25:53 +00:00
github-actions[bot] 1d8f051454 Sync generated provider output 2026-07-08 00:24:07 +00:00
github-actions[bot] 0092df907b Sync generated provider output 2026-07-08 00:18:17 +00:00
github-actions[bot] 3cfa1dfaa2 Sync generated provider output 2026-07-08 00:16:39 +00:00
github-actions[bot] 410552b00e Sync generated provider output 2026-07-06 21:17:52 +00:00
github-actions[bot] 88f52ac4e6 Sync generated provider output 2026-07-06 00:12:08 +00:00
github-actions[bot] a20bbfc752 Sync generated provider output 2026-07-04 02:15:49 +00:00
44c27a72af Fix Codex plugin hook load failure; bump skill to 3.9.1 (#333)
Codex loads bundled plugin lifecycle hooks from `hooks/hooks.json` using a
strict schema that accepts only the top-level `hooks` field. The
plugin-packaged manifest carried a top-level `description`, so Codex rejected
the whole manifest with `unknown field description, expected hooks` and the
post-edit design detector never registered (issue #330).

Drop `description` from `buildClaudePluginHooksManifest()` and regenerate
`plugin/hooks/hooks.json`. The Claude Code plugin path is unaffected (it only
reads the `hooks` object). Add a regression assertion for the plugin artifact
and bump the skill version to 3.9.1.


Claude-Session: https://claude.ai/code/session_013GTTHY6uHwESUyAgjUEm7x

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-01 11:03:55 -07:00
Paul BakausandClaude Opus 4.8 e83e437cdd Release prep: skill v3.9.0, CLI v3.2.0
Bump skill 3.8.0 -> 3.9.0 (plugin.json, marketplace.json, plugin/ subtree,
regenerated provider harness output) and CLI 3.1.0 -> 3.2.0 (package.json).

Changelog (site/pages/changelog.astro):
- Skill v3.9.0: codex grid-background ban, /impeccable bolder design-system
  lock, critique sub-agent independence on non-Claude/Codex harnesses,
  bundled helpers under strict-permission harnesses, Codex hook manifest fix.
- CLI v3.2.0: codex-grid-background detector rule, external skills-symlink
  preservation on first install.

Also: gitignore nested hook.cache.json/hook.pending.json copies (anchored
patterns missed the generated harness dirs), and repoint CLAUDE.md/AGENTS.md
changelog docs at changelog.astro with concise, user-facing-only tone guidance.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 01:50:04 -07:00
github-actions[bot] f604d31d54 Sync generated provider output 2026-07-01 08:30:06 +00:00
github-actions[bot] 5844c40177 Sync generated provider output 2026-07-01 07:13:03 +00:00
github-actions[bot] 7f0262f809 Sync generated provider output 2026-07-01 06:56:53 +00:00
github-actions[bot] c979ac37c3 Sync generated provider output 2026-06-29 07:31:56 +00:00