# Ksrc

> Search/read 3rd-party Gradle dependency sources. Avoid directly accessing `.gradle`; instead, proactively use this skill to inspect source code of dependencies to learn API shapes or implementations.

- Skill: `respawn-llc/ksrc` (Agent Skill)
- Install (CLI): `npx skillmds@latest add respawn-llc/ksrc`
- Raw SKILL.md: https://api.skillmd.com/api/skills/respawn-llc/ksrc/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: respawn-llc (https://skillmd.com/u/respawn-llc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/respawn-llc/ksrc

---


1. Search dependencies to retrieve coordinates and matches using rg-style globs: `ksrc search "class LocalDate\("`

If you want faster execution & less noise, consider adding:
- `--artifact` to limit search to one artifact, (or `--module` to also limit by version)
- `--subproject` to help discovery for monorepos/large modular apps
- `--targets` to limit to specific KMP targets. 

KMP note: `--module group:artifact` searches common/base sources plus Gradle-selected platform variant source jars by default. Use `--targets` or `--config` to narrow variants.

2. Read a file by returned id: `ksrc cat org.jetbrains.kotlinx:kotlinx-datetime:0.8.0!/kotlinx/datetime/LocalDate.kt --lines 1,200`

File-id format: `group:artifact:version!/path/inside/jar.ext` — works for any language in the source JAR (e.g. `.kt`, `.java`, `.groovy`)

When a file-id comes from `ksrc search` or `ksrc where <path>`, follow-up `cat`/`open` usually do not need repeated `--project` or scope/config flags on same machine.

Give this tool generous timeouts. It can take a few minutes to download sources and set up gradle.

## Common issues
- If, unexpectedly, no matches are found, try `--project` with app project (not monorepo root), specifying `--scope` (esp. for build-time deps), or `ksrc doctor`.
- `E_NO_SOURCES`: dependency sources not available; try `ksrc deps`, `ksrc fetch <coord>`, specify a project and scope.
- Gradle not found: a) run in a Gradle project dir, b) set `--project` path explicitly, c) install gradle on machine.
- Gradle build script is failing in the repo: `ksrc` falls back to cache-only resolution and warns; when no version is pinned it picks the highest cached source-bearing version under Maven-style ordering. Re-run with `-v` to see Gradle output for debugging.
- Custom Gradle user home: `ksrc` respects `GRADLE_USER_HOME`. Use `--gradle-user-home <path>` to override it for both Gradle invocation and cache fallback.
- Gradle fails with unresolved class version: User's Local java in env is resolved to something unsupported by gradle. Help them fix Gradle<>JDK incompatibility.
- Ambiguous modules: use `--module`, `--group`, or `--artifact` to narrow scope.

## Commands
### `ksrc search <pattern> [-- <rg-args>]`
Search dependency sources.

Output format: `<file-id> <line>:<col>:<line-text>`

Parsing rule:
- Split once on first space to isolate `<file-id>`.
- Parse first two `:`-delimited decimal fields as `<line>` and `<col>`.
- Treat remainder verbatim as `<line-text>`; it may contain `:`.

With `--show-extracted-path`, output shape changes to:
`<file-id>\t<quoted-extracted-path>\t<line>\t<col>\t<quoted-line-text>`

Common flags:
- `--all` search across all resolved deps (default, slow)
- `--project <path>` project root (default `.`)
- `--subproject <name>` limit to a subproject (repeatable)
- `--targets <list>` limit KMP targets (comma‑separated: `jvm,android,iosX64`)
- `--config <name>` resolve specific configuration(s) (comma‑separated)
- `--scope <compile|runtime|test|all>`
- `--module <glob>` module filter (`group:artifact[:version]`)
- `--group <glob>` / `--artifact <glob>` / `--version <glob>`
- `--offline` only use cached sources
- `--refresh` force dependency refresh
- `--gradle-user-home <path>` override `GRADLE_USER_HOME` / `~/.gradle`
- `--context <n>` shortcut for `rg -C <n>` (context lines emit column `0`)
- `--rg-args <args>` extra rg args (comma‑separated)
- `-- <rg-args>` pass through raw rg args
- `--show-extracted-path` include temp extracted paths in output (off by default)

### `ksrc cat <file-id|path>`
Print file contents.

Common flags:
- `--lines <start,end>` 1‑based inclusive range
- `--module <glob>` / `--group` / `--artifact` / `--version` to disambiguate when using a path

### `ksrc open <file-id|path>`
Open in `$PAGER` (defaults to `less -R`). Same flags as `cat`.

### `ksrc deps`
List resolved dependencies and source availability.

### `ksrc resolve`
Resolve and print source JARs: `group:artifact:version|/path/to/sources.jar`.

### `ksrc fetch <coord>`
Ensure sources for a coordinate exist: `group:artifact:version`. Usually only needed with offline mode.

### `ksrc where <path|coord>`
Locate cached source JAR or file.

### `ksrc doctor`
Basic diagnostics for environment issues.

