Source profileQuality 93/100Review permissions

event4u-app/agent-config/src/skills/workspace-link/SKILL.md

workspace-link

Use when a cross-workspace import will not resolve — cannot find module @org/*, TS2307 — to link the packages properly with the workspace: protocol instead of patching tsconfig paths.

Source repository stars
9
Declared platforms
0
Static risk flags
1
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

One workspace imports another and the import does not resolve. The fix is a dependency declaration, not a resolver override.

Best for

  • Cannot find module '@org/ui' or Cannot find module '@org/ui' or its
  • TypeScript TS2307, or a bundler resolving a workspace import to undefined.
  • A workspace import that works in the editor and fails in the build (or the

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/workspace-link"
Safe inspection promptEditorial

Inspect the Agent Skill "workspace-link" from https://github.com/event4u-app/agent-config/blob/6a5670b7881a676c0da90d2afb950298087c4ccb/src/skills/workspace-link/SKILL.md at commit 6a5670b7881a676c0da90d2afb950298087c4ccb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Procedure

    The importing workspace's package.json must name the imported workspace in dependencies (or devDependencies when the import is test-only):

    The importing workspace's package.json must name the imported workspace in dependencies (or devDependencies when the import is test-only):The name on the left is the imported package's own name field — not its directory. Then re-run the install so the manager creates the link.Four forms, and the difference only shows up at publish time:
  2. 02

    When to use

    Cannot find module '@org/ui' or Cannot find module '@org/ui' or its

    Cannot find module '@org/ui' or Cannot find module '@org/ui' or itsTypeScript TS2307, or a bundler resolving a workspace import to undefined.A workspace import that works in the editor and fails in the build (or the
  3. 03

    1. Declare the dependency in the importing workspace

    The importing workspace's package.json must name the imported workspace in dependencies (or devDependencies when the import is test-only):

    The importing workspace's package.json must name the imported workspace in dependencies (or devDependencies when the import is test-only):The name on the left is the imported package's own name field — not its directory. Then re-run the install so the manager creates the link.
  4. 04

    2. Pick the form

    Four forms, and the difference only shows up at publish time:

    Four forms, and the difference only shows up at publish time:For a private monorepo that never publishes, workspace: is the right default — it cannot drift out of sync with the local version. For packages that are published, workspace:^ is what keeps the released range honest.The explicit-range form is the only one that can fail the install, and that is a feature: it is how a workspace states which version of a sibling it needs.
  5. 05

    3. Check the manager, not the table

    Protocol support is not uniform. pnpm and Yarn (berry) implement all four forms; Bun implements the protocol; npm's support arrived later than the others. Confirm against the version in packageManager / the lockfile rather than assuming — monorepo-workspace step 1 reports which…

    Protocol support is not uniform. pnpm and Yarn (berry) implement all four forms; Bun implements the protocol; npm's support arrived later than the others. Confirm against the version in packageManager / the lockfile rat…Where the protocol is unsupported, the correct fallback is still a dependency declaration — the sibling's version range — never a resolver override.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 70

The documentation asks the agent to run terminal commands or scripts.

Re-run the failing command, not the editor. A resolved editor and a failing

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars9SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
event4u-app/agent-config
Skill path
src/skills/workspace-link/SKILL.md
Commit
6a5670b7881a676c0da90d2afb950298087c4ccb
License
MIT
Collected
2026-08-28
Default branch
main
View the original SKILL.md

Linking workspace packages

One workspace imports another and the import does not resolve. The fix is a dependency declaration, not a resolver override.

Own analysis. The forms and failure modes below are derived from the public behaviour of the package managers named, not adopted from a third-party artefact, so no provenance ledger entry backs them. Verify the protocol support against the manager version the repository actually pins — see § Check the manager, not the table.

When to use

  • Cannot find module '@org/ui' or Cannot find module '@org/ui' or its corresponding type declarations.
  • TypeScript TS2307, or a bundler resolving a workspace import to undefined.
  • A workspace import that works in the editor and fails in the build (or the reverse) — the classic signature of a paths patch standing in for a dependency.

Procedure

1. Declare the dependency in the importing workspace

The importing workspace's package.json must name the imported workspace in dependencies (or devDependencies when the import is test-only):

{
  "name": "@org/web",
  "dependencies": { "@org/ui": "workspace:*" }
}

The name on the left is the imported package's own name field — not its directory. Then re-run the install so the manager creates the link.

2. Pick the form

Four forms, and the difference only shows up at publish time:

FormResolves locally toOn publish, rewritten to
workspace:*the local workspace, any versionthe exact version at publish
workspace:^the local workspace^<version>
workspace:~the local workspace~<version>
workspace:<range>the local workspace if its version satisfies <range>, else fails the install<range>

For a private monorepo that never publishes, workspace:* is the right default — it cannot drift out of sync with the local version. For packages that are published, workspace:^ is what keeps the released range honest.

The explicit-range form is the only one that can fail the install, and that is a feature: it is how a workspace states which version of a sibling it needs.

3. Check the manager, not the table

Protocol support is not uniform. pnpm and Yarn (berry) implement all four forms; Bun implements the protocol; npm's support arrived later than the others. Confirm against the version in packageManager / the lockfile rather than assuming — monorepo-workspace step 1 reports which manager this repository actually uses.

Where the protocol is unsupported, the correct fallback is still a dependency declaration — the sibling's version range — never a resolver override.

4. Verify it resolves for real

Re-run the failing command, not the editor. A resolved editor and a failing build is the exact state a paths patch produces, so the build is the probe.

Output format

A workspace-link answer MUST contain, in order:

  1. The unresolved import, named — the importing workspace path, the imported package name (not its directory), and the exact error text.
  2. The declaration to add — the package.json path, the section (dependencies or devDependencies), and the workspace: form chosen, with one sentence on why that form (private-and-unpublished → workspace:*; published → workspace:^).
  3. The install command for this repository's manager, read from packageManager / the lockfile rather than assumed.
  4. The verification — the failing build or test command re-run, not the editor, plus its result. A resolved editor and a failing build is the state a paths patch produces, so the build is the probe.

Gotcha

  • Adding the dependency without re-running the install changes nothing: the manager creates the symlink at install time.
  • A workspace: dependency on a package that is not actually in the workspace globs fails with a confusing "not found" — check the globs (monorepo-workspace step 2) before the spelling of the name.
  • The imported package still needs a valid entry point (main / exports / types). A correct link into a package that exports nothing reads as the same TS2307.
  • Circular workspace dependencies install fine and break the task graph later.

Do NOT

  • Do NOT patch tsconfig.json paths to point at the sibling's source. It silences the type error in the editor while the runtime and the bundler still have no dependency to resolve, and it hides the edge from the task runner, so the affected-set calculation and build ordering both go wrong. A paths entry is a compiler hint, not a dependency.
  • Do NOT hand-edit package.json link fields or the lockfile to point at a relative path (file:../ui, a hand-written entry under node_modules). It works once, on one machine, and is undone by the next install.
  • Do not add the dependency to the root package.json to make the error go away — the importing workspace is what must declare it.
  • Do not install the sibling from the registry to satisfy the import. That silently pins a published copy while the local source keeps changing.

See also

Frequently asked questions

What to verify before installation and use

What does the workspace-link source document cover?

One workspace imports another and the import does not resolve. The fix is a dependency declaration, not a resolver override.

How do I install workspace-link?

The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/workspace-link". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10045,960

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10029,236

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10025,136

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,277

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing