From sdlc-workflow
Fetch and read real upstream source code — from Git hosts (GitHub/GitLab/Bitbucket) and from installed dependencies (node_modules, ~/.m2, Gradle/Android SDK sources, Go/Rust/.NET/Ruby/PHP/Swift/Dart caches) — into a gitignored .scratch/ so you build knowledge from actual code instead of guessing at APIs. Use when a task depends on how a library, framework, package, or SDK actually behaves, when reading a dependency's implementation or types would remove guesswork, when reproducing an upstream bug, or when the user asks to pull down / study / vendor a repo or package source. Reads are read-only and never enter the repo's own git history.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdlc-workflow:study-sources [<git-url> | <package>@<version> | <ecosystem>] <what you need to learn>[<git-url> | <package>@<version> | <ecosystem>] <what you need to learn>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ground your work in **real upstream source** rather than recalled API shapes. When a
Ground your work in real upstream source rather than recalled API shapes. When a
task turns on how a library, framework, or SDK actually behaves — its exact function
signatures, its edge cases, an error string, a private helper, a version-specific change —
read the source. This skill maps where each ecosystem already keeps readable source on
disk, and how to fetch it into .scratch/ when it isn't local yet.
Two habits make this reliable:
node_modules/, ~/.m2, the Gradle/Cargo/NuGet/Go caches, the Android SDK's
sources/. Reading the version the project actually resolved is faster and more
correct than cloning main, which may be ahead of the pinned release..scratch/. This directory is gitignored (repo-wide),
so cloned repos and unpacked archives never pollute the working tree, git status, or
the project's history. Keep one sub-folder per source, e.g.
.scratch/sources/<ecosystem>/<name>@<version>/..scratch/ only. Never clone or unpack into the project tree. If .scratch/ is not
already ignored, add it to .gitignore before fetching (do not fetch into a tracked
path). Confirm with git check-ignore .scratch when unsure.HEAD.--depth 1 and, for large monorepos, a sparse or
blobless checkout (see references/git-sources.md). You want
the code to read, not the full history.package-lock.json/pnpm-lock.yaml,
requirements.txt/poetry.lock, pom.xml/*.gradle, go.mod, Cargo.lock,
*.csproj, Gemfile.lock, composer.lock, pubspec.lock, Package.resolved)..scratch/ if missing. Use the ecosystem's own "download source" path
(source JARs, pip download, go mod download, cargo vendor, npm pack, etc.), or
clone the Git repo at the matching tag. Land it under .scratch/sources/….file:line and the exact version you read, so any claim you make is traceable.| Ecosystem | Already-decompressed source on disk | Reference |
|---|---|---|
| Any Git host (GitHub/GitLab/Bitbucket/…) | — (clone into .scratch/) | git-sources.md |
| JavaScript / TypeScript | node_modules/<pkg>/; pnpm store ~/.local/share/pnpm/store / node_modules/.pnpm/; Yarn Berry .yarn/cache (zipped) | javascript.md |
| Python | active venv …/site-packages/<pkg>/; system site-packages; pip download --no-binary for sdist | python.md |
| Java / Kotlin / JVM | Maven ~/.m2/repository/… (-sources.jar); Gradle ~/.gradle/caches/modules-2/… | jvm.md |
| Android | SDK $ANDROID_HOME/sources/android-<api>/; AARs in Gradle cache; AndroidX / AOSP via cs.android.com | android.md |
| Go | module cache $GOPATH/pkg/mod/<module>@<version>/ (read-only) | go.md |
| Rust | registry ~/.cargo/registry/src/<index>/<crate>-<version>/ | rust.md |
| .NET / C# | NuGet ~/.nuget/packages/<pkg>/<version>/ (lib DLLs; source via SourceLink/decompile) | dotnet.md |
| Ruby / PHP / Swift / Dart | RubyGems $GEM_HOME/gems/; Composer vendor/; SwiftPM .build/checkouts/; Dart pub cache ~/.pub-cache/hosted/… | ruby-php-swift-dart.md |
| C / C++ / system | system headers /usr/include; vcpkg/conan caches; else clone upstream | native-c-cpp.md |
If $ARGUMENTS opens with a Git URL, treat it as a clone request →
git-sources.md. If it names a package@version or an
ecosystem keyword, route to that ecosystem's reference. Otherwise infer the ecosystem from
the project's manifests and the map above.
npx claudepluginhub jayteealao/agent-skills --plugin sdlc-workflowCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.