Files
clawmates/templates/teams/mobile.toml
T
Omar SobhandClaude Opus 4.7 9ba5c06a1a
ci / gates (push) Successful in 6s
ci / rust (push) Failing after 11s
ci / frontend (push) Successful in 28s
ci / e2e (push) Skipped
ci / publish (push) Skipped
slice 3: 6 team templates seeded from TOML recipes
Team templates are the canonical rosters + tool bundles that mint
concrete teams for a mission. Every builtin ships as a TOML recipe
under templates/teams/*.toml, loaded into the DB at server boot.

Migration 0048 adds:
  - team_templates    (id, key, name, stack, default_topology,
                       risk_profile, mcp_bundles, version, source,
                       workspace_id)
  - template_roles    (m2m: template_id + slot; system_prompt,
                       skills[], brain_seed)
  - teams gets template_id + template_version for level-up lineage

Ships 6 builtins:
  - rust_sdlc  — planner/coder/tester/reviewer/committer for Rust
  - backend    — api_designer/db_engineer/coder/tester/committer
                 (Postgres, DuckDB, graph DBs, wire protocols)
  - frontend   — designer/coder/tester/committer (React + Tailwind + ShadCN)
  - mobile     — designer/coder/tester/committer (Expo, RN, iOS, Android)
  - gpu        — arch_analyst/kernel_author/bench_engineer/coder/committer
                 (CUDA, Metal, ROCm from Rust)
  - threejs    — scene_designer/coder/shader_author/perf_engineer/
                 committer (three.js, WebGL, WebGPU)

Each role has a versioned system_prompt + skill list + brain_seed
markdown. Skills column is a name array today; Slice 3.5a promotes it
to a typed m2m join with the real skills catalog.

Server boot:
  - team_template_loader::load_builtins reads TOML from
    /etc/clawmates/templates/teams (container) or templates/teams (dev),
    upserts idempotently. Deterministic uuid per template key (sha256
    of a fixed namespace + key) so ids are stable across boots.
  - Dockerfile copies templates/ to /etc/clawmates/templates.

Read API:
  - GET /api/team-templates       — list all
  - GET /api/team-templates/{id}  — detail with roles

Wizard:
  - Step 3 rewired from a raw team_id text field to a template picker
    with "LLM auto-provision" as the default option + one card per
    builtin, showing stack, topology, risk profile, and description.
  - Mission create now passes team_template_id (not team_id) so phase
    execution knows which template to mint from.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-07-19 12:41:15 -07:00

68 lines
2.2 KiB
TOML
Raw 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 = "mobile"
name = "Mobile"
description = "Expo + React Native for iOS/Android — camera, comms, networking, native modules."
stack = ["typescript", "react-native", "expo", "ios", "android"]
default_topology = "pipeline"
risk_profile = "coding_readwrite"
mcp_bundles = ["clawmates_door", "gitea_forge"]
version = 1
[[roles]]
slot = "designer"
order_idx = 0
skills = ["decompose_int_items", "ios_hig_check", "material_you_check"]
system_prompt = """
You are the DESIGNER of a Mobile team.
For each INT item: define the screen's state model, navigation
integration, platform-specific behavior (safe-area on iOS, back-button
on Android), and any native-module permissions required.
"""
brain_seed = """
# Mobile design seed
- Safe-area padding is mandatory on every screen.
- Deep links go through the app's central router — never hand-crafted.
- Every permission prompt has a pre-prompt explaining WHY.
"""
[[roles]]
slot = "coder"
order_idx = 1
skills = ["write_typescript_react_native", "expo_managed_workflow", "workspace_repo_edit", "git_commit_protocol"]
system_prompt = """
You are the CODER of a Mobile team.
Working directory /workspace/repo. Prefer Expo's managed workflow;
justify any drop to bare workflow. All new native modules ship with
both iOS + Android implementations in the same PR.
"""
brain_seed = """
# RN memory seed
- Prefer FlashList over FlatList for anything > 20 items.
- Reanimated for anything animating > 3× per frame.
- No inline require() — dynamic imports break Metro's tree-shake.
"""
[[roles]]
slot = "tester"
order_idx = 2
skills = ["detox_e2e", "jest_unit", "ios_simulator_check", "android_emulator_check"]
system_prompt = """
You are the TESTER of a Mobile team.
Detox e2e on both platforms. Snapshot tests for critical layouts.
Run on both iPhone 15 Pro simulator + Pixel 8 emulator before signing
off.
"""
brain_seed = ""
[[roles]]
slot = "committer"
order_idx = 3
skills = ["git_commit_protocol", "small_focused_commits"]
system_prompt = """
You are the COMMITTER. Only run on green tests both platforms.
Emit COMPLETED: INT-<NN>.
"""
brain_seed = ""