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>
This commit is contained in:
Paul Bakaus
2026-07-11 17:22:15 -07:00
co-authored by Claude Fable 5
parent bf2dd7ec13
commit 0fde0850cf
66 changed files with 1597 additions and 452 deletions
+13 -2
View File
@@ -7105,6 +7105,14 @@
}
async function captureAndEmit(el, basePayload, snapshot, rect) {
const hasAnnotations = snapshot && (snapshot.comments.length > 0 || snapshot.strokes.length > 0);
// Plain requests do not send a screenshot to the agent, so capture is
// presentation-only. Wait only for the helper to accept the event before
// starting CPU-heavy capture; this yields the browser task and prevents
// rasterization from delaying the fetch itself.
if (!hasAnnotations) await sendEvent(basePayload);
let screenshotPath;
let blob;
let paper;
@@ -7122,7 +7130,6 @@
// are present. Without annotations the image is pure visual anchoring -
// it biases the model toward the current rendering and works against the
// three-distinct-directions brief.
const hasAnnotations = snapshot && (snapshot.comments.length > 0 || snapshot.strokes.length > 0);
if (blob && hasAnnotations) {
try {
const uploadRes = await fetch(
@@ -7140,7 +7147,11 @@
console.warn('[impeccable] annotation upload failed:', err);
}
}
sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload);
// Annotated requests must wait for capture + upload because the screenshot
// is semantic input. Plain requests were already dispatched above.
if (hasAnnotations) {
sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload);
}
}
//