diff --git a/docs/Jasmine.md b/docs/Jasmine.md
index f47fd68..bf4a4b8 100755
--- a/docs/Jasmine.md
+++ b/docs/Jasmine.md
@@ -98,12 +98,15 @@
 <h4 id="jasmine_node_test-jasmine">jasmine</h4>
 
 A label providing the `@bazel/jasmine` npm dependency.
+Intended for internal use only.
 
 Defaults to `None`
 
 <h4 id="jasmine_node_test-jasmine_entry_point">jasmine_entry_point</h4>
 
 A label providing the `@bazel/jasmine` entry point.
+This is a custom wrapper which adds features like sharding and ibazel support.
+Intended for internal use only.
 
 Defaults to `None`
 
diff --git a/internal/npm_install/generate_build_file.ts b/internal/npm_install/generate_build_file.ts
index fa2448d..2246796 100644
--- a/internal/npm_install/generate_build_file.ts
+++ b/internal/npm_install/generate_build_file.ts
@@ -411,13 +411,17 @@
 
 
     const indexFile = printIndexBzl(pkg);
-    const indexFileName = hasIndexBzl ? 'private.bzl' : 'index.bzl'
     if (indexFile.length) {
-      await writeFile(path.posix.join(pkg._dir, indexFileName), indexFile);
-      buildFile += `
+      await writeFile(path.posix.join(pkg._dir, hasIndexBzl ? 'private' : '', 'index.bzl'), indexFile);
+      const buildContent = `
 # For integration testing
-exports_files(["${indexFileName}"])
+exports_files(["index.bzl"])
 `;
+      if (hasIndexBzl) {
+        await writeFile(path.posix.join(pkg._dir, 'private', 'BUILD.bazel'), buildContent);
+      } else {
+        buildFile += buildContent;
+      }
     }
   
 
diff --git a/internal/npm_install/index.js b/internal/npm_install/index.js
index 5dca4cd..b0d58be 100644
--- a/internal/npm_install/index.js
+++ b/internal/npm_install/index.js
@@ -268,13 +268,18 @@
         }, Promise.resolve());
     }
     const indexFile = printIndexBzl(pkg);
-    const indexFileName = hasIndexBzl ? 'private.bzl' : 'index.bzl';
     if (indexFile.length) {
-        await writeFile(path.posix.join(pkg._dir, indexFileName), indexFile);
-        buildFile += `
+        await writeFile(path.posix.join(pkg._dir, hasIndexBzl ? 'private' : '', 'index.bzl'), indexFile);
+        const buildContent = `
 # For integration testing
-exports_files(["${indexFileName}"])
+exports_files(["index.bzl"])
 `;
+        if (hasIndexBzl) {
+            await writeFile(path.posix.join(pkg._dir, 'private', 'BUILD.bazel'), buildContent);
+        }
+        else {
+            buildFile += buildContent;
+        }
     }
     if (!symlinkBuildFile) {
         await writeFile(path.posix.join(pkg._dir, buildFilePath), generateBuildFileHeader(visibility) + buildFile);
diff --git a/packages/jasmine/BUILD.bazel b/packages/jasmine/BUILD.bazel
index 2b09373..a5ad4d6 100644
--- a/packages/jasmine/BUILD.bazel
+++ b/packages/jasmine/BUILD.bazel
@@ -83,9 +83,6 @@
         "package.json",
     ],
     build_file_content = "",
-    substitutions = {
-        "//packages/jasmine/private:jasmine_runner_test.bzl": "//@bazel/jasmine:private.bzl",
-    },
     deps = [
         ":README.md",
         ":npm_version_check",
diff --git a/packages/jasmine/jasmine_node_test.bzl b/packages/jasmine/jasmine_node_test.bzl
index 1a5d7d0..b39503e 100644
--- a/packages/jasmine/jasmine_node_test.bzl
+++ b/packages/jasmine/jasmine_node_test.bzl
@@ -19,7 +19,7 @@
 """
 
 load("@rules_nodejs//nodejs:providers.bzl", "JSModuleInfo")
-load("//packages/jasmine/private:jasmine_runner_test.bzl", "jasmine_runner_test")
+load("//packages/jasmine/private:index.bzl", "bazel_jasmine_runner_test")
 load("@build_bazel_rules_nodejs//internal/node:node.bzl", nodejs_test = "nodejs_test_macro")
 
 def _js_sources_impl(ctx):
@@ -67,7 +67,7 @@
         tags = [],
         config_file = None,
         use_direct_specs = None,
-        # Kept for backward compatibility
+        # TODO(6.0): remove these two attributes, users should never interact with them
         jasmine = None,
         jasmine_entry_point = None,
         **kwargs):
@@ -103,7 +103,12 @@
         More info: https://github.com/bazelbuild/rules_nodejs/pull/2576
 
       jasmine: A label providing the `@bazel/jasmine` npm dependency.
+        Intended for internal use only.
+
       jasmine_entry_point: A label providing the `@bazel/jasmine` entry point.
+        This is a custom wrapper which adds features like sharding and ibazel support.
+        Intended for internal use only.
+
       **kwargs: Remaining arguments are passed to the test rule
     """
     if kwargs.pop("coverage", False):
@@ -161,4 +166,4 @@
             **kwargs
         )
     else:
-        jasmine_runner_test(**kwargs)
+        bazel_jasmine_runner_test(**kwargs)
diff --git a/packages/jasmine/package.json b/packages/jasmine/package.json
index 5a51b18..f538ad0 100644
--- a/packages/jasmine/package.json
+++ b/packages/jasmine/package.json
@@ -16,7 +16,7 @@
         "bazel"
     ],
     "bin": {
-        "jasmine_runner": "jasmine_runner.js"
+        "bazel-jasmine-runner": "jasmine_runner.js"
     },
     "main": "index.js",
     "dependencies": {
diff --git a/packages/jasmine/private/jasmine_runner_test.bzl b/packages/jasmine/private/index.bzl
similarity index 91%
rename from packages/jasmine/private/jasmine_runner_test.bzl
rename to packages/jasmine/private/index.bzl
index 22ff288..632584a 100644
--- a/packages/jasmine/private/jasmine_runner_test.bzl
+++ b/packages/jasmine/private/index.bzl
@@ -5,7 +5,7 @@
 
 load("@build_bazel_rules_nodejs//internal/node:node.bzl", nodejs_test = "nodejs_test_macro")
 
-def jasmine_runner_test(**kwargs):
+def bazel_jasmine_runner_test(**kwargs):
     nodejs_test(
         entry_point = "//packages/jasmine:jasmine_runner.js",
         data = ["//packages/jasmine"] + kwargs.pop("data", []),
