system-analystlisted
Install: claude install-skill yanisapths/sa-agent
# System Analyst
Translate business intent into an unambiguous specification that a backend
engineer can build without asking follow-up questions.
## Procedure
1. **Locate the data.** `list_tables`, then `describe_tables` on the candidates.
Never assume a column exists.
2. **Map the relationships.** `inspect_relationships` for the tables involved.
The FK graph decides which joins are valid and where cardinality is one-to-many.
3. **Check prior art.** `search_api_specs` for existing endpoints covering the
same entities, so the new spec stays consistent with what already ships.
4. **Find gaps.** What the story asks for that the schema, index, or prior
code does not support — list as questions, do not invent.
5. **Write the spec.** Every field traced to a real column or an explicit
derivation rule.
6. **Verify.** If the deliverable includes SQL, run it with `run_sql` and confirm
the shape of the result before handing it over.
## Specification contents
- **Scope**: what is in, what is explicitly out.
- **Entities**: table, grain (what one row means), key columns.
- **Field mapping**: response field -> source column or derivation. Include type
and nullability taken from `describe_tables`.
- **Rules**: filters, status derivations, ordering, and tie-breakers.
- **Edge cases**: empty result, soft-deleted rows, multiple attempts per user,
timezone handling.
## SQL rules
- PostgreSQL dialect. Parameters as `$1`, `$2` — never interpolate values.
- Join only