[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70G7PCM4SX47GP1HFP8PRCM":3,"skill-same:01M70G7PCM4SX47GP1HFP8PRCM":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M70G7PCM4SX47GP1HFP8PRCM","bazel-build-optimization",null,"Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.","shengdabai\u002FTony-Claude-Code-Skills","shengdabai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F116417419?v=4","01M70F6D2WY5PQV5A92BKYJQEW","Tony Sheng","01M70F6D3GAAAYZ5H4CC1G8VXM",3,"MIT","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002Fplugins\u002Fdeveloper-essentials\u002Fskills\u002Fbazel-build-optimization\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"Optimization","bazel","bazel build optimization","build","for","performance","Enterprise","implementing","execution","remote","use","when","optimize","scale","remote execution","2026-11-10 10:12:30",false,"---\nname: bazel-build-optimization\ndescription: Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.\n---\n\n# Bazel Build Optimization\n\nProduction patterns for Bazel in large-scale monorepos.\n\n## When to Use This Skill\n\n- Setting up Bazel for monorepos\n- Configuring remote caching\u002Fexecution\n- Optimizing build times\n- Writing custom Bazel rules\n- Debugging build issues\n- Migrating to Bazel\n\n## Core Concepts\n\n### 1. Bazel Architecture\n\n```\nworkspace\u002F\n├── WORKSPACE.bazel       # External dependencies\n├── .bazelrc              # Build configurations\n├── .bazelversion         # Bazel version\n├── BUILD.bazel           # Root build file\n├── apps\u002F\n│   └── web\u002F\n│       └── BUILD.bazel\n├── libs\u002F\n│   └── utils\u002F\n│       └── BUILD.bazel\n└── tools\u002F\n    └── bazel\u002F\n        └── rules\u002F\n```\n\n### 2. Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| **Target** | Buildable unit (library, binary, test) |\n| **Package** | Directory with BUILD file |\n| **Label** | Target identifier `\u002F\u002Fpath\u002Fto:target` |\n| **Rule** | Defines how to build a target |\n| **Aspect** | Cross-cutting build behavior |\n\n## Templates\n\n### Template 1: WORKSPACE Configuration\n\n```python\n# WORKSPACE.bazel\nworkspace(name = \"myproject\")\n\nload(\"@bazel_tools\u002F\u002Ftools\u002Fbuild_defs\u002Frepo:http.bzl\", \"http_archive\")\n\n# Rules for JavaScript\u002FTypeScript\nhttp_archive(\n    name = \"aspect_rules_js\",\n    sha256 = \"...\",\n    strip_prefix = \"rules_js-1.34.0\",\n    url = \"https:\u002F\u002Fgithub.com\u002Faspect-build\u002Frules_js\u002Freleases\u002Fdownload\u002Fv1.34.0\u002Frules_js-v1.34.0.tar.gz\",\n)\n\nload(\"@aspect_rules_js\u002F\u002Fjs:repositories.bzl\", \"rules_js_dependencies\")\nrules_js_dependencies()\n\nload(\"@rules_nodejs\u002F\u002Fnodejs:repositories.bzl\", \"nodejs_register_toolchains\")\nnodejs_register_toolchains(\n    name = \"nodejs\",\n    node_version = \"20.9.0\",\n)\n\nload(\"@aspect_rules_js\u002F\u002Fnpm:repositories.bzl\", \"npm_translate_lock\")\nnpm_translate_lock(\n    name = \"npm\",\n    pnpm_lock = \"\u002F\u002F:pnpm-lock.yaml\",\n    verify_node_modules_ignored = \"\u002F\u002F:.bazelignore\",\n)\n\nload(\"@npm\u002F\u002F:repositories.bzl\", \"npm_repositories\")\nnpm_repositories()\n\n# Rules for Python\nhttp_archive(\n    name = \"rules_python\",\n    sha256 = \"...\",\n    strip_prefix = \"rules_python-0.27.0\",\n    url = \"https:\u002F\u002Fgithub.com\u002Fbazelbuild\u002Frules_python\u002Freleases\u002Fdownload\u002F0.27.0\u002Frules_python-0.27.0.tar.gz\",\n)\n\nload(\"@rules_python\u002F\u002Fpython:repositories.bzl\", \"py_repositories\")\npy_repositories()\n```\n\n### Template 2: .bazelrc Configuration\n\n```bash\n# .bazelrc\n\n# Build settings\nbuild --enable_platform_specific_config\nbuild --incompatible_enable_cc_toolchain_resolution\nbuild --experimental_strict_conflict_checks\n\n# Performance\nbuild --jobs=auto\nbuild --local_cpu_resources=HOST_CPUS*.75\nbuild --local_ram_resources=HOST_RAM*.75\n\n# Caching\nbuild --disk_cache=~\u002F.cache\u002Fbazel-disk\nbuild --repository_cache=~\u002F.cache\u002Fbazel-repo\n\n# Remote caching (optional)\nbuild:remote-cache --remote_cache=grpcs:\u002F\u002Fcache.example.com\nbuild:remote-cache --remote_upload_local_results=true\nbuild:remote-cache --remote_timeout=3600\n\n# Remote execution (optional)\nbuild:remote-exec --remote_executor=grpcs:\u002F\u002Fremote.example.com\nbuild:remote-exec --remote_instance_name=projects\u002Fmyproject\u002Finstances\u002Fdefault\nbuild:remote-exec --jobs=500\n\n# Platform configurations\nbuild:linux --platforms=\u002F\u002Fplatforms:linux_x86_64\nbuild:macos --platforms=\u002F\u002Fplatforms:macos_arm64\n\n# CI configuration\nbuild:ci --config=remote-cache\nbuild:ci --build_metadata=ROLE=CI\nbuild:ci --bes_results_url=https:\u002F\u002Fresults.example.com\u002Finvocation\u002F\nbuild:ci --bes_backend=grpcs:\u002F\u002Fbes.example.com\n\n# Test settings\ntest --test_output=errors\ntest --test_summary=detailed\n\n# Coverage\ncoverage --combined_report=lcov\ncoverage --instrumentation_filter=\"\u002F\u002F...\"\n\n# Convenience aliases\nbuild:opt --compilation_mode=opt\nbuild:dbg --compilation_mode=dbg\n\n# Import user settings\ntry-import %workspace%\u002Fuser.bazelrc\n```\n\n### Template 3: TypeScript Library BUILD\n\n```python\n# libs\u002Futils\u002FBUILD.bazel\nload(\"@aspect_rules_ts\u002F\u002Fts:defs.bzl\", \"ts_project\")\nload(\"@aspect_rules_js\u002F\u002Fjs:defs.bzl\", \"js_library\")\nload(\"@npm\u002F\u002F:defs.bzl\", \"npm_link_all_packages\")\n\nnpm_link_all_packages(name = \"node_modules\")\n\nts_project(\n    name = \"utils_ts\",\n    srcs = glob([\"src\u002F**\u002F*.ts\"]),\n    declaration = True,\n    source_map = True,\n    tsconfig = \"\u002F\u002F:tsconfig.json\",\n    deps = [\n        \":node_modules\u002F@types\u002Fnode\",\n    ],\n)\n\njs_library(\n    name = \"utils\",\n    srcs = [\":utils_ts\"],\n    visibility = [\"\u002F\u002Fvisibility:public\"],\n)\n\n# Tests\nload(\"@aspect_rules_jest\u002F\u002Fjest:defs.bzl\", \"jest_test\")\n\njest_test(\n    name = \"utils_test\",\n    config = \"\u002F\u002F:jest.config.js\",\n    data = [\n        \":utils\",\n        \"\u002F\u002F:node_modules\u002Fjest\",\n    ],\n    node_modules = \"\u002F\u002F:node_modules\",\n)\n```\n\n### Template 4: Python Library BUILD\n\n```python\n# libs\u002Fml\u002FBUILD.bazel\nload(\"@rules_python\u002F\u002Fpython:defs.bzl\", \"py_library\", \"py_test\", \"py_binary\")\nload(\"@pip\u002F\u002F:requirements.bzl\", \"requirement\")\n\npy_library(\n    name = \"ml\",\n    srcs = glob([\"src\u002F**\u002F*.py\"]),\n    deps = [\n        requirement(\"numpy\"),\n        requirement(\"pandas\"),\n        requirement(\"scikit-learn\"),\n        \"\u002F\u002Flibs\u002Futils:utils_py\",\n    ],\n    visibility = [\"\u002F\u002Fvisibility:public\"],\n)\n\npy_test(\n    name = \"ml_test\",\n    srcs = glob([\"tests\u002F**\u002F*.py\"]),\n    deps = [\n        \":ml\",\n        requirement(\"pytest\"),\n    ],\n    size = \"medium\",\n    timeout = \"moderate\",\n)\n\npy_binary(\n    name = \"train\",\n    srcs = [\"train.py\"],\n    deps = [\":ml\"],\n    data = [\"\u002F\u002Fdata:training_data\"],\n)\n```\n\n### Template 5: Custom Rule for Docker\n\n```python\n# tools\u002Fbazel\u002Frules\u002Fdocker.bzl\ndef _docker_image_impl(ctx):\n    dockerfile = ctx.file.dockerfile\n    base_image = ctx.attr.base_image\n    layers = ctx.files.layers\n\n    # Build the image\n    output = ctx.actions.declare_file(ctx.attr.name + \".tar\")\n\n    args = ctx.actions.args()\n    args.add(\"--dockerfile\", dockerfile)\n    args.add(\"--output\", output)\n    args.add(\"--base\", base_image)\n    args.add_all(\"--layer\", layers)\n\n    ctx.actions.run(\n        inputs = [dockerfile] + layers,\n        outputs = [output],\n        executable = ctx.executable._builder,\n        arguments = [args],\n        mnemonic = \"DockerBuild\",\n        progress_message = \"Building Docker image %s\" % ctx.label,\n    )\n\n    return [DefaultInfo(files = depset([output]))]\n\ndocker_image = rule(\n    implementation = _docker_image_impl,\n    attrs = {\n        \"dockerfile\": attr.label(\n            allow_single_file = [\".dockerfile\", \"Dockerfile\"],\n            mandatory = True,\n        ),\n        \"base_image\": attr.string(mandatory = True),\n        \"layers\": attr.label_list(allow_files = True),\n        \"_builder\": attr.label(\n            default = \"\u002F\u002Ftools\u002Fdocker:builder\",\n            executable = True,\n            cfg = \"exec\",\n        ),\n    },\n)\n```\n\n### Template 6: Query and Dependency Analysis\n\n```bash\n# Find all dependencies of a target\nbazel query \"deps(\u002F\u002Fapps\u002Fweb:web)\"\n\n# Find reverse dependencies (what depends on this)\nbazel query \"rdeps(\u002F\u002F..., \u002F\u002Flibs\u002Futils:utils)\"\n\n# Find all targets in a package\nbazel query \"\u002F\u002Flibs\u002F...\"\n\n# Find changed targets since commit\nbazel query \"rdeps(\u002F\u002F..., set($(git diff --name-only HEAD~1 | sed 's\u002F.*\u002F\"&\"\u002F' | tr '\\n' ' ')))\"\n\n# Generate dependency graph\nbazel query \"deps(\u002F\u002Fapps\u002Fweb:web)\" --output=graph | dot -Tpng > deps.png\n\n# Find all test targets\nbazel query \"kind('.*_test', \u002F\u002F...)\"\n\n# Find targets with specific tag\nbazel query \"attr(tags, 'integration', \u002F\u002F...)\"\n\n# Compute build graph size\nbazel query \"deps(\u002F\u002F...)\" --output=package | wc -l\n```\n\n### Template 7: Remote Execution Setup\n\n```python\n# platforms\u002FBUILD.bazel\nplatform(\n    name = \"linux_x86_64\",\n    constraint_values = [\n        \"@platforms\u002F\u002Fos:linux\",\n        \"@platforms\u002F\u002Fcpu:x86_64\",\n    ],\n    exec_properties = {\n        \"container-image\": \"docker:\u002F\u002Fgcr.io\u002Fmyproject\u002Fbazel-worker:latest\",\n        \"OSFamily\": \"Linux\",\n    },\n)\n\nplatform(\n    name = \"remote_linux\",\n    parents = [\":linux_x86_64\"],\n    exec_properties = {\n        \"Pool\": \"default\",\n        \"dockerNetwork\": \"standard\",\n    },\n)\n\n# toolchains\u002FBUILD.bazel\ntoolchain(\n    name = \"cc_toolchain_linux\",\n    exec_compatible_with = [\n        \"@platforms\u002F\u002Fos:linux\",\n        \"@platforms\u002F\u002Fcpu:x86_64\",\n    ],\n    target_compatible_with = [\n        \"@platforms\u002F\u002Fos:linux\",\n        \"@platforms\u002F\u002Fcpu:x86_64\",\n    ],\n    toolchain = \"@remotejdk11_linux\u002F\u002F:jdk\",\n    toolchain_type = \"@bazel_tools\u002F\u002Ftools\u002Fjdk:runtime_toolchain_type\",\n)\n```\n\n## Performance Optimization\n\n```bash\n# Profile build\nbazel build \u002F\u002F... --profile=profile.json\nbazel analyze-profile profile.json\n\n# Identify slow actions\nbazel build \u002F\u002F... --execution_log_json_file=exec_log.json\n\n# Memory profiling\nbazel build \u002F\u002F... --memory_profile=memory.json\n\n# Skip analysis cache\nbazel build \u002F\u002F... --notrack_incremental_state\n```\n\n## Best Practices\n\n### Do's\n- **Use fine-grained targets** - Better caching\n- **Pin dependencies** - Reproducible builds\n- **Enable remote caching** - Share build artifacts\n- **Use visibility wisely** - Enforce architecture\n- **Write BUILD files per directory** - Standard convention\n\n### Don'ts\n- **Don't use glob for deps** - Explicit is better\n- **Don't commit bazel-* dirs** - Add to .gitignore\n- **Don't skip WORKSPACE setup** - Foundation of build\n- **Don't ignore build warnings** - Technical debt\n\n## Resources\n\n- [Bazel Documentation](https:\u002F\u002Fbazel.build\u002Fdocs)\n- [Bazel Remote Execution](https:\u002F\u002Fbazel.build\u002Fdocs\u002Fremote-execution)\n- [rules_js](https:\u002F\u002Fgithub.com\u002Faspect-build\u002Frules_js)\n","# Bazel Build Optimization\n\nProduction patterns for Bazel in large-scale monorepos.\n\n## When to Use This Skill\n\n- Setting up Bazel for monorepos\n- Configuring remote caching\u002Fexecution\n- Optimizing build times\n- Writing custom Bazel rules\n- Debugging build issues\n- Migrating to Bazel\n\n## Core Concepts\n\n### 1. Bazel Architecture\n\n```\nworkspace\u002F\n├── WORKSPACE.bazel       # External dependencies\n├── .bazelrc              # Build configurations\n├── .bazelversion         # Bazel version\n├── BUILD.bazel           # Root build file\n├── apps\u002F\n│   └── web\u002F\n│       └── BUILD.bazel\n├── libs\u002F\n│   └── utils\u002F\n│       └── BUILD.bazel\n└── tools\u002F\n    └── bazel\u002F\n        └── rules\u002F\n```\n\n### 2. Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| **Target** | Buildable unit (library, binary, test) |\n| **Package** | Directory with BUILD file |\n| **Label** | Target identifier `\u002F\u002Fpath\u002Fto:target` |\n| **Rule** | Defines how to build a target |\n| **Aspect** | Cross-cutting build behavior |\n\n## Templates\n\n### Template 1: WORKSPACE Configuration\n\n```python\n# WORKSPACE.bazel\nworkspace(name = \"myproject\")\n\nload(\"@bazel_tools\u002F\u002Ftools\u002Fbuild_defs\u002Frepo:http.bzl\", \"http_archive\")\n\n# Rules for JavaScript\u002FTypeScript\nhttp_archive(\n    name = \"aspect_rules_js\",\n    sha256 = \"...\",\n    strip_prefix = \"rules_js-1.34.0\",\n    url = \"https:\u002F\u002Fgithub.com\u002Faspect-build\u002Frules_js\u002Freleases\u002Fdownload\u002Fv1.34.0\u002Frules_js-v1.34.0.tar.gz\",\n)\n\nload(\"@aspect_rules_js\u002F\u002Fjs:repositories.bzl\", \"rules_js_dependencies\")\nrules_js_dependencies()\n\nload(\"@rules_nodejs\u002F\u002Fnodejs:repositories.bzl\", \"nodejs_register_toolchains\")\nnodejs_register_toolchains(\n    name = \"nodejs\",\n    node_version = \"20.9.0\",\n)\n\nload(\"@aspect_rules_js\u002F\u002Fnpm:repositories.bzl\", \"npm_translate_lock\")\nnpm_translate_lock(\n    name = \"npm\",\n    pnpm_lock = \"\u002F\u002F:pnpm-lock.yaml\",\n    verify_node_modules_ignored = \"\u002F\u002F:.bazelignore\",\n)\n\nload(\"@npm\u002F\u002F:repositories.bzl\", \"npm_repositories\")\nnpm_repositories()\n\n# Rules for Python\nhttp_archive(\n    name = \"rules_python\",\n    sha256 = \"...\",\n    strip_prefix = \"rules_python-0.27.0\",\n    url = \"https:\u002F\u002Fgithub.com\u002Fbazelbuild\u002Frules_python\u002Freleases\u002Fdownload\u002F0.27.0\u002Frules_python-0.27.0.tar.gz\",\n)\n\nload(\"@rules_python\u002F\u002Fpython:repositories.bzl\", \"py_repositories\")\npy_repositories()\n```\n\n### Template 2: .bazelrc Configuration\n\n```bash\n# .bazelrc\n\n# Build settings\nbuild --enable_platform_specific_config\nbuild --incompatible_enable_cc_toolchain_resolution\nbuild --experimental_strict_conflict_checks\n\n# Performance\nbuild --jobs=auto\nbuild --local_cpu_resources=HOST_CPUS*.75\nbuild --local_ram_resources=HOST_RAM*.75\n\n# Caching\nbuild --disk_cache=~\u002F.cache\u002Fbazel-disk\nbuild --repository_cache=~\u002F.cache\u002Fbazel-repo\n\n# Remote caching (optional)\nbuild:remote-cache --remote_cache=grpcs:\u002F\u002Fcache.example.com\nbuild:remote-cache --remote_upload_local_results=true\nbuild:remote-cache --remote_timeout=3600\n\n# Remote execution (optional)\nbuild:remote-exec --remote_executor=grpcs:\u002F\u002Fremote.example.com\nbuild:remote-exec --remote_instance_name=projects\u002Fmyproject\u002Finstances\u002Fdefault\nbuild:remote-exec --jobs=500\n\n# Platform configurations\nbuild:linux --platforms=\u002F\u002Fplatforms:linux_x86_64\nbuild:macos --platforms=\u002F\u002Fplatforms:macos_arm64\n\n# CI configuration\nbuild:ci --config=remote-cache\nbuild:ci --build_metadata=ROLE=CI\nbuild:ci --bes_results_url=https:\u002F\u002Fresults.example.com\u002Finvocation\u002F\nbuild:ci --bes_backend=grpcs:\u002F\u002Fbes.example.com\n\n# Test settings\ntest --test_output=errors\ntest --test_summary=detailed\n\n# Coverage\ncoverage --combined_report=lcov\ncoverage --instrumentation_filter=\"\u002F\u002F...\"\n\n# Convenience aliases\nbuild:opt --compilation_mode=opt\nbuild:dbg --compilation_mode=dbg\n\n# Import user settings\ntry-import %workspace%\u002Fuser.bazelrc\n```\n\n### Template 3: TypeScript Library BUILD\n\n```python\n# libs\u002Futils\u002FBUILD.bazel\nload(\"@aspect_rules_ts\u002F\u002Fts:defs.bzl\", \"ts_project\")\nload(\"@aspect_rules_js\u002F\u002Fjs:defs.bzl\", \"js_library\")\nload(\"@npm\u002F\u002F:defs.bzl\", \"npm_link_all_packages\")\n\nnpm_link_all_packages(name = \"node_modules\")\n\nts_project(\n    name = \"utils_ts\",\n    srcs = glob([\"src\u002F**\u002F*.ts\"]),\n    declaration = True,\n    source_map = True,\n    tsconfig = \"\u002F\u002F:tsconfig.json\",\n    deps = [\n        \":node_modules\u002F@types\u002Fnode\",\n    ],\n)\n\njs_library(\n    name = \"utils\",\n    srcs = [\":utils_ts\"],\n    visibility = [\"\u002F\u002Fvisibility:public\"],\n)\n\n# Tests\nload(\"@aspect_rules_jest\u002F\u002Fjest:defs.bzl\", \"jest_test\")\n\njest_test(\n    name = \"utils_test\",\n    config = \"\u002F\u002F:jest.config.js\",\n    data = [\n        \":utils\",\n        \"\u002F\u002F:node_modules\u002Fjest\",\n    ],\n    node_modules = \"\u002F\u002F:node_modules\",\n)\n```\n\n### Template 4: Python Library BUILD\n\n```python\n# libs\u002Fml\u002FBUILD.bazel\nload(\"@rules_python\u002F\u002Fpython:defs.bzl\", \"py_library\", \"py_test\", \"py_binary\")\nload(\"@pip\u002F\u002F:requirements.bzl\", \"requirement\")\n\npy_library(\n    name = \"ml\",\n    srcs = glob([\"src\u002F**\u002F*.py\"]),\n    deps = [\n        requirement(\"numpy\"),\n        requirement(\"pandas\"),\n        requirement(\"scikit-learn\"),\n        \"\u002F\u002Flibs\u002Futils:utils_py\",\n    ],\n    visibility = [\"\u002F\u002Fvisibility:public\"],\n)\n\npy_test(\n    name = \"ml_test\",\n    srcs = glob([\"tests\u002F**\u002F*.py\"]),\n    deps = [\n        \":ml\",\n        requirement(\"pytest\"),\n    ],\n    size = \"medium\",\n    timeout = \"moderate\",\n)\n\npy_binary(\n    name = \"train\",\n    srcs = [\"train.py\"],\n    deps = [\":ml\"],\n    data = [\"\u002F\u002Fdata:training_data\"],\n)\n```\n\n### Template 5: Custom Rule for Docker\n\n```python\n# tools\u002Fbazel\u002Frules\u002Fdocker.bzl\ndef _docker_image_impl(ctx):\n    dockerfile = ctx.file.dockerfile\n    base_image = ctx.attr.base_image\n    layers = ctx.files.layers\n\n    # Build the image\n    output = ctx.actions.declare_file(ctx.attr.name + \".tar\")\n\n    args = ctx.actions.args()\n    args.add(\"--dockerfile\", dockerfile)\n    args.add(\"--output\", output)\n    args.add(\"--base\", base_image)\n    args.add_all(\"--layer\", layers)\n\n    ctx.actions.run(\n        inputs = [dockerfile] + layers,\n        outputs = [output],\n        executable = ctx.executable._builder,\n        arguments = [args],\n        mnemonic = \"DockerBuild\",\n        progress_message = \"Building Docker image %s\" % ctx.label,\n    )\n\n    return [DefaultInfo(files = depset([output]))]\n\ndocker_image = rule(\n    implementation = _docker_image_impl,\n    attrs = {\n        \"dockerfile\": attr.label(\n            allow_single_file = [\".dockerfile\", \"Dockerfile\"],\n            mandatory = True,\n        ),\n        \"base_image\": attr.string(mandatory = True),\n        \"layers\": attr.label_list(allow_files = True),\n        \"_builder\": attr.label(\n            default = \"\u002F\u002Ftools\u002Fdocker:builder\",\n            executable = True,\n            cfg = \"exec\",\n        ),\n    },\n)\n```\n\n### Template 6: Query and Dependency Analysis\n\n```bash\n# Find all dependencies of a target\nbazel query \"deps(\u002F\u002Fapps\u002Fweb:web)\"\n\n# Find reverse dependencies (what depends on this)\nbazel query \"rdeps(\u002F\u002F..., \u002F\u002Flibs\u002Futils:utils)\"\n\n# Find all targets in a package\nbazel query \"\u002F\u002Flibs\u002F...\"\n\n# Find changed targets since commit\nbazel query \"rdeps(\u002F\u002F..., set($(git diff --name-only HEAD~1 | sed 's\u002F.*\u002F\"&\"\u002F' | tr '\\n' ' ')))\"\n\n# Generate dependency graph\nbazel query \"deps(\u002F\u002Fapps\u002Fweb:web)\" --output=graph | dot -Tpng > deps.png\n\n# Find all test targets\nbazel query \"kind('.*_test', \u002F\u002F...)\"\n\n# Find targets with specific tag\nbazel query \"attr(tags, 'integration', \u002F\u002F...)\"\n\n# Compute build graph size\nbazel query \"deps(\u002F\u002F...)\" --output=package | wc -l\n```\n\n### Template 7: Remote Execution Setup\n\n```python\n# platforms\u002FBUILD.bazel\nplatform(\n    name = \"linux_x86_64\",\n    constraint_values = [\n        \"@platforms\u002F\u002Fos:linux\",\n        \"@platforms\u002F\u002Fcpu:x86_64\",\n    ],\n    exec_properties = {\n        \"container-image\": \"docker:\u002F\u002Fgcr.io\u002Fmyproject\u002Fbazel-worker:latest\",\n        \"OSFamily\": \"Linux\",\n    },\n)\n\nplatform(\n    name = \"remote_linux\",\n    parents = [\":linux_x86_64\"],\n    exec_properties = {\n        \"Pool\": \"default\",\n        \"dockerNetwork\": \"standard\",\n    },\n)\n\n# toolchains\u002FBUILD.bazel\ntoolchain(\n    name = \"cc_toolchain_linux\",\n    exec_compatible_with = [\n        \"@platforms\u002F\u002Fos:linux\",\n        \"@platforms\u002F\u002Fcpu:x86_64\",\n    ],\n    target_compatible_with = [\n        \"@platforms\u002F\u002Fos:linux\",\n        \"@platforms\u002F\u002Fcpu:x86_64\",\n    ],\n    toolchain = \"@remotejdk11_linux\u002F\u002F:jdk\",\n    toolchain_type = \"@bazel_tools\u002F\u002Ftools\u002Fjdk:runtime_toolchain_type\",\n)\n```\n\n## Performance Optimization\n\n```bash\n# Profile build\nbazel build \u002F\u002F... --profile=profile.json\nbazel analyze-profile profile.json\n\n# Identify slow actions\nbazel build \u002F\u002F... --execution_log_json_file=exec_log.json\n\n# Memory profiling\nbazel build \u002F\u002F... --memory_profile=memory.json\n\n# Skip analysis cache\nbazel build \u002F\u002F... --notrack_incremental_state\n```\n\n## Best Practices\n\n### Do's\n- **Use fine-grained targets** - Better caching\n- **Pin dependencies** - Reproducible builds\n- **Enable remote caching** - Share build artifacts\n- **Use visibility wisely** - Enforce architecture\n- **Write BUILD files per directory** - Standard convention\n\n### Don'ts\n- **Don't use glob for deps** - Explicit is better\n- **Don't commit bazel-* dirs** - Add to .gitignore\n- **Don't skip WORKSPACE setup** - Foundation of build\n- **Don't ignore build warnings** - Technical debt\n\n## Resources\n\n- [Bazel Documentation](https:\u002F\u002Fbazel.build\u002Fdocs)\n- [Bazel Remote Execution](https:\u002F\u002Fbazel.build\u002Fdocs\u002Fremote-execution)\n- [rules_js](https:\u002F\u002Fgithub.com\u002Faspect-build\u002Frules_js)\n",{"name":5,"description":7},"main","7850740bd837adb32f0a109ab2af82482196c6f2","skills\u002F_collections\u002Fplugins\u002Fdeveloper-essentials\u002Fskills\u002Fbazel-build-optimization",1,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills","https:\u002F\u002Fzturnsgo.com","https:\u002F\u002Fgithub.com\u002Fshengdabai","https:\u002F\u002Fzturnsgo.com\u002F","AI × education creator — producer, not consumer. Taught 6,000+ learners; shipping learning tools & daily essays with Claude Code, practicing @xiaolai's way 🥋","2026-11-01 21:28:23",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add shengdabai\u002FTony-Claude-Code-Skills --skill bazel-build-optimization",{"tool":55,"command":56},"bunx","bunx skills add shengdabai\u002FTony-Claude-Code-Skills --skill bazel-build-optimization",{"tool":58,"command":59},"pnpm","pnpm dlx skills add shengdabai\u002FTony-Claude-Code-Skills --skill bazel-build-optimization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002F_collections\u002Fplugins\u002Fdeveloper-essentials\u002Fskills\u002Fbazel-build-optimization\u002FSKILL.md",true,[],[64,83,117,142,163,183],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":75,"publishedAt":34},"01M70P17DAD4C1C47NPH6A96EM","xiaolai-methodology","以李笑来(Li Xiaolai)的思考方式、方法论与表达风格,为用户做全方位 1-on-1 教练指导,覆盖创业、赚钱、投资、学习、自学、读书写作、用 AI、以及人生心态与自我管理。当用户提到 \"李笑来\"、\"笑来\"、\"笑来老师\"、\"扮演李笑来\"、\"找笑来聊聊\"、\"笑来怎么看\"、\"xiaolai\"、\"把时间当作朋友\"、\"通往财富自由之路\"、\"定投改变命运\"、\"韭菜的自我修养\"、\"自学是门手艺\"、\"让时间陪你慢慢变富\"、\"七年就是一辈子\"、\"元认知\"、\"活在未来\"、\"复利\u002F长期主义\"、\"践行\"、\"痴迷改进\"、\"个人商业模式\u002F出售时间\"、\"睡后收入\"、\"定投\"、\"财富自由\"、\"操作系统升级\"、\"最少必要知识\"、\"北极星提示词\"、\"用 AI 该怎么学\u002F思考\" 等任一触发词,或当用户带着关于创业\u002F赚钱\u002F投资\u002F学习\u002F职业\u002F重大人生决策的困惑、希望被人用笑来式的「逻辑 + 大白话 + 类比 + 重新定义 + 践行导向」来点醒和指导时,自动进入李笑来教练模式。","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fxiaolai-methodology\u002FSKILL.md",[70],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",[76,77,78,79,80,81,82],"methodology","xiaolai","xiaolai methodology","朋友","投资","writing","收入",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":97,"publishedAt":34},"01M70P13NB9YP7ACJR1S861CDS","zread","Produce and consume a wiki-style knowledge base for a code repository via the `zread` CLI and its on-disk output under `.\u002F.zread\u002Fwiki\u002F`. Use this skill whenever the user wants to understand, onboard onto, explore, summarize, map, or get an overview of an unfamiliar codebase; asks for architecture docs, a project wiki, a repo walkthrough, module\u002Fpackage explanations, or \"what does this repo do\"; wants to generate, regenerate, resume, browse, or serve code documentation locally; or mentions zread \u002F zread.ai directly. Also use it proactively before diving into a large unknown repo — if `.\u002F.zread\u002Fwiki\u002Fcurrent` exists, read the generated pages instead of crawling source file-by-file; if it doesn't, consider offering to run `zread generate`. The trigger is the intent (understand a codebase through generated docs), not the literal word \"zread\".","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fzread\u002FSKILL.md",[89,92],{"categoryNo":90,"categoryName":91,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[85,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],"knowledge","wiki","explore","walkthrough","project","get","knowledge base","run","generate","intent","cli","map","documentation","project wiki","disk","architecture","code","unknown","generated",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":127,"publishedAt":34},"01M70P10S4SWMZQ8BJAFBFDRW3","youtube","Launch the YouTube Creator Agent to auto-generate videos.\nUse when: user types \u002Fyoutube, wants to create YouTube videos,\ngenerate video content, or upload to YouTube.\nKeywords: youtube, video, 视频, 创作视频, 发布视频","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube\u002FSKILL.md",[123,124],{"categoryNo":90,"categoryName":91,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":125,"categoryName":126,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000036","内容创作者",[119,128,129,130,131,132,133,134,106,135,136,137,30,29,138,139,140,141],"user","content","视频","creator","generate video","videos","launch","video content","create","upload","auto","types","Video","创作",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":149,"publishedAt":34},"01M70P0YE95D8BACZCGV8BK90K","youtube-script-sync","Sync, update, or optimize Tony's GetNote knowledge base `Youtube视频逐字稿` by turning each parent recording or first-person idea note into an idempotent child note containing a directly recordable YouTube long-video or Shorts script. Use when the user says “更新\u002F同步\u002F优化 Youtube视频逐字稿知识库”, or says “更新\u002F同步\u002F优化该知识库” while this knowledge base is the active context.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-script-sync\u002FSKILL.md",[148],{"categoryNo":90,"categoryName":91,"taxonomyType":73,"taxonomyTypeDesc":74},[150,151,119,152,153,140,154,155,156,157,158,159,160,31,104,161,30,29,98,162],"sync","script","youtube script sync","recording","shorts","first","base","person","update","active","child","idempotent","long",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":173,"publishedAt":34},"01M70P0WMV5XT0EEC0N445PW07","writing-skills","How to write SKILL.md files that trigger reliably and teach effectively. Use when creating, improving, or reviewing Claude Code skills.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-skills\u002FSKILL.md",[169,170,171,172],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":90,"categoryName":91,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},{"categoryNo":125,"categoryName":126,"taxonomyType":95,"taxonomyTypeDesc":96},[174,81,175,176,177,178,114,30,29,179,180,181,182],"writing skills","how","teach","write skill","write","claude code skills","files","how to","trigger",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":191,"publishedAt":34},"01M70P0SJFR4YVJQBGMHKGSKXT","writing-rules","How to write .claude\u002Frules\u002F files that Claude actually follows. Use when creating, improving, or reviewing project rules.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-rules\u002FSKILL.md",[189,190],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":125,"categoryName":126,"taxonomyType":95,"taxonomyTypeDesc":96},[192,81,193,102,194,180,30,175,178,29,181],"Rules","writing rules","project rules"]