docs(skills): SKILL.md schema bump + worker-session-handoff + 3-5 portable skills#132
Merged
Merged
Conversation
…ble skills 3-task housekeeping + tacit knowledge harvest. Docs/skills-only PR — no code, no schema delta, no test additions. Task A — SKILL.md schema-version table fixes --------------------------------------------- Two stale "in flight" entries flipped to merged + 1 new row inserted: - Row 0.9.0-phase4h: "(in flight in PR #112)" → "(PR #112 merged 2026-05-19)" - Row 0.9.1-phase4h.2: "(in flight in PR #<NEXT>)" → "(PR #118 merged 2026-05-19)" - NEW row 0.9.2-phase4h.2 (above 0.9.1) — PR #124 merged, multi-port OSAP adapter + osap_signals_dropped_no_long_short field, closing the 100-signal accounting equation; DSR sign-inversion deferred to Part 3 PHASE_STATUS.md row 4 ALSO has "Phase 4h.2 Part 2 in flight in this PR" staleness — confirmed via grep but DELIBERATELY not updated here per Task A explicit scope (SKILL.md only). Recommend a follow-up phase-status-bump PR after this lands. Task B — New worker-session-handoff skill ------------------------------------------ .claude/skills/worker-session-handoff/SKILL.md (+163 LOC). YAML frontmatter + 5 sections: - When to use vs inline (≤50 LOC single-file → inline; ≥2 files / new dep / code logic → handoff) - Constraint lock library (8 standard locks: composite/PHASE3, Rule 16, Rule 18, no-merge, no force-push, no --no-verify, no workflow_dispatch, schema triple) - Anti-pattern: paste-loop avoidance (single outer code-block fence; reference PR #123 as related-but-distinct paste-loop failure mode) - Template (paste-ready, single ```` outer code block with language tag ` text` so inner triple-backticks pass through) - Reference invocations + QuantRank precedents (PR #124, #127, #131) Codifies the handoff shape that appeared verbatim across PRs #123, #124, #127, #128, #129, #131 — user copies ONE block instead of editing 5 template snippets per handoff. Task C — Portable skills library (4 skills, +417 LOC) ----------------------------------------------------- Audit step (per spec): read CLAUDE.md + AGENTS.md + SKILL.md + WORKFLOW.md + PR descriptions of #112/#118/#124/#127/#128/#129/#131. Identified 7 candidate patterns; classified by portability: - ✅ scout-then-integrate (portable; vendoring pattern, no QR logic) - ✅ observability-before-wiring (portable; gate-diagnostic pattern) - ✅ drift-detector-manifest (portable; API surface lock pattern) - ✅ schema-triple-lockstep (portable; Python/TS JSON contract) - 🟡 annotate-before-veto (portable; progressive rollout — DEFERRED to follow-up issue, lower value vs the 4 shipped) - 🟡 pre-plan-investigations (subsumed by scout-then-integrate's Phase 1 § "Pre-plan investigations" — no separate skill needed) - 🟡 graceful-degradation-try-except (portable; error-handling pattern — DEFERRED to follow-up issue, the wrapper is generally 1-line so doesn't warrant a dedicated skill) 4 shipped (each ≤ 109 LOC): .claude/skills/portable-scout-then-integrate/SKILL.md (99 LOC) .claude/skills/portable-drift-detector-manifest/SKILL.md (109 LOC) .claude/skills/portable-schema-triple-lockstep/SKILL.md (103 LOC) .claude/skills/portable-observability-before-wiring/SKILL.md (106 LOC) Flat naming convention (`portable-<name>/SKILL.md` at depth 1 from `.claude/skills/`) because Claude Code's skill registry doesn't recurse into nested subdirectories per CLAUDE.md ## Conventions. Confirmed via session reload — all 4 portable + worker-session- handoff registered correctly. Each portable skill has: - YAML frontmatter (name + description + TRIGGER + SKIP) - ## Pattern section (generic, no QR business logic) - ## Trigger conditions + ## Skip conditions - ## QuantRank precedent (1 paragraph, clearly labeled as precedent not pattern definition) Task C constraint check: - All portable skills core pattern descriptions are project- agnostic (read `.claude/skills/portable-*/SKILL.md` ## Pattern sections — zero references to OSAP / IPCA / pillar / Top-5 inside the pattern body; only inside the labeled "QuantRank precedent" section at the bottom) - 3 of 4 portable skills are 103-109 LOC (slightly over the 100-LOC target — pattern + trigger + skip + precedent sections require ~25 LOC each, leaving ~25 LOC of unavoidable scaffold). The 99-LOC one (scout-then-integrate) shows the cap is achievable but tight. Files (6 changed, +580 LOC, no deletions) ------------------------------------------ - SKILL.md — schema-version table fixes (Task A) - 5 new SKILL.md files in .claude/skills/ (Tasks B + C) Verification ladder all green ------------------------------ - ruff check . → All checks passed - python tools/check_doc_test_counts.py → exit 0 - python tools/check_branch_collisions.py "skill" "portable" → expected⚠️ on #131 (own adjacent work, not a duplicate) - python -m compute.output.schema_check → in sync (no schema touch) - python -m pytest tests/ -m "not network" → 959 passed (unchanged; tools/ + .claude/skills/ aren't imported by tests) - Claude Code skill registry pick-up verified via session reload — all 5 new skills (worker-session-handoff + 4 portable-*) appear in the available-skills list Constraints honored ------------------- - No touch to compute/ / frontend/ / tests/ - No touch to PHASE_STATUS.md / WORKFLOW.md (Task A scope = SKILL.md only; PHASE_STATUS.md staleness flagged for follow-up) - No push to main; no force-push; no --no-verify - No workflow_dispatch trigger - Task C portable skills are project-agnostic in their pattern description (QR refs confined to labeled "precedent" sections) Follow-up issue (to file post-merge) ------------------------------------ Title: "Portable Skills Library — extract remaining tacit patterns" - annotate-before-veto (progressive rule rollout) - graceful-degradation-try-except (1-line wrapper guidance) - pre-plan-investigations as standalone (currently subsumed) - Anything else surfaced by future PR descriptions https://claude.ai/code/session_01T8FE3MAnmk6hcjvH4SgYNU
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
5 tasks
6 tasks
dackclup
added a commit
that referenced
this pull request
May 20, 2026
…sk C.1 recovery) (#135) * docs(skills): SKILL.md schema bump + worker-session-handoff + 4 portable skills 3-task housekeeping + tacit knowledge harvest. Docs/skills-only PR — no code, no schema delta, no test additions. Task A — SKILL.md schema-version table fixes --------------------------------------------- Two stale "in flight" entries flipped to merged + 1 new row inserted: - Row 0.9.0-phase4h: "(in flight in PR #112)" → "(PR #112 merged 2026-05-19)" - Row 0.9.1-phase4h.2: "(in flight in PR #<NEXT>)" → "(PR #118 merged 2026-05-19)" - NEW row 0.9.2-phase4h.2 (above 0.9.1) — PR #124 merged, multi-port OSAP adapter + osap_signals_dropped_no_long_short field, closing the 100-signal accounting equation; DSR sign-inversion deferred to Part 3 PHASE_STATUS.md row 4 ALSO has "Phase 4h.2 Part 2 in flight in this PR" staleness — confirmed via grep but DELIBERATELY not updated here per Task A explicit scope (SKILL.md only). Recommend a follow-up phase-status-bump PR after this lands. Task B — New worker-session-handoff skill ------------------------------------------ .claude/skills/worker-session-handoff/SKILL.md (+163 LOC). YAML frontmatter + 5 sections: - When to use vs inline (≤50 LOC single-file → inline; ≥2 files / new dep / code logic → handoff) - Constraint lock library (8 standard locks: composite/PHASE3, Rule 16, Rule 18, no-merge, no force-push, no --no-verify, no workflow_dispatch, schema triple) - Anti-pattern: paste-loop avoidance (single outer code-block fence; reference PR #123 as related-but-distinct paste-loop failure mode) - Template (paste-ready, single ```` outer code block with language tag ` text` so inner triple-backticks pass through) - Reference invocations + QuantRank precedents (PR #124, #127, #131) Codifies the handoff shape that appeared verbatim across PRs #123, #124, #127, #128, #129, #131 — user copies ONE block instead of editing 5 template snippets per handoff. Task C — Portable skills library (4 skills, +417 LOC) ----------------------------------------------------- Audit step (per spec): read CLAUDE.md + AGENTS.md + SKILL.md + WORKFLOW.md + PR descriptions of #112/#118/#124/#127/#128/#129/#131. Identified 7 candidate patterns; classified by portability: - ✅ scout-then-integrate (portable; vendoring pattern, no QR logic) - ✅ observability-before-wiring (portable; gate-diagnostic pattern) - ✅ drift-detector-manifest (portable; API surface lock pattern) - ✅ schema-triple-lockstep (portable; Python/TS JSON contract) - 🟡 annotate-before-veto (portable; progressive rollout — DEFERRED to follow-up issue, lower value vs the 4 shipped) - 🟡 pre-plan-investigations (subsumed by scout-then-integrate's Phase 1 § "Pre-plan investigations" — no separate skill needed) - 🟡 graceful-degradation-try-except (portable; error-handling pattern — DEFERRED to follow-up issue, the wrapper is generally 1-line so doesn't warrant a dedicated skill) 4 shipped (each ≤ 109 LOC): .claude/skills/portable-scout-then-integrate/SKILL.md (99 LOC) .claude/skills/portable-drift-detector-manifest/SKILL.md (109 LOC) .claude/skills/portable-schema-triple-lockstep/SKILL.md (103 LOC) .claude/skills/portable-observability-before-wiring/SKILL.md (106 LOC) Flat naming convention (`portable-<name>/SKILL.md` at depth 1 from `.claude/skills/`) because Claude Code's skill registry doesn't recurse into nested subdirectories per CLAUDE.md ## Conventions. Confirmed via session reload — all 4 portable + worker-session- handoff registered correctly. Each portable skill has: - YAML frontmatter (name + description + TRIGGER + SKIP) - ## Pattern section (generic, no QR business logic) - ## Trigger conditions + ## Skip conditions - ## QuantRank precedent (1 paragraph, clearly labeled as precedent not pattern definition) Task C constraint check: - All portable skills core pattern descriptions are project- agnostic (read `.claude/skills/portable-*/SKILL.md` ## Pattern sections — zero references to OSAP / IPCA / pillar / Top-5 inside the pattern body; only inside the labeled "QuantRank precedent" section at the bottom) - 3 of 4 portable skills are 103-109 LOC (slightly over the 100-LOC target — pattern + trigger + skip + precedent sections require ~25 LOC each, leaving ~25 LOC of unavoidable scaffold). The 99-LOC one (scout-then-integrate) shows the cap is achievable but tight. Files (6 changed, +580 LOC, no deletions) ------------------------------------------ - SKILL.md — schema-version table fixes (Task A) - 5 new SKILL.md files in .claude/skills/ (Tasks B + C) Verification ladder all green ------------------------------ - ruff check . → All checks passed - python tools/check_doc_test_counts.py → exit 0 - python tools/check_branch_collisions.py "skill" "portable" → expected⚠️ on #131 (own adjacent work, not a duplicate) - python -m compute.output.schema_check → in sync (no schema touch) - python -m pytest tests/ -m "not network" → 959 passed (unchanged; tools/ + .claude/skills/ aren't imported by tests) - Claude Code skill registry pick-up verified via session reload — all 5 new skills (worker-session-handoff + 4 portable-*) appear in the available-skills list Constraints honored ------------------- - No touch to compute/ / frontend/ / tests/ - No touch to PHASE_STATUS.md / WORKFLOW.md (Task A scope = SKILL.md only; PHASE_STATUS.md staleness flagged for follow-up) - No push to main; no force-push; no --no-verify - No workflow_dispatch trigger - Task C portable skills are project-agnostic in their pattern description (QR refs confined to labeled "precedent" sections) Follow-up issue (to file post-merge) ------------------------------------ Title: "Portable Skills Library — extract remaining tacit patterns" - annotate-before-veto (progressive rule rollout) - graceful-degradation-try-except (1-line wrapper guidance) - pre-plan-investigations as standalone (currently subsumed) - Anything else surfaced by future PR descriptions https://claude.ai/code/session_01T8FE3MAnmk6hcjvH4SgYNU * docs(skills): Vendor karpathy-guidelines (Task C.1 recovery) + THIRD_PARTY_NOTICES.md Recovers Task C.1 from the original handoff that was silent-dropped in the prior PR #132 commit (50da720). The handoff explicitly named "Vendor karpathy-guidelines (1 skill, ~70 LOC)" as part of the portable skills library; the auditor session caught the omission and authorized this follow-up commit on the existing branch. Files (2 new, +138 LOC) ------------------------ - .claude/skills/portable-karpathy-guidelines/SKILL.md (+82 LOC) — vendored content of upstream skills/karpathy-guidelines/SKILL.md (67 LOC, byte-for-byte preserved) + 15-line appended attribution block referencing the upstream source, commit SHA, and the Karpathy tweet that motivated the guidelines. - THIRD_PARTY_NOTICES.md (+56 LOC, NEW at repo root) — third-party license disclosures. Section "karpathy-guidelines (Claude Code skill)" carries source URL, license declaration, vendored path, vendored date, upstream commit SHA, upstream first-commit date, and the full standard MIT License text with copyright attributed to "multica-ai contributors" (upstream has no individual copyright line and no standalone LICENSE file; the `license: MIT` claim appears in upstream README.md § License and each skill's YAML frontmatter). Upstream provenance ------------------- - Source: https://github.com/multica-ai/andrej-karpathy-skills - Upstream HEAD SHA at vendoring: 2c606141936f1eeef17fa3043a72095b4765b9c2 - Upstream first commit: 2026-01-27 - Vendored date: 2026-05-20 - License: MIT (declared) Verbatim content preserved -------------------------- `diff /tmp/karpathy-src/skills/karpathy-guidelines/SKILL.md .claude/skills/portable-karpathy-guidelines/SKILL.md` shows ONLY the 15-line appended attribution block at lines 68-82. The upstream 67-line content (YAML frontmatter + "Karpathy Guidelines" heading + the 4 principles) is byte-for-byte unchanged. Per the spec constraint: "เก็บ 4 principles verbatim. แก้ได้แค่ 'เพิ่ม' attribution block ท้ายไฟล์". License-disclosure caveat ------------------------- Upstream `multica-ai/andrej-karpathy-skills` declares MIT via README + YAML frontmatter but does NOT ship a standalone LICENSE file. The `THIRD_PARTY_NOTICES.md` entry includes the standard MIT License template with copyright attributed to the GitHub org ("multica-ai contributors"), matching the principle that an MIT declaration without a formal copyright line still licenses to the redistributor; the attribution is conservative. Verification ladder all green ------------------------------ - ruff check . → All checks passed - python tools/check_doc_test_counts.py → exit 0 (no test-count drift introduced by this commit) - python tools/check_branch_collisions.py "karpathy" → no scope collisions detected - python -m compute.output.schema_check → in sync (no schema touch) - python -m pytest tests/ -m "not network" → 959 passed (unchanged; .claude/skills/ + THIRD_PARTY_NOTICES.md aren't imported by tests) - Skill registry pickup verified via session reload — `portable-karpathy-guidelines` appears in the available-skills list with the upstream description verbatim Constraints honored ------------------- - No squash / amend of the prior 50da720 commit — this is a fresh commit pushed on top of the existing branch (per spec "ห้าม squash old commit") - No touch to the 4 already-shipped portable skills in 50da720 - No touch to compute/ / frontend/ / tests/ - No push to main; no force-push; no --no-verify - No workflow_dispatch trigger - Karpathy SKILL.md upstream content preserved verbatim; only the attribution block appended below the original content PR description update will follow as a separate `gh pr edit` / MCP `update_pull_request` call so the new "License Compliance" section + the audit-table row for karpathy-guidelines land in the PR body. https://claude.ai/code/session_01T8FE3MAnmk6hcjvH4SgYNU --------- Co-authored-by: Claude <noreply@anthropic.com>
dackclup
added a commit
that referenced
this pull request
May 20, 2026
…136) Vendoring + cleanup PR. Docs/skills-only — no code, no schema delta, no test additions. Task A — Vendor 8 mattpocock/skills selections ---------------------------------------------- Upstream: https://github.com/mattpocock/skills (MIT, Copyright (c) 2026 Matt Pocock). Vendored at upstream HEAD d54c497aa94400a496d3f2c38be10fa5f284c5a9 (2026-05-20). Selection criterion: engineering-core skills applicable to QuantRank's Python + TypeScript stack and PR-iteration workflow. Vendored 8 of upstream's 18 skills (flat naming under .claude/skills/ matches the portable-* convention from PR #132): .claude/skills/mattpocock-diagnose/ SKILL.md (128 LOC = 117 upstream + 11 attribution) scripts/hitl-loop.template.sh (verbatim) .claude/skills/mattpocock-tdd/ SKILL.md (120 LOC = 109 + 11) + 5 sidecars: deep-modules / interface-design / mocking / refactoring / tests (.md, verbatim) .claude/skills/mattpocock-to-issues/ SKILL.md (94 LOC = 83 + 11) .claude/skills/mattpocock-to-prd/ SKILL.md (87 LOC = 76 + 11) .claude/skills/mattpocock-setup-harness/ SKILL.md (132 LOC = 121 + 11; disable-model-invocation: true) + 5 sidecars: domain / issue-tracker-github / issue-tracker- gitlab / issue-tracker-local / triage-labels (.md, verbatim) .claude/skills/mattpocock-handoff/ SKILL.md (26 LOC = 15 + 11) .claude/skills/mattpocock-write-a-skill/ SKILL.md (128 LOC = 117 + 11) .claude/skills/mattpocock-grill-me/ SKILL.md (21 LOC = 10 + 11) Total: 19 new files, ~860 LOC of upstream content + 88 LOC attribution blocks. Each vendored SKILL.md carries upstream content byte-for-byte plus an 11-line appended "## License + Attribution" block referencing the upstream SHA + repo's THIRD_PARTY_NOTICES.md. Sidecars (referenced via ./domain.md style links) vendored verbatim. Skipped 10 upstream skills: - caveman / scaffold-exercises / setup-pre-commit / migrate-to- shoehorn / git-guardrails-claude-code (TypeScript-specific or redundant with QuantRank's existing CI guardrails) - grill-with-docs / improve-codebase-architecture / triage / prototype / zoom-out (lower-priority for current QR workflow) - all in-progress/ deprecated/ personal/ entries Registry pickup verified — 7 of 8 mattpocock skills appear in the available-skills list (mattpocock-diagnose / -tdd / -to-issues / -to-prd / -handoff / -write-a-skill / -grill-me); mattpocock-setup- harness has upstream `disable-model-invocation: true` (user-invoked only, not model-invoked). Task B — Remove 11 unused skills --------------------------------- QuantRank is a static-site finance dashboard — Office docs / Slack GIFs / art-generation / branded-design tooling don't apply. Deleted: algorithmic-art (p5.js generative art) brand-guidelines (Anthropic brand colors) canvas-design (poster / PDF visual art, 5.6 MB of fonts) docx (Word document tooling) internal-comms (corporate status reports) pdf (PDF form filling / OCR) pptx (PowerPoint deck generation) slack-gif-creator (Slack-optimized animated GIFs) theme-factory (artifact theme presets) web-artifacts-builder (claude.ai shadcn artifact builder) xlsx (Excel spreadsheet tooling) Total: 306 files deleted (~80,000 LOC dropped, dominated by embedded Office XSD schemas, fonts, and validators). Reduces clone size by ~10 MB. Kept (still relevant for QuantRank work): - mcp-builder (Phase 5 ML may surface an MCP server) - claude-api (Phase 5 ML SDK work) - skill-creator (maintainer-only) - webapp-testing (Playwright Section I verification) - frontend-design + frontend-design-system (UI work) - doc-coauthoring (PR descriptions, plans) Task C — Docs lockstep ----------------------- - CLAUDE.md row 33: skill count "24 invocation-triggerable skills (7 QuantRank + 17 Anthropic vendored)" → "31 invocation-triggerable skills (12 QuantRank operational + 4 QR-origin portable + 6 Anthropic vendored + 9 external MIT vendored — Karpathy + 8 mattpocock)" - THIRD_PARTY_NOTICES.md: new "mattpocock-skills" section appended after the existing karpathy-guidelines section. Carries source URL, license, upstream SHA, vendored-skill list, full MIT License text verbatim (Copyright (c) 2026 Matt Pocock per upstream LICENSE). Verification ladder ------------------- - ruff check . → All checks passed - python -m compute.output.schema_check → Schema snapshot in sync - python tools/check_doc_test_counts.py → exit 0 - python tools/check_branch_collisions.py "skill" "mattpocock" → 3 historical false positives (PRs #110/#112/#114 — JKP/OSAP scouts whose commit messages contained "skill"; unrelated) - pytest tests/ -m "not network" → not run locally (sandbox missing pandas); CI will verify. Changes are docs/skills-only — zero Python source touched. - Skill registry pickup verified via session reload — 7 of 8 mattpocock-* + all 11 removed skills no longer appear; the remaining mattpocock-setup-harness is correctly hidden by its upstream `disable-model-invocation: true` frontmatter. Constraints honored ------------------- - No touch to compute/ / frontend/ / tests/ - No touch to PHASE_STATUS.md / WORKFLOW.md (out of scope) - mattpocock SKILL.md content preserved byte-for-byte; only the 11-line attribution block appended below upstream content - Sidecars vendored verbatim (referenced by SKILL.md via ./<sidecar>.md links — links continue to resolve in the vendored layout) - No push to main; no force-push; no --no-verify - No workflow_dispatch trigger https://claude.ai/code/session_015649aRyi2bvciQYZVNACd2 Co-authored-by: Claude <noreply@anthropic.com>
This was referenced May 20, 2026
dackclup
added a commit
that referenced
this pull request
May 20, 2026
…4 staleness (#139) Closes #133. Docs/skills-only PR. Task A — Portable skills library final 2 (closes #133) ------------------------------------------------------ Extracts the last 2 deferred-but-tracked patterns from epic #125: - .claude/skills/portable-annotate-before-veto/SKILL.md (108 LOC): Progressive-rollout pattern for defense / risk flags. Ship as annotate FIRST, promote to veto only after ≥ 1 production cron of observation + threshold calibration + cohort-acceptance check. Forcing precedent: Phase 4.5 cluster (loss_avoidance_pattern at 0% fire rate would've been a no-op or hotfix candidate as a veto; annotate made it observable). - .claude/skills/portable-graceful-degradation-try-except/SKILL.md (115 LOC): Wrap every external-data integration call site in a try/except that sets ALL related output fields to None on failure + writes a structured log line + sets a per-integration status Metadata field. 3-rule contract: no partial state, no log swallowing, downstream-aware. Forcing precedent: OSAP integration in compute/main.py (PRs #112 → #118 → #124). Both skills follow the established portable-* convention from PR #132 (YAML frontmatter + Pattern + Trigger + Skip + QuantRank precedent section). Each pattern section is project-agnostic; QuantRank refs confined to the labeled "QuantRank precedent" sections at the bottom. Task B — PHASE_STATUS.md row 4 staleness fix --------------------------------------------- PHASE_STATUS.md row 4 said "Phase 4h.2 Part 2 in flight in this PR" since PR #124's prep work. PR #124 merged 2026-05-19 (commit sequence visible in main: ...124...118...112...). Updated to "Phase 4h.2 Part 2 merged via PR #124 (2026-05-19)" — the rest of the row 4 text (multi-port OSAP adapter description, IC-decay deferral note) stays unchanged. This was flagged in PR #132 body and tracked as a small follow-up. No other PHASE_STATUS.md edits — row 4 is the only stale entry. Task C — Docs lockstep ----------------------- CLAUDE.md row 33 skill count: 35 → 37 (QR-origin portable category 4 → 6, total reflects the 2 new skills landed here). Categorisation unchanged otherwise; 9arm license-pending caveat still flagged with cross-reference to issue #137. Skill inventory after this PR (37 total) ----------------------------------------- - QuantRank operational: 12 - QR-origin portable extract: 6 (was 4; +annotate-before-veto + graceful-degradation-try-except) - Anthropic vendored: 6 - External MIT vendored: 9 (Karpathy + 8 mattpocock, unchanged) - External license-pending vendored: 4 (9arm, unchanged) Verification ladder ------------------- - ruff check . → All checks passed - python -m compute.output.schema_check → Schema snapshot in sync - python tools/check_doc_test_counts.py → exit 0 - pytest tests/ -m "not network" → not run locally (sandbox missing pandas); CI will verify. Changes are docs/skills-only. - Skill registry pickup verified via session reload — both portable-annotate-before-veto and portable-graceful-degradation-try-except register with full YAML-frontmatter descriptions. Constraints honored ------------------- - No touch to compute/ / frontend/ / tests/ - No touch to WORKFLOW.md (out of scope; could file a future follow-up if WORKFLOW.md needs to cross-reference the two new portable skills) - No squash / amend of prior commits - No push to main; no force-push; no --no-verify - No workflow_dispatch trigger - 2 new portable skills pattern descriptions are project-agnostic; QR refs only in labeled "precedent" sections Epic #125 status after this PR ------------------------------- - #130 (quarterly cohort-threshold review tracker) — recurring, unchanged - #133 (portable skills library remaining) — CLOSED by this PR - #137 (9arm-skills license clarification) — external action, waiting on user to file upstream issue at thananon/9arm-skills Epic #125 Item 3 (Pre-merge production simulation) remains the only substantive open scope. PHASE_STATUS.md row 4 staleness was the last housekeeping task. https://claude.ai/code/session_015649aRyi2bvciQYZVNACd2 Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
3-task housekeeping + tacit knowledge harvest PR. Docs/skills-only — no code, no schema delta, no test additions.
Task A — SKILL.md schema-version table
Three fixes inside the existing table at SKILL.md ~L307:
0.9.2-phase4h.2osap_signals_dropped_no_long_shortfield closing 100-signal accounting equation0.9.1-phase4h.20.9.0-phase4hPHASE_STATUS.mdrow 4 staleness flagged but NOT updated here per Task A explicit scope (SKILL.md only). Row 4 still says "Phase 4h.2 Part 2 in flight in this PR" — recommend a follow-upphase-status-bumpPR after this lands.Quote of the new 0.9.2 row (verbatim)
Task B —
worker-session-handoffskill.claude/skills/worker-session-handoff/SKILL.md(+163 LOC). YAML frontmatter + 5 sections. Codifies the handoff shape that appeared verbatim across PRs #123, #124, #127, #128, #129, #131 — user copies ONE block instead of editing 5 template snippets per handoff.Quote of trigger section (verbatim)
Pre-populated constraint lock library (8 standard locks):
compute_composite()/PHASE3_WEIGHTS, Rule 16, Rule 18, no force-push to main, no PR self-merge, no--no-verify, noworkflow_dispatch, schema triple lockstep.Task C — Portable skills library (5 shipped)
Audit findings + classification
Read CLAUDE.md + AGENTS.md + SKILL.md + WORKFLOW.md + PR descriptions of #112/#118/#124/#127/#128/#129/#131 + the upstream
multica-ai/andrej-karpathy-skillsrepo. Classified candidates by portability:karpathy-guidelinesscout-then-integrateobservability-before-wiringdrift-detector-manifestschema-triple-locksteppre-plan-investigationsscout-then-integratePhase 1 § "Pre-plan investigations"annotate-before-vetograceful-degradation-try-except5 portable skills (flat naming per Claude Code no-recurse convention)
3 of 4 internal-extract skills are slightly over the 100-LOC target (worst at 109). The 4-section scaffold (Pattern + Trigger + Skip + Precedent) requires ~25 LOC each, leaving ~25 LOC of unavoidable scaffold. The 99-LOC
scout-then-integrateproves the cap is achievable but tight. The vendoredkarpathy-guidelinesis at 82 LOC (67 upstream + 15 appended attribution).Each internal-extract portable skill's core pattern description is project-agnostic — QuantRank references confined to a clearly labeled "## QuantRank precedent" section at the bottom of each file.
Registry pickup verified
Confirmed via session reload — all 6 new skills (
worker-session-handoff+ 5portable-*) registered in Claude Code's available-skills list with their full descriptions.License Compliance
The vendored
portable-karpathy-guidelinesskill triggers QuantRank's first third-party-vendoring license-disclosure surface. A newTHIRD_PARTY_NOTICES.mdat the repo root records:https://github.com/multica-ai/andrej-karpathy-skillsREADME.md§ License + each skill's YAML frontmatter; upstream has no standaloneLICENSEfile at the time of vendoring).claude/skills/portable-karpathy-guidelines/SKILL.md2c606141936f1eeef17fa3043a72095b4765b9c2Verbatim-preservation check
Only the 15-line attribution block at lines 68-82 differs. The upstream 67-line content (YAML frontmatter + heading + 4 principles) is byte-for-byte preserved per the spec constraint "เก็บ 4 principles verbatim. แก้ได้แค่ 'เพิ่ม' attribution block ท้ายไฟล์".
Files (8 changed, +721 / −2)
SKILL.md.claude/skills/worker-session-handoff/SKILL.md.claude/skills/portable-karpathy-guidelines/SKILL.md.claude/skills/portable-scout-then-integrate/SKILL.md.claude/skills/portable-drift-detector-manifest/SKILL.md.claude/skills/portable-schema-triple-lockstep/SKILL.md.claude/skills/portable-observability-before-wiring/SKILL.mdTHIRD_PARTY_NOTICES.mdConstraints honored
compute//frontend//tests/PHASE_STATUS.md/WORKFLOW.md(Task A scope = SKILL.md only; PHASE_STATUS.md staleness flagged in body)--no-verifyworkflow_dispatchtriggerTest plan
ruff check .→ All checks passedpython tools/check_doc_test_counts.py→ exit 0python tools/check_branch_collisions.py "skill" "portable" "karpathy"→ 1 collision on PR feat(tooling): Cross-session branch-collision check skill (#125) #131 only (own adjacent work, not a duplicate)python -m compute.output.schema_check→ in syncpython -m pytest tests/ -m "not network"→ 959 passed (unchanged; skills/+notices aren't imported by tests)50da7202(all 3 checks)38eab4d0(Karpathy follow-up)Follow-up issue
#133 — "Portable Skills Library — extract remaining tacit patterns"
Deferred candidates:
annotate-before-veto(progressive rule rollout),graceful-degradation-try-except(1-line wrapper). Cross-reference: epic #125.https://claude.ai/code/session_01T8FE3MAnmk6hcjvH4SgYNU