# Target Kinds

Once ships target kinds for supported languages and platforms. Each target
kind defines its accepted attributes and dependencies, the providers it emits,
and the capabilities it exposes. Its reference page also lists known
limitations and a copyable declaration when one is available.

Use [`once query schema`](/reference/cli/query/schema) to inspect the same
contract from the command line. See [Ecosystems](/guide/graph/ecosystems) for
help choosing between typed target kinds and scripted automation.

Each schema reports whether an attribute is required, configurable, and
implemented, plus any fixed set of allowed values. An attribute marked as not
implemented remains discoverable for compatibility, but validation rejects it
with a focused repair before analysis. Tool requirements list the executable
alternatives Once can use, so an agent can discover missing setup without
reading prose documentation.

Every target kind includes at least one materializable starter. Repository
contributors can run `mise run examples:verify-portable` to materialize and
execute the portable starter set against the release command-line interface.
Platform-specific starters remain covered by their dedicated toolchain setup
and action tests.

## Lint target kinds

- [`ruff_lint`](/reference/prelude/ruff_lint): Python analysis with Ruff
- [`eslint_lint`](/reference/prelude/eslint_lint): JavaScript and TypeScript
  analysis with ESLint
- [`golangci_lint`](/reference/prelude/golangci_lint): Go analysis with
  golangci-lint
- [`swiftlint_lint`](/reference/prelude/swiftlint_lint): Swift analysis with
  SwiftLint
- [`detekt_lint`](/reference/prelude/detekt_lint): Kotlin analysis with detekt
- [`credo_lint`](/reference/prelude/credo_lint): Elixir analysis with Credo
- [`rubocop_lint`](/reference/prelude/rubocop_lint): Ruby analysis with RuboCop

See [Linting](/guide/graph/linting) for the shared result and failure-policy
contract. Use [Custom lint target kinds](/reference/modules/linting) when the
required analyzer is not built in.

## Apple target kinds

- [`apple_library`](/reference/prelude/apple_library): Swift,
  Objective-C, C, and C++ static library
- [`swift_macro`](/reference/prelude/swift_macro): Swift
  compiler-plugin dynamic library loaded by `apple_library` dependencies
- [`apple_framework`](/reference/prelude/apple_framework): dynamic
  Apple framework bundle
- [`apple_application`](/reference/prelude/apple_application): Apple
  application bundle
- [`apple_thinned_package`](/reference/prelude/apple_thinned_package):
  device-specific archive for application size analysis
- [`apple_test_bundle`](/reference/prelude/apple_test_bundle): XCTest
  bundle assembled for an external runner

## Android target kinds

- [`android_resource`](/reference/prelude/android_resource): Android
  resources and assets compiled into a static resource package
- [`android_library`](/reference/prelude/android_library): Android
  Java library packaged as a Java archive and Android library archive
- [`android_local_test`](/reference/prelude/android_local_test): Android
  Java and Kotlin local tests run on the host Java virtual machine
- [`android_instrumentation_test`](/reference/prelude/android_instrumentation_test):
  Android instrumentation tests run on a device or emulator
- [`android_binary`](/reference/prelude/android_binary): Android application package
  built from Java sources, resources, native libraries, Android resource
  dependencies, and Android library dependencies

## Swift target kinds

- [`swift_package_dependencies`](/reference/prelude/swift_package_dependencies):
  locked Swift package graph and selected static products exposed to Apple
  targets
- [`swift_package_pin`](/reference/prelude/swift_package_pin): one synthetic
  locked Swift package identity and its transitive edges
- [`swift_android_library`](/reference/prelude/swift_android_library):
  Swift shared library compiled for Android and packaged through Android
  native-library providers

## Kotlin target kinds

- [`kotlin_jvm_library`](/reference/prelude/kotlin_jvm_library): Kotlin
  library compiled into a Java archive with typed classpath roles
- [`kotlin_jvm_binary`](/reference/prelude/kotlin_jvm_binary): runnable Kotlin
  main class for the host Java virtual machine
- [`kotlin_jvm_test`](/reference/prelude/kotlin_jvm_test): host-side Kotlin
  tests with normalized Once test results
- [`kotlin_apple_framework`](/reference/prelude/kotlin_apple_framework):
  Kotlin/Native framework bundle consumed by Apple application and test
  targets

## Elixir target kinds

- [`mix_workspace`](/reference/prelude/mix_workspace): native project seed
  that derives development, test, production, lint, test, and release targets
  from `mix.exs`
- [`mix_dependencies`](/reference/prelude/mix_dependencies): locked Mix and Hex
  dependency graph imported as independently scheduled packages
- [`mix_package`](/reference/prelude/mix_package): one generated package with
  locked identity and native Mix or Rebar compilation
- [`mix_project`](/reference/prelude/mix_project): first-party Mix project
  compiled against separately cached application dependencies
- [`mix_release`](/reference/prelude/mix_release): cacheable Mix release
  assembled from a compiled first-party project
- [`elixir_library`](/reference/prelude/elixir_library): Elixir
  code compiled into cacheable bytecode with a target-level compiler
  action
- [`elixir_test`](/reference/prelude/elixir_test): ExUnit tests run against
  an already compiled Elixir application

## Python target kinds

- [`pytest_test`](/reference/prelude/pytest_test): pytest suites with exact
  case execution and automatic file or case batching

## Ruby target kinds

- [`rspec_test`](/reference/prelude/rspec_test): Ruby Specification suites
  with exact example execution and automatic batching
- [`minitest_test`](/reference/prelude/minitest_test): Minitest files exposed
  as independently scheduled units

## JavaScript target kinds

- [`vitest_test`](/reference/prelude/vitest_test): Vitest suites with exact
  case execution and automatic batching
- [`jest_test`](/reference/prelude/jest_test): Jest suites with exact case
  execution and automatic batching

## React Native target kinds

- [`react_native_dependencies`](/reference/prelude/react_native_dependencies):
  locked JavaScript dependency graph and native-module identities
- [`react_native_module`](/reference/prelude/react_native_module): one
  resolver-generated native module
- [`react_native_autolinking`](/reference/prelude/react_native_autolinking):
  normalized native-module discovery
- [`react_native_codegen`](/reference/prelude/react_native_codegen): New
  Architecture native interface generation
- [`react_native_bundle`](/reference/prelude/react_native_bundle): Metro
  bundle, Hermes bytecode, assets, and source map
- [`react_native_apple_application`](/reference/prelude/react_native_apple_application):
  CocoaPods and Xcode application build and simulator launch
- [`react_native_android_application`](/reference/prelude/react_native_android_application):
  Gradle application build and emulator launch
- [`react_native_metro`](/reference/prelude/react_native_metro): live
  development server with Fast Refresh

## Rust target kinds

- [`cargo_workspace`](/reference/prelude/cargo_workspace): native project seed
  that derives first-party and locked external targets from `Cargo.toml`
- [`cargo_dependencies`](/reference/prelude/cargo_dependencies): cacheable
  Cargo dependency set consumed by Rust targets
- [`rust_library`](/reference/prelude/rust_library): Rust library artifact consumed
  by downstream Rust targets, or native static or shared libraries consumed
  by Apple and Android targets
- [`rust_mobile_library`](/reference/prelude/rust_mobile_library): Rust
  native library materialized by Apple and Android consumers under one
  target label
- [`rust_binary`](/reference/prelude/rust_binary): Rust executable built
  from a main crate and Rust deps, with build and run capabilities
- [`rust_test`](/reference/prelude/rust_test): Rust test crate compiled
  with `rustc --test` and run through Once's test capability
- [`rust_crate`](/reference/prelude/rust_crate): resolved third-party
  Cargo package lowered into a Rust library target
- [`rust_proc_macro`](/reference/prelude/rust_proc_macro): Rust
  procedural macro compiled for Rust targets

## Go target kinds

- [`go_dependencies`](/reference/prelude/go_dependencies): locked, vendored Go
  module graph imported as queryable targets
- [`go_module`](/reference/prelude/go_module): one generated checksum-bound Go
  module and its complete vendored source tree
- [`go_source`](/reference/prelude/go_source): reusable Go package sources,
  embedded files, data, and dependency metadata
- [`go_library`](/reference/prelude/go_library): Go package archive with cgo,
  build constraint, sanitizer, coverage, and cross-compilation controls
- [`go_binary`](/reference/prelude/go_binary): runnable Go executable or
  exported native library
- [`go_test`](/reference/prelude/go_test): compiled Go tests with exact
  filtering, normalized results, native events, and coverage

## C target kinds

- [`c_library`](/reference/prelude/c_library): C and C++ static
  library provider consumed by native target kinds

## CMake target kinds

- [`cmake_project`](/reference/prelude/cmake_project): coarse cacheable CMake
  configure and build boundary with explicitly declared products
- [`cmake_workspace`](/reference/prelude/cmake_workspace): checked configured
  graph snapshot imported as queryable targets
- [`cmake_target`](/reference/prelude/cmake_target): resolver-generated
  logical CMake target metadata

## Zig target kinds

- [`zig_dependencies`](/reference/prelude/zig_dependencies): locked Zig
  package graph imported from `build.zig.zon`
- [`zig_package`](/reference/prelude/zig_package): one content-identified Zig
  package lowered into a module provider
- [`zig_library`](/reference/prelude/zig_library): Zig module provider
  compiled at the use site by downstream Zig targets
- [`zig_c_library`](/reference/prelude/zig_c_library): Zig module
  generated from C provider headers
- [`zig_binary`](/reference/prelude/zig_binary): Zig executable built
  from a root module, Zig module dependencies, and C provider dependencies
- [`zig_static_library`](/reference/prelude/zig_static_library): Zig
  static library exposed to native linkers
- [`zig_shared_library`](/reference/prelude/zig_shared_library): Zig
  shared library exposed to native linkers and Android packaging
- [`zig_test`](/reference/prelude/zig_test): Zig test target compiled
  and run through Once's test capability
- [`zig_configure`](/reference/prelude/zig_configure): configured Zig
  library target using Once-native target attributes
- [`zig_configure_binary`](/reference/prelude/zig_configure_binary):
  configured Zig executable target using Once-native target attributes
- [`zig_configure_test`](/reference/prelude/zig_configure_test):
  configured Zig test target using Once-native target attributes
