dep-refs
GitHub通过 pnpm dep:refs 分析 TypeScript 导出引用,辅助重构时确认符号使用情况、查找未导出项及验证删除安全性。
Trigger Scenarios
Install
npx skills add zai-org/ZCode --skill dep-refs -g -y
SKILL.md
Frontmatter
{
"name": "dep-refs",
"description": "Use when needs to inspect TypeScript export references in the z-code workspace, list exports from a file, verify whether an export is unused before deletion, investigate who imports a symbol during refactors, or combine pnpm knip unused-export results with pnpm dep:refs symbol-level reference tracing.",
"disable-model-invocation": true
}
Dep Refs
Use the repository's pnpm dep:refs CLI to answer symbol-level questions before changing or deleting TypeScript exports. Run commands from the z-code repository root.
Workflow
Start broad when deleting code:
pnpm knip
Use knip to find likely unused exports, then inspect any risky or unclear export with dep:refs:
pnpm dep:refs packages/shared/src/remoteTarget.ts:stripRemoteTargetSecrets
List all exports in a file when the exact symbol name is unknown:
pnpm dep:refs --list-exports packages/shared/src/remoteTarget.ts
Use scoped scans for fast exploration only when the scope is intentionally limited:
pnpm dep:refs --scope packages/services packages/shared/src/remoteTarget.ts:stripRemoteTargetSecrets
Before claiming an export is safe to delete, prefer an unscoped dep:refs run so cross-package callers are not missed.
JSON Mode
Use silent pnpm mode for machine-readable output, because normal pnpm output includes extra banner lines:
pnpm -s dep:refs packages/shared/src/remoteTarget.ts:stripRemoteTargetSecrets --json | jq .
Use JSON when summarizing many symbols, feeding results to jq, or comparing references and reExports counts programmatically.
Interpreting Results
Treat References (0) and Re-exports (0) as "no static references found", not as proof that no dynamic usage exists. The script does not detect dynamic import() paths or string-based references.
If a symbol only appears under Re-exports, trace the outward barrel path before deleting. A re-export can still be part of the public surface even when there are no direct internal imports.
For refactors, report concrete callers with file and line from the CLI output, then decide whether to update callers, preserve the export, or delete it.
Version History
- 872ad96 Current 2026-09-21 23:46


