diff --git a/DEVELOPING.md b/DEVELOPING.md
deleted file mode 100644
index fcfbee8..0000000
--- a/DEVELOPING.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# For Developers
-
-We strongly encourage you to review the project's scope described in the `README.md` file before working on new features. For large changes, consider writing a design document using [this template](https://goo.gl/YCQttR).
-
-## Testing changing downstream
-
-By default, downstream projects use both an `http_archive` of `npm_bazel_typescript` and the released `@bazel/typescript` and `@bazel/karma` npm packages. `postinstall` steps in these npm packages check that the version of the `npm_bazel_typescript` is compatible with the version of the npm package(s).
-
-For example, if a downstream `WORKSPACE` contain:
-
-```python
-http_archive(
-    name = "npm_bazel_typescript",
-    url = "https://github.com/bazelbuild/rules_typescript/archive/0.21.0.zip",
-    strip_prefix = "rules_typescript-0.21.0",
-)
-```
-
-that that project's `package.json` would contain the matching:
-
-```json
-"@bazel/typescript": "0.21.0",
-"@bazel/karma": "0.21.0",
-```
-
-When authoring changes and testing downstream, depending on the `@bazel/typescript` and `@bazel/karma` npm packages makes the workflow confusing and difficult.
-To make authoring and testing changes downstream easier, it is recommended that you override the default `compiler` attribute of `ts_library` if making changes
-to `ts_library` and the default `karma` attribute of `ts_web_test_suite`/`ts_web_test` if making changes to those rules.
-
-For example, in `/internal/build_defs.bzl`, change
-
-```python
-"compiler": attr.label(
-    default = Label(_DEFAULT_COMPILER),
-```
-
-to
-
-```python
-"compiler": attr.label(
-    default = Label("@npm_bazel_typescript//internal:tsc_wrapped_bin"),
-```
-
-The correct defaults to use so that you are not depending on the npm package downstream are in `/internal/defaults.bzl`. Note, your downstream
-workspace will also need the correct `@npm` dependencies available to build these targets (see `internal/e2e/typescript_3.1/package.json`).
-In the case of the `angular` workspace, some `@npm` dependencies in this repository will also need to be changed to `@ngdeps` since `angular` does not have
-an `@npm` workspace with npm dependencies.
-
-Note, with this workflow the downstream version of `@npm//typescript` will be used to compile the `ts_library` targets in `npm_bazel_typescript`.
-An example of this can be found under `internal/e2e/typescript_3.1`.
diff --git a/README.md b/README.md
index 044cb38..8c999b3 100644
--- a/README.md
+++ b/README.md
@@ -1,307 +1,18 @@
-# TypeScript rules for Bazel
+# build_bazel_rules_typescript
 
-Circle CI | Bazel CI
-:---: | :---:
-[![CircleCI](https://circleci.com/gh/bazelbuild/rules_typescript.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_typescript) | [![Build status](https://badge.buildkite.com/7f98e137cd86baa5a4040a7e750bef87ef5fd293092fdaf878.svg)](https://buildkite.com/bazel/typescript-rules-typescript-postsubmit)
+> Looking for documentation for TypeScript bazel rules that used to be here?
+> See https://npmjs.com/package/@bazel/typescript
 
-**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.**
+This repo contains a mirror of some Google-internal bits that support TypeScript development under Bazel.
 
-The TypeScript rules integrate the TypeScript compiler with Bazel.
+It contains these utilities:
 
-This repo used to contain Karma rules `ts_web_test` and `karma_web_test`.
-These are now documented in the README at http://npmjs.com/package/@bazel/karma
+- `ts_devserver`: a Go library and binary that runs a fast local web server which concatenates JavaScript on-the-fly. It requires inputs in a named module format (module ids must be contained in the file, not inferred from the file's path).
+- `ts_auto_deps`: a Go library and binary which generates `BUILD.bazel` files from TypeScript sources.
+- `tsc_wrapped`: a TypeScript program which wraps the TypeScript compiler, hosting it under a Bazel worker.
+- `tsetse`: a collection of third-party "strictness" checks which we add to the TypeScript compiler.
+- `internal/common/*.bzl`: some Starlark utility code for running the `ts_library` rule.
 
-## API Docs
+There are no user-facing bits in this repo. These utilities are consumed in https://github.com/bazelbuild/rules_nodejs/tree/master/packages/typescript
 
-Generated documentation for using each rule is at:
-http://tsetse.info/api/
-
-## Installation
-
-First, install a current Bazel distribution.
-
-Add the `@bazel/typescript` npm package to your `package.json` `devDependencies`.
-
-```
-{
-  ...
-  "devDependencies": {
-    "@bazel/typescript": "0.25.1",
-    ...
-  },
-  ...
-}
-```
-
-Create a `BUILD.bazel` file in your project root:
-
-```python
-package(default_visibility = ["//visibility:public"])
-exports_files(["tsconfig.json"])
-```
-
-Next create a `WORKSPACE` file in your project root (or edit the existing one)
-containing:
-
-```python
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-# Fetch rules_nodejs
-# (you can check https://github.com/bazelbuild/rules_nodejs for a newer release than this)
-http_archive(
-    name = "build_bazel_rules_nodejs",
-    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"],
-    sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b",
-)
-
-# Setup the NodeJS toolchain
-load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install")
-node_repositories()
-
-# Setup Bazel managed npm dependencies with the `yarn_install` rule.
-# The name of this rule should be set to `npm` so that `ts_library`
-# can find your npm dependencies by default in the `@npm` workspace. You may
-# also use the `npm_install` rule with a `package-lock.json` file if you prefer.
-# See https://github.com/bazelbuild/rules_nodejs#dependencies for more info.
-yarn_install(
-  name = "npm",
-  package_json = "//:package.json",
-  yarn_lock = "//:yarn.lock",
-)
-
-# Install all Bazel dependencies needed for npm packages that supply Bazel rules
-load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
-install_bazel_dependencies()
-
-# Setup TypeScript toolchain
-load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace")
-ts_setup_workspace()
-```
-
-# Self-managed npm dependencies
-
-We recommend you use Bazel managed dependencies but if you would like
-Bazel to also install a `node_modules` in your workspace you can also
-point the `node_repositories` repository rule in your WORKSPACE file to
-your `package.json`.
-
-```python
-node_repositories(package_json = ["//:package.json"])
-```
-
-You can then run `yarn` in your workspace with:
-
-```sh
-$ bazel run @nodejs//:yarn
-```
-
-To use your workspace `node_modules` folder as a dependency in `ts_library` and
-other rules, add the following to your root `BUILD.bazel` file:
-
-```python
-filegroup(
-    name = "node_modules",
-    srcs = glob(
-        include = [
-          # Must include .proto files since the tsc_wrapped compiler utilizes them
-          "node_modules/**/*.proto",
-          "node_modules/**/*.js",
-          "node_modules/**/*.d.ts",
-          "node_modules/**/*.json",
-          "node_modules/.bin/*",
-        ],
-        exclude = [
-          # Files under test & docs may contain file names that
-          # are not legal Bazel labels (e.g.,
-          # node_modules/ecstatic/test/public/中文/檔案.html)
-          "node_modules/**/test/**",
-          "node_modules/**/docs/**",
-          # Files with spaces in the name are not legal Bazel labels
-          "node_modules/**/* */**",
-          "node_modules/**/* *",
-        ],
-    ),
-)
-
-# Create a tsc_wrapped compiler rule to use in the ts_library
-# compiler attribute when using self-managed dependencies
-nodejs_binary(
-    name = "@bazel/typescript/tsc_wrapped",
-    entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js",
-    # Point bazel to your node_modules to find the entry point
-    node_modules = ["//:node_modules"],
-)
-```
-
-See https://github.com/bazelbuild/rules_nodejs#dependencies for more information on
-managing npm dependencies with Bazel.
-
-## Usage
-
-### Compiling TypeScript: `ts_library`
-
-The `ts_library` rule invokes the TypeScript compiler on one compilation unit,
-or "library" (generally one directory of source files).
-
-Create a `BUILD` file next to your sources:
-
-```python
-package(default_visibility=["//visibility:public"])
-load("@npm_bazel_typescript//:defs.bzl", "ts_library")
-
-ts_library(
-    name = "my_code",
-    srcs = glob(["*.ts"]),
-    deps = ["//path/to/other:library"],
-)
-```
-
-If your ts_library target has npm dependencies you can specify these
-with fine grained npm dependency targets created by the `yarn_install` or
-`npm_install` rules:
-
-```python
-ts_library(
-    name = "my_code",
-    srcs = glob(["*.ts"]),
-    deps = [
-      "@npm//@types/node",
-      "@npm//@types/foo",
-      "@npm//foo",
-      "//path/to/other:library",
-    ],
-)
-```
-
-You can also you the `@npm//@types` target which will include all
-packages in the `@types` scope as dependencies.
-
-If you are using self-managed npm dependencies, you can use the
-`node_modules` attribute in `ts_library` and point it to the
-`//:node_modules` filegroup defined in your root `BUILD.bazel` file.
-You'll also need to override the `compiler` attribute if you do this
-as the Bazel-managed deps and self-managed cannot be used together
-in the same rule.
-
-```python
-ts_library(
-    name = "my_code",
-    srcs = glob(["*.ts"]),
-    deps = ["//path/to/other:library"],
-    node_modules = "//:node_modules",
-    compiler = "//:@bazel/typescript/tsc_wrapped",
-)
-```
-
-To build a `ts_library` target run:
-
-`bazel build //path/to/package:target`
-
-The resulting `.d.ts` file paths will be printed. Additionally, the `.js`
-outputs from TypeScript will be written to disk, next to the `.d.ts` files <sup>1</sup>.
-
-Note that the `tsconfig.json` file used for compilation should be the same one
-your editor references, to keep consistent settings for the TypeScript compiler.
-By default, `ts_library` uses the `tsconfig.json` file in the workspace root
-directory. See the notes about the `tsconfig` attribute in the [ts_library API docs].
-
-> <sup>1</sup> The
-> [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html)
-> compiler option will be silently overwritten if present.
-
-[ts_library API docs]: http://tsetse.info/api/build_defs.html#ts_library
-
-### Serving TypeScript for development
-
-There are two choices for development mode:
-
-1. Use the `ts_devserver` rule to bring up our simple, fast development server.
-   This is intentionally very simple, to help you get started quickly. However,
-   since there are many development servers available, we do not want to mirror
-   their features in yet another server we maintain.
-1. Teach your real frontend server to serve files from Bazel's output directory.
-   This is not yet documented. Choose this option if you have an existing server
-   used in development mode, or if your requirements exceed what the
-   `ts_devserver` supports. Be careful that your development round-trip stays
-   fast (should be under two seconds).
-
-To use `ts_devserver`, you simply `load` the rule, and call it with `deps` that
-point to your `ts_library` target(s):
-
-```python
-load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library")
-
-ts_library(
-    name = "app",
-    srcs = ["app.ts"],
-)
-
-ts_devserver(
-    name = "devserver",
-    # We'll collect all the devmode JS sources from these TypeScript libraries
-    deps = [":app"],
-    # This is the path we'll request from the browser, see index.html
-    serving_path = "/bundle.js",
-    # The devserver can serve our static files too
-    static_files = ["index.html"],
-)
-```
-
-The `index.html` should be the same one you use for production, and it should
-load the JavaScript bundle from the path indicated in `serving_path`.
-
-If you don't have an index.html file, a simple one will be generated by the
-`ts_devserver`.
-
-See `examples/app` in this repository for a working example. To run the
-devserver, we recommend you use [ibazel]:
-
-```sh
-$ ibazel run examples/app:devserver
-```
-
-`ibazel` will keep the devserver program running, and provides a LiveReload
-server so the browser refreshes the application automatically when each build
-finishes.
-
-[ibazel]: https://github.com/bazelbuild/bazel-watcher
-
-## Writing TypeScript code for Bazel
-
-Bazel's TypeScript compiler has your workspace path mapped, so you can import
-from an absolute path starting from your workspace.
-
-`/WORKSPACE`:
-```python
-workspace(name = "myworkspace")
-```
-
-`/some/long/path/to/deeply/nested/subdirectory.ts`:
-```javascript
-import {thing} from 'myworkspace/place';
-```
-
-will import from `/place.ts`.
-
-
-Since this is an extension to the vanillia TypeScript compiler, editors which use the TypeScript language services to provide code completion and inline type checking will not be able to resolve the modules. In the above example, adding
-```json
-"paths": {
-    "myworkspace/*": ["*"]
-}
-```
-to `tsconfig.json` will fix the imports for the common case of using absolute paths.
-See https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping for more details on the paths syntax.
-
-Similarly, you can use path mapping to teach the editor how to resolve imports
-from `ts_library` rules which set the `module_name` attribute.
-
-## Notes
-
-If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher
-(note, it's also quite new).
-
-At some point, we plan to release a tool similar to [gazelle] to generate the
-BUILD files from your source code.
-
-[gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle
+Please file issues for `ts_library` rule and other Bazel rules in that repo.
diff --git a/WORKSPACE b/WORKSPACE
index 9ee5c20..e6fc9e8 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -67,20 +67,11 @@
 
 ts_setup_dev_workspace()
 
-# Test that check_rules_typescript_version works as expected
-load("//:defs.bzl", "check_rules_typescript_version")
-
-check_rules_typescript_version(version_string = "0.25.1")
-
 # Dependencies for generating documentation
 load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories")
 
 sass_repositories()
 
-load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
-
-skydoc_repositories()
-
 # Setup rules_webtesting toolchain
 load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories")
 
diff --git a/defs.bzl b/defs.bzl
index 7ae0139..2e223e8 100644
--- a/defs.bzl
+++ b/defs.bzl
@@ -17,14 +17,12 @@
 Users should not load files under "/internal"
 """
 
-load("//:version.bzl", _check_rules_typescript_version = "check_rules_typescript_version")
 load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro")
 load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library")
 load("//internal:build_defs.bzl", _ts_library = "ts_library_macro")
 load("//internal:ts_config.bzl", _ts_config = "ts_config")
 load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace")
 
-check_rules_typescript_version = _check_rules_typescript_version
 ts_setup_workspace = _ts_setup_workspace
 ts_library = _ts_library
 ts_config = _ts_config
diff --git a/devserver/BUILD.bazel b/devserver/BUILD.bazel
index a04d169..cd02979 100644
--- a/devserver/BUILD.bazel
+++ b/devserver/BUILD.bazel
@@ -12,9 +12,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# BEGIN-DEV-ONLY
-# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo.
-# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences.
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 go_library(
@@ -68,47 +65,10 @@
     visibility = ["//visibility:public"],
 )
 
-filegroup(
-    name = "npm_package_assets",
-    srcs = [
-        "BUILD.bazel",
-    ],
-    visibility = ["//visibility:public"],
-)
-
-# END-DEV-ONLY
-config_setting(
-    name = "darwin_x64",
-    constraint_values = [
-        "@bazel_tools//platforms:osx",
-        "@bazel_tools//platforms:x86_64",
-    ],
-)
-
-config_setting(
-    name = "linux_x64",
-    constraint_values = [
-        "@bazel_tools//platforms:linux",
-        "@bazel_tools//platforms:x86_64",
-    ],
-)
-
-config_setting(
-    name = "windows_x64",
-    constraint_values = [
-        "@bazel_tools//platforms:windows",
-        "@bazel_tools//platforms:x86_64",
-    ],
-)
-
-filegroup(
-    name = "devserver",
-    srcs = select({
-        ":darwin_x64": ["devserver-darwin_x64"],
-        ":linux_x64": ["devserver-linux_x64"],
-        ":windows_x64": ["devserver-windows_x64.exe"],
-    }),
-    # Don't build on CI
-    tags = ["manual"],
-    visibility = ["//visibility:public"],
+filegroup(	
+    name = "npm_package_assets",	
+    srcs = [	
+        "BUILD.bazel",	
+    ],	
+    visibility = ["//visibility:public"],	
 )
diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel
deleted file mode 100644
index 019f3dc..0000000
--- a/docs/BUILD.bazel
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc")
-
-skylark_doc(
-    name = "docs",
-    srcs = [
-        "//internal:build_defs.bzl",
-        "//internal:ts_config.bzl",
-        "//internal:ts_repositories.bzl",
-        "//internal/devserver:ts_devserver.bzl",
-        "//internal/protobufjs:ts_proto_library.bzl",
-    ],
-    format = "html",
-    # The site is served at http://tsetse.info so the URL doesn't include a
-    # /rules_typescript segment.
-    # TODO(alexeagle): separate Tsetse docs from the rest of rules_typescript
-    site_root = "/api",
-    strip_prefix = "internal/",
-)
diff --git a/internal/BUILD.bazel b/internal/BUILD.bazel
index a8c65c2..8b42aa8 100644
--- a/internal/BUILD.bazel
+++ b/internal/BUILD.bazel
@@ -20,14 +20,7 @@
 
 package(default_visibility = ["//visibility:public"])
 
-exports_files([
-    # Exported to be consumed for generating skydoc.
-    # TODO(alexeagle): remove this after migration to stardoc
-    "build_defs.bzl",
-    "ts_config.bzl",
-    "ts_repositories.bzl",
-    "tsetse/tsconfig.json",
-])
+exports_files(["tsetse/tsconfig.json"])
 
 bzl_library(
     name = "bzl",
diff --git a/internal/protobufjs/BUILD.bazel b/internal/protobufjs/BUILD.bazel
index b9ce161..ae06e17 100644
--- a/internal/protobufjs/BUILD.bazel
+++ b/internal/protobufjs/BUILD.bazel
@@ -67,13 +67,3 @@
     entry_point = "protobufjs/bin/pbts",
     install_source_map_support = False,
 )
-
-filegroup(
-    name = "npm_package_assets",
-    srcs = [
-        "BUILD.bazel",
-        "package.json",
-        "ts_proto_library.bzl",
-        "yarn.lock",
-    ],
-)
diff --git a/package.bzl b/package.bzl
index 900d106..e19ba50 100644
--- a/package.bzl
+++ b/package.bzl
@@ -103,13 +103,6 @@
         sha256 = "894d7928df8da85e263d743c8434d4c10ab0a3f0708fed0d53394e688e3faf70",
     )
 
-    http_archive(
-        name = "io_bazel_skydoc",
-        url = "https://github.com/bazelbuild/skydoc/archive/82fdbfe797c6591d8732df0c0389a2b1c3e50992.zip",  # 2018-12-12
-        strip_prefix = "skydoc-82fdbfe797c6591d8732df0c0389a2b1c3e50992",
-        sha256 = "75fd965a71ca1f0d0406d0d0fb0964d24090146a853f58b432761a1a6c6b47b9",
-    )
-
 def _maybe(repo_rule, name, **kwargs):
     if name not in native.existing_rules():
         repo_rule(name = name, **kwargs)
diff --git a/package.json b/package.json
index b4834d1..dd1a029 100644
--- a/package.json
+++ b/package.json
@@ -1,27 +1,12 @@
 {
-    "name": "@bazel/typescript",
-    "description": "TypeScript rules for Bazel",
+    "private": true,
     "homepage": "https://github.com/bazelbuild/rules_typescript",
     "license": "Apache-2.0",
-    "version": "0.25.1",
-    "keywords": [
-        "typescript",
-        "bazel"
-    ],
-    "main": "./internal/tsc_wrapped/index.js",
-    "typings": "./internal/tsc_wrapped/index.d.ts",
-    "bin": {
-        "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js",
-        "tsc_wrapped": "./internal/tsc_wrapped/tsc_wrapped.js"
-    },
-    "dependencies": {
+    "devDependencies": {
         "protobufjs": "5.0.3",
         "semver": "5.6.0",
         "source-map-support": "0.5.9",
         "tsutils": "2.27.2",
-        "jasmine-core": "2.8.0"
-    },
-    "devDependencies": {
         "@bazel/bazel": "~0.22.0",
         "@bazel/buildifier": "^0.20.0",
         "@bazel/ibazel": "^0.2.0",
@@ -34,6 +19,7 @@
         "clang-format": "1.0.49",
         "concurrently": "^3.5.1",
         "http-server": "^0.11.1",
+        "jasmine-core": "2.8.0",
         "karma": "^4.0.0",
         "karma-chrome-launcher": "2.2.0",
         "karma-firefox-launcher": "1.1.0",
@@ -50,23 +36,12 @@
         "typescript": "~3.1.6",
         "which": "~1.0.5"
     },
-    "bazelWorkspaces": {
-        "npm_bazel_typescript": {
-            "version": "0.0.0-PLACEHOLDER",
-            "compatVersion": "0.0.0-COMPAT_VERSION",
-            "rootPath": "."
-        }
-    },
     "scripts": {
         "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e",
         "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver",
         "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first",
         "e2e-examples-app-prodserver": "concurrently \"bazel run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first",
         "e2e-examples-protobuf-devserver": "concurrently \"bazel run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first",
-        "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first",
-        "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip",
-        "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable",
-        "bazel:lint": "yarn bazel:format --lint=warn",
-        "bazel:lint-fix": "yarn bazel:format --lint=fix"
+        "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first"
     }
 }
diff --git a/ts_auto_deps/BUILD.bazel b/ts_auto_deps/BUILD.bazel
index a1e0f2d..b71e8a1 100644
--- a/ts_auto_deps/BUILD.bazel
+++ b/ts_auto_deps/BUILD.bazel
@@ -46,11 +46,3 @@
     pure = "on",
     visibility = ["//visibility:public"],
 )
-
-filegroup(
-    name = "npm_package_assets",
-    srcs = [
-        "ts_auto_deps.js",
-    ],
-    visibility = ["//visibility:public"],
-)
diff --git a/version.bzl b/version.bzl
index f295332..35f5df8 100644
--- a/version.bzl
+++ b/version.bzl
@@ -1,56 +1 @@
-# Copyright 2018 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Package file which defines npm_bazel_typescript version in skylark
-"""
-
-load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version")
-
-VERSION = "0.25.1"
-
-# This version is the minimum version that is API compatible with this version
-# of rules_typescript. This version should be updated to equal VERSION for
-# releases with breaking changes and/or new features.
 COMPAT_VERSION = "0.25.0"
-
-def check_rules_typescript_version(version_string):
-    """
-    Verify that a compatible npm_bazel_typescript is loaded a WORKSPACE.
-
-    Where COMPAT_VERSION and VERSION come from the npm_bazel_typescript that
-    is loaded in a WORKSPACE, this function will check:
-
-    VERSION >= version_string >= COMPAT_VERSION
-
-    This should be called from the `WORKSPACE` file so that the build fails as
-    early as possible. For example:
-
-    ```
-    # in WORKSPACE:
-    load("@npm_bazel_typescript//:defs.bzl", "check_rules_typescript_version")
-    check_rules_typescript_version(version_string = "0.22.0")
-    ```
-
-    Args:
-      version_string: A version string to check for compatibility with the loaded version
-                      of npm_bazel_typescript. The version check performed is
-                      `VERSION >= version_string >= COMPAT_VERSION` where VERSION and COMPAT_VERSION
-                      come from the loaded version of npm_bazel_typescript.
-    """
-    if not check_version(VERSION, version_string) or not check_version(version_string, COMPAT_VERSION):
-        fail("\nLoaded npm_bazel_typescript version {} with mimimum compat version of {} is not compatible with checked version {}!\n\n".format(
-            VERSION,
-            COMPAT_VERSION,
-            version_string,
-        ))
