Port the sssf skill from ~/.agents/skills/sssf into this repo so it can be distributed and installed with the skills CLI (skills add INDigitalStudio/skills --skill sssf). - Copy the skill (SKILL.md, cookbooks, references, scripts, templates, and the visualizer app source) into sssf/. - Gitignore build/runtime artifacts: the visualizer's node_modules/ and dist/, Python bytecode, and the machine-specific repos.json. - Make the skill location-independent: install.py now stamps the skill's real path into the stamped justfile's skill_dir (replacing the hardcoded ~/.agents/skills/sssf), so 'just obs' finds the visualizer wherever the CLI installed the skill. - Update cookbooks to use <skill>/scripts/... instead of the hardcoded path, and document the skills CLI install command. - Update the repo README with install instructions.
63 lines
3.3 KiB
Markdown
63 lines
3.3 KiB
Markdown
# Create Config
|
|
|
|
Generate `sssf.config.yaml` — the agent roster for a target repo.
|
|
|
|
## Generate it
|
|
|
|
```bash
|
|
uv run <skill>/scripts/make_config.py
|
|
```
|
|
|
|
`<skill>` is the directory this skill was installed into (e.g. `~/.agents/skills/sssf` or a repo's `.claude/skills/sssf`).
|
|
|
|
Writes `adws/adw_sssf_config/sssf.config.yaml` — creating the directory if needed — with the starter agents (planner, builder, scout, reviewer, documenter) wired to the prompt files `/sssf install` stamped into `adws/adw_data/prompt_engineering/`. That path is the default every ADW and the justfile look for; `--config` overrides it. `make_config.py` refuses to overwrite an existing config unless you pass `--force`, so retuning an existing roster is a hand edit — see `update_config.md`.
|
|
|
|
## The rule
|
|
|
|
**One agent, one prompt, one purpose.** An entry defines who an agent *is*: its coding agent, model, thinking level, and exactly one system prompt plus one user prompt. How it gets *used* — the output type, a per-call user prompt override — lives at the ADW call site, never here.
|
|
|
|
## Schema
|
|
|
|
```yaml
|
|
defaults:
|
|
coding_agent: pi # v1: pi only (claude_code is specced, stubbed until v2)
|
|
model: google/gemini-3.6-flash # ALWAYS provider/model-id — a bare id is ambiguous
|
|
thinking: medium # off | minimal | low | medium | high | xhigh | max
|
|
harness_engineering: [] # pi extension names
|
|
data_dir: adws/adw_data # runtime home: {data_dir}/sessions/{adw_id}/{agent_name}/
|
|
|
|
observability:
|
|
db: adws/adw_data/sssf.db # tracer writes here; the UI polls it
|
|
poll_ms: 500 # visualizer live-poll cadence
|
|
|
|
agents:
|
|
- name: planner # ADW scripts name agents, never models
|
|
coding_agent: pi
|
|
model: google/gemini-3.6-flash
|
|
thinking: high
|
|
color: "#a78bfa" # optional hex — this agent's lane color in the visualizer
|
|
purpose: Turn a request into a plan the builder can implement without asking questions.
|
|
prompt_engineering:
|
|
system: adws/adw_data/prompt_engineering/planner/system.md
|
|
user: adws/adw_data/prompt_engineering/planner/user.md
|
|
|
|
- name: scout
|
|
thinking: high # unset keys fall through to defaults
|
|
purpose: Find and report where things live; change nothing.
|
|
prompt_engineering:
|
|
system: adws/adw_data/prompt_engineering/scout/system.md
|
|
user: adws/adw_data/prompt_engineering/scout/user.md
|
|
tools: # optional allowlist — omit the key entirely for all tools
|
|
- read
|
|
- bash
|
|
```
|
|
|
|
Every agent entry merges over `defaults`, so an entry only states what differs. Pi's builtin tools are `read`, `bash`, `edit`, `write` — a read-only recon agent gets `[read, bash]`; a builder omits `tools` altogether.
|
|
|
|
## After generating
|
|
|
|
1. Each agent needs its prompt pair to exist on disk: `adws/adw_data/prompt_engineering/{name}/system.md` and `user.md`. `agents.validate()` fails the run at startup if either is missing.
|
|
2. Write `purpose` as one sentence and make the system prompt say the same thing — the two should not drift.
|
|
3. Validate by running the smallest ADW that names your agents; a bad entry fails fast, before anything spawns.
|
|
|
|
Full field-by-field spec, thinking-level mapping, and model resolution: `references/config.md`. Retuning an existing roster: `update_config.md`.
|