agentsclimarketplace

Research study deps

Skill tony/ai-workflow-plugins/.agents/skills/research-study-deps

Claude Code Plugins, Commands, and Skills

Install
npx -y skills add tony/ai-workflow-plugins --skill research-study-deps

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Clone and study your project's dependencies at the exact versions you use. Scans manifest files (package.json, pyproject.toml, Cargo.toml, go.mod, etc.), resolves official source repositories, clones them to ~/study/<language>/, and creates version-pinned git worktrees. Use when the user wants to read upstream source code, understand how a dependency works, or study a library at the exact version their project depends on.

SKILL.md

8.2 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

Study Dependencies

Clone and study your project's dependencies at their exact pinned versions using git worktrees under ~/study/.

Use $ARGUMENTS as the user's filter. If $ARGUMENTS is empty, ask the user which dependency to study.

Parse $ARGUMENTS for flags and strip them from the filter text:

FlagEffect
--lang <language>Override auto-detected language directory
--no-worktreeClone only, skip worktree creation

The remaining text after stripping flags is the filter — a package name, "all", or a category like "dev" or "build".

Step 1: Detect Preferred Tools

for tool in rg ag fd jq; do
  command -v "$tool" >/dev/null 2>&1 && echo "$tool:available" || echo "$tool:missing"
done

For content search, prefer rg over ag over grep. For file finding, prefer fd over find. For JSON parsing, use jq when available, otherwise parse manually.

Step 2: Scan Manifest Files

Search the current project root for manifest files and extract dependencies with their version constraints.

ManifestLanguage dirLockfilesExtraction method
package.jsontypescriptpackage-lock.json, pnpm-lock.yaml, yarn.lock, bun.lockdependencies, devDependencies, peerDependencies fields
pyproject.tomlpythonuv.lock, poetry.lock, requirements.txt[project] dependencies, [tool.poetry.dependencies]
Cargo.tomlrustCargo.lock[dependencies], [dev-dependencies], [build-dependencies]
go.modgolanggo.sumrequire entries (block and single-line)
GemfilerubyGemfile.lockgem declarations
mix.exselixirmix.lockdeps function return
build.gradle / build.gradle.ktsjavagradle.lockfileimplementation, api, testImplementation
pom.xmljava<dependency> elements

For each manifest found, extract the dependency name, version constraint, and category (runtime, dev, build, peer).

When a lockfile exists alongside the manifest, also extract the resolved version (exact pinned version) for each dependency. Prefer the lockfile resolved version over the manifest constraint for tag resolution in Step 7.

Step 3: Filter Dependencies

Apply the filter from $ARGUMENTS:

  • Specific package name — match exactly (case-insensitive)
  • "all" — include every dependency
  • Category ("dev", "build", "peer", "runtime") — filter by dependency category

Check ~/study/ for existing clones and worktrees:

ls -d ~/study/*/*/ 2>/dev/null

Mark each dependency as: new (needs clone + worktree), update (clone exists, needs worktree), or exists (worktree at correct version already present). Plain directories (e.g., vite/) are main clones; version-suffixed directories (e.g., vite-6.2.0/) are worktrees.

If --lang was provided, use that as the language directory instead of auto-detecting from the manifest.

Step 4: Resolve Source Repositories

For each filtered dependency, find the official source repository URL.

Resolution order (stop at first success):

  1. Manifest metadatarepository field in package.json, [package] repository in Cargo.toml, project.urls in pyproject.toml
  2. Package registry metadatanpm view <pkg> repository.url, cargo metadata, pip show <pkg>, go list -m -json <module>
  3. WebSearch — search for "<package-name>" official source repository and verify the result

Normalize all URLs to https://<host>/<owner>/<repo>.git format where possible. Strip .git suffix for display, keep it for clone commands.

Step 5: Present Plan and Confirm

Show a summary table of planned actions:

PackageVersionRepositoryActionTarget Path
vite6.2.0vitejs/viteclone + worktree~/study/typescript/vite-6.2.0/
react19.1.0facebook/reactworktree only~/study/typescript/react-19.1.0/
zod3.25.0colinhacks/zodexists~/study/typescript/zod-3.25.0/

Confirmation gate — ask the user to approve before proceeding. Use ask-user-choice with options:

  • Proceed — clone and create worktrees as shown
  • Select specific — let the user pick individual packages from the list
  • Cancel — abort

Do not proceed past this step without user approval.

Step 6: Clone Repositories

Always quote variables and use -- to separate options from arguments to prevent shell injection from manifest-derived values.

For each approved dependency that needs cloning:

git clone -- "$repo_url" "$HOME/study/<language>/<repo-name>/"

If the clone directory already exists, fetch latest tags instead:

git -C "$HOME/study/<language>/<repo-name>/" fetch --tags --force

Clone one repository at a time. Report progress after each clone.

Step 7: Resolve Version Tag or Branch

For each dependency, find the matching git ref. Try these patterns in order (stop at first match):

PriorityPatternExample
1Exact tag5.2.0
2v-prefixed tagv5.2.0
3Scoped package tag@scope/[email protected], [email protected]
4Crate-style tagpkg-v5.2.0, pkg-5.2.0
5Minor branchrelease/5.2, stable/5.2.x, 5.2.x
6Major branchrelease/5.x, v5

Use the lockfile resolved version (from Step 2) when available, otherwise use the manifest version constraint stripped of range operators (^, ~, >=, etc.).

git -C "$HOME/study/<language>/<repo-name>/" tag -l
git -C "$HOME/study/<language>/<repo-name>/" branch -r -l

If no matching ref is found, warn the user and offer to use the default branch instead.

Step 8: Create Version-Pinned Worktree

Skip this step if --no-worktree was passed.

For tag refs (detached HEAD):

git -C "$HOME/study/<language>/<repo-name>/" worktree add --detach "$HOME/study/<language>/<repo-name>-<version>/" <tag>

For branch refs:

git -C "$HOME/study/<language>/<repo-name>/" worktree add "$HOME/study/<language>/<repo-name>-<version>/" <branch>

The worktree path follows the convention: ~/study/<language>/<repo-name>-<version>/.

If the worktree path already exists, skip creation and report it as already present.

For monorepo-hosted packages (e.g., @tanstack/react-query and @tanstack/react-table both in tanstack/query), the entire repo is cloned once. The worktree contains all packages — the user can navigate to the specific package subdirectory.

Step 9: Report Results

Present a summary of what was done:

StatusPackagePath
created[email protected]~/study/typescript/vite-6.2.0/
skipped[email protected]~/study/typescript/zod-3.25.0/ (already exists)
failed[email protected]no matching tag found

Include the full path for each created worktree so the user can navigate directly.

If any dependencies failed, suggest manual steps to resolve (e.g., checking available tags, using a different version).

Portability notes

  • ask-user-choice — present the listed options and wait for the user to pick one. Hosts with a structured multiple-choice tool (Claude Code's AskUserQuestion) should use it; otherwise print a numbered list and wait for a numbered reply. Never proceed on an assumed answer.
  • $ARGUMENTS — the text the user passed when invoking this skill. If your host does not substitute it, read it as the user's request in the current turn, and ask when there is none.

Gives 0 of the 12 instructions most research analysis skills give in ~2.1k tokens

Counted across 1,063 of the 1,754 authors here whose files we hold, read 2026-08-07

  • generate a markdown reportin 32 of 1063, across 23 files
  • cite each claim's sourcein 30 of 1063, across 15 files
  • define the ideal customer profilein 20 of 1063, across 2 files
  • search for companies matching the criteriain 20 of 1063, across 2 files
  • assign a fit score from one to tenin 20 of 1063, across 2 files
  • analyze the codebase to understand the productin 19 of 1063, across 1 file
  • ask clarifying questions about the value propositionin 19 of 1063, across 1 file
  • look for signals of immediate needin 19 of 1063, across 1 file
  • identify the target decision maker rolein 19 of 1063, across 1 file
  • suggest a personalized contact strategyin 19 of 1063, across 1 file
  • provide conversation starters for outreachin 19 of 1063, across 1 file
  • format results in a scannable markdown templatein 19 of 1063, across 1 file

Said here and by no other author read

  • use user arguments as a dependency filter
  • strip parsed flags from dependency filter text
  • detect available preferred command line tools
  • prefer lockfile resolved versions over manifest constraints
  • check for existing dependency clones and worktrees
  • resolve official source repository URLs

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.