[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G1BR6AWWB40FDFXCNV8DMH":3,"skill-same:01M6G1BR6AWWB40FDFXCNV8DMH":60},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":14,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M6G1BR6AWWB40FDFXCNV8DMH","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.","reikiplanet\u002Fdaoskills","reikiplanet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96377599?v=4","01M6CVWCMD740YHQDK7E9QYBW4","Reiki Planet","01M6CVWCS4KXVA2CWFVJ43EAXK",0,"MIT","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fcreative\u002Fbazel-build-optimization\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"bazel","Optimization","build","bazel build optimization","performance","remote execution","Enterprise","execution","use","community","optimize","scale","remote","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.\"\nrisk: unknown\nsource: community\n---\n\n# Bazel Build Optimization\n\nProduction patterns for Bazel in large-scale monorepos.\n\n## Do not use this skill when\n\n- The task is unrelated to bazel build optimization\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources\u002Fimplementation-playbook.md`.\n\n## Use this skill when\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## Do not use this skill when\n\n- The task is unrelated to bazel build optimization\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources\u002Fimplementation-playbook.md`.\n\n## Use this skill when\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,"risk":37,"source":28,"description":7},"unknown","master","dff58085da947e81e8418c922055644bf0082b1b","skills\u002Fcreative\u002Fbazel-build-optimization","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills","https:\u002F\u002Fgithub.com\u002Freikiplanet","https:\u002F\u002Fwww.reiki-planet.com","Reiki Planet Game","2026-03-29 06:02:29",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add reikiplanet\u002Fdaoskills --skill bazel-build-optimization",{"tool":52,"command":53},"bunx","bunx skills add reikiplanet\u002Fdaoskills --skill bazel-build-optimization",{"tool":55,"command":56},"pnpm","pnpm dlx skills add reikiplanet\u002Fdaoskills --skill bazel-build-optimization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fcreative\u002Fbazel-build-optimization\u002FSKILL.md",true,[],[61,86,97,111,131,154],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":32},"01M6G614JTEQJHPT8AKK3YQ18S","web-games","Web browser game development principles. Framework selection, WebGPU, optimization, PWA.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fweb-games\u002FSKILL.md",[],[68,69,70,71,72,73,28,74,75,76,77,78,79,80,81,20,82,83,84,85],"games","web games","web","grep","principles","selection","framework selection","edit","write","read","pwa","game","web browser","game development","framework","browser","development","webgpu",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":32},"01M6G611H2YGV0GZFP90D38ZMJ","vr-ar","VR\u002FAR development principles. Comfort, interaction, performance requirements.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fvr-ar\u002FSKILL.md",[],[93,94,84,95,96,28,75,76,77,71,23,72],"ar","vr ar","interaction","requirements",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":32},"01M6G60XNMHAMV1SV0EJ1CX0AY","templates","Project scaffolding templates for new applications. Use when creating new projects from scratch. Contains 12 templates for various tech stacks.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Ftemplates\u002FSKILL.md",[],[99,104,105,106,107,108,28,27,77,109,110,71],"project scaffolding","From Scratch","tech","project","scaffolding","projects","applications",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":32},"01M6G60T0GATMK3Q5H8GDC1Z8S","wcag-audit-patterns","Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance. Use when auditing websites for accessibility, fixing WCAG violations, or implementing ac...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fwcag-audit-patterns\u002FSKILL.md",[],[118,119,120,121,122,28,123,124,125,126,27,127,128,129,130],"wcag audit patterns","wcag audit","patterns","WCAG","audit","manual","with","automated testing","guidance","remediation","verification","accessibility","testing",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":32},"01M6G60PMCHW1FRZ63F931QK3R","vulnerability-scanner","Advanced vulnerability analysis principles. OWASP 2025, Supply Chain Security, attack surface mapping, risk prioritization.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fvulnerability-scanner\u002FSKILL.md",[],[138,139,140,141,142,143,144,145,28,77,71,146,72,147,148,149,150,151,152,153],"scanner","vulnerability scanner","vulnerability","prioritization","2025","mapping","chain","supply chain","Bash","analysis","risk","owasp","supply chain security","security","supply","advanced",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":32},"01M6G60JZBB8DK0W3DSG1WNMZK","threat-modeling-expert","Expert in threat modeling methodologies, security architecture review, and risk assessment. Masters STRIDE, PASTA, attack trees, and security requirement extraction. Use for security architecture r...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fthreat-modeling-expert\u002FSKILL.md",[],[161,162,163,164,165,166,167,168,151,27,169,170,171,28,172,173,174,148,175,176],"modeling","threat modeling expert","threat modeling","expert","threat","risk assessment","architecture review","architecture","security architecture review","trees","security architecture","security requirement extraction","assessment","extraction","review","stride"]