feat: bootstrap upstream skills via library-skills (DRIFT-1, #14) - #17
Open
mattwwarren wants to merge 1 commit into
Open
feat: bootstrap upstream skills via library-skills (DRIFT-1, #14)#17mattwwarren wants to merge 1 commit into
mattwwarren wants to merge 1 commit into
Conversation
Pin library-skills==0.0.5 in dev deps; bump fastapi to 0.136.1 (the first version shipping a SKILL.md) via uv lock --upgrade-package. Add scripts/install-upstream-skills.sh, which writes the install to the .agents/skills/ staging dir (gitignored) and copies each skill into .claude/skills/_upstream/<name>/ so vendored content is real files, PR-reviewable, and namespace-isolated from hand-authored skills under .claude/skills/<name>/. Vendored on this commit: - fastapi (from fastapi==0.136.1; SKILL.md + 3 references) - typer (transitive via library-skills; SKILL.md only) Notes on follow-up tickets: - DRIFT-2 (#15): collision-guard hook between _upstream/ and hand-authored skills. Layout choice here keeps that hook trivial. - DRIFT-3 (not yet filed): refresh / drift-detection workflow. `library-skills --check --claude` exits 1 unconditionally as long as any skill is hand-authored — so #9's acceptance criterion ("--check still exits 0") needs revision; the tool flags both vendored and existing project skills (implement, follow-logs) as hand-authored regardless of --copy mode. - ASYNC-DOC-1 (#8) / TYPE-1 (#7): the vendored fastapi skill recommends `def`-for-blocking and `ty`-over-mypy; both are overridden by the template's existing guardrails. The _upstream/README.md captures the audit checklist for future refresh PRs. https://claude.ai/code/session_01QNqcHmV4tLpzneVEFiC4QM
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.
Closes #14.
Summary
library-skills==0.0.5in dev deps; bump fastapi 0.128.0 → 0.136.1 (the first version shipping aSKILL.md) viauv lock --upgrade-package fastapi.scripts/install-upstream-skills.sh— sh + uv, idempotent — that runsuv run library-skills install --yes --copy --all(writes to gitignored.agents/skills/) andcp -aeach skill into.claude/skills/_upstream/<name>/.fastapi(SKILL.md + 3 references) andtyper(SKILL.md, transitive via library-skills)..claude/skills/_upstream/README.mdwith layout, refresh, and the per-refresh audit checklist (covers known precedence overrides for ASYNC-DOC-1 ASYNC-DOC-1: Document the template's async-native stance #8 and TYPE-1 TYPE-1: Addtyto CI as a non-blocking parallel type-check job #7).CLAUDE.md: small Skills subsection pointing at the script and noting--check's exit-1 behavior.Decisions locked during planning
--copy(real files).claude/skills/_upstream/<name>/pyproject.tomldev deps +uv runruff/mypy/pytest; uv.lock tracks itscripts/install-upstream-skills.shscripts/*.shpattern (no Make)--allEmpirical finding for #9 (commented there)
uv run library-skills --check --claudeexits 1 even against purely hand-authored skills (no vendored content). Confirmed by moving_upstream/aside and re-running —implementandfollow-logsboth reporthand-authored, exit 1. SKILL-1 (#9)'s acceptance line "still exits 0" can't be met withlibrary-skills==0.0.5; suggested revisions filed as a comment on #9.Explicitly out of scope
/library-skills-sync//library-skills-check→ future DRIFT-3 (not filed)SKILL.md+references/convention; port one existing skill as exemplar #9)def-vs-async defoverride doc → ASYNC-DOC-1 (ASYNC-DOC-1: Document the template's async-native stance #8)tyCI integration → TYPE-1 (TYPE-1: Addtyto CI as a non-blocking parallel type-check job #7)Test plan
uv sync --devresolveslibrary-skills==0.0.5and bumps fastapi to 0.136.1bash scripts/install-upstream-skills.shsucceeds; final line listsfastapi typerfind .claude/skills/_upstream -type lreturns empty (no symlinks)git check-ignore .agents/skills/fastapi/SKILL.mdsucceeds (staging dir ignored)uv run library-skills --check --claudeexits 1 (expected; documented in CLAUDE.md and_upstream/README.md)uv run ruff check .introduces no new findings (4 pre-existing intests/integration/test_realtime_e2e.py, unrelated)uv run mypy fastapi_templateintroduces no new findings (4 pre-existing intests/unit/test_realtime.py, unrelated)https://claude.ai/code/session_01QNqcHmV4tLpzneVEFiC4QM
Generated by Claude Code