Skip to content

feat(fabrika): land skill-doctor — byte-exact upstream vendor, fabrika-shaped (#8048) - #8063

Draft
creosB wants to merge 3 commits into
mainfrom
build/8048-land-skill-doctor
Draft

feat(fabrika): land skill-doctor — byte-exact upstream vendor, fabrika-shaped (#8048)#8063
creosB wants to merge 3 commits into
mainfrom
build/8048-land-skill-doctor

Conversation

@creosB

@creosB creosB commented Sep 5, 2026

Copy link
Copy Markdown
Member

Landing child of #8035 (epic). Vendors the Warp Skill Doctor (MIT, warpdotdev/common-skills @ b811c243) byte-exact into claude-plugins/fabrika/skills/skill-doctor/, already shaped to skill-conventions. Status: tests/lint passed; leak scan ran and failed on path-policy matches — the scan refused two doc surfaces on ~/.claude path literals: contract.md (sanitized in e715358e) and the byte-exact upstream references/supported-harnesses.md (held as vendored; its refusal stands until upstream changes the text). The test adaptation is a proposal awaiting maintainer acceptance (see "Proposed adaptation" below).

Byte-exact vendor — git blob SHAs vs upstream tree @ b811c24365ae

File Blob SHA
assets/pierre-diffs.js 1ecc2c99…a25400538a97c2b21a2a172d
assets/warp-pixel-icon.svg 0ed8d084…7aeb0e46ec53
references/skill-improvements.md bbf1dace…f1661d4f
references/supported-harnesses.md e8f589b7…316e37ec50
scorers/code-quality.md 59179f8d…535c5afb6c5b14c37a
scorers/efficiency.md 28648134…019a8284bbe9a04
scripts/collect_sessions.py f24fb541…2aa335835053
scripts/render_report.py 972da3be…4c4ed5a2ab6f
scripts/test_collect_sessions.py f659ac6e…b4ce4244d
scripts/test_render_report.py 46658d0f…5153dcb6c3c30204
scripts/warp_decoder.py c54cebdd…269e0aac11c5498b1f
LICENSE 00bd0da9…4ba8565fc (upstream repo-root MIT)

Upstream's own SKILL.md (9fd7d77d…f598d) is deliberately not vendored — per conventions §1/§2 the landing authors a fabrika routing surface instead. Full SHAs in PROVENANCE.md.

Fabrika-authored (editable per PROVENANCE.md)

CI — replacement verified locally; PR CI pending

The workflow now runs two separate test targets; the job fails if either fails. No skips, no failure allowlists, no continue-on-error, no output parsing.

  • Target 1 — upstream baseline. Both unchanged upstream suites run in an isolated temporary tree: the byte-exact vendored files plus upstream's original SKILL.md, downloaded from the pinned commit b811c24365ae505bfc9646458957b886e29110b5 and hash-verified (9fd7d77d…) before use. The shipped fabrika SKILL.md never enters that tree. Verified locally: 14/14 + 11/11 green, including the three SKILL.md-coupled packaging tests, against upstream's own artifact.
  • Target 2 — fabrika conformance. scripts/test_fabrika_conformance.py (fabrika-authored, PROVENANCE-listed) runs 13 doc-level tests over the shipped SKILL.md/contract.md: session scoping, the scoring contract with label-to-score mappings and aggregation weights, the failed-conversation threshold and edit gate, section addressability, documented collector/discovery limitations, and §4 plain-literal commands. Verified locally: 13/13 green. Doc-level only — it proves the contracts exist where the skill reads them, not runtime behavior.

Failure propagation demonstrated locally: a deliberately broken collector fails the step before the renderer runs (renderer verified passing standalone in the same broken tree); wrong pinned SHA, download 404, and a conformance file planted in the baseline tree each fail their guards.

guard skill-lint: verified by CI

The gate fails closed with zero-scope on the filer's Windows machine — the identical red reproduces on untouched main, so it is a local walker limitation, not this diff. Manual gate-1/3/4 greps over the new directory are clean; frontmatter hand-verified. The authoritative run on ubuntu (this PR's CI, 2026-09-06) passed.

.gitignore

Rows for the skill's results/ directory (transcripts + rendered report embed transcript-derived content and machine-local paths — never committed) and for __pycache__/ (Python enters the repo with this child).

Proposed adaptation — awaiting maintainer acceptance

The two-target design above is the proposed adaptation, landed in commit 70dad2a8 for review: upstream's packaging assertions run against upstream's own artifact (baseline target), while fabrika-authored conformance tests check the replacement surface (target 2). Acceptance is the maintainer's call: if accepted, the baseline target supersedes running the three upstream packaging assertions against the replaced SKILL.md in place; if rejected, the alternatives (upstream path-parameter patch, or vendoring upstream's startup/branding copy into the fabrika body) come back into scope.

…a-shaped (#8048)

Vendors Warp Skill Doctor (MIT, warpdotdev/common-skills @ b811c243) byte-exact
(blob-SHA verified): scorers, references, collectors, renderer, assets, both
unittest suites, LICENSE. Upstream's SKILL.md is deliberately not vendored —
SKILL.md is authored fresh as the fabrika routing surface (conventions §1/§2)
with contract.md carrying collector flags, the scoring contract, and report
artifacts by section (ADR 0296). PROVENANCE.md carries the byte-exact/editable
split and the re-copy re-sync rule. A new CI job runs both upstream suites
(#8048 §8); .gitignore covers the skill's results dir and Python bytecode.
Inert on arrival: opencode collector is #8049, corpus discovery #8051.
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

No preview deploy

  • No preview deploy for this PR — its diff touches no deploy-relevant path, so no preview stack was minted and e2e is not applicable. (70dad2a)

…nformance (#8048)

Proposed test adaptation awaiting maintainer acceptance. Target 1 runs both
unchanged upstream suites in an isolated temp tree against upstream's own
SKILL.md, downloaded from the pinned commit b811c243 and hash-gated before use —
the shipped fabrika SKILL.md never enters that tree. Target 2 runs a new
fabrika-authored conformance suite (13 doc-level tests, PROVENANCE-listed) over
the shipped SKILL.md/contract.md: session scoping, scoring contract with
label-to-score mappings and aggregation weights, failed-conversation threshold
and edit gate, section addressability, documented limitations, §4 literal
commands. Workflow gains shell: bash + set -euo pipefail; explicit guards for
download failure, blob mismatch, and conformance-file isolation. Replacement
verified locally; PR CI pending.
…l path

The leak scan refused contract.md on a ~/.claude literal (path-policy match,
#8037/#8063 CI evidence). Describe the default by role instead; the
conformance suite stays 13/13 green locally.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant