Files
clawmates/templates/teams/gpu.toml
Omar SobhandClaude Opus 5 2eb0880fc0
ci / gates (push) Successful in 5s
ci / rust (push) Failing after 10s
ci / frontend (push) Failing after 19s
ci / e2e (push) Skipped
ci / publish (push) Skipped
fix(skills): reconcile team-template skill names so role bindings actually bind
Every skill reference in every team template was failing to resolve. The
TOMLs used snake_case slugs (`write_rust`, `index_selection`) while the
authored skills under `skills/**/*.md` declare kebab-case names
(`write-rust-current-edition`, `postgres-index-selection`), so
`get_by_name` missed on all of them: 128 skipped bindings across 51
distinct names, and no mission agent received any of its template's
skills.

The mirror-image half was equally invisible: ten authored skills —
including `int-xx-marker-protocol`, whose own `when_to_use` says "pin on
every coding role" — were referenced by no role at all, so nothing could
ever load them.

- Rename the 14 references that have authored skills behind them, and
  dedupe the two that now collapse onto the commit-protocol skill.
- Attach all ten orphaned skills to the roles their `when_to_use` names.
  All 23 authored skills now reach at least one role.
- Aggregate the loader's per-name logging into one line per template.
  The old per-name spam is why this went unnoticed; a bound/unresolved
  count is noticeable. References with no authored skill are kept and
  listed — they record intent for skills not yet written.
- Two regression tests: no authored skill may be orphaned, and every
  authored skill must be referenced by its exact name.

Also clears the two standing clippy warnings: group
`mint_team_from_template`'s eight positional args into `TeamMint`, and
make `provider_alias_for` branch on `is_exact_provider_match` so the
helper is live code and the two can't disagree about what counts as an
exact family match.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-07-31 19:47:18 -07:00

86 lines
3.1 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
key = "gpu"
name = "GPU Programming"
description = "CUDA, Metal, ROCm from Rust — low-level GPU application development, kernel authoring, memory hierarchy tuning."
stack = ["rust", "cuda", "metal", "rocm", "gpu"]
default_topology = "pipeline"
risk_profile = "coding_readwrite"
mcp_bundles = ["clawmates_door", "gitea_forge"]
version = 1
[[roles]]
slot = "arch_analyst"
order_idx = 0
skills = ["decompose-int-items", "gpu-coalescing-and-occupancy", "roofline-model"]
system_prompt = """
You are the ARCHITECTURE ANALYST of a GPU team.
For each INT item: identify the target architectures (SM_XX, Metal
version, GCN/RDNA gen), the compute-vs-memory-bound profile via a
rough roofline estimate, and the memory hierarchy strategy (shared,
constant, texture, unified). Hand off with target occupancy + tile
shape recommendations.
"""
brain_seed = """
# GPU arch seed
- CUDA: prefer warp-level primitives (shfl_sync) over shared mem when
data fits.
- Metal: threadgroup memory is 32KB on Apple7+; plan tiles around it.
- ROCm: LDS is 64KB; wavefront is 64 threads (vs CUDA's 32).
- Always check bandwidth-bound vs compute-bound BEFORE optimizing.
"""
[[roles]]
slot = "kernel_author"
order_idx = 1
skills = ["write_cuda", "write_metal", "write_rocm", "write_rust_ffi", "workspace-repo-commit-protocol"]
system_prompt = """
You are the KERNEL AUTHOR of a GPU team.
Author the actual kernel(s) in the appropriate DSL (CUDA C++, MSL,
HIP), plus the Rust FFI wrapper. Coalesced global loads, no bank
conflicts in shared/threadgroup memory, no divergent branches on hot
paths. Prove each of those in a comment.
"""
brain_seed = """
# Kernel seed
- Coalescing rule: consecutive threads read consecutive 32/64/128-bit
words. Violating it = 10× slowdown.
- Occupancy > 50% for memory-bound kernels; can drop to 25% for
compute-bound with high ILP.
"""
[[roles]]
slot = "bench_engineer"
order_idx = 2
skills = ["nsight_profile", "metal_frame_capture", "rocprof", "criterion_bench"]
system_prompt = """
You are the BENCH ENGINEER of a GPU team.
Run Nsight Compute / Xcode GPU Frame Capture / rocprof on the target
kernel. Report: achieved bandwidth vs peak, achieved GFLOPS vs peak,
occupancy, and the ONE bottleneck to attack next.
"""
brain_seed = ""
[[roles]]
slot = "coder"
order_idx = 3
skills = ["write-rust-current-edition", "cargo_build", "cargo-test-driven-development", "workspace-repo-commit-protocol", "int-xx-marker-protocol"]
system_prompt = """
You are the RUST-SIDE CODER. Integrate the kernel + FFI into the Rust
library, add safe wrappers, and expose ergonomic APIs. Own the
error-conversion path from GPU-side status codes to Rust `Result`s.
"""
brain_seed = ""
[[roles]]
slot = "committer"
order_idx = 4
skills = ["workspace-repo-commit-protocol", "small-focused-commits"]
system_prompt = """
You are the COMMITTER. Only run when the kernel meets the roofline
target OR a specific reason to defer is documented.
Emit COMPLETED: INT-<NN>.
"""
brain_seed = ""